YOLO26 모델용 TensorRT Export#
고성능 환경에 컴퓨터 비전 모델을 배포하려면 속도와 효율성을 극대화하는 형식이 필요할 수 있습니다. 특히 NVIDIA GPU에 모델을 배포하는 경우에 그렇습니다.
TensorRT Export 형식을 사용하면 NVIDIA 하드웨어에서 빠르고 효율적으로 추론할 수 있도록 Ultralytics YOLO26 모델을 향상할 수 있습니다. 이 가이드에서는 변환 프로세스를 쉽게 따라 할 수 있는 단계를 제공하고, 딥러닝 프로젝트에서 NVIDIA의 고급 기술을 최대한 활용할 수 있도록 지원합니다.
TensorRT#
NVIDIA에서 개발한 TensorRT는 고속 딥러닝 추론을 위해 설계된 고급 소프트웨어 개발 키트(SDK)입니다. 객체 감지와 같은 실시간 애플리케이션에 적합합니다.
이 툴킷은 NVIDIA GPU에 맞게 딥러닝 모델을 최적화하여 더 빠르고 효율적인 연산을 가능하게 합니다. TensorRT 모델에는 레이어 융합, 정밀도 보정(INT8 및 FP16), 동적 텐서 메모리 관리, 커널 자동 튜닝과 같은 기법을 포함한 TensorRT 최적화가 적용됩니다. 딥러닝 모델을 TensorRT 형식으로 변환하면 개발자는 NVIDIA GPU의 잠재력을 최대한 실현할 수 있습니다.
TensorRT는 TensorFlow, PyTorch, ONNX를 비롯한 다양한 모델 형식과 호환되므로, 여러 프레임워크의 모델을 통합하고 최적화할 수 있는 유연한 솔루션을 제공합니다. 이러한 범용성 덕분에 다양한 하드웨어 및 소프트웨어 환경에서 효율적인 모델 배포가 가능합니다.
TensorRT는 엔진을 빌드한 GPU에서 해당 엔진의 프로파일링과 튜닝을 수행합니다. 배포 대상 GPU 아키텍처에 맞게 빌드하고 TensorRT/CUDA 런타임을 일치시키십시오. .engine 파일을 이식 가능한 모델 형식으로 취급하지 마십시오. 엣지 배포의 경우 Ultralytics Platform은 8개의 Jetson 대상 선택 항목을 제공하며, 각 항목의 실제 빌드 및 검증 상태가 문서화되어 있습니다. 또는 대상 디바이스에서 로컬로 Export할 수도 있습니다.
TensorRT 모델의 주요 기능#
TensorRT 모델은 고속 딥러닝 추론의 효율성과 효과를 높이는 다양한 주요 기능을 제공합니다.
-
정밀도 보정: TensorRT는 정밀도 보정을 지원하므로 특정 정확도 요구 사항에 맞게 모델을 미세 조정할 수 있습니다. 여기에는 INT8 및 FP16과 같은 낮은 정밀도 형식에 대한 지원이 포함되며, 허용 가능한 정확도 수준을 유지하면서 추론 속도를 더욱 높일 수 있습니다.
-
레이어 융합: TensorRT 최적화 프로세스에는 신경망의 여러 레이어를 하나의 연산으로 결합하는 레이어 융합이 포함됩니다. 이를 통해 메모리 액세스와 연산을 최소화하여 오버헤드를 줄이고 추론 속도를 향상합니다.
-
동적 텐서 메모리 관리: TensorRT는 추론 중 텐서 메모리 사용량을 효율적으로 관리하여 메모리 오버헤드를 줄이고 메모리 할당을 최적화합니다. 그 결과 GPU 메모리를 더욱 효율적으로 활용할 수 있습니다.
-
자동 커널 튜닝: TensorRT는 자동 커널 튜닝을 적용하여 모델의 각 레이어에 가장 최적화된 GPU 커널을 선택합니다. 이러한 적응형 접근 방식은 모델이 GPU의 연산 능력을 최대한 활용하도록 보장합니다.
TensorRT의 배포 옵션#
YOLO26 모델을 TensorRT 형식으로 Export하는 코드를 살펴보기 전에 TensorRT 모델이 일반적으로 어디에서 사용되는지 알아보겠습니다.
TensorRT는 여러 배포 옵션을 제공하며, 각 옵션은 통합 편의성, 성능 최적화, 유연성 간의 균형이 서로 다릅니다.
- TensorFlow 내 배포: 이 방법은 TensorRT를 TensorFlow에 통합하여 최적화된 모델을 익숙한 TensorFlow 환경에서 실행할 수 있도록 합니다. TF-TRT가 지원되는 레이어와 지원되지 않는 레이어를 효율적으로 처리할 수 있으므로, 이러한 레이어가 혼합된 모델에 유용합니다.
-
독립 실행형 TensorRT Runtime API: 세밀한 제어 기능을 제공하며 성능이 중요한 애플리케이션에 적합합니다. 더 복잡하지만 지원되지 않는 연산자를 사용자 지정 방식으로 구현할 수 있습니다.
-
NVIDIA Triton Inference Server: 다양한 프레임워크의 모델을 지원하는 옵션입니다. 클라우드 또는 엣지 추론에 특히 적합하며, 동시 모델 실행 및 모델 분석과 같은 기능을 제공합니다.
지원되는 작업#
TensorRT Export는 7가지 Ultralytics 작업을 모두 지원합니다. 시맨틱 세그멘테이션과 깊이 추정은 이러한 헤드를 제공하는 유일한 제품군인 YOLO26에서만 사용할 수 있습니다.
YOLO26 모델을 TensorRT로 Export#
YOLO26 모델을 TensorRT 형식으로 변환하면 실행 효율성을 높이고 성능을 최적화할 수 있습니다.
설치#
필요한 package를 설치하려면 다음을 실행하십시오:
# Install the required package for YOLO26
pip install ultralytics설치 과정과 관련된 자세한 지침 및 모범 사례는 YOLO26 설치 가이드를 확인하세요. YOLO26에 필요한 패키지를 설치하는 동안 문제가 발생하면 일반적인 문제 가이드에서 해결 방법과 팁을 확인하세요.
사용법#
사용 지침을 살펴보기 전에 Ultralytics에서 제공하는 YOLO26 모델을 확인하시기 바랍니다. 이를 통해 프로젝트 요구 사항에 가장 적합한 모델을 선택할 수 있습니다.
TensorRT 형식은 Export, Predict, Validate 모드를 지원합니다. 추론 및 검증에는 NVIDIA GPU가 필요합니다. 모델을 Export한 다음 Export된 모델을 로드하여 추론을 실행하거나 정확도를 검증하십시오.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to TensorRT format
model.export(format="engine") # creates 'yolo26n.engine'from ultralytics import YOLO
# Load the exported TensorRT model
model = YOLO("yolo26n.engine")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported TensorRT model
model = YOLO("yolo26n.engine")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")내보내기 인수#
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
format | str | 'engine' | 내보낸 모델의 대상 형식으로, 다양한 deployment environment와의 호환성을 정의합니다. |
imgsz | int 또는 tuple | 640 | 모델 입력에 사용할 이미지 크기입니다. 정사각형 이미지에는 정수를 사용하고, 특정 크기에는 (height, width) tuple을 사용할 수 있습니다. |
quantize | int 또는 str | None | 양자화 정밀도: 16(FP16) 또는 8(INT8/PTQ; 보정 data/fraction 필요); 32/미설정 시 FP32입니다. quantize=8(으)로 학습된 체크포인트는 보정 없이 자신이 포함한 범위에서 항상 INT8로 내보내집니다. 지원 중단된 half/int8 플래그를 대체합니다. |
dynamic | bool | False | 동적 입력 크기를 허용하여 다양한 이미지 크기를 더욱 유연하게 처리할 수 있습니다. |
simplify | bool | True | onnxslim을 사용하여 모델 그래프를 간소화하며, 이를 통해 성능과 호환성을 향상할 수 있습니다. |
opset | int | None | 중간 ONNX graph의 ONNX opset 버전을 지정합니다. 설정하지 않으면 지원되는 최신 버전을 사용합니다. |
workspace | float 또는 None | None | TensorRT 최적화를 위한 최대 워크스페이스 크기를 GiB 단위로 설정하여 메모리 사용량과 성능 간의 균형을 조정합니다. TensorRT가 디바이스 최대 용량까지 자동으로 할당하도록 하려면 None을 사용하십시오. |
nms | bool, 선택 사항 | None | 원시 출력(None, 기본값), 임베디드 NMS(True) 또는 NMS 없는 헤드(False)를 선택합니다. |
batch | int | 1 | 내보낼 모델의 배치 추론 크기 또는 predict 모드에서 내보낸 모델이 동시에 처리할 최대 이미지 수를 지정합니다. |
data | str | None | 데이터셋 YAML 경로로, 양자화에 필수적입니다. 분류의 경우 데이터셋 디렉터리나 내장 데이터셋 이름을 대신 사용합니다. quantize=8과 함께 생략하면 Ultralytics에서 모델 태스크에 대한 기본 보정 데이터셋을 선택하며, quantize=8(으)로 학습된 체크포인트에는 필요하지 않습니다. |
fraction | float, int 또는 list | 1.0 | Calibration subset은 비율, 이미지 수 또는 [train, val, test] 비율/개수로 지정합니다. 두 항목으로 구성된 목록에서는 test을 전체로 유지하고 0를 건너뜁니다. |
device | str | None | Export에 사용할 디바이스를 지정합니다. GPU(device=0) 또는 NVIDIA Jetson의 DLA(device=dla:0 또는 device=dla:1)를 지정할 수 있습니다. |
TensorRT로 Export할 때 CUDA를 지원하는 GPU를 사용해야 합니다.
TensorRT 11.2.1은 JetPack을 지원하지 않으며, Thor를 포함합니다. JetPack 릴리스에서 지원하는 TensorRT 10.x 런타임을 사용하십시오. device=dla:0 또는 device=dla:1의 경우, NVIDIA는 TensorRT 10.7을 DLA 지원이 포함된 마지막 릴리스로 지정합니다. TensorRT 11.0, 11.1 및 11.2는 DLA를 지원하지 않습니다.
내보내기 프로세스에 대한 자세한 내용은 Ultralytics 내보내기 문서 페이지를 참조하십시오.
INT8 양자화를 사용한 TensorRT Export#
INT8 정밀도를 사용하여 TensorRT로 Ultralytics YOLO 모델을 내보내는 것은 사후 학습 양자화(PTQ)를 실행합니다. TensorRT는 PTQ에 보정을 사용하며, 이는 YOLO 모델이 대표적인 입력 데이터로 추론을 처리할 때 각 활성화 텐서 내의 활성화 분포를 측정한 다음 해당 분포를 사용하여 각 텐서의 스케일 값을 추정합니다. 양자화 후보인 각 활성화 텐서에는 보정 프로세스에 의해 유도되는 연관된 스케일이 있습니다. 양자화 인식 학습을 통해 미세 조정된 quantize=8 체크포인트는 이미 INT8 범위를 포함하고 있으므로, 내보내기 시 보정을 건너뛰고 해당 범위를 사용합니다.
TensorRT 11에서는 암시적 양자화와 IInt8Calibrator 인터페이스가 제거되었습니다. TensorRT 11 이상에서 Ultralytics는 NVIDIA ModelOpt의 명시적 양자화를 사용하여 INT8 양자화를 수행합니다. 이 과정에서는 강력한 타입의 엔진을 빌드하기 전에 ONNX 그래프에 Q/DQ 노드를 삽입하며, FP16에는 ModelOpt AutoCast 혼합 정밀도 변환이 적용됩니다. quantize=8, quantize=16, data 인수는 동일한 방식으로 작동하며, ModelOpt는 처음 사용할 때 자동으로 설치됩니다. TensorRT 7~10에서는 아래에 설명된 레거시 보정기가 대신 사용됩니다.
암시적으로 양자화된 네트워크를 처리할 때 TensorRT는 레이어 실행 시간을 최적화하기 위해 INT8을 선택적으로 사용합니다. 레이어가 INT8에서 더 빠르게 실행되고 데이터 입력 및 출력에 양자화 스케일이 할당되어 있으면 해당 레이어에 INT8 정밀도의 커널이 할당됩니다. 그렇지 않으면 TensorRT는 해당 레이어에서 더 빠른 실행 시간을 제공하는 정밀도인 FP32 또는 FP16 중 하나를 커널에 선택합니다.
INT8 정밀도로 Export할 때 TensorRT 모델 가중치를 배포에 사용할 디바이스와 동일한 디바이스를 사용해야 합니다. 보정 결과는 디바이스마다 달라질 수 있기 때문입니다.
INT8 Export 구성#
Ultralytics YOLO 모델에 Export를 사용할 때 제공하는 인수는 Export된 모델의 성능에 큰 영향을 미칩니다. 또한 사용 가능한 디바이스 리소스에 따라 선택해야 하지만, 기본 인수는 대부분의 Ampere(또는 최신) NVIDIA 개별 GPU에서 대체로 작동합니다. 사용되는 보정 알고리즘은 GPU Export의 경우 "MINMAX_CALIBRATION"이며, NVIDIA Jetson의 DLA Export에는 "ENTROPY_CALIBRATION_2"이 사용됩니다. 사용 가능한 옵션에 대한 자세한 내용은 TensorRT Developer Guide에서 확인할 수 있습니다. Ultralytics의 테스트 결과 GPU Export에는 "MINMAX_CALIBRATION"가 가장 적합했으며, 알고리즘은 Export 디바이스에 따라 자동으로 선택됩니다.
-
workspace: 모델 가중치를 변환하는 동안 디바이스 메모리 할당 크기(GiB)를 제어합니다.-
보정 요구 사항과 사용 가능한 리소스에 따라
workspace값을 조정하십시오.workspace이 클수록 보정 시간이 늘어날 수 있지만 TensorRT가 더 넓은 범위의 최적화 전략을 탐색할 수 있어 모델 성능과 정확도가 향상될 가능성이 있습니다. 반대로workspace이 작으면 보정 시간을 줄일 수 있지만 최적화 전략이 제한되어 양자화된 모델의 품질에 영향을 줄 수 있습니다. -
기본값은
workspace=None이며 TensorRT가 메모리를 자동으로 할당할 수 있도록 합니다. 수동으로 구성할 때 보정이 충돌하여 경고 없이 종료되면 이 값을 늘려야 할 수 있습니다. -
workspace값이 디바이스에서 사용 가능한 메모리보다 크면 TensorRT는 Export 중UNSUPPORTED_STATE을 보고합니다. 이 경우workspace값을 낮추거나None으로 설정해야 합니다. -
workspace이 최댓값으로 설정되어 있고 보정에 실패하거나 충돌하면None을 사용하여 자동 할당을 수행하거나imgsz및batch값을 줄여 메모리 요구 사항을 낮추는 방법을 고려하십시오. -
INT8 보정은 각 디바이스에 따라 달라진다는 점을 기억하십시오. 보정을 위해 "고급" GPU를 빌려 사용하면 다른 디바이스에서 추론을 실행할 때 성능이 저하될 수 있습니다.
-
-
batch: 추론에 사용될 최대 배치 크기입니다. 추론 중에는 더 작은 배치를 사용할 수 있지만, 지정된 크기보다 큰 배치는 허용되지 않습니다.
작은 배치를 사용하면 INT8 보정 중 스케일링이 부정확해질 수 있습니다. 이는 프로세스가 관측한 데이터에 따라 조정되기 때문입니다. 작은 배치에는 값의 전체 범위가 반영되지 않을 수 있어 최종 보정에 문제가 발생할 수 있습니다. 더 큰 배치 크기를 사용하면 보다 대표성 있는 보정 결과를 얻는 데 도움이 됩니다.
NVIDIA의 실험에 따르면 INT8 양자화 보정 시 모델 데이터와 유사한 최소 500개의 보정 이미지를 사용하는 것이 권장됩니다. 이는 엄격한 요구사항이 아닌 가이드라인이며, 데이터셋에서 좋은 성능을 발휘하는 데 필요한 사항을 직접 실험해 보아야 합니다. TensorRT를 사용한 INT8 보정에는 보정 데이터가 필요하므로, TensorRT용 quantize=8에서 quantize=8(사후 학습 양자화)로 학습되지 않은 체크포인트를 내보낼 때는 반드시 data 인수를 사용하고, 검증의 이미지를 보정에 사용할 data="my_dataset.yaml"을 사용하십시오. quantize=8(으)로 학습된 체크포인트는 보정을 건너뛰므로 해당 체크포인트에는 data을 생략하십시오. INT8 양자화로 TensorRT에 내보낼 때 data에 값이 전달되지 않으면, 오류를 발생하는 대신 모델 태스크를 기반으로 하는 "소형" 예제 데이터셋 중 하나를 사용하는 것이 기본값이 됩니다.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.export(
format="engine",
dynamic=True, # (1)!
batch=8, # (2)!
workspace=4, # (3)!
quantize=8,
data="coco.yaml", # (4)!
)
# Load the exported TensorRT INT8 model
model = YOLO("yolo26n.engine", task="detect")
# Run inference
result = model.predict("https://ultralytics.com/images/bus.jpg")- 동적 축으로 내보냅니다. 명시적으로 설정하지 않는 한
dynamic은False(으)로 유지됩니다. 자세한 내용은 내보내기 인수를 참조하십시오. - Export된 모델 및 INT8 보정의 최대 배치 크기를 8로 설정합니다.
- 변환 프로세스에서 전체 디바이스를 할당하는 대신 4 GiB의 메모리를 할당합니다.
- 보정에 COCO 데이터 세트를 사용하며, 구체적으로는 검증에 사용되는 이미지(총 5,000장)를 사용합니다.
보정 캐시
TensorRT는 보정 .cache을 생성합니다. 이 파일은 동일한 데이터를 사용하여 향후 모델 가중치의 Export 속도를 높이는 데 재사용할 수 있지만, 데이터가 크게 다르거나 batch 값이 크게 변경되면 보정 결과가 좋지 않을 수 있습니다. 이러한 경우 기존 .cache의 이름을 변경하여 다른 디렉터리로 이동하거나 완전히 삭제해야 합니다.
YOLO에서 TensorRT INT8을 사용할 때의 장점#
-
모델 크기 감소: FP32에서 INT8로 양자화하면 모델 크기를 4배 줄일 수 있어(디스크 또는 메모리 기준), 모델 배포 시 다운로드 시간이 단축되고 저장 공간 요구 사항과 메모리 사용량이 감소합니다.
-
전력 소비 감소: INT8로 Export된 YOLO 모델의 낮은 정밀도 연산은 FP32 모델보다 전력을 적게 소비할 수 있으며, 특히 배터리로 작동하는 디바이스에서 효과적입니다.
-
추론 속도 향상: TensorRT는 대상 하드웨어에 맞게 모델을 최적화하므로 GPU, 임베디드 디바이스 및 가속기에서 추론 속도가 빨라질 수 있습니다.
추론 속도 참고 사항
TensorRT INT8로 Export된 모델을 사용한 처음 몇 번의 추론 호출에서는 전처리, 추론 및/또는 후처리 시간이 평소보다 오래 걸릴 수 있습니다. 추론 중 imgsz을 변경할 때도 이러한 현상이 발생할 수 있으며, 특히 imgsz이 Export 시 지정한 값과 다를 경우에 그렇습니다(Export의 imgsz는 TensorRT "optimal" 프로파일로 설정됩니다).
YOLO에서 TensorRT INT8을 사용할 때의 단점#
-
평가 지표 감소: 더 낮은 정밀도를 사용하면
mAP,Precision,Recall또는 모델 성능을 평가하는 데 사용되는 기타 지표가 다소 저하될 가능성이 높습니다. 점수 보정을 유지하기 위해 Sigmoid 레이어는 더 높은 정밀도로 유지되지만 INT8에서도 confidence 값이 변할 수 있으므로, INT8 모델 자체의 F1 곡선에서 운영 임계값을 선택하십시오. INT8로 Export할 때 다양한 디바이스의 작은 샘플에서mAP50및mAP50-95의 차이를 비교하려면 성능 결과 섹션을 참조하십시오. -
개발 시간 증가: 데이터 세트와 디바이스에 맞는 INT8 보정의 "최적" 설정을 찾으려면 상당한 테스트가 필요할 수 있습니다.
-
하드웨어 종속성: 보정 및 성능 향상은 하드웨어에 크게 종속될 수 있으며 모델 가중치의 이식성이 낮아집니다.
Ultralytics YOLO TensorRT Export 성능#
NVIDIA A100#
Ubuntu 22.04.3 LTS, python 3.10.12, ultralytics==8.2.4, tensorrt==8.6.1.post1에서 테스트했습니다.
80개의 사전 학습된 클래스를 포함하는 COCO로 학습된 이 모델의 사용 예제는 검출 문서를 참조하십시오.
각 테스트에서 사전 학습된 가중치 yolov8n.engine을 사용하여 mean, min(가장 빠름), max(가장 느림)의 추론 시간을 표시합니다.
| Precision | 평가 테스트 | 평균 (ms) | 최소 | 최대 (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | 크기 (픽셀) |
|---|---|---|---|---|---|---|---|
| FP32 | Prediction | 0.52 | 0.51 | 0.56 | 8 | 640 | ||
| FP32 | COCOval | 0.52 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Prediction | 0.34 | 0.34 | 0.41 | 8 | 640 | ||
| FP16 | COCOval | 0.33 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Prediction | 0.28 | 0.27 | 0.31 | 8 | 640 | ||
| INT8 | COCOval | 0.29 | 0.47 | 0.33 | 1 | 640 |
소비자용 GPU#
Windows 10.0.19045, python 3.10.9, ultralytics==8.2.4, tensorrt==10.0.0b6에서 테스트했습니다.
각 테스트에서 사전 학습된 가중치 yolov8n.engine을 사용하여 mean, min(가장 빠름), max(가장 느림)의 추론 시간을 표시합니다.
| Precision | 평가 테스트 | 평균 (ms) | 최소 | 최대 (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | 크기 (픽셀) |
|---|---|---|---|---|---|---|---|
| FP32 | Prediction | 1.06 | 0.75 | 1.88 | 8 | 640 | ||
| FP32 | COCOval | 1.37 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Prediction | 0.62 | 0.75 | 1.13 | 8 | 640 | ||
| FP16 | COCOval | 0.85 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Prediction | 0.52 | 0.38 | 1.00 | 8 | 640 | ||
| INT8 | COCOval | 0.74 | 0.47 | 0.33 | 1 | 640 |
임베디드 디바이스#
JetPack 6.0(L4T 36.3) Ubuntu 22.04.4 LTS, python 3.10.12, ultralytics==8.2.16, tensorrt==10.0.1에서 테스트했습니다.
각 테스트에서 사전 학습된 가중치 yolov8n.engine을 사용하여 mean, min(가장 빠름), max(가장 느림)의 추론 시간을 표시합니다.
| Precision | 평가 테스트 | 평균 (ms) | 최소 | 최대 (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | 크기 (픽셀) |
|---|---|---|---|---|---|---|---|
| FP32 | Prediction | 6.11 | 6.10 | 6.29 | 8 | 640 | ||
| FP32 | COCOval | 6.17 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Prediction | 3.18 | 3.18 | 3.20 | 8 | 640 | ||
| FP16 | COCOval | 3.19 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Prediction | 2.30 | 2.29 | 2.35 | 8 | 640 | ||
| INT8 | COCOval | 2.32 | 0.46 | 0.32 | 1 | 640 |
설정 및 구성에 대한 자세한 내용은 NVIDIA Jetson에서 Ultralytics YOLO를 사용하는 빠른 시작 가이드를 참조하십시오.
설정 및 구성에 대한 자세한 내용은 NVIDIA DGX Spark에서 Ultralytics YOLO를 사용하는 빠른 시작 가이드를 참조하십시오.
평가 방법#
이러한 모델의 Export 및 테스트 방법에 대한 자세한 내용은 아래 섹션을 펼쳐 확인하십시오.
Export 구성
Export 구성 인수에 대한 자세한 내용은 Export 모드를 참조하십시오.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
# TensorRT FP32
out = model.export(format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2)
# TensorRT FP16
out = model.export(format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, quantize=16)
# TensorRT INT8 with calibration `data` (i.e. COCO, ImageNet, or DOTAv1 for appropriate model task)
out = model.export(
format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, quantize=8, data="coco8.yaml"
)Predict 루프
자세한 내용은 Predict 모드를 참조하십시오.
import cv2
from ultralytics import YOLO
model = YOLO("yolo26n.engine")
img = cv2.imread("path/to/image.jpg")
for _ in range(100):
result = model.predict(
[img] * 8, # batch=8 of the same image
verbose=False,
device="cuda",
)검증 구성
검증 구성 인수에 대한 자세한 내용은 val 모드를 참조하십시오.
from ultralytics import YOLO
model = YOLO("yolo26n.engine")
results = model.val(
data="data.yaml", # COCO, ImageNet, or DOTAv1 for appropriate model task
batch=1,
imgsz=640,
verbose=False,
device="cuda",
)내보낸 YOLO26 TensorRT 모델 배포#
Ultralytics YOLO26 모델을 TensorRT 형식으로 성공적으로 내보냈다면 이제 모델을 배포할 수 있습니다. 다양한 환경에서 TensorRT 모델을 배포하는 방법에 대한 자세한 지침은 다음 리소스를 참조하세요.
-
Triton Server로 Ultralytics 배포: Ultralytics YOLO 모델에서 NVIDIA의 Triton Inference(이전 명칭: TensorRT Inference) Server를 사용하는 방법을 안내하는 가이드입니다.
-
NVIDIA TensorRT로 딥 뉴럴 네트워크 배포: GPU 기반 배포 플랫폼에서 NVIDIA TensorRT를 사용하여 딥 뉴럴 네트워크를 효율적으로 배포하는 방법을 설명하는 문서입니다.
-
NVIDIA 기반 PC를 위한 엔드투엔드 AI: NVIDIA TensorRT 배포: NVIDIA 기반 PC에서 AI 모델을 최적화하고 배포하기 위해 NVIDIA TensorRT를 사용하는 방법을 설명하는 블로그 게시물입니다.
-
NVIDIA TensorRT GitHub 저장소: NVIDIA TensorRT용 소스 코드와 문서가 포함된 공식 GitHub 저장소입니다.
요약#
이 가이드에서는 Ultralytics YOLO26 모델을 NVIDIA의 TensorRT 모델 형식으로 변환하는 방법을 살펴보았습니다. 이 변환 단계는 YOLO26 모델의 효율성과 속도를 향상하여 다양한 배포 환경에서 더욱 효과적으로 사용할 수 있도록 하는 데 중요합니다.
사용 방법에 대한 자세한 내용은 TensorRT 공식 문서를 참조하세요.
추가적인 Ultralytics YOLO26 통합 기능에 관심이 있다면, 통합 가이드 페이지에서 다양한 유용한 리소스와 정보를 확인할 수 있습니다.
FAQ#
최적화된 NVIDIA GPU 추론을 위해 Ultralytics YOLO26 모델을 TensorRT 형식으로 변환하려면 다음 단계를 따르세요.
-
필수 패키지 설치:
pip install ultralytics -
YOLO26 모델 내보내기:
from ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="engine") # creates 'yolo26n.engine' # Run inference model = YOLO("yolo26n.engine") results = model("https://ultralytics.com/images/bus.jpg")
자세한 내용은 YOLO26 설치 가이드와 내보내기 문서를 참조하세요.
-
TensorRT를 사용하여 YOLO26 모델을 최적화하면 다음과 같은 여러 이점이 있습니다.
- 더 빠른 추론 속도: TensorRT는 모델 레이어를 최적화하고 정밀도 보정(INT8 및 FP16)을 사용하여 정확도를 크게 저하시키지 않으면서 추론 속도를 높입니다.
- 메모리 효율성: TensorRT는 텐서 메모리를 동적으로 관리하여 오버헤드를 줄이고 GPU 메모리 활용도를 향상합니다.
- 레이어 융합: 여러 레이어를 단일 연산으로 결합하여 계산 복잡도를 줄입니다.
- 커널 자동 튜닝: 각 모델 레이어에 최적화된 GPU 커널을 자동으로 선택하여 최고의 성능을 보장합니다.
자세한 내용은 NVIDIA의 공식 TensorRT 문서와 TensorRT 상세 개요를 확인하세요.
네, INT8 양자화와 TensorRT를 사용하여 YOLO26 모델을 내보낼 수 있습니다. 이 과정에는 체크포인트가
quantize=8(양자화 인식 학습)으로 학습되어 체크포인트가 포함한 범위가 보정 없이 내보내지는 경우가 아니라면, 사후 학습 양자화(PTQ)와 보정이 포함됩니다.-
INT8로 내보내기:
from ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="engine", batch=8, workspace=4, quantize=8, data="coco.yaml") -
추론 실행:
from ultralytics import YOLO model = YOLO("yolo26n.engine", task="detect") result = model.predict("https://ultralytics.com/images/bus.jpg")
자세한 내용은 INT8 양자화를 사용한 TensorRT 내보내기 섹션을 참조하세요.
-
NVIDIA Triton Inference Server에서 YOLO26 TensorRT 모델을 배포하려면 다음 리소스를 활용할 수 있습니다.
- Triton Server로 Ultralytics YOLO26 배포: Triton Inference Server를 설정하고 사용하는 방법을 단계별로 안내합니다.
- NVIDIA TensorRT로 딥 뉴럴 네트워크 배포: 자세한 배포 옵션과 구성을 제공하는 NVIDIA의 TensorRT 기반 딥러닝 모델 배포 가이드입니다.
이 가이드를 통해 다양한 배포 환경에 YOLO26 모델을 효율적으로 통합할 수 있습니다.
TensorRT를 사용했을 때의 성능 향상은 사용한 하드웨어에 따라 달라질 수 있습니다. 다음은 일반적인 벤치마크 결과입니다.
-
NVIDIA A100:
- FP32 추론: ~0.52ms / 이미지
- FP16 추론: ~0.34ms / 이미지
- INT8 추론: ~0.28ms / 이미지
- INT8 정밀도에서는 mAP가 소폭 감소하지만 속도는 크게 향상됩니다.
-
소비자용 GPU(예: RTX 3080):
- FP32 추론: ~1.06ms / 이미지
- FP16 추론: ~0.62ms / 이미지
- INT8 추론: ~0.52ms / 이미지
다양한 하드웨어 구성에 대한 자세한 성능 벤치마크는 성능 섹션에서 확인할 수 있습니다.
TensorRT 성능에 대한 더욱 종합적인 정보는 Ultralytics 문서와 성능 분석 보고서를 참조하세요.
-