Bỏ qua để đến nội dung

Không dùng GPU — CUDA error 500

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 only

Trong 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.

Phép thử quyết định là mẫu tính toán của chính NVIDIA. Chạy nó trên host:

Terminal window
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ỏngFailed 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:

Terminal window
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.

  1. 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 --update rồi wsl --shutdown sau đó.

  2. Đấu nối lại container runtime với driver vừa làm mới:

    Terminal window
    sudo nvidia-ctk runtime configure --runtime=docker
    sudo systemctl restart docker
  3. 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
  4. 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 inference
    docker compose -f docker-compose.release.yml logs inference | grep "EP enabled"
    # kỳ vọng: "TensorRT EP enabled" hoặc "CUDA EP enabled"

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.

  • 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-smi qua đượ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.