Thiết lập Driver GPU Nvidia: Các Bước Thiết yếu cho Nhà phát triển AI
Trong thời đại bùng nổ AI này, LLM có lẽ là điều mà mọi công ty đều nói đến. Nhiều nơi muốn Giải pháp LLM đóng vai trò lớn hơn trong công ty của họ, dù đó là tạo Chatbot, RAG, v.v. Điều tiếp theo là những giải pháp này cần phải ở trong Cơ sở hạ tầng của công ty, dù là On-premises hay Cloud provider, dựa trên yêu cầu rằng dữ liệu không nên được gửi đến các nhà cung cấp LLM bên ngoài như OpenAI để xử lý.
Do đó, các nhiệm vụ mới cho những người làm cơ sở hạ tầng như chúng ta sẽ là cung cấp các máy GPU. Tuy nhiên, sau khi có được máy, vẫn còn nhiều thứ cần cấu hình, chẳng hạn như cài đặt driver và các công cụ khác. Trong bài viết này, chúng ta sẽ giới thiệu các phương pháp chuẩn bị máy cơ bản cho các đội Infra để đảm bảo các GPU Instance chúng ta tạo ra sẵn sàng sử dụng nhất có thể.
Tôi sẽ nói trước rằng các GPU mà chúng ta chủ yếu sử dụng là từ Nvidia, là một trong những nhà lãnh đạo thị trường với nhiều người dùng nhất hiện nay. Vì vậy, tất cả nội dung sẽ sử dụng Nvidia làm người kể chuyện. Sẵn sàng chưa? Bắt đầu thôi!!
Cài đặt Driver
Cài đặt Nvidia GPU Driver không khó hoặc phức tạp như bạn nghĩ. Chúng ta có thể làm theo Tài liệu của Nvidia, nhưng chúng ta cần điều chỉnh một số tham số để phù hợp với hệ điều hành và kiến trúc CPU đã chọn. Trong bài viết này, chúng ta có thể không đề cập đến mọi chủ đề được liệt kê trong Tài liệu, nhưng chúng ta sẽ dạy các phương pháp cài đặt cơ bản cho phép sử dụng GPU.
Tài liệu cài đặt driver Nvidia
1. Chuẩn bị Các Tham số Cần thiết
Từ bảng Supported Linux Distributions, cho chúng ta biết phiên bản Linux nào hỗ trợ cài đặt Driver.
3 tham số chúng ta cần lưu ý để sử dụng trong các bước tiếp theo:
- $distro
 - $arch
 - $arch_ext
 
Giả sử chúng ta sử dụng Linux Ubuntu 22.04 LTS trên máy x86. Khi chúng ta so sánh các giá trị trong bảng:

Các giá trị sẽ là: $distro = ubuntu2204 $arch = x86_64 $arch_ext = amd64
2. Chọn Hướng dẫn Cài đặt Theo Phân phối Linux
Bước này là chọn phương pháp cài đặt Driver theo hệ điều hành của chúng ta. Từ ví dụ của tôi chọn Ubuntu, chúng ta sẽ xem phần 10 giải thích các phương pháp cài đặt Ubuntu.

Những gì chúng ta cần làm là:
- Làm theo tất cả các bước Pre-installation
 - Cài đặt kernel headers và development packages
 
sudo apt install linux-headers-$(uname -r)
- Chọn phương pháp cài đặt giữa Local Repository hoặc Network Repository. Tôi sẽ chọn Network Repository.
 
Trong URL https://developer.download.nvidia.com/compute/cuda/repos/$distro/$arch/cuda-keyring_1.1-1_all.deb
Thay thế $distro và $arch bằng các giá trị từ bảng
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt update
Cài đặt gói cuda-keyring mới
- Cài đặt Driver
 
sudo apt install nvidia-open
Sau khi hoàn thành bước này, chúng ta sẽ có Nvidia Driver và CUDA Library được cài đặt trên máy của chúng ta. Chúng ta có thể xác minh bằng lệnh:
nvidia-smi
Đầu ra sẽ hiển thị số lượng GPU hoạt động cùng với mức sử dụng cơ bản.

đầu ra nvidia-smi
- Cài đặt CUDA Toolkit
 
apt install cuda-toolkit
Cài đặt CUDA Toolkit
Đó là nó! Bây giờ chúng ta có một máy Linux Ubuntu với GPU sẵn sàng sử dụng.
NVIDIA Container Toolkit
Nói một cách đơn giản, đây là Các Công cụ và Thư viện cho phép các container sử dụng GPU. Chúng ta sẽ bắt đầu với việc cài đặt NVIDIA Container Toolkit. Ví dụ này tập trung vào các container Docker mà tôi tin rằng nhiều người sử dụng nhất.
Từ ví dụ này, chúng ta sẽ sử dụng Ubuntu làm ví dụ cài đặt.
Điều kiện tiên quyết:
- Container engine (Docker, Containerd)
 - Nvidia GPU Driver
 
- Cấu hình production repository
 
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
- Cập nhật danh sách gói từ repository
 
sudo apt-get update
- Cài đặt các gói NVIDIA Container Toolkit
 
sudo apt-get install -y nvidia-container-toolkit
Từ 3 bước này, chúng ta sẽ có nvidia container toolkit được cài đặt. Bước tiếp theo là cấu hình container engine của chúng ta để sử dụng toolkit này.
Cấu hình Docker
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
Đối với các container engine khác, bạn có thể kiểm tra Tài liệu để biết thêm chi tiết.
Đối với Kubernetes, tôi sẽ làm nó thành một chủ đề chính khác vì có một Công cụ cụ thể khác phù hợp hơn cho K8S hơn là cài đặt GPU Driver và cấu hình toolkit trên mỗi Node.
Công cụ Giám sát
Sau khi cài đặt và sử dụng, điều tiếp theo chúng ta nên làm là giám sát việc sử dụng. Giám sát ban đầu đơn giản nhất có thể chỉ sử dụng nvidia-smi để xem có bao nhiêu GPU và mức sử dụng bao nhiêu, nhưng điều đó không đủ chi tiết. Vì vậy, tôi muốn giới thiệu các Công cụ khác như các tùy chọn sử dụng.
Nvitop
CLI tương tác có thể xem việc sử dụng GPU chi tiết. Cài đặt rất dễ dàng với:
pip3 install --upgrade nvitop
Sau đó chỉ cần sử dụng lệnh:
nvitop
Và bạn sẽ có một giao diện người dùng tương tác được hiển thị qua terminal


Nơi chúng ta có thể Drill-Down để xem từng quá trình đang chạy.
NVIDIA DCGM
Công cụ chính thức từ Nvidia được phát triển với Golang, hoạt động như một API để trích xuất các chỉ số GPU Cluster khác nhau.
Để cài đặt trên các VM thông thường, bạn cần GPU Driver, Docker engine cùng với Nvidia Container toolkit được cài đặt trước để sử dụng DCGM.
Đối với các phương pháp sử dụng, tôi sẽ để chúng để viết thành một bài viết đầy đủ riêng vì sử dụng DCGM tốt nhất đòi hỏi sử dụng nó với một số Công cụ khác như Prometheus và Grafana Dashboard.
Tóm tắt Cuối cùng
Đến bây giờ, tôi nghĩ mọi người đã đọc đến cuối nên có thể cung cấp các VM với GPU sẵn sàng để đội sử dụng. Nếu chúng ta dần dần hiểu nó, tôi nghĩ nó dễ hơn so với việc cài đặt một số Dịch vụ. Còn về nội dung chưa hoàn thành, vui lòng tiếp tục theo dõi. Nó sẽ giúp bạn xây dựng cơ sở hạ tầng từ dev đến production.