AI 뉴스허브

TensorRT-LLM: 최대 성능을 위한 대규모 언어 모델 추론 최적화를 위한 포괄적 가이드

TensorRT-LLM: 최대 성능을 위한 대규모 언어 모델 추론 최적화를 위한 포괄적 가이드

TensorRT-LLM: 최대 성능을 위한 대규모 언어 모델 추론 최적화를 위한 포괄적 가이드

대규모 언어 모델(LLM)에 대한 수요가 계속 증가함에 따라 빠르고 효율적이며 확장 가능한 추론을 보장하는 것이 그 어느 때보다 더 중요해졌습니다. NVIDIA의 텐서RT-LLM LLM 추론을 위해 특별히 설계된 강력한 도구와 최적화 세트를 제공하여 이러한 과제를 해결하기 위해 나섭니다. TensorRT-LLM은 양자화, 커널 퓨전, 비행 중 배칭 및 다중 GPU 지원과 같은 인상적인 성능 개선 사항을 제공합니다. 이러한 발전을 통해 기존 CPU 기반 방법보다 최대 8배 빠른 추론 속도를 달성하여 프로덕션에서 LLM을 배포하는 방식을 혁신할 수 있습니다.

이 포괄적인 가이드에서는 아키텍처와 주요 기능부터 모델 배포를 위한 실제 사례까지 TensorRT-LLM의 모든 측면을 살펴봅니다. AI 엔지니어, 소프트웨어 개발자 또는 연구자이든 이 가이드는 NVIDIA GPU에서 LLM 추론을 최적화하기 위해 TensorRT-LLM을 활용하는 데 필요한 지식을 제공합니다.

TensorRT-LLM을 사용하여 LLM 추론 속도 향상

TensorRT-LLM은 LLM 추론 성능을 극적으로 개선합니다. NVIDIA의 테스트에 따르면 TensorRT 기반 애플리케이션은 8배 더 빠름 CPU 전용 플랫폼과 비교한 추론 속도. 이는 챗봇, 추천 시스템, 빠른 응답이 필요한 자율 시스템과 같은 실시간 애플리케이션에서 중요한 발전입니다.

작동 원리

TensorRT-LLM은 다음과 같은 기술을 사용하여 배포 중에 신경망을 최적화하여 추론 속도를 높입니다.

이러한 최적화를 통해 하이퍼스케일 데이터 센터부터 임베디드 시스템에 이르기까지 광범위한 배포 플랫폼에서 LLM 모델이 효율적으로 수행되도록 보장합니다.

TensorRT를 사용한 추론 성능 최적화

NVIDIA의 CUDA 병렬 프로그래밍 모델을 기반으로 구축된 TensorRT는 NVIDIA GPU에서 추론을 위한 고도로 특화된 최적화를 제공합니다. 양자화, 커널 튜닝, 텐서 연산 융합과 같은 프로세스를 간소화함으로써 TensorRT는 LLM이 최소 지연 시간으로 실행될 수 있도록 보장합니다.

가장 효과적인 기술 중 일부는 다음과 같습니다.

이러한 기술을 사용하면 TensorRT-LLM이 자연어 처리, 추천 엔진, 실시간 비디오 분석과 같은 딥러닝 작업에 대한 추론 성능을 최적화할 수 있습니다.

TensorRT로 AI 워크로드 가속화

TensorRT는 정밀 최적화와 같은 기능을 통합하여 딥 러닝 워크로드를 가속화합니다. INT8 그리고 FP16. 이러한 감소된 정밀도 형식은 정확도를 유지하면서도 훨씬 더 빠른 추론을 가능하게 합니다. 이는 특히 낮은 지연 시간이 중요한 요구 사항인 실시간 애플리케이션에서 매우 중요합니다.

INT8 그리고 FP16 최적화는 특히 다음과 같은 경우에 효과적입니다.

NVIDIA Triton으로 배포, 실행 및 확장

모델이 TensorRT-LLM으로 최적화되면 다음을 사용하여 쉽게 배포, 실행 및 확장할 수 있습니다. NVIDIA Triton 추론 서버. Triton은 동적 배칭, 모델 앙상블 및 높은 처리량을 지원하는 오픈 소스 소프트웨어입니다. 대규모 AI 모델을 관리하기 위한 유연한 환경을 제공합니다.

주요 기능은 다음과 같습니다.

이를 통해 Triton은 TensorRT-LLM 최적화된 모델을 프로덕션 환경에 배포하는 데 귀중한 도구가 되어 높은 확장성과 효율성을 보장합니다.

LLM 추론을 위한 TensorRT-LLM의 핵심 기능

오픈소스 파이썬 API

TensorRT-LLM은 고도로 모듈화된 오픈소스 파이썬 APILLM 정의, 최적화 및 실행 프로세스를 간소화합니다. API를 사용하면 개발자가 CUDA 또는 딥 러닝 프레임워크에 대한 심층적인 지식이 없어도 사용자 정의 LLM을 만들거나 사전 구축된 LLM을 필요에 맞게 수정할 수 있습니다.

비행 중 배치 및 페이징된 주의

TensorRT-LLM의 뛰어난 기능 중 하나는 다음과 같습니다. 비행 중 배치여러 요청을 동시에 처리하여 텍스트 생성을 최적화합니다. 이 기능은 대기 시간을 최소화하고 시퀀스를 동적으로 배치하여 GPU 활용도를 향상시킵니다.

또한, 페이징 주의 긴 입력 시퀀스를 처리할 때에도 메모리 사용량이 낮게 유지되도록 보장합니다. 모든 토큰에 연속적인 메모리를 할당하는 대신, 페이지 어텐션은 메모리를 동적으로 재사용할 수 있는 “페이지”로 나누어 메모리 단편화를 방지하고 효율성을 개선합니다.

다중 GPU 및 다중 노드 추론

더 큰 모델이나 더 복잡한 작업 부하의 경우 TensorRT-LLM은 다음을 지원합니다. 다중 GPU 그리고 다중 노드 추론. 이 기능을 사용하면 모델 계산을 여러 GPU나 노드에 분산하여 처리량을 개선하고 전체 추론 시간을 줄일 수 있습니다.

FP8 지원

의 출현으로 FP8 (8비트 부동 소수점), TensorRT-LLM은 NVIDIA의 H100 GPU를 활용하여 모델 가중치를 이 형식으로 변환하여 최적화된 추론을 제공합니다. FP8은 메모리 소비를 줄이고 계산을 더 빠르게 하며, 특히 대규모 배포에 유용합니다.

TensorRT-LLM 아키텍처 및 구성 요소

TensorRT-LLM의 아키텍처를 이해하면 LLM 추론 기능을 더 잘 활용하는 데 도움이 됩니다. 핵심 구성 요소를 분석해 보겠습니다.

모델 정의

TensorRT-LLM을 사용하면 간단한 Python API를 사용하여 LLM을 정의할 수 있습니다. API는 다음을 구성합니다. 그래프 표현 모델을 통해 GPT나 BERT와 같은 LLM 아키텍처에 포함된 복잡한 계층을 보다 쉽게 ​​관리할 수 있습니다.

무게 바인딩

모델을 컴파일하기 전에 가중치(또는 매개변수)를 네트워크에 바인딩해야 합니다. 이 단계는 가중치가 TensorRT 엔진 내에 내장되어 빠르고 효율적인 추론이 가능하도록 보장합니다. TensorRT-LLM은 또한 컴파일 후 가중치 업데이트를 허용하여 자주 업데이트가 필요한 모델에 유연성을 더합니다.

패턴 매칭 및 퓨전

퓨전 작전 TensorRT-LLM의 또 다른 강력한 기능입니다. 여러 연산(예: 활성화 함수가 있는 행렬 곱셈)을 단일 CUDA 커널로 융합함으로써 TensorRT는 여러 커널 실행과 관련된 오버헤드를 최소화합니다. 이를 통해 메모리 전송이 줄어들고 추론 속도가 빨라집니다.

플러그인

TensorRT의 기능을 확장하기 위해 개발자는 다음을 작성할 수 있습니다. 플러그인—멀티헤드 어텐션 블록 최적화와 같은 특정 작업을 수행하는 사용자 정의 커널. 예를 들어, 플래시 어텐션 플러그인은 LLM 어텐션 계층의 성능을 크게 향상시킵니다.

벤치마크: TensorRT-LLM 성능 향상

TensorRT-LLM은 다양한 GPU에서 LLM 추론에 대한 상당한 성능 향상을 보여줍니다. 다음은 다양한 NVIDIA GPU에서 TensorRT-LLM을 사용하여 추론 속도(초당 토큰으로 측정)를 비교한 것입니다.

모델 정도 입력/출력 길이 H100(80GB) A100(80GB) L40SFP8
GPTJ 6B FP8 128/128 34,955 11,206 6,998
GPTJ 6B FP8 2048/128 2,800 1,354 747
라마 v2 7B FP8 128/128 16,985 10,725 6,121
라마 v3 8B FP8 128/128 16,708 12,085 8,273

이러한 벤치마크는 TensorRT-LLM이 특히 긴 시퀀스에서 상당한 성능 향상을 제공한다는 것을 보여줍니다.

실습: TensorRT-LLM 설치 및 빌드

1단계: 컨테이너 환경 만들기

사용 편의성을 위해 TensorRT-LLM은 모델을 빌드하고 실행하기 위한 제어된 환경을 만드는 Docker 이미지를 제공합니다.

docker build --pull              --target devel              --file docker/Dockerfile.multi              --tag tensorrt_llm/devel:latest .

2단계: 컨테이너 실행

NVIDIA GPU에 액세스하여 개발 컨테이너를 실행합니다.

docker run --rm -it            --ipc=host --ulimit memlock=-1 --ulimit stack=67108864 --gpus=all            --volume ${PWD}:/code/tensorrt_llm            --workdir /code/tensorrt_llm            tensorrt_llm/devel:latest

3단계: 소스에서 TensorRT-LLM 빌드

컨테이너 내부에서 다음 명령을 사용하여 TensorRT-LLM을 컴파일합니다.

python3 ./scripts/build_wheel.py --trt_root /usr/local/tensorrtpip install ./build/tensorrt_llm*.whl

이 옵션은 Python 종속성과 관련된 호환성 문제를 피하거나 프로덕션 시스템에서 C++ 통합에 집중할 때 특히 유용합니다. 빌드가 완료되면 C++ 런타임에 대한 컴파일된 라이브러리를 찾을 수 있습니다. cpp/build/tensorrt_llm C++ 애플리케이션과 통합할 수 있는 디렉토리입니다.

4단계: TensorRT-LLM C++ 런타임 연결

C++ 프로젝트에 TensorRT-LLM을 통합할 때 프로젝트의 포함 경로가 다음을 가리키는지 확인하세요. cpp/include 디렉토리입니다. 여기에는 안정적이고 지원되는 API 헤더가 들어 있습니다. TensorRT-LLM 라이브러리는 C++ 컴파일 프로세스의 일부로 연결됩니다.

예를 들어, 프로젝트의 CMake 구성에는 다음이 포함될 수 있습니다.

include_directories(${TENSORRT_LLM_PATH}/cpp/include)link_directories(${TENSORRT_LLM_PATH}/cpp/build/tensorrt_llm)target_link_libraries(your_project tensorrt_llm)

이 통합을 사용하면 사용자 정의 C++ 프로젝트에서 TensorRT-LLM 최적화의 이점을 활용하여 저수준 또는 고성능 환경에서도 효율적인 추론을 보장할 수 있습니다.

고급 TensorRT-LLM 기능

TensorRT-LLM은 단순한 최적화 라이브러리가 아닙니다. 여기에는 대규모 LLM 배포를 처리하는 데 도움이 되는 여러 가지 고급 기능이 포함되어 있습니다. 아래에서 이러한 기능 중 일부를 자세히 살펴보겠습니다.

1. 비행 중 배치

기존 배칭 방식은 배치가 완전히 수집될 때까지 기다린 후에 처리하므로 지연이 발생할 수 있습니다. 비행 중 배치 배치 내에서 완료된 요청에 대한 추론을 동적으로 시작하면서 다른 요청을 수집하여 이를 변경합니다. 이를 통해 유휴 시간을 최소화하고 GPU 활용도를 높여 전체 처리량을 개선합니다.

이 기능은 응답 시간이 중요한 챗봇이나 음성 비서 등의 실시간 애플리케이션에서 특히 유용합니다.

2. 페이징 주의

페이징 주의 대규모 입력 시퀀스를 처리하기 위한 메모리 최적화 기술입니다. 시퀀스의 모든 토큰에 대해 연속된 메모리를 요구하는 대신(메모리 단편화로 이어질 수 있음), Paged Attention을 사용하면 모델이 키-값 캐시 데이터를 메모리의 “페이지”로 분할할 수 있습니다. 이러한 페이지는 필요에 따라 동적으로 할당되고 해제되어 메모리 사용을 최적화합니다.

Paged Attention은 대용량 시퀀스 길이를 처리하고 메모리 오버헤드를 줄이는 데 중요하며, 특히 GPT 및 LLaMA와 같은 생성 모델에서 중요합니다.

3. 사용자 정의 플러그인

TensorRT-LLM을 사용하면 기능을 확장할 수 있습니다. 와의 단일성 사용자 정의 플러그인플러그인은 표준 TensorRT 라이브러리에서 다루지 않는 특정 최적화나 작업을 가능하게 하는 사용자 정의 커널입니다.

예를 들어, 플래시 어텐션 플러그인은 Transformer 기반 모델에서 멀티헤드 어텐션 레이어를 최적화하는 잘 알려진 커스텀 커널입니다. 이 플러그인을 사용하면 개발자는 LLM의 가장 리소스 집약적인 구성 요소 중 하나인 어텐션 계산에서 상당한 속도 향상을 달성할 수 있습니다.

사용자 정의 플러그인을 TensorRT-LLM 모델에 통합하려면 사용자 정의 CUDA 커널을 작성하여 TensorRT에 등록할 수 있습니다. 플러그인은 모델 실행 중에 호출되어 맞춤형 성능 개선을 제공합니다.

4. NVIDIA H100의 FP8 정밀도

와 함께 FP8 정밀도TensorRT-LLM은 NVIDIA의 최신 하드웨어 혁신을 활용합니다. H100 호퍼 아키텍처. FP8은 가중치와 활성화를 8비트 부동 소수점 형식으로 저장하여 LLM의 메모리 사용량을 줄여 정확도를 크게 희생하지 않고도 더 빠른 계산을 가능하게 합니다. TensorRT-LLM은 자동으로 모델을 컴파일하여 최적화된 FP8 커널을 활용하여 추론 시간을 더욱 단축합니다.

이로 인해 TensorRT-LLM은 최고 수준의 성능과 에너지 효율성이 요구되는 대규모 배포에 이상적인 선택이 되었습니다.

예: Triton Inference Server를 사용하여 TensorRT-LLM 배포

생산 배포의 경우 NVIDIA의 트리톤 추론 서버 대규모 모델을 관리하기 위한 강력한 플랫폼을 제공합니다. 이 예에서는 Triton을 사용하여 TensorRT-LLM 최적화 모델을 배포하는 방법을 보여드리겠습니다.

1단계: 모델 저장소 설정

TensorRT-LLM 모델 파일을 저장할 Triton용 모델 저장소를 만듭니다. 예를 들어, GPT2 모델을 컴파일한 경우 디렉토리 구조는 다음과 같습니다.

mkdir -p model_repository/gpt2/1cp ./trt_engine/gpt2_fp16.engine model_repository/gpt2/1/

2단계: Triton 구성 파일 만들기

같은 model_repository/gpt2/ 디렉토리에서 다음 이름의 구성 파일을 만듭니다. config.pbtxt Triton에 모델을 로드하고 실행하는 방법을 알려줍니다. TensorRT-LLM의 기본 구성은 다음과 같습니다.

name: "gpt2"platform: "tensorrt_llm"max_batch_size: 8input [  {    name: "input_ids"    data_type: TYPE_INT32    dims: [-1]  }]output [  {    name: "logits"    data_type: TYPE_FP32    dims: [-1, -1]  }]

3단계: Triton 서버 실행

다음 Docker 명령을 사용하여 모델 저장소로 Triton을 시작합니다.

docker run --rm --gpus all     -v $(pwd)/model_repository:/models     nvcr.io/nvidia/tritonserver:23.05-py3     tritonserver --model-repository=/models

4단계: Triton에 추론 요청 보내기

Triton 서버가 실행되면 HTTP 또는 gRPC를 사용하여 추론 요청을 보낼 수 있습니다. 예를 들어, curl 요청을 보내려면:

curl -X POST http://localhost:8000/v2/models/gpt2/infer -d '{  "inputs": [    {"name": "input_ids", "shape": [1, 128], "datatype": "INT32", "data": [[101, 234, 1243]]}  ]}'

Triton은 TensorRT-LLM 엔진을 사용하여 요청을 처리하고 로짓을 출력으로 반환합니다.

TensorRT-LLM을 사용한 LLM 추론 최적화를 위한 모범 사례

TensorRT-LLM의 힘을 최대한 활용하려면 모델 최적화와 배포 중에 모범 사례를 따르는 것이 중요합니다. 다음은 몇 가지 핵심 팁입니다.

1. 최적화 전 모델 프로파일링

양자화나 커널 퓨전과 같은 최적화를 적용하기 전에 NVIDIA의 프로파일링 도구(Nsight Systems 또는 TensorRT Profiler 등)를 사용하여 모델 실행의 현재 병목 현상을 파악합니다. 이를 통해 개선할 특정 영역을 타겟팅하여 더 효과적인 최적화를 이룰 수 있습니다.

2. 최적의 성능을 위해 혼합 정밀도 사용

TensorRT-LLM을 사용하여 모델을 최적화할 때 혼합 정밀도 (FP16과 FP32의 조합)은 정확도의 큰 손실 없이 상당한 속도 향상을 제공합니다. 속도와 정확도의 최상의 균형을 위해, 특히 H100 GPU에서 가능한 경우 FP8을 사용하는 것을 고려하세요.

3. 대규모 시퀀스에 대한 페이지 어텐션 활용

문서 요약이나 여러 차례 대화와 같이 긴 입력 시퀀스가 ​​필요한 작업의 경우 항상 다음을 활성화하세요. 페이징 주의 메모리 사용을 최적화합니다. 이렇게 하면 메모리 오버헤드가 줄어들고 추론 중 메모리 부족 오류가 방지됩니다.

4. 다중 GPU 설정을 위한 병렬 처리 미세 조정

여러 GPU 또는 노드에 LLM을 배포하는 경우 설정을 미세 조정하는 것이 필수적입니다. 텐서 병렬성 그리고 파이프라인 병렬성 특정 작업 부하에 맞게 조정합니다. 이러한 모드를 적절히 구성하면 GPU에 걸쳐 계산 부하를 고르게 분산하여 상당한 성능 향상으로 이어질 수 있습니다.

결론

TensorRT-LLM은 대규모 언어 모델을 최적화하고 배포하는 데 있어 패러다임 전환을 나타냅니다. 양자화, 연산 융합, FP8 정밀도, 다중 GPU 지원과 같은 고급 기능을 갖춘 TensorRT-LLM은 LLM이 NVIDIA GPU에서 더 빠르고 효율적으로 실행될 수 있도록 합니다. 실시간 채팅 애플리케이션, 추천 시스템 또는 대규모 언어 모델을 작업하든 TensorRT-LLM은 성능의 경계를 넓히는 데 필요한 도구를 제공합니다.

이 가이드에서는 TensorRT-LLM 설정, Python API로 모델 최적화, Triton Inference Server에 배포, 효율적인 추론을 위한 모범 사례 적용을 안내합니다. TensorRT-LLM을 사용하면 AI 워크로드를 가속화하고, 대기 시간을 줄이고, 프로덕션 환경에 확장 가능한 LLM 솔루션을 제공할 수 있습니다.

자세한 내용은 공식을 참조하세요. TensorRT-LLM 설명서 그리고 Triton Inference Server 설명서.

게시물 TensorRT-LLM: 최대 성능을 위한 대규모 언어 모델 추론 최적화를 위한 포괄적 가이드 처음 등장 유나이트.AI.

Exit mobile version