Ultralytics YOLO27:

YOLO26 모델용 TensorRT Export#

고성능 환경에 컴퓨터 비전 모델을 배포하려면 속도와 효율성을 극대화하는 형식이 필요할 수 있습니다. 특히 NVIDIA GPU에 모델을 배포하는 경우에 그렇습니다.

TensorRT Export 형식을 사용하면 NVIDIA 하드웨어에서 빠르고 효율적으로 추론할 수 있도록 Ultralytics YOLO26 모델을 향상할 수 있습니다. 이 가이드에서는 변환 프로세스를 쉽게 따라 할 수 있는 단계를 제공하고, 딥러닝 프로젝트에서 NVIDIA의 고급 기술을 최대한 활용할 수 있도록 지원합니다.

TensorRT#

NVIDIA TensorRT optimization workflow

NVIDIA에서 개발한 TensorRT는 고속 딥러닝 추론을 위해 설계된 고급 소프트웨어 개발 키트(SDK)입니다. 객체 감지와 같은 실시간 애플리케이션에 적합합니다.

이 툴킷은 NVIDIA GPU에 맞게 딥러닝 모델을 최적화하여 더 빠르고 효율적인 연산을 가능하게 합니다. TensorRT 모델에는 레이어 융합, 정밀도 보정(INT8 및 FP16), 동적 텐서 메모리 관리, 커널 자동 튜닝과 같은 기법을 포함한 TensorRT 최적화가 적용됩니다. 딥러닝 모델을 TensorRT 형식으로 변환하면 개발자는 NVIDIA GPU의 잠재력을 최대한 실현할 수 있습니다.

TensorRT는 TensorFlow, PyTorch, ONNX를 비롯한 다양한 모델 형식과 호환되므로, 여러 프레임워크의 모델을 통합하고 최적화할 수 있는 유연한 솔루션을 제공합니다. 이러한 범용성 덕분에 다양한 하드웨어 및 소프트웨어 환경에서 효율적인 모델 배포가 가능합니다.

TensorRT 엔진은 하드웨어 및 런타임에 종속됩니다

TensorRT는 엔진을 빌드한 GPU에서 해당 엔진의 프로파일링과 튜닝을 수행합니다. 배포 대상 GPU 아키텍처에 맞게 빌드하고 TensorRT/CUDA 런타임을 일치시키십시오. .engine 파일을 이식 가능한 모델 형식으로 취급하지 마십시오. 엣지 배포의 경우 Ultralytics Platform은 8개의 Jetson 대상 선택 항목을 제공하며, 각 항목의 실제 빌드 및 검증 상태가 문서화되어 있습니다. 또는 대상 디바이스에서 로컬로 Export할 수도 있습니다.

TensorRT 모델의 주요 기능#

TensorRT 모델은 고속 딥러닝 추론의 효율성과 효과를 높이는 다양한 주요 기능을 제공합니다.

  • 정밀도 보정: TensorRT는 정밀도 보정을 지원하므로 특정 정확도 요구 사항에 맞게 모델을 미세 조정할 수 있습니다. 여기에는 INT8 및 FP16과 같은 낮은 정밀도 형식에 대한 지원이 포함되며, 허용 가능한 정확도 수준을 유지하면서 추론 속도를 더욱 높일 수 있습니다.

  • 레이어 융합: TensorRT 최적화 프로세스에는 신경망의 여러 레이어를 하나의 연산으로 결합하는 레이어 융합이 포함됩니다. 이를 통해 메모리 액세스와 연산을 최소화하여 오버헤드를 줄이고 추론 속도를 향상합니다.

TensorRT neural network layer fusion optimization

  • 동적 텐서 메모리 관리: TensorRT는 추론 중 텐서 메모리 사용량을 효율적으로 관리하여 메모리 오버헤드를 줄이고 메모리 할당을 최적화합니다. 그 결과 GPU 메모리를 더욱 효율적으로 활용할 수 있습니다.

  • 자동 커널 튜닝: TensorRT는 자동 커널 튜닝을 적용하여 모델의 각 레이어에 가장 최적화된 GPU 커널을 선택합니다. 이러한 적응형 접근 방식은 모델이 GPU의 연산 능력을 최대한 활용하도록 보장합니다.

TensorRT의 배포 옵션#

YOLO26 모델을 TensorRT 형식으로 Export하는 코드를 살펴보기 전에 TensorRT 모델이 일반적으로 어디에서 사용되는지 알아보겠습니다.

TensorRT는 여러 배포 옵션을 제공하며, 각 옵션은 통합 편의성, 성능 최적화, 유연성 간의 균형이 서로 다릅니다.

  • TensorFlow 내 배포: 이 방법은 TensorRT를 TensorFlow에 통합하여 최적화된 모델을 익숙한 TensorFlow 환경에서 실행할 수 있도록 합니다. TF-TRT가 지원되는 레이어와 지원되지 않는 레이어를 효율적으로 처리할 수 있으므로, 이러한 레이어가 혼합된 모델에 유용합니다.

NVIDIA TensorRT optimization workflow

  • 독립 실행형 TensorRT Runtime API: 세밀한 제어 기능을 제공하며 성능이 중요한 애플리케이션에 적합합니다. 더 복잡하지만 지원되지 않는 연산자를 사용자 지정 방식으로 구현할 수 있습니다.

  • NVIDIA Triton Inference Server: 다양한 프레임워크의 모델을 지원하는 옵션입니다. 클라우드 또는 엣지 추론에 특히 적합하며, 동시 모델 실행 및 모델 분석과 같은 기능을 제공합니다.

지원되는 작업#

TensorRT Export는 7가지 Ultralytics 작업을 모두 지원합니다. 시맨틱 세그멘테이션과 깊이 추정은 이러한 헤드를 제공하는 유일한 제품군인 YOLO26에서만 사용할 수 있습니다.

태스크YOLOv8YOLO11YOLO26
검출
세그먼트
시맨틱
깊이
분류
포즈
OBB

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'
Prediction
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")

내보내기 인수#

인수유형기본값설명
formatstr'engine'내보낸 모델의 대상 형식으로, 다양한 deployment environment와의 호환성을 정의합니다.
imgszint 또는 tuple640모델 입력에 사용할 이미지 크기입니다. 정사각형 이미지에는 정수를 사용하고, 특정 크기에는 (height, width) tuple을 사용할 수 있습니다.
quantizeint 또는 strNone양자화 정밀도: 16(FP16) 또는 8(INT8/PTQ; 보정 data/fraction 필요); 32/미설정 시 FP32입니다. quantize=8(으)로 학습된 체크포인트는 보정 없이 자신이 포함한 범위에서 항상 INT8로 내보내집니다. 지원 중단된 half/int8 플래그를 대체합니다.
dynamicboolFalse동적 입력 크기를 허용하여 다양한 이미지 크기를 더욱 유연하게 처리할 수 있습니다.
simplifyboolTrueonnxslim을 사용하여 모델 그래프를 간소화하며, 이를 통해 성능과 호환성을 향상할 수 있습니다.
opsetintNone중간 ONNX graph의 ONNX opset 버전을 지정합니다. 설정하지 않으면 지원되는 최신 버전을 사용합니다.
workspacefloat 또는 NoneNoneTensorRT 최적화를 위한 최대 워크스페이스 크기를 GiB 단위로 설정하여 메모리 사용량과 성능 간의 균형을 조정합니다. TensorRT가 디바이스 최대 용량까지 자동으로 할당하도록 하려면 None을 사용하십시오.
nmsbool, 선택 사항None원시 출력(None, 기본값), 임베디드 NMS(True) 또는 NMS 없는 헤드(False)를 선택합니다.
batchint1내보낼 모델의 배치 추론 크기 또는 predict 모드에서 내보낸 모델이 동시에 처리할 최대 이미지 수를 지정합니다.
datastrNone데이터셋 YAML 경로로, 양자화에 필수적입니다. 분류의 경우 데이터셋 디렉터리나 내장 데이터셋 이름을 대신 사용합니다. quantize=8과 함께 생략하면 Ultralytics에서 모델 태스크에 대한 기본 보정 데이터셋을 선택하며, quantize=8(으)로 학습된 체크포인트에는 필요하지 않습니다.
fractionfloat, int 또는 list1.0Calibration subset은 비율, 이미지 수 또는 [train, val, test] 비율/개수로 지정합니다. 두 항목으로 구성된 목록에서는 test을 전체로 유지하고 0를 건너뜁니다.
devicestrNoneExport에 사용할 디바이스를 지정합니다. GPU(device=0) 또는 NVIDIA Jetson의 DLA(device=dla:0 또는 device=dla:1)를 지정할 수 있습니다.

TensorRT로 Export할 때 CUDA를 지원하는 GPU를 사용해야 합니다.

JetPack 및 DLA 호환성

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 양자화

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을 사용하여 자동 할당을 수행하거나 imgszbatch 값을 줄여 메모리 요구 사항을 낮추는 방법을 고려하십시오.

    • 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")
  1. 동적 축으로 내보냅니다. 명시적으로 설정하지 않는 한 dynamicFalse(으)로 유지됩니다. 자세한 내용은 내보내기 인수를 참조하십시오.
  2. Export된 모델 및 INT8 보정의 최대 배치 크기를 8로 설정합니다.
  3. 변환 프로세스에서 전체 디바이스를 할당하는 대신 4 GiB의 메모리를 할당합니다.
  4. 보정에 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할 때 다양한 디바이스의 작은 샘플에서 mAP50mAP50-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크기
(픽셀)
FP32Prediction0.520.51 | 0.568640
FP32COCOval0.520.520.371640
FP16Prediction0.340.34 | 0.418640
FP16COCOval0.330.520.371640
INT8Prediction0.280.27 | 0.318640
INT8COCOval0.290.470.331640

소비자용 GPU#

감지 성능(COCO)

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크기
(픽셀)
FP32Prediction1.060.75 | 1.888640
FP32COCOval1.370.520.371640
FP16Prediction0.620.75 | 1.138640
FP16COCOval0.850.520.371640
INT8Prediction0.520.38 | 1.008640
INT8COCOval0.740.470.331640

임베디드 디바이스#

감지 성능(COCO)

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크기
(픽셀)
FP32Prediction6.116.10 | 6.298640
FP32COCOval6.170.520.371640
FP16Prediction3.183.18 | 3.208640
FP16COCOval3.190.520.371640
INT8Prediction2.302.29 | 2.358640
INT8COCOval2.320.460.321640
정보

설정 및 구성에 대한 자세한 내용은 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 모델을 배포하는 방법에 대한 자세한 지침은 다음 리소스를 참조하세요.

요약#

이 가이드에서는 Ultralytics YOLO26 모델을 NVIDIA의 TensorRT 모델 형식으로 변환하는 방법을 살펴보았습니다. 이 변환 단계는 YOLO26 모델의 효율성과 속도를 향상하여 다양한 배포 환경에서 더욱 효과적으로 사용할 수 있도록 하는 데 중요합니다.

사용 방법에 대한 자세한 내용은 TensorRT 공식 문서를 참조하세요.

추가적인 Ultralytics YOLO26 통합 기능에 관심이 있다면, 통합 가이드 페이지에서 다양한 유용한 리소스와 정보를 확인할 수 있습니다.

FAQ#

  • 최적화된 NVIDIA GPU 추론을 위해 Ultralytics YOLO26 모델을 TensorRT 형식으로 변환하려면 다음 단계를 따르세요.

    1. 필수 패키지 설치:

      pip install ultralytics
    2. 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)와 보정이 포함됩니다.

    1. INT8로 내보내기:

      from ultralytics import YOLO
      
      model = YOLO("yolo26n.pt")
      model.export(format="engine", batch=8, workspace=4, quantize=8, data="coco.yaml")
    2. 추론 실행:

      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 모델을 배포하려면 다음 리소스를 활용할 수 있습니다.

    이 가이드를 통해 다양한 배포 환경에 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 문서와 성능 분석 보고서를 참조하세요.

댓글