NVIDIA는 오늘 고성능 딥 러닝 추론을 위한 API 에코시스템인 NVIDIA TensorRT의 최신 릴리스를 발표했습니다. TensorRT에는 프로덕션 애플리케이션에 지연 시간이 낮고 처리량이 높은 추론 런타임 및 모델 최적화가 포함됩니다.
이 게시물에서는 간편한 설치, 향상된 사용성, 향상된 성능, 기본적으로 지원되는 여러 AI 모델을 포함하여 이번 릴리스의 주요 기능 및 업그레이드를 간략하게 설명합니다.
개발자 경험 업그레이드
Debian 및 RPM 메타패키지가 업데이트되어 TensorRT 10.0을 더욱 간편하게 사용할 수 있습니다. 예를 들어 >apt-get install tensorrt
또는 pip install tensorrt를 사용하면 C++ 또는 Python에 관한 모든 관련 TensorRT 라이브러리를 설치할 수 있습니다.
또한 디버그 텐서는 빌드할 때 텐서를 디버그 텐서로 표시하기 위해 새로 추가된 API입니다. 이 API를 사용하면 그래프에서 발생하는 모든 문제를 더 쉽게 식별할 수 있습니다. 런타임에서 텐서의 값이 작성될 때마다 값, 유형, 차원과 함께 사용자 정의 콜백 함수가 호출됩니다.
TensorRT 10.0에는 파싱 호출이 실패할 경우 지원되지 않는 노드를 식별하는 도구가 ONNX parse
에 포함되어 있습니다. 이 오류 보고에는 노드 이름, 노드 유형, 실패 원인, 노드가 ONNX 로컬 함수에 있는 경우 로컬 함수 스택이 포함됩니다. getNbErrors
함수를 사용하여 이러한 오류의 수를 쿼리하고 getError
함수를 사용하여 개별 오류에 관한 정보를 가져올 수 있습니다.
TensorRT 10.0은 Windows 개발을 위한 주요 업그레이드이기도 합니다. Windows 개발자는 이제 버전 호환성, 하드웨어 순방향 호환성, 경량화된 엔진, Stable Diffusion 파이프라인 개선 사항을 활용할 수 있습니다.
기능 업그레이드
TensorRT 10.0 성능 하이라이트에는 블록 양자화 및 개선된 메모리 할당 옵션을 갖춘 INT4 WoQ(Weight-Only Quantization)가 포함됩니다. 또한 경량화된 엔진 및 가중치 스트리밍과 같은 새로운 기능은 더 큰 모델을 더 작은 GPU에 배포하는 프로세스를 용이하게 합니다. 이제는 전체 모델을 GPU 메모리에 맞출 필요가 없습니다.
INT4 가중치 전용 양자화(Weight-Only Quantization)
TensorRT 10.0은 하드웨어 아키텍처에 구애받지 않는 INT4를 사용한 가중치 압축을 지원합니다. WoQ는 메모리 대역폭이 GEMM 작업 성능을 제한하거나 GPU 메모리가 부족한 경우에 용이합니다. WoQ에서 GEMM 가중치는 INT4 정밀도로 양자화되는 반면 GEMM 입력 데이터 및 컴퓨팅 연산은 높은 정밀도로 유지됩니다. TensorRT WoQ 커널은 높은 정밀도로 내적을 계산하기 전에 메모리에서 4비트 가중치를 읽고 역양자화합니다.
블록 양자화는 양자화 스케일에서 더 높은 세분화 설정을 지원합니다. 단일 차원을 따라 텐서를 고정 크기 블록으로 나눕니다. 스케일 팩터는 각 블록에 정의되며 블록의 모든 요소는 공통 스케일 팩터를 공유합니다.
런타임 할당
createExecutionContext
는 실행 컨텍스트 디바이스 메모리의 할당 전략(kSTATIC
, kON_PROFILE_CHANGE
, kUSER_MANAGED
)을 지정하는 인수를 허용합니다. 사용자 관리 할당인 kUSER_MANAGED
의 경우, 실제 입력 모양을 기반으로 필요한 크기를 쿼리하기 위해 추가적인 API updateDeviceMemorySizeForShapes
가 추가됩니다.
경량화된 엔진
TensorRT 10.0은 경량화된 엔진을 지원하여 엔진 크기를 99% 압축할 수 있습니다. 엔진은 런타임에 엔진을 재구축되지 않고 가중치로 다시 장착됩니다. 이는 새로운 REFIT_IDENTICAL
플래그를 사용하여 수행할 수 있습니다. REFIT_IDENTICAL
은 엔진이 빌드 시 제공된 것과 동일한 가중치로 다시 장착된다는 가정하에 TensorRT 빌더에 최적화하도록 지시합니다.
이 플래그를 kSTRIP_PLAN
과 함께 사용하면 계획이 가중치를 포함하는 ONNX 모델과 함께 제공되는 배포 시나리오 등에서 계획 크기가 최소화됩니다. TensorRT는 고정 가중치에 대해서만 재장착이 가능하며, 이는 재장착이 불가능한 엔진과 동일한 런타임 성능으로 엔진을 최적화하고 생산하는 빌더의 능력에 영향을 미치지 않습니다. 그런 다음 직렬화된 엔진에서 이러한 가중치가 생략되어 ONNX 모델의 가중치를 사용하여 런타임에 재장착할 수 있는 작은 계획 파일이 생성됩니다.
이 기능을 사용하면 ONNX 모델을 실행할 때 또는 동일한 가중치 세트로 구축된 여러 엔진에서 TensorRT 계획에서 추가 가중치 사본을 방지할 수 있습니다. Windows는 수십 개의 RTX GeForce GPU를 지원하며, 각 GPU에는 경량화된 전용 엔진이 있습니다.
가중치 스트리밍
TensorRT는 네트워크 가중치를 엔진 로드 시간에 디바이스 메모리에 배치하는 대신 네트워크 실행 중 호스트 메모리에서 디바이스 메모리로 스트리밍하도록 구성할 수 있습니다. 이를 통해 사용 가능한 GPU 메모리보다 가중치가 큰 모델을 실행할 수 있지만 지연 시간이 크게 증가할 수 있습니다. 가중치 스트리밍은 빌드 시간 및 런타임에서 모두 선택할 수 있는 기능입니다. 이 기능은 강력한 유형의 네트워크에서만 지원됩니다.
NVIDIA TensorRT Model Optimizer 0.11
TensorRT 10.0에는 또한 사후 훈련 및 인더루프 훈련 모델 최적화의 새롭고 포괄적인 라이브러리인 NVIDIA TensorRT Model Optimizer가 포함되어 있습니다. 여기에는 모델 복잡성을 줄이기 위한 양자화, 희소성, 정제가 포함되어 컴파일러 프레임워크가 딥 러닝 모델의 추론 속도를 최적화할 수 있습니다.
Model Optimizer는 TensorRT-LLM 또는 TensorRT에 배포하는 PyTorch 및 ONNX 모델에 양자화된 체크포인트를 시뮬레이션합니다. Model Optimizer Python API를 사용하면 모델 최적화 기술로 TensorRT의 기존 런타임 및 컴파일러 최적화를 기반으로 추론을 가속할 수 있습니다.
NVIDIA TensorRT Model Optimizer는 공개되었으며 NVIDIA PyPI 휠로서 무료로 사용할 수 있습니다. 자세한 내용은 이제 공개적으로 사용할 수 있는 NVIDIA TensorRT Model Optimizer로 생성형 AI 추론 성능 가속화를 확인하세요.
사후 훈련 양자화
사후 훈련 양자화(PTQ)는 메모리 설치 공간을 줄이고 추론을 가속하는 모델 압축 방법으로 잘 알려져 있습니다. 그 외 일부 양자화 툴킷은 WoQ 또는 기본 기술만 지원하지만, Model Optimizer는 INT8 SmoothQuant 및 INT4 AWQ 등의 고급 보정 알고리즘을 제공합니다. TensorRT-LLM에서 FP8 또는 그보다 더 낮은 정밀도(예: INT8 또는 INT4)를 사용하는 경우, Model Optimizer PTQ를 이미 내부에서 활용하고 있는 것입니다.
양자화 인식 훈련
양자화 인식 훈련(QAT)을 사용하면 정확도를 저하하지 않으면서 4비트로 추론 속도를 최대한 활용할 수 있습니다. QAT는 훈련 중에 스케일링 계수를 계산하고 시뮬레이션된 양자화 손실을 미세 조정 프로세스에 통합함으로써 뉴럴 네트워크가 양자화에 더 탄력적으로 대응할 수 있도록 지원합니다. Model Optimizer QAT 워크플로우는 NVIDIA NeMo, Megatron-LM, Hugging Face Trainer API 등 최고의 훈련 프레임워크와 통합되도록 설계되어 개발자에게 다양한 프레임워크에서 NVIDIA 플랫폼의 기능을 활용할 수 있는 옵션을 제공합니다.
희소성
희소성은 모델 매개변수의 0값을 선택적으로 권장하여 모델의 크기를 축소합니다. 이 값은 스토리지 또는 연산에서 폐기할 수 있습니다. MLPerf Inference v4.0에서 TensorRT-LLM은 Model Optimizer의 사후 훈련 희소성을 내부에서 사용하여 NVIDIA H100의 Llama 2 70B에 관한 FP8 양자화 외에도 1.3배의 속도 향상을 보여주었습니다.
Nsight Deep Learning Designer
TensorRT 10.0은 Nsight Deep Learning Designer 2024.1 얼리 액세스를 통한 프로파일링 및 엔진 구축도 지원합니다. Nsight Deep Learning Designer는 딥 뉴럴 네트워크(DNN) 설계를 위한 통합 개발 환경입니다.
모델 최적화는 속도와 정확도의 균형을 이룹니다. Nsight Deep Learning Designer는 네트워크 추론 성능을 시각적으로 진단하여 성능 목표를 달성하고 GPU 리소스를 포화시키도록 모델을 조정하는 데 도움을 줍니다.
이 도구는 또한 TensorRT ONNX 모델을 시각적으로 검사합니다. 모델 그래프와 개별 연산자를 실시간으로 조정하여 추론 프로세스를 최적화할 수 있습니다.
Nsight Deep Learning Designer는 무료로 제공됩니다. 자세히 알아보고 2024.1 버전에 액세스하기
AI 모델에 대한 지원 확장
NVIDIA TensorRT-LLM은 LLM 추론을 최적화하기 위한 오픈 소스 라이브러리입니다. 사용하기 쉬운 Python API는 정확도 손실 없이 FP8 및 INT4 AWQ와 같은 LLM 추론의 최신 기술을 통합합니다. 5월 말에 출시될 예정인 TensorRT-LLM 0.10은 Meta Llama 3, Google CodeGemma, Google RecurrentGemma, Microsoft Phi-3 등 새로 출시된 AI 모델을 지원합니다.
FP8 지원 MoE(Mixture of Experts)도 추가되었습니다. 인코더-디코더 모델은 인플라이트 배치 처리를 통해 C++ 런타임 및 NVIDIA Triton 백엔드에서 지원됩니다. TensorRT 10.0에 추가된 경량화된 엔진은 TensorRT-LLM에서도 사용할 수 있습니다.
요약
NVIDIA TensorRT 10.0 릴리스는 가중치 스트리밍, 경량화된 엔진, INT4 양자화, 개선된 메모리 할당을 포함한 많은 새로운 기능을 제공합니다. 또한 TensorRT-LLM 또는 TensorRT에 배포되는 사후 훈련 및 인더루프 훈련 모델 최적화의 포괄적인 라이브러리인 Model Optimizer도 포함되어 있습니다. TensorRT-LLM은 많은 새로운 모델, 기능 및 성능 개선을 통해 LLM별 최적화를 계속하고 있습니다.
관련 리소스
- GTC 세션: TensorRT-LLM을 통해 LLM 추론 가속화
- GTC 세션: 추론 성능 최적화 및 데스크톱과 워크스테이션에 새로운 LLM 기능 통합
- NGC 컨테이너: TensorRT
- SDK: TensorFlow-TensorRT
- SDK: TensorRT
- SDK: Torch-TensorRT