콘텐츠로 이동

GPU 미사용 — CUDA 오류 500

박스에 NVIDIA GPU가 있는데도 추론이 CPU에서 실행됩니다. 추론 컨테이너 로그에 다음이 표시됩니다:

CUDA failure 500: named symbol not found
... resolved to CPU only

대시보드의 Python Inference 카드에 TensorRTCUDA 대신 CPU (fallback)가 표시됩니다. 엄격한 GPU 강제 적용이 켜져 있으면 컨테이너가 대신 종료되고 계속 재시작됩니다.

결정적인 테스트는 NVIDIA의 자체 컴퓨트 샘플입니다. 호스트에서 실행하세요:

Terminal window
docker run --rm --gpus all nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0
  • 정상 호스트Test PASSED를 출력합니다.
  • 손상된 호스트Failed to allocate device vector A (error code named symbol not found)!

nvidia-smi -L로 GPU가 나열되는데도 이 샘플이 실패하면, 컨테이너에서 컴퓨트 용도로 GPU를 사용할 수 없습니다. 문제는 호스트 GPU 스택이지 Xisom 이미지가 아닙니다.

실행 중인 컨테이너 로그에서도 폴백을 확인할 수 있습니다:

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

이것은 플랫폼 드라이버 계층의 호스트 수준 GPU 컴퓨트 문제이므로, 해결은 호스트에서 이루어집니다 — Xisom 스택이 아닙니다.

  1. 호스트의 NVIDIA GPU 드라이버를 완전한 CUDA 컴퓨트 지원을 갖춘 최신 빌드로 업데이트합니다. Windows + WSL2 호스트에서는 이후 wsl --update를 실행한 뒤 wsl --shutdown도 실행하세요.

  2. 새로 고친 드라이버에 컨테이너 런타임을 다시 연결합니다:

    Terminal window
    sudo nvidia-ctk runtime configure --runtime=docker
    sudo systemctl restart docker
  3. 컴퓨트 샘플이 Test PASSED를 출력할 때까지 다시 실행합니다:

    Terminal window
    docker run --rm --gpus all nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0
  4. 추론 컨테이너를 재시작하고 GPU를 인식했는지 확인합니다. 구성 변경은 필요 없습니다 — 기본 실행 모드가 사용 가능한 최적의 공급자를 자동 선택합니다:

    Terminal window
    docker compose -f docker-compose.release.yml restart inference
    docker compose -f docker-compose.release.yml logs inference | grep "EP enabled"
    # 예상: "TensorRT EP enabled" 또는 "CUDA EP enabled"

GPU 프로브와 씨름하는 대신 CPU에서 깔끔하게 실행하세요. 추론 서비스에 EXECUTION_MODE=cpu(또는 FORCE_CPU=1)를 설정하고 재시작합니다. 드라이버가 수정될 때까지 박스는 CPU에서 계속 예측합니다.

손상된 호스트에서 GPU 모드와 함께 엄격한 GPU 강제 적용(STRICT_EP=1)을 켜지 마세요 — 조용히 CPU로 동작하는 대신 올바르게 시작을 거부하게 되며, 이는 우회 작업 중 원하는 것과 정반대입니다.

  • GPU가 필수인 곳에서는 조용한 CPU 폴백을 시끄럽게 만드세요. 반드시 GPU에서 실행해야 하는 박스에서는 공급자를 고정하고 엄격한 강제 적용(EXECUTION_MODE=cuda + STRICT_EP=1)을 켜서, GPU 라이브러리가 없으면 조용히 CPU로 저하되는 대신 시작 시 컨테이너가 실패하도록 하세요.
  • GPU 드라이버나 호스트 업데이트 후 컴퓨트 샘플을 합격 게이트로 취급하세요nvidia-smi 통과만으로는 추론이 GPU를 사용한다는 충분한 증거가 아닙니다.
  • 첫 실행은 느린 것이지 멈춘 것이 아닙니다. 첫 GPU 시작 시 엔진이 컴파일되고 캐시됩니다(2~3분). 이후 재시작은 빠릅니다. 긴 시작 구간을 위 실패와 혼동하지 마세요.