첫 TensorRT 엔진 빌드하기

첫 TensorRT 엔진 빌드하기

이 튜토리얼은 약 10분 만에 첫 NVIDIA TensorRT 엔진을 엔드투엔드로 빌드하고 실행해 보는 거예요. 의도적으로 좁게 잡아서, 모델 하나·빌드 명령 하나·추론 명령 하나만 다뤄요. 목표는 디스크에 동작하는 엔진을 만들고 추론을 성공시키는 거예요 — TensorRT API를 가르치는 게 아니에요.

출처: Build Your First Engine (공식)

준비 사항

  • trtexec 도구가 PATH에 있는 TensorRT 11.3.0 설치 (Debian/RPM, tar/zip, 컨테이너 설치에는 포함, pip wheel은 미포함)
  • 지원되는 NVIDIA GPU
  • PATH에 CUDA Toolkit 13.4

TensorRT API를 알 필요는 없어요. 다만 옵션 Step 4 샘플을 실행하려면 동작하는 Python 환경이 필요해요.

Step 1: 모델 준비하기

ResNet-50 ONNX 모델을 다운로드해요.

wget https://github.com/onnx/models/raw/main/validated/vision/classification/resnet/model/resnet50-v2-7.onnx \
    -O resnet50.onnx

wget이 없다면 curl로도 받을 수 있어요.

curl -L -o resnet50.onnx https://github.com/onnx/models/raw/main/validated/vision/classification/resnet/model/resnet50-v2-7.onnx

이후 ls로 현재 디렉토리에 resnet50.onnx가 있는지 확인해요.

Step 2: 엔진 빌드하기

TensorRT와 함께 제공되는 trtexec 명령줄 도구로 ONNX 파일에서 엔진을 빌드해요.

trtexec --onnx=resnet50.onnx --saveEngine=resnet50.engine

최신 NVIDIA GPU에서는 빌드가 대략 30~90초 걸려요. 레이어 퓨전, 커널 선택, 프로파일링을 설명하는 TensorRT 로그가 보일 거예요. 빌드가 끝나면 엔진 크기와 빌드에 걸린 시간이 출력돼요.

예상 빌드 로그의 일부는 이렇게 생겼어요.

[I] [TRT] Some layers were fused during build.
[I] Engine built in 42.3 sec.
[I] Serialized engine size: 24 MiB

이후 ls에는 resnet50.onnxresnet50.engine 둘 다 보여야 해요.

Step 3: 엔진이 동작하는지 확인하기

랜덤 입력으로 추론을 실행해 엔진이 로드되고 실행되는지 확인해요.

trtexec --loadEngine=resnet50.engine --shapes=data:1x3x224x224

data는 이 ResNet-50 모델에서 ONNX 입력 텐서 이름이고, 1x3x224x224는 배치×채널×높이×너비예요. 다른 ONNX 파일이면 Netron 등으로 입력 이름과 형태를 확인해 --shapes에 넣으면 돼요.

예상 추론 요약은 이렇게 생겼어요.

[I] Average on 10 runs - GPU latency: 1.2 ms (end to end)
[I] Throughput: 833.3 qps
[I] PASSED

지연·처리량 수치는 GPU·드라이버·CUDA 버전에 따라 달라요. 위 수치는 중급 NVIDIA GPU의 예시일 뿐, 하드웨어를 보장하는 값이 아니에요. 성공 여부는 PASSED(그리고 FAILED 없음)로 판단해요.

방금 무엇을 한 건가요

다섯 개 명령으로 세 가지를 증명했어요.

  1. TensorRT 설치가 ONNX 파일을 읽을 수 있다.
  2. 빌드 단계가 모델을 GPU 특화 엔진으로 컴파일할 수 있다.
  3. 런타임이 그 엔진을 로드하고 실행할 수 있다.

이것이 최소한의 유효 추론 루프예요. 문서의 나머지는 이 기반 위에 쌓여 있어요.

더 알아보기