Cài trình điều khiển và bộ công cụ để chạy việc trên GPU

Có phần cứng GPU chưa đủ. Để phần mềm dùng được GPU, máy cần ba lớp xếp chồng lên nhau. Bài này hướng dẫn dựng đủ ba lớp đó trên Ubuntu, và nói rõ chỗ nào hay sai.

1. Ba lớp, hiểu trước khi cài

Lớp Là gì Dấu hiệu đã có
Trình điều khiển Phần mềm để hệ điều hành nói chuyện với card nvidia-smi ra bảng
Bộ công cụ tính toán Thư viện để chương trình gọi xuống GPU nvcc --version ra phiên bản
Thư viện của việc PyTorch, TensorFlow, phần mềm dựng hình Chương trình báo thấy GPU

Phần lớn rắc rối đến từ việc ba lớp không khớp phiên bản với nhau. Nên đi theo thứ tự từ trên xuống, và mỗi lớp kiểm xong mới sang lớp sau.

2. Lớp 1: trình điều khiển trên Ubuntu

Cập nhật hệ thống trước:

sudo apt update
sudo apt upgrade -y

Xem hệ thống gợi ý trình điều khiển nào cho card đang có:

sudo apt install -y ubuntu-drivers-common
ubuntu-drivers devices

Lệnh này in ra danh sách, trong đó một dòng được đánh dấu là khuyến nghị. Cài đúng dòng đó:

sudo ubuntu-drivers autoinstall
sudo reboot

Máy khởi động lại xong, kiểm:

nvidia-smi

Ra bảng kèm tên card và một số phiên bản trình điều khiển là xong lớp 1. Chưa ra bảng thì đừng đi tiếp, vì mọi thứ phía sau đều dựa trên lớp này.

3. Lớp 2: bộ công cụ tính toán

Ở đây có một quyết định đáng cân nhắc, và chọn đúng tiết kiệm rất nhiều thời gian.

Cách A, dùng container. Không cài bộ công cụ lên máy, mà chạy việc trong container đã có sẵn đầy đủ. Đây là cách ít rủi ro nhất và là cách nên chọn nếu quý Khách hàng chưa có lý do riêng để làm khác.

# Cai Docker
curl -fsSL https://get.docker.com -o cai-docker.sh
less cai-docker.sh          # doc qua truoc khi chay
sudo sh cai-docker.sh

# Cai phan noi Docker voi GPU theo huong dan chinh thuc cua NVIDIA
# (goi nvidia-container-toolkit)

Kiểm bằng cách chạy thử một container và gọi nvidia-smi bên trong:

sudo docker run --rm --gpus all ubuntu nvidia-smi

Ra đúng bảng như chạy ngoài máy nghĩa là xong. Từ đây quý Khách hàng kéo về container đã dựng sẵn cho công việc của mình, không phải tự xếp phiên bản thư viện.

Cách B, cài thẳng lên máy. Chọn cách này khi phần mềm của quý Khách hàng không chạy trong container được. Tải bộ cài từ trang chính thức của NVIDIA, chọn đúng phiên bản hệ điều hành và kiến trúc. Sau khi cài, thêm đường dẫn vào biến môi trường rồi kiểm:

nvcc --version

4. Lớp 3: thư viện của việc

Với PyTorch hoặc TensorFlow, đừng cài bằng lệnh mặc định. Trang chủ của chúng có công cụ sinh câu lệnh theo đúng phiên bản bộ công cụ tính toán mà máy đang có. Lấy câu lệnh ở đó rồi chạy.

Cài xong, kiểm thư viện có thấy GPU không:

python -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0))"

In ra True kèm tên card là ba lớp đã thông suốt.

Nên dùng môi trường ảo Python cho từng việc, thay vì cài chung vào hệ thống:

sudo apt install -y python3-venv
python3 -m venv ~/moi-truong-ai
source ~/moi-truong-ai/bin/activate

Lý do: hai dự án khác nhau thường cần hai phiên bản thư viện khác nhau. Cài chung thì nâng cho dự án này là làm hỏng dự án kia.

5. Trên Windows Server

Trình điều khiển: tải bản dành cho dòng card đang có từ trang chính thức của NVIDIA, cài như phần mềm bình thường rồi khởi động lại.

Kiểm bằng Command Prompt:

nvidia-smi

Bộ công cụ tính toán và thư viện cài tương tự Linux, dùng bộ cài cho Windows.

⚠️ Lưu ý riêng của Windows: nếu quý Khách hàng kết nối bằng Remote Desktop, một vài phần mềm đồ hoạ sẽ không nhận GPU trong phiên Remote Desktop. Đây là cách Windows xử lý phiên từ xa, không phải lỗi của máy. Với những phần mềm đó, hãy chạy chúng dưới dạng dịch vụ hoặc tác vụ nền.

6. Ghi lại ba con số sau khi cài xong

Mở một tệp ghi chú và lưu lại:

  1. Tên card (lấy từ nvidia-smi).
  2. Phiên bản trình điều khiển.
  3. Phiên bản bộ công cụ tính toán.

Ba con số này là thứ đầu tiên mọi tài liệu và mọi bên hỗ trợ hỏi tới. Ghi sẵn thì không phải mò lại mỗi lần.

7. Thứ tự kiểm khi muốn chắc mọi thứ còn chạy

nvidia-smi                      # lop 1
nvcc --version                  # lop 2, neu cai thang len may
python -c "import torch; print(torch.cuda.is_available())"   # lop 3

Ba lệnh này mất mười giây và cho biết lớp nào đang hỏng. Chạy chúng sau mỗi lần cập nhật hệ thống.

8. Câu hỏi thường gặp

Cập nhật hệ điều hành có làm hỏng trình điều khiển không? Có thể, vì bản cập nhật nhân hệ điều hành đôi khi làm trình điều khiển không nạp được. Sau mỗi lần cập nhật lớn, chạy lại nvidia-smi để kiểm. Đây cũng là một lý do nữa để dùng container.

Tôi nên dùng container hay cài thẳng? Dùng container, trừ khi có lý do cụ thể không dùng được. Container tách phiên bản thư viện khỏi máy, nên nâng cấp hay chuyển sang máy khác đều đơn giản hơn nhiều.

Máy có nhiều GPU thì chọn dùng cái nào? Đặt biến môi trường CUDA_VISIBLE_DEVICES trước khi chạy chương trình, ví dụ CUDA_VISIBLE_DEVICES=0 để chỉ dùng card thứ nhất.

Cài xong mà nvidia-smi vẫn báo lỗi thì sao? Xem bài GPU không nhận hoặc chạy chậm: các nguyên nhân thường gặp.

Hướng dẫn này có ích cho bạn?

Cần đặt dịch vụ? Xem cấu hình và giá tại bảng giá Cloudzone - đặt gói trực tuyến, nhận dịch vụ ngay sau thanh toán. Cần tư vấn, mở khung chat ở góc phải màn hình.

Hướng dẫn liên quan