GPU 미사용 — CUDA 오류
Jetson TX2에서 다음 중 하나가 보입니다:
- Python 추론 카드에 CPU (fallback)이 표시되고, GPU가 예상되는데 CPU에서 실행될 때에서 compose 파일이나 이미지 문제를 찾지 못했습니다.
- 스택이 시작되지 않고, Docker가
nvidia런타임을 모른다고 보고합니다. - 추론 컨테이너가
no CUDA-capable device is detected를 로깅합니다. - 엄격한 GPU 강제 적용(
STRICT_EP=1)이 켜져 있고, 추론 컨테이너가STRICT_EP:오류로 종료되며 계속 재시작됩니다.
TX2에서 다음을 실행합니다.
-
JetPack 릴리스를 확인합니다:
Terminal window head -n 1 /etc/nv_tegra_releaseJetPack 4.5는
# R32 (release), REVISION: 5.로 시작하는 줄을 출력합니다. 릴리스 번들은 JetPack 4.5용으로 빌드됩니다. 컨테이너는 CUDA 라이브러리를 호스트에서 받으므로, 다른 JetPack 릴리스에서는 이미지가 기대하는 것과 맞지 않을 수 있습니다. -
Docker가 NVIDIA 런타임을 알고 있는지 확인합니다:
Terminal window docker info 2>/dev/null | grep -i runtimeRuntimes:줄에nvidia가 포함되어야 합니다. -
추론 컨테이너가 어떻게 실행되는지 확인합니다:
Terminal window docker inspect -f '{{.HostConfig.Runtime}} {{.Config.User}}' aiboard-inference-realnvidia 0:0이 출력되어야 합니다. TX2의 GPU 장치 노드에는 NVIDIA 런타임과 root가 필요합니다. root가 아니면 정상 보드에서도 CUDA가no CUDA-capable device is detected를 보고합니다. -
가장 최근 시작의 CUDA 오류를 찾습니다:
Terminal window docker logs --tail 200 aiboard-inference-real 2>&1 | grep -iE "cuda|STRICT_EP"
실패한 확인 항목을 해결한 다음 추론을 재시작합니다.
-
Docker에
nvidia런타임이 없음. JetPack 4.5와 함께 제공되는 NVIDIA 컨테이너 런타임을 JetPack 4.5 apt 저장소나 NVIDIA SDK Manager로 설치합니다:Terminal window sudo apt-get install -y nvidia-container-runtime그런 다음
/etc/docker/daemon.json에 등록하고 기본값으로 지정합니다:{"runtimes": {"nvidia": { "path": "nvidia-container-runtime", "runtimeArgs": [] }},"default-runtime": "nvidia"}sudo systemctl restart docker로 Docker를 재시작합니다. -
컨테이너가
nvidia 0:0이 아님. 설치된 compose 파일이 변경된 것입니다. 같은 버전 이상의 릴리스 번들에서sudo ./update.sh를 실행하여 복원하세요. -
JetPack 4.5가 아님. JetPack 4.5로 플래시한 TX2에서 번들을 실행하세요.
-
추론을 재시작하고 대시보드를 확인합니다:
Terminal window docker restart aiboard-inference-real서비스는 시작에 90초를 허용합니다. 그 후 카드에 CUDA가 표시됩니다.
호스트가 아직 손상된 동안
섹션 제목: “호스트가 아직 손상된 동안”GPU와 씨름하는 대신 의도적으로 CPU에서 실행하세요. 설치된 compose 파일에서 추론 서비스에 EXECUTION_MODE=cpu를 설정하고, STRICT_EP=1을 추가했다면 제거하세요. 파일 위치와 변경 적용 방법은 GPU가 예상되는데 CPU에서 실행될 때에 있습니다. 그러면 카드에 CPU가 표시되고, 호스트를 고칠 때까지 박스가 계속 예측합니다. 이후 EXECUTION_MODE를 다시 auto로 설정하세요.
손상된 호스트에서 STRICT_EP=1과 EXECUTION_MODE=cuda를 함께 사용하지 마세요. 그러면 컨테이너가 시작을 거부하며, 이는 우회 중에 원하는 것과 정반대입니다.
- 호스트를 변경한 후마다 확인을 다시 실행하세요. JetPack, Docker, NVIDIA 패키지를 변경한 후 위의 확인을 실행하고 카드에 CUDA가 표시되는지 확인하세요.
- GPU가 필수인 곳에서는 조용한 폴백을 드러나게 만드세요.
EXECUTION_MODE=cuda를 고정하고STRICT_EP=1을 설정하면, 손상된 CUDA 스택이 조용히 CPU에서 실행되는 대신 시작 시점에 컨테이너를 중지시킵니다. - 첫 시작은 멈춘 것이 아니라 느린 것입니다. CUDA가 초기화되는 동안 추론 헬스 체크는 최대 90초 동안
starting을 표시합니다. TX2에서는 TensorRT를 사용하지 않으므로 엔진 컴파일이 없습니다.
관련 항목
섹션 제목: “관련 항목”- GPU가 예상되는데 CPU에서 실행될 때 — GPU는 동작하지만 서비스가 여전히 폴백할 때.
- Jetson 배포 — 번들의 compose 파일이 담고 있는 TX2 설정.
- 하드웨어 설정 — TX2의 실행 공급자.
- 모니터링 — 활성 공급자가 표시되는 위치.