Bài này tra theo thông báo lỗi hoặc theo hiện tượng. Trước khi tra, chạy ba lệnh kiểm nhanh để khoanh vùng xem lớp nào đang hỏng:
nvidia-smi # trinh dieu khien
nvcc --version # bo cong cu tinh toan
python -c "import torch; print(torch.cuda.is_available())" # thu vien
Lệnh đầu tiên hỏng thì mọi thứ sau nó đều hỏng theo, nên sửa từ trên xuống.
1. nvidia-smi: command not found
Trình điều khiển chưa được cài. Xem bài Cài trình điều khiển và bộ công cụ để chạy việc trên GPU, mục 2.
Nếu quý Khách hàng tin rằng đã cài rồi, kiểm xem đường dẫn có trong biến môi trường không:
ls /usr/bin/nvidia-smi /usr/local/bin/nvidia-smi 2>/dev/null
echo $PATH
2. NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver
Trình điều khiển có trên máy nhưng không nạp được. Ba nguyên nhân, xếp theo tần suất:
a. Máy vừa cập nhật nhân hệ điều hành. Đây là nguyên nhân phổ biến nhất. Bản nhân mới không có mô-đun của trình điều khiển. Cài lại trình điều khiển rồi khởi động lại:
sudo ubuntu-drivers autoinstall
sudo reboot
b. Chưa khởi động lại sau khi cài. Trình điều khiển cần một lượt khởi động lại mới nạp.
c. Mô-đun bị chặn. Kiểm xem mô-đun đã nạp chưa:
lsmod | grep nvidia
Không có dòng nào thì thử nạp tay và đọc thông báo lỗi:
sudo modprobe nvidia
3. lspci không thấy card nào
Nếu lspci | grep -i nvidia không trả về gì, nghĩa là máy không nhìn thấy phần cứng GPU. Đây không phải lỗi phần mềm và quý Khách hàng không tự sửa được.
Hãy báo bộ phận hỗ trợ ngay, kèm kết quả của hai lệnh:
lspci | grep -i -E "vga|3d|display"
uname -a
4. torch.cuda.is_available() trả về False dù nvidia-smi chạy tốt
Lớp 1 ổn, lỗi nằm ở lớp 3. Gần như luôn là lệch phiên bản: thư viện được dựng cho một phiên bản bộ công cụ tính toán khác với phiên bản đang có trên máy.
Cách xử lý: gỡ thư viện rồi cài lại bằng đúng câu lệnh mà trang chủ của thư viện sinh ra cho phiên bản bộ công cụ của máy.
pip uninstall torch torchvision torchaudio
# roi cai lai bang cau lenh lay tu trang chu PyTorch, chon dung phien ban
Một nguyên nhân khác, ít gặp hơn: quý Khách hàng vô tình cài bản chỉ chạy trên CPU. Bản đó không bao giờ thấy GPU, dù máy có card.
5. CUDA out of memory
Bộ nhớ GPU đã đầy. Đây là giới hạn cứng, không phải lỗi cấu hình.
Xem ai đang chiếm bộ nhớ:
nvidia-smi
Cột Processes liệt kê các tiến trình đang giữ bộ nhớ. Thường gặp:
| Tình huống | Xử lý |
|---|---|
| Một lượt chạy trước chưa thoát hẳn | Kết thúc tiến trình đó, bộ nhớ được trả lại |
| Nhiều phiên notebook mở cùng lúc | Mỗi phiên giữ bộ nhớ riêng. Đóng bớt |
| Mô hình thật sự lớn hơn bộ nhớ card | Giảm kích thước lô, hoặc dùng độ chính xác thấp hơn, hoặc cần card nhiều bộ nhớ hơn |
Kết thúc một tiến trình đang chiếm GPU:
sudo kill -9 <so-hieu-tien-trinh>
Nếu sau khi kết thúc hết tiến trình mà bộ nhớ vẫn bị giữ, khởi động lại máy là cách chắc chắn nhất.
6. GPU chạy nhưng việc vẫn chậm
Trước khi kết luận GPU yếu, hãy xem nó có thật sự đang làm việc không:
watch -n 1 nvidia-smi
Nhìn cột GPU-Util:
- Luôn gần 100%: GPU đang chạy hết sức. Muốn nhanh hơn thì cần card mạnh hơn hoặc tối ưu lại thuật toán.
- Dao động thấp, lúc 0% lúc 40%: GPU đang chờ dữ liệu. Đây mới là trường hợp phổ biến, và nút cổ chai nằm ở chỗ khác chứ không phải GPU.
Khi GPU chờ dữ liệu, kiểm theo thứ tự:
| Nghi ngờ | Cách xem | Cách sửa |
|---|---|---|
| Đọc ổ đĩa chậm | iostat -x 2 |
Chuyển dữ liệu đang dùng lên ổ nhanh, hoặc nạp sẵn vào bộ nhớ |
| Khâu chuẩn bị dữ liệu chậm | Xem CPU có đầy không bằng top |
Tăng số luồng nạp dữ liệu |
| Dữ liệu nằm ở kho qua mạng | nvidia-smi thấp mà mạng đầy |
Chép phần đang dùng về ổ máy trước khi chạy |
| Lô dữ liệu quá nhỏ | Tăng kích thước lô cho tới khi gần đầy bộ nhớ GPU |
7. Máy chạy được một lúc rồi chậm dần
Kiểm nhiệt độ trong nvidia-smi. Card nóng tới ngưỡng sẽ tự giảm tốc để bảo vệ. Nếu nhiệt độ cao liên tục trong khi tải không đổi, hãy báo bộ phận kỹ thuật, vì đó là vấn đề ở tầng phần cứng.
8. Mất kết nối giữa lúc chạy việc dài
Việc chạy trong phiên SSH sẽ chết theo phiên khi mạng ngắt kết nối. Đây là nguyên nhân làm mất nhiều giờ tính toán, và tránh được hoàn toàn.
Chạy việc dài trong một phiên giữ được:
sudo apt install -y tmux
tmux new -s viec
# chay lenh cua quy Khach hang o day
# nhan Ctrl+B roi nhan D de roi phien ma viec van chay
Quay lại phiên đó sau:
tmux attach -t viec
9. Thông tin cần gửi khi báo hỗ trợ
Mô tả “GPU không chạy” rất khó tra. Gửi kèm:
- Kết quả
nvidia-smi(hoặc nguyên văn thông báo lỗi nếu lệnh không chạy). - Kết quả
lspci | grep -i nvidia. - Kết quả
uname -a. - Tên và phiên bản thư viện đang dùng.
- Việc đang làm lúc gặp lỗi, và nó đã từng chạy được chưa.
Điểm số 5 quan trọng hơn vẻ ngoài của nó: “chưa bao giờ chạy được” và “hôm qua còn chạy” dẫn tới hai hướng tra hoàn toàn khác nhau.