🤖 AI/ML

TensorRT-LLM

TensorRT for Large Language Models

NVIDIA가 개발한 LLM(대규모 언어 모델) 추론 최적화 라이브러리입니다. GPU에서 최고 성능의 추론 속도를 제공하며, In-flight Batching, KV 캐시 최적화, FP8/INT8 양자화 등 첨단 기술을 지원합니다.

📖 상세 설명

TensorRT-LLM은 NVIDIA의 TensorRT 딥러닝 추론 엔진을 대규모 언어 모델에 특화시킨 라이브러리입니다. 기존 TensorRT의 그래프 최적화, 커널 자동 튜닝, 정밀도 캘리브레이션 기능에 더해, LLM 특유의 자기회귀(autoregressive) 생성 패턴에 최적화된 기능들을 제공합니다. 2025년 현재 가장 빠른 LLM 추론 성능을 제공하는 솔루션 중 하나입니다.

핵심 기능인 In-flight Batching(연속 배칭)은 서로 다른 길이의 요청들을 동적으로 배치 처리합니다. 기존 정적 배칭은 가장 긴 시퀀스 완료를 기다려야 했지만, In-flight Batching은 완료된 요청을 즉시 반환하고 새 요청을 투입합니다. 이를 통해 처리량이 최대 4-8배 향상됩니다. Paged KV Cache는 GPU 메모리를 페이지 단위로 관리하여 더 많은 동시 요청을 처리할 수 있게 합니다.

TensorRT-LLM은 FP16, BF16, INT8, INT4, FP8 등 다양한 정밀도를 지원합니다. 특히 H100 GPU의 FP8 Tensor Core를 활용하면 FP16 대비 2배 가까운 처리량을 얻을 수 있습니다. GPTQ, AWQ, SmoothQuant 등 다양한 양자화 기법과 호환되어, 품질 손실을 최소화하면서 추론 속도를 극대화할 수 있습니다.

지원 모델은 LLaMA, Mistral, GPT-J, Falcon, Gemma, Qwen 등 주요 오픈소스 LLM을 포함합니다. Triton Inference Server와 통합되어 프로덕션 환경에서 모델 앙상블, A/B 테스트, 동적 배칭 등을 쉽게 구현할 수 있습니다. 또한 Multi-Instance GPU(MIG)와 멀티 노드 Tensor Parallelism을 지원하여 대형 모델의 분산 추론이 가능합니다.

💻 코드 예제

TensorRT-LLM을 사용한 LLaMA 모델 추론 예제입니다.

# TensorRT-LLM 설치 및 모델 변환
# pip install tensorrt-llm

from tensorrt_llm import LLM, SamplingParams
from tensorrt_llm.hlapi import BuildConfig
import torch

# 1. 간단한 사용법 (High-Level API)
# Hugging Face 모델 직접 로드 및 최적화
llm = LLM(
    model="meta-llama/Llama-2-7b-chat-hf",
    tensor_parallel_size=1,  # GPU 수
    dtype="float16"
)

# 샘플링 파라미터 설정
sampling_params = SamplingParams(
    temperature=0.7,
    top_p=0.9,
    max_tokens=256
)

# 추론 실행
prompts = [
    "인공지능의 미래에 대해 설명해주세요.",
    "Python으로 퀵소트 알고리즘을 작성해주세요."
]

outputs = llm.generate(prompts, sampling_params)
for output in outputs:
    print(f"입력: {output.prompt}")
    print(f"출력: {output.outputs[0].text}")
    print("-" * 50)


# 2. 고급 사용법 - 엔진 빌드 및 최적화
from tensorrt_llm.builder import Builder
from tensorrt_llm.models import LLaMAForCausalLM

# 빌드 설정 (INT8 양자화 포함)
build_config = BuildConfig(
    max_batch_size=64,
    max_input_len=2048,
    max_output_len=512,
    max_beam_width=1,
    strongly_typed=True,
    builder_opt_level=5,  # 최대 최적화
)

# INT8 양자화 설정
build_config.plugin_config.update({
    "use_paged_context_fmha": True,
    "use_fp8_context_fmha": False,  # H100에서 True
    "gemm_plugin": "auto",
    "gpt_attention_plugin": "auto"
})

# 엔진 빌드
builder = Builder()
engine = builder.build_engine(
    model_dir="./llama-7b-hf",
    build_config=build_config,
    output_dir="./llama-7b-engine"
)

print("TensorRT-LLM 엔진 빌드 완료!")


# 3. Triton Inference Server 배포 설정
triton_config = """
name: "llama_tensorrt_llm"
backend: "tensorrtllm"
max_batch_size: 64

model_transaction_policy {
  decoupled: True
}

input [
  {
    name: "text_input"
    data_type: TYPE_STRING
    dims: [ 1 ]
  },
  {
    name: "max_tokens"
    data_type: TYPE_INT32
    dims: [ 1 ]
  }
]

output [
  {
    name: "text_output"
    data_type: TYPE_STRING
    dims: [ -1 ]
  }
]

instance_group [
  {
    count: 1
    kind: KIND_GPU
  }
]
"""
print(triton_config)

📊 성능 & 비용

TensorRT-LLM 성능 벤치마크 (2025년 1월 기준) - LLaMA 2 70B 모델 기준입니다.

GPU별 추론 성능

GPU 처리량 (tokens/s) 지연시간 (ms/token) 동시 요청 수
H100 80GB (FP8) ~10,000+ ~5-8 256+
H100 80GB (FP16) ~6,000 ~8-12 128+
A100 80GB (FP16) ~2,200 ~15-20 64+
A100 40GB (INT8) ~1,800 ~18-25 32+
RTX 4090 (INT4) ~800 ~30-40 8+

성능 향상 수치

  • H100 FP8 vs A100 FP16: 최대 4.6배 높은 처리량
  • In-flight Batching 적용 시: 최대 8배 처리량 향상
  • 기존 PyTorch/HuggingFace 대비: 최대 8배 빠른 추론

다른 추론 엔진과 비교

특성 TensorRT-LLM vLLM llama.cpp
대상 하드웨어 NVIDIA GPU NVIDIA GPU CPU/다양한 GPU
최대 성능 최고
설정 복잡도 높음 낮음 낮음
Paged Attention 지원 지원 미지원
프로덕션 배포 Triton 연동 자체 서버 수동 설정

TensorRT-LLM은 오픈소스로 무료 사용 가능. NVIDIA GPU 필수

🗣️ 실무에서 이렇게 말하세요

"텐서알티 LLM으로 엔진 빌드하고 나니까 vLLM보다 30% 정도 더 빨라졌어요"

→ TensorRT-LLM의 그래프 최적화가 적용된 후 성능 향상 체감 표현

"인플라이트 배칭 적용하니까 동시 처리량이 거의 5배 뛰었어요"

→ In-flight Batching(연속 배칭) 기능으로 인한 처리량 향상

"H100에서 FP8로 돌리면 A100 대비 토큰 처리 속도가 4배 이상 나와요"

→ H100의 FP8 Tensor Core를 활용한 성능 향상 설명

⚠️ 흔한 실수 & 주의사항

엔진 빌드 시간 과소평가

TensorRT-LLM 엔진 빌드는 모델 크기에 따라 수십 분~수 시간이 소요됩니다. 프로덕션 배포 일정에 빌드 시간을 반드시 포함하세요.

max_batch_size 과다 설정

엔진 빌드 시 max_batch_size를 너무 크게 설정하면 GPU 메모리 부족이 발생합니다. 실제 워크로드에 맞게 설정하세요.

GPU 아키텍처 호환성

빌드한 엔진은 특정 GPU 아키텍처에 종속됩니다. A100용 엔진은 H100에서 작동하지 않습니다. 각 GPU 타입별로 별도 빌드가 필요합니다.

양자화 품질 검증 누락

INT8/INT4 양자화는 속도를 높이지만 품질 저하가 있을 수 있습니다. 반드시 벤치마크 데이터셋으로 품질을 검증하세요.

🔗 관련 용어

📚 더 배우기