# Không dùng GPU — CUDA error 500

> Container suy luận ghi log "CUDA failure 500" và tụt xuống CPU dù đã cài GPU.

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

Việc `nvidia-smi` báo cáo GPU của bạn hiện diện **không** có nghĩa là tính toán CUDA hoạt động.
Lớp quản lý (`nvidia-smi`) và driver tính toán là hai thứ khác nhau — driver
tính toán mới là cái đã hỏng ở đây.

## 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:

```bash
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:

```bash
docker compose -f docker-compose.release.yml logs inference | grep -E "CUDA failure 500|resolved to CPU"
```

## Sửa

Đâ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 đó.

   
   Chỉ cập nhật Docker / nền tảng container **không** sửa được điều này. Lỗi tính toán
   nằm ở lớp driver GPU bên dưới container runtime. Một bản cập nhật nền tảng
   thậm chí có thể đặt lại thiết lập GPU passthrough và làm mọi thứ tệ hơn.
   

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

   ```bash
   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`:

   ```bash
   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ó:

   ```bash
   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"
   ```

### 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

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

## Liên quan

- [Execution provider tụt xuống CPU](/vi/troubleshooting/execution-provider-fallback/) — 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](/vi/install-deploy/hardware-setup/) — các cấp GPU được hỗ trợ.
- [Khả năng quan sát & Cảnh báo](/operate/monitoring/) — nơi provider đang hoạt động được hiển thị.
