콘텐츠로 이동

GPU가 예상되는데 CPU에서 실행될 때

추론이 예상보다 느리고, 대시보드의 Python 추론 카드에 CUDA 대신 CPU (fallback)이 표시됩니다.

TX2에서 실행 공급자 체인은 CUDA → CPU입니다. 기본 실행 모드인 auto는 CUDA를 먼저 시도합니다. CUDA를 시작할 수 없으면 서비스는 CPU에서 계속 실행됩니다. 이 안전망이 문제를 숨기기도 합니다. 폴백한 박스는 여전히 예측하지만 더 느릴 뿐입니다.

“(fallback)“이 없는 CPU 배지는 박스가 의도적으로 CPU로 설정되었다는 뜻입니다(EXECUTION_MODE=cpu 또는 FORCE_CPU=1). 이것은 폴백이 아닙니다.

배지가 기준이 되는 사실입니다. 배지는 추론 서비스가 보고한 대로, 로드된 모델이 실제로 실행되는 공급자를 표시합니다.

추론 컨테이너의 콘솔에는 오류만 표시됩니다. 경고는 컨테이너 안의 로그 파일에 기록됩니다. 그 파일에서 폴백 경고를 찾으세요:

Terminal window
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에서 시작하지 못했습니다.

컨테이너가 어떤 실행 모드로 시작했는지 확인하려면:

Terminal window
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: 줄이 보입니다.

  1. 추론 컨테이너가 NVIDIA 런타임으로 실행되는지 확인합니다:

    Terminal window
    docker inspect -f '{{.HostConfig.Runtime}}' aiboard-inference-real

    nvidia가 출력되어야 합니다. NVIDIA 런타임이 TX2의 CUDA 라이브러리를 컨테이너 안에서 보이게 합니다. 번들의 compose 파일이 이를 설정합니다. 다른 값이 출력되면 compose 파일이 변경된 것입니다. 같은 버전 이상의 릴리스 번들에서 sudo ./update.sh를 실행하여 복원하세요. 업데이트가 번들의 compose 파일을 /opt/aiboard/compose/에 다시 복사합니다.

  2. 추론 이미지가 Jetson GPU 이미지인지 확인합니다:

    Terminal window
    docker inspect -f '{{.Config.Image}}' aiboard-inference-real

    태그가 -jetson-gpu로 끝나야 합니다. 다른 이미지는 TX2의 GPU용으로 빌드되지 않았습니다. jetson-gpu 릴리스 번들을 설치하세요. 오프라인 번들 설치를 참조하세요.

  3. 두 확인을 모두 통과했는데도 박스가 계속 폴백하면, 호스트의 CUDA 스택이 문제입니다. GPU 미사용 — CUDA 오류를 따르세요.

반드시 GPU를 사용해야 하는 박스에서는 폴백하는 대신 서비스가 시작을 거부하도록 만드세요. 실행 모드를 cuda로 고정하고 엄격한 강제 적용을 켭니다.

릴리스 compose 파일은 추론 서비스에 EXECUTION_MODE=auto를 설정하고 STRICT_EP는 설정하지 않습니다. .env 파일은 둘 다 제어하지 않습니다. 설치된 compose 파일에서 변경하세요:

  1. /opt/aiboard/compose/docker-compose.release.yml을 엽니다. inference 서비스의 environment: 목록에서 EXECUTION_MODE=auto를 EXECUTION_MODE=cuda로 바꾸고 STRICT_EP=1을 추가합니다:

    - EXECUTION_MODE=cuda
    - STRICT_EP=1
  2. 변경 사항이 적용되도록 추론 컨테이너를 다시 생성합니다:

    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은 조용한 속도 저하를 눈에 보이는 시작 실패로 바꿉니다.