NVIDIA에서 개발한 오픈 소스 대규모 언어 모델 추론 최적화 라이브러리로, TensorRT 기술을 통해 GPU 추론에 최첨단 성능 최적화를 제공합니다.

Apache-2.0C++TensorRT-LLMNVIDIA 11.6k Last Updated: September 12, 2025

TensorRT-LLM 프로젝트 상세 소개

프로젝트 개요

TensorRT-LLM은 NVIDIA가 개발한 오픈소스 라이브러리로, NVIDIA GPU에서 대규모 언어 모델(LLM)의 추론 성능을 최적화하는 데 특화되어 있습니다. 이 라이브러리는 대규모 언어 모델을 정의하기 위한 사용하기 쉬운 Python API를 제공하며, NVIDIA GPU에서 효율적인 추론을 실행하기 위한 최첨단 최적화 기술을 지원합니다.

핵심 특성

1. 고급 최적화 기술

TensorRT-LLM은 다음과 같은 다양한 고급 최적화 기능을 제공합니다:

  • 커스텀 어텐션 커널: 특별히 최적화된 어텐션 메커니즘 구현
  • 인플라이트 배치(Inflight Batching): 실시간으로 길이가 다른 입력 시퀀스 처리
  • 페이지드 KV 캐시(Paged KV Cache): 효율적인 키-값 캐시 관리
  • 추측 디코딩(Speculative Decoding): 여러 토큰을 예측하여 생성 속도 가속화
  • 다양한 양자화 지원: FP8, FP4, INT4 AWQ, INT8 SmoothQuant 등

2. 양자화 기술 상세 설명

TensorRT-LLM은 업계 최고의 통합 양자화 툴킷을 제공하여 NVIDIA 하드웨어에서 딥러닝/생성형 AI 배포를 크게 가속화하는 동시에 모델 정확도를 유지합니다.

주요 양자화 방법:

  • FP8: 대규모 배치 추론 시나리오(배치 크기 ≥16)에서 일반적으로 최상의 성능과 정확도를 제공합니다.
  • INT8 SmoothQuant: 가중치 스무딩 및 INT8 채널 양자화, 활성화 범위 텐서 레벨 스케일링
  • INT4 AWQ: 가중치 재조정 및 블록 레벨 양자화를 INT4로 수행하며, 소규모 배치 추론 시나리오(배치 크기 ≤4)에 권장됩니다.
  • W4A8 AWQ: 가중치를 INT4로 양자화하고 활성화를 INT8로 양자화합니다.

성능 향상:

벤치마크 테스트에 따르면, 양자화 기술은 상당한 성능 향상을 가져올 수 있습니다:

  • FP8 양자화: FP16 기준 대비 Llama 3 8B 모델은 1.45배, 70B 모델은 1.81배 가속됩니다.
  • INT4 AWQ: 배치 크기가 1인 시나리오에서 70B 모델은 최대 2.66배의 성능 향상을 얻을 수 있습니다.
  • 메모리 최적화: 모든 양자화 버전의 Llama 3 70B 모델은 단일 NVIDIA H100 GPU에서 실행될 수 있으며, FP16 정밀도는 최소 두 개의 GPU가 필요합니다.

3. 다중 GPU 및 다중 노드 지원

TensorRT-LLM은 전처리 및 후처리 단계와 다중 GPU 다중 노드 통신 프리미티브를 포함하여, 간단한 오픈소스 모델 정의 API를 통해 획기적인 LLM 추론 성능을 구현합니다.

4. 광범위한 하드웨어 지원

TensorRT-LLM은 NVIDIA Hopper, NVIDIA Ada Lovelace 및 NVIDIA Ampere 아키텍처 기반 GPU를 지원합니다. 특히:

  • H100 GPU: FP8 형식의 자동 변환 및 최적화된 커널을 지원합니다.
  • H200 GPU: Llama2-13B에서 초당 약 12,000 토큰의 성능을 달성할 수 있습니다.
  • RTX 시리즈: 소비자용 GPU의 대규모 모델 추론을 지원합니다.

설치 및 사용

Docker 설치 (권장)

# 사전 빌드된 Docker 컨테이너 실행
docker run --ipc host --gpus all -it nvcr.io/nvidia/tensorrt-llm/release

LLM API 사용 예시

from tensorrt_llm import BuildConfig, SamplingParams
from tensorrt_llm._tensorrt_engine import LLM

def main():
    build_config = BuildConfig()
    build_config.max_batch_size = 256
    build_config.max_num_tokens = 1024
    
    # HuggingFace 모델 이름, 로컬 HF 모델 경로 또는 TensorRT 모델 옵티마이저 양자화 체크포인트 지원
    llm = LLM(model="TinyLlama/TinyLlama-1.1B-Chat-v1.0", 
              build_config=build_config)
    
    # 예시 프롬프트
    prompts = [
        "Hello, my name is",
        "The capital of France is",
        "The future of AI is",
    ]
    
    # 샘플링 파라미터 생성
    sampling_params = SamplingParams(temperature=0.8, top_p=0.95)
    
    for output in llm.generate(prompts, sampling_params):
        print(f"Prompt: {output.prompt!r}, Generated text: {output.outputs[0].text!r}")

온라인 서비스 배포

# OpenAI 호환 서버 시작
trtllm-serve --model TinyLlama/TinyLlama-1.1B-Chat-v1.0 --port 8000

양자화 워크플로우

기본 양자화 명령

# FP8 양자화
python quantize.py --model_dir $MODEL_PATH --qformat fp8 --kv_cache_dtype fp8 --output_dir $OUTPUT_PATH

# INT4 AWQ 양자화
python quantize.py --model_dir $MODEL_PATH --qformat int4_awq --awq_block_size 64 --tp_size 4 --output_dir $OUTPUT_PATH

# INT8 SmoothQuant 양자화
python quantize.py --model_dir $MODEL_PATH --qformat int8_sq --kv_cache_dtype int8 --output_dir $OUTPUT_PATH

# 자동 양자화 (다양한 방법 조합)
python quantize.py --model_dir $MODEL_PATH --autoq_format fp8,int4_awq,w4a8_awq --output_dir $OUTPUT_PATH --auto_quantize_bits 5 --tp_size 2

지원 모델

TensorRT-LLM은 다음을 포함하되 이에 국한되지 않는 수많은 인기 LLM 아키텍처를 지원합니다:

  • Llama 시리즈: Llama 2, Llama 3, Llama 3.1, Llama 3.3
  • Falcon 시리즈: Falcon-180B 포함
  • GPT 시리즈: ChatGPT 관련 아키텍처
  • Gemma 시리즈: Google의 오픈소스 모델
  • Mixtral 시리즈: 혼합 전문가 모델
  • DeepSeek 시리즈: DeepSeek R1 포함
  • CodeLlama: 코드 생성 전용 모델

생태계 통합

NVIDIA 생태계

  • NVIDIA NeMo: 생성형 AI 애플리케이션 구축, 맞춤화 및 배포를 위한 엔드투엔드 프레임워크
  • Triton Inference Server: 프로덕션급 추론 서버
  • NVIDIA Dynamo: 데이터센터 규모의 분산 추론 서비스 프레임워크

타사 통합

  • HuggingFace Hub: 사전 양자화된 모델 제공
  • LlamaIndex: RAG 애플리케이션 개발
  • SageMaker LMI: AWS 관리형 추론

성능 벤치마크

성능 향상 예시:

  • CPU 플랫폼 대비: 추론 속도 최대 36배 향상
  • RTX 무최적화 대비: Windows RTX 플랫폼에서 대규모 언어 모델 속도 최대 4배 향상
  • Falcon-180B: 단일 H200 GPU에서 INT4 AWQ를 사용하여 추론 구현
  • Llama-70B: A100 대비 6.7배 속도 향상

모범 사례 제안

양자화 방법 선택

다양한 시나리오에 따라 적절한 양자화 방법을 선택합니다:

  1. 소규모 배치 추론 (배치 크기 ≤4):

    • 가중치 양자화 방법(예: INT4 AWQ) 사용을 권장합니다.
    • 주로 메모리 대역폭 제한을 고려합니다.
  2. 대규모 배치 추론 (배치 크기 ≥16):

    • FP8 양자화를 우선적으로 선택하며, 일반적으로 최상의 성능과 정확도를 제공합니다.
    • 결과가 만족스럽지 않으면 INT8 SmoothQuant를 시도한 다음 AWQ 및/또는 GPTQ를 시도할 수 있습니다.
  3. 특정 도메인 애플리케이션:

    • 코드 완성(code completion)과 같이 고도로 특화된 애플리케이션의 경우, 도메인 관련 데이터셋으로 보정(calibration)하는 것을 권장합니다.

기술적 장점

  1. 사용 편의성: 고급 Python API를 제공하여 LLM 정의 및 최적화 프로세스를 간소화합니다.
  2. 성능: 커널 퓨전, 양자화, 런타임 최적화 등 모든 주요 최적화 기술을 포함합니다.
  3. 확장성: 단일 GPU부터 다중 노드에 이르는 다양한 배포 시나리오를 지원합니다.
  4. 호환성: PyTorch와 깊이 통합되어 주요 추론 생태계를 지원합니다.
  5. 오픈소스: 완전한 오픈소스로, 커뮤니티 주도의 지속적인 발전을 이룹니다.

미래 발전

TensorRT-LLM은 오픈소스 모듈형 모델 정의 API를 통해 사용 편의성과 확장성을 높여, 새로운 아키텍처 및 향상된 기능을 정의, 최적화 및 실행할 수 있도록 하며, LLM의 발전에 따라 쉽게 맞춤화할 수 있습니다.

프로젝트의 지속적인 발전 방향은 다음과 같습니다:

  • 더 많은 모델 아키텍처 지원
  • 더욱 진보된 양자화 기술
  • 더 나은 다중 노드 확장성
  • 더욱 긴밀한 생태계 통합

Star History Chart