Không dùng GPU — CUDA error 500
Triệu chứng
Phần tiêu đề “Triệu chứng”Hộp có một NVIDIA GPU, nhưng suy luận chạy trên CPU. Log container suy luận hiện:
CUDA failure 500: named symbol not found... resolved to CPU onlyTrong bảng điều khiển, thẻ Python Inference hiển thị CPU (fallback) thay vì TensorRT hoặc CUDA. Khi bật ép buộc GPU nghiêm ngặt, container thay vào đó thoát và liên tục khởi động lại.
Xác nhận
Phần tiêu đề “Xác nhận”Phép thử quyết định là mẫu tính toán của chính NVIDIA. Chạy nó trên host:
docker run --rm --gpus all nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0- Host khỏe mạnh → in
Test PASSED. - Host hỏng →
Failed to allocate device vector A (error code named symbol not found)!
Nếu các GPU được liệt kê bởi nvidia-smi -L nhưng mẫu này thất bại, GPU không dùng được để tính toán trong container. Vấn đề nằm ở stack GPU của host, không phải image Xisom.
Bạn cũng có thể xác nhận fallback trong log của container đang chạy:
docker compose -f docker-compose.release.yml logs inference | grep -E "CUDA failure 500|resolved to CPU"Đây là một sự cố tính toán GPU ở cấp host trên lớp driver nền tảng, nên bản sửa nằm trên host — không phải trong stack Xisom.
-
Cập nhật driver NVIDIA GPU trên host lên một bản hiện hành có hỗ trợ tính toán CUDA đầy đủ. Trên host Windows + WSL2, cũng chạy
wsl --updaterồiwsl --shutdownsau đó. -
Đấu nối lại container runtime với driver vừa làm mới:
Terminal window sudo nvidia-ctk runtime configure --runtime=dockersudo systemctl restart docker -
Chạy lại mẫu tính toán cho đến khi nó in
Test PASSED:Terminal window docker run --rm --gpus all nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0 -
Khởi động lại container suy luận và xác nhận nó đã nhận GPU. Không cần thay đổi cấu hình — chế độ thực thi mặc định tự chọn provider tốt nhất hiện có:
Terminal window docker compose -f docker-compose.release.yml restart inferencedocker compose -f docker-compose.release.yml logs inference | grep "EP enabled"# kỳ vọng: "TensorRT EP enabled" hoặc "CUDA EP enabled"
Trong khi host vẫn còn hỏng
Phần tiêu đề “Trong khi host vẫn còn hỏng”Hãy chạy gọn gàng trên CPU thay vì vật lộn với bước dò GPU. Đặt EXECUTION_MODE=cpu (hoặc FORCE_CPU=1) trên dịch vụ suy luận và khởi động lại. Hộp tiếp tục dự đoán trên CPU cho đến khi driver được sửa.
Đừng bật ép buộc GPU nghiêm ngặt (STRICT_EP=1) với một chế độ GPU trên một host hỏng — nó sẽ đúng đắn từ chối khởi động thay vì âm thầm chạy trên CPU, điều ngược lại với mong muốn của bạn trong lúc xử lý tạm.
Phòng ngừa
Phần tiêu đề “Phòng ngừa”- Làm cho việc âm thầm tụt xuống CPU trở nên ồn ào ở nơi GPU là bắt buộc. Trên các hộp phải chạy GPU, hãy ghim provider và bật ép buộc nghiêm ngặt (
EXECUTION_MODE=cuda+STRICT_EP=1) để một thư viện GPU bị thiếu làm container thất bại lúc khởi động thay vì âm thầm tụt xuống CPU. - Coi mẫu tính toán là cổng nghiệm thu sau bất kỳ cập nhật driver-GPU hoặc host nào —
nvidia-smiqua được không phải bằng chứng đủ rằng suy luận sẽ dùng GPU. - Lần chạy đầu chậm, không phải bị kẹt. Ở lần khởi động GPU đầu tiên engine được biên dịch và đệm (2–3 phút). Các lần khởi động lại sau đó nhanh. Đừng nhầm cửa sổ khởi động dài với lỗi ở trên.
Liên quan
Phần tiêu đề “Liên quan”- Execution provider tụt xuống CPU — khi GPU host vẫn ổn nhưng provider vẫn rớt một cấp.
- Thiết lập phần cứng — các cấp GPU được hỗ trợ.
- Khả năng quan sát & Cảnh báo — nơi provider đang hoạt động được hiển thị.