첫 TensorRT 엔진 빌드하기
첫 TensorRT 엔진 빌드하기
이 튜토리얼은 약 10분 만에 첫 NVIDIA TensorRT 엔진을 엔드투엔드로 빌드하고 실행해 보는 거예요. 의도적으로 좁게 잡아서, 모델 하나·빌드 명령 하나·추론 명령 하나만 다뤄요. 목표는 디스크에 동작하는 엔진을 만들고 추론을 성공시키는 거예요 — TensorRT API를 가르치는 게 아니에요.
준비 사항
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.onnx와 resnet50.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 없음)로 판단해요.
방금 무엇을 한 건가요
다섯 개 명령으로 세 가지를 증명했어요.
- TensorRT 설치가 ONNX 파일을 읽을 수 있다.
- 빌드 단계가 모델을 GPU 특화 엔진으로 컴파일할 수 있다.
- 런타임이 그 엔진을 로드하고 실행할 수 있다.
이것이 최소한의 유효 추론 루프예요. 문서의 나머지는 이 기반 위에 쌓여 있어요.