GPU가 예상되는데 CPU에서 실행될 때
추론이 예상보다 느리고, 대시보드의 Python 추론 카드에 CUDA 대신 CPU (fallback)이 표시됩니다.
TX2에서 실행 공급자 체인은 CUDA → CPU입니다. 기본 실행 모드인 auto는 CUDA를 먼저 시도합니다. CUDA를 시작할 수 없으면 서비스는 CPU에서 계속 실행됩니다. 이 안전망이 문제를 숨기기도 합니다. 폴백한 박스는 여전히 예측하지만 더 느릴 뿐입니다.
“(fallback)“이 없는 CPU 배지는 박스가 의도적으로 CPU로 설정되었다는 뜻입니다(EXECUTION_MODE=cpu 또는 FORCE_CPU=1). 이것은 폴백이 아닙니다.
배지가 기준이 되는 사실입니다. 배지는 추론 서비스가 보고한 대로, 로드된 모델이 실제로 실행되는 공급자를 표시합니다.
추론 컨테이너의 콘솔에는 오류만 표시됩니다. 경고는 컨테이너 안의 로그 파일에 기록됩니다. 그 파일에서 폴백 경고를 찾으세요:
docker exec aiboard-inference-real grep -E "resolved to CPU only|STRICT_EP" /data/logs/inference.log각 줄은 타임스탬프로 시작합니다. 가장 최근 시작 이후의 줄을 확인하세요.
resolved to CPU only→ 이 컨테이너의 ONNX Runtime이 CUDA 공급자를 전혀 제공하지 않습니다.- 일치하는 줄이 없는데 배지에 여전히 **CPU (fallback)**이 표시됨 → CUDA가 제공되었지만 GPU에서 시작하지 못했습니다.
컨테이너가 어떤 실행 모드로 시작했는지 확인하려면:
docker logs aiboard-inference-real 2>&1 | grep "Starting REAL inference"기본값으로 실행 중인 박스는 Starting REAL inference service (Jetson GPU, EXECUTION_MODE=auto)...를 출력합니다.
대시보드의 로그 페이지도 추론 서비스의 정보 수준 줄을 스트리밍합니다. 정상 박스의 시작 줄이 있으면 CUDA EP enabled와, 그 뒤에 CUDAExecutionProvider를 첫 번째로 나열하는 Providers: 줄이 보입니다.
-
추론 컨테이너가 NVIDIA 런타임으로 실행되는지 확인합니다:
Terminal window docker inspect -f '{{.HostConfig.Runtime}}' aiboard-inference-realnvidia가 출력되어야 합니다. NVIDIA 런타임이 TX2의 CUDA 라이브러리를 컨테이너 안에서 보이게 합니다. 번들의 compose 파일이 이를 설정합니다. 다른 값이 출력되면 compose 파일이 변경된 것입니다. 같은 버전 이상의 릴리스 번들에서sudo ./update.sh를 실행하여 복원하세요. 업데이트가 번들의 compose 파일을/opt/aiboard/compose/에 다시 복사합니다. -
추론 이미지가 Jetson GPU 이미지인지 확인합니다:
Terminal window docker inspect -f '{{.Config.Image}}' aiboard-inference-real태그가
-jetson-gpu로 끝나야 합니다. 다른 이미지는 TX2의 GPU용으로 빌드되지 않았습니다.jetson-gpu릴리스 번들을 설치하세요. 오프라인 번들 설치를 참조하세요. -
두 확인을 모두 통과했는데도 박스가 계속 폴백하면, 호스트의 CUDA 스택이 문제입니다. GPU 미사용 — CUDA 오류를 따르세요.
폴백을 드러나게 만들기
섹션 제목: “폴백을 드러나게 만들기”반드시 GPU를 사용해야 하는 박스에서는 폴백하는 대신 서비스가 시작을 거부하도록 만드세요. 실행 모드를 cuda로 고정하고 엄격한 강제 적용을 켭니다.
릴리스 compose 파일은 추론 서비스에 EXECUTION_MODE=auto를 설정하고 STRICT_EP는 설정하지 않습니다. .env 파일은 둘 다 제어하지 않습니다. 설치된 compose 파일에서 변경하세요:
-
/opt/aiboard/compose/docker-compose.release.yml을 엽니다.inference서비스의environment:목록에서EXECUTION_MODE=auto를EXECUTION_MODE=cuda로 바꾸고STRICT_EP=1을 추가합니다:- EXECUTION_MODE=cuda- STRICT_EP=1 -
변경 사항이 적용되도록 추론 컨테이너를 다시 생성합니다:
Terminal window sudo docker compose --env-file /opt/aiboard/.env \-f /opt/aiboard/compose/docker-compose.release.yml up -d inference
이 설정에서는 CUDA에서 시작하지 못한 세션이 STRICT_EP: 오류로 서비스를 중지시키고, 원인을 해결할 때까지 컨테이너가 재시작됩니다. EXECUTION_MODE가 auto인 동안에는 STRICT_EP=1이 효과가 없습니다.
- 설치, 업데이트, 호스트 변경 후마다 공급자를 확인하세요. 정상 TX2에서는 대시보드에 CUDA가 표시됩니다. **CPU (fallback)**은 정상적인 변동이 아니라 결함으로 취급하세요.
- 번들의 compose 파일을 그대로 유지하세요. 이 파일에는 GPU에 필요한
runtime: nvidia가 들어 있습니다. - GPU 필수 박스에는 고정 + 강제 적용.
EXECUTION_MODE=cuda와STRICT_EP=1은 조용한 속도 저하를 눈에 보이는 시작 실패로 바꿉니다.
관련 항목
섹션 제목: “관련 항목”- GPU 미사용 — CUDA 오류 — 호스트에서 CUDA 자체가 동작하지 않을 때.
- 하드웨어 설정 — TX2의 실행 공급자.
- 환경 변수 —
EXECUTION_MODE,STRICT_EP,FORCE_CPU. - 모니터링 — 활성 공급자와 지연 시간 읽기.