Tối ưu hóa TensorRT-LLM: Làm chủ bộ công cụ suy luận của NVIDIA

TensorRT-LLM đạt hơn 10.000 token đầu ra/giây trên H100 với FP8, TTFT dưới 100ms. Các triển khai sản xuất báo cáo thông lượng gấp 4 lần so với PyTorch gốc. Kernel fusion kết hợp LayerNorm, phép nhân ma trận,...

Tối ưu hóa TensorRT-LLM: Làm chủ bộ công cụ suy luận của NVIDIA

Tối ưu hóa TensorRT-LLM: Làm chủ bộ công cụ suy luận của NVIDIA

Cập nhật ngày 11 tháng 12 năm 2025

Cập nhật tháng 12/2025: TensorRT-LLM đạt hơn 10.000 token đầu ra/giây trên H100 với FP8, TTFT dưới 100ms. Các triển khai sản xuất báo cáo thông lượng gấp 4 lần so với PyTorch gốc. Kernel fusion kết hợp LayerNorm, phép nhân ma trận, hàm kích hoạt thành các kernel CUDA đơn lẻ. Inflight batching tối đa hóa việc sử dụng GPU. FP8 attention trên Hopper/Blackwell mang lại tốc độ cải thiện bổ sung.

TensorRT-LLM của NVIDIA mang lại hiệu suất suy luận thô mà các giải pháp thay thế khó có thể sánh kịp. Trên GPU H100 với độ chính xác FP8, framework đạt hơn 10.000 token đầu ra mỗi giây ở thông lượng đỉnh với độ trễ time-to-first-token dưới 100 mili giây.¹ Các triển khai sản xuất báo cáo cải thiện thông lượng lên đến 4 lần so với suy luận PyTorch gốc. Hiệu suất này đi kèm với chi phí: TensorRT-LLM yêu cầu chuyên môn cấu hình nhiều hơn và chu kỳ tối ưu hóa dài hơn so với các giải pháp thân thiện với người dùng như vLLM.

Đối với các tổ chức cam kết sử dụng phần cứng NVIDIA và sẵn sàng đầu tư thời gian kỹ thuật vào tối ưu hóa, TensorRT-LLM khai thác hiệu suất tối đa từ cơ sở hạ tầng GPU đắt tiền. Hiểu kiến trúc của framework, các tùy chọn lượng tử hóa và tham số tinh chỉnh giúp các nhóm xây dựng hệ thống suy luận biện minh cho khoản đầu tư phần cứng cao cấp thông qua kinh tế token vượt trội.

Kiến trúc và các tối ưu hóa cốt lõi

TensorRT-LLM được xây dựng trên trình tối ưu hóa suy luận TensorRT của NVIDIA, mở rộng framework biên dịch với các tối ưu hóa đặc thù cho transformer. Thư viện cung cấp API Python để định nghĩa mô hình cùng với các thành phần runtime C++ cho triển khai sản xuất.

Kernel fusion: TensorRT-LLM kết hợp nhiều phép toán transformer thành các kernel CUDA tối ưu đơn lẻ. LayerNorm, phép nhân ma trận, cộng bias và hàm kích hoạt thực thi cùng nhau thay vì yêu cầu các lần khởi chạy kernel riêng biệt và truyền bộ nhớ. Fusion giảm chi phí khởi chạy kernel và loại bỏ việc tạo tensor trung gian.²

Custom attention kernels: Các triển khai tối ưu thủ công của multi-head và grouped-query attention tận dụng các lệnh Tensor Core để đạt thông lượng tối đa. Các biến thể Flash Attention giảm yêu cầu băng thông bộ nhớ trong khi duy trì độ chính xác số học. Các kernel FP8 attention trên GPU Hopper và Blackwell cung cấp tốc độ cải thiện bổ sung.

Inflight batching: Batching tĩnh truyền thống buộc tất cả các request trong một batch phải đợi chuỗi dài nhất hoàn thành. Inflight batching thêm các request mới vào các batch đang chạy ở mỗi bước sinh, xử lý các giai đoạn context và generation cùng nhau.³ Phương pháp này tối đa hóa việc sử dụng GPU bằng cách giữ các đơn vị tính toán bận rộn ngay cả khi các request riêng lẻ hoàn thành.

Paged KV caching: Lấy cảm hứng từ bộ nhớ ảo hệ điều hành, paged attention phân bổ KV cache trong các khối không liền kề thay vì yêu cầu vùng bộ nhớ liên tục.⁴ Phân bổ cấp khối cho phép chia sẻ KV cache giữa các request có tiền tố chung và đạt được gần như không lãng phí bộ nhớ từ phân mảnh nội bộ.

So sánh hiệu suất: TensorRT-LLM vs vLLM

Cả hai framework đều nhắm đến suy luận LLM sản xuất, nhưng sự khác biệt kiến trúc tạo ra các đặc điểm hiệu suất riêng biệt:

Chỉ số TensorRT-LLM vLLM
Thông lượng đỉnh (Llama 70B, A100) ~700 tokens/giây ~600-650 tokens/giây
Time-to-first-token 35-50ms 50-80ms
Ưu thế thông lượng chuỗi ngắn 1.34x Baseline
Ưu thế TPOT chuỗi dài 2.72x Baseline
Độ phức tạp thiết lập Cao (tuần) Thấp (giờ)

TensorRT-LLM vượt trội hơn vLLM một cách nhất quán với cấu hình mặc định, mang lại thông lượng cao hơn 1.34 lần trên chuỗi ngắn và time-per-output-token tốt hơn 2.72 lần trên chuỗi dài.⁵ Trên GPU B200, tối ưu hóa sâu hơn của TensorRT-LLM cho kiến trúc Blackwell mở rộng khoảng cách hiệu suất hơn nữa.

vLLM có ưu thế về trải nghiệm phát triển:⁶ - API tương thích OpenAI để thay thế trực tiếp - Triển khai đơn giản hơn không cần bước biên dịch - Tối ưu hóa mô hình tự động với cài đặt mặc định hợp lý - Hỗ trợ phần cứng rộng hơn ngoài GPU NVIDIA

Khuyến nghị: Triển khai TensorRT-LLM khi tối đa hóa hiệu quả phần cứng biện minh cho đầu tư kỹ thuật. Chọn vLLM để đưa ra sản xuất nhanh hơn hoặc khi hoạt động ở quy mô nhỏ hơn, nơi hiệu suất tuyệt đối ít quan trọng hơn tốc độ phát triển.

Chiến lược lượng tử hóa

TensorRT-LLM hỗ trợ các tùy chọn lượng tử hóa phong phú để đánh đổi độ chính xác lấy hiệu suất và hiệu quả bộ nhớ. Việc chọn phương pháp lượng tử hóa phù hợp phụ thuộc vào kích thước batch, yêu cầu độ chính xác và phần cứng mục tiêu.

Lượng tử hóa FP8 (khuyến nghị thử đầu tiên)

FP8 cung cấp sự cân bằng tốt nhất giữa cải thiện hiệu suất với suy giảm độ chính xác tối thiểu:⁷

python quantize.py \
    --model_dir $MODEL_PATH \
    --qformat fp8 \
    --kv_cache_dtype fp8 \
    --output_dir $OUTPUT_PATH

Lượng tử hóa FP8 yêu cầu hiệu chuẩn để xác định các hệ số tỷ lệ phù hợp. Quá trình hiệu chuẩn chạy suy luận trên các mẫu đại diện để đo phạm vi kích hoạt:

from tensorrt_llm.quantization import QuantConfig, CalibConfig

quant_config = QuantConfig(
    quant_algo="fp8",
    kv_cache_quant_algo="fp8"
)

calib_config = CalibConfig(
    calib_dataset="cnn_dailymail",
    calib_batch_size=8,
    calib_num_samples=512
)

FP8 mang lại cải thiện hiệu suất trung bình với tác động độ chính xác rất thấp và chỉ yêu cầu vài phút để hiệu chuẩn. GPU Hopper và Blackwell cung cấp hỗ trợ phần cứng FP8; GPU Ada hỗ trợ FP8 với hiệu quả giảm.

INT4 AWQ cho triển khai giới hạn bộ nhớ

Khi giới hạn bộ nhớ hạn chế kích thước mô hình, INT4 Activation-aware Weight Quantization nén trọng số xuống 4 bit trong khi duy trì độ chính xác chấp nhận được:⁸

python quantize.py \
    --model_dir $MODEL_PATH \
    --qformat int4_awq \
    --awq_block_size 64 \
    --tp_size 4 \
    --output_dir $OUTPUT_PATH

INT4 AWQ xuất sắc trong các kịch bản batch nhỏ (kích thước batch ≤ 4) nơi suy luận trở nên bị giới hạn bởi bộ nhớ. Thời gian tải trọng số chiếm ưu thế tính toán, vì vậy nén trọng số mạnh mẽ cung cấp tốc độ cải thiện đáng kể. Đối với batch lớn, ưu thế hiệu suất của INT4 AWQ giảm khi mật độ tính toán tăng.

INT8 SmoothQuant cho tối ưu hóa cân bằng

SmoothQuant chuyển độ khó lượng tử hóa từ kích hoạt sang trọng số, cho phép lượng tử hóa INT8 hiệu quả mà không mất độ chính xác đáng kể:

python quantize.py \
    --model_dir $MODEL_PATH \
    --qformat int8_sq \
    --kv_cache_dtype int8 \
    --output_dir $OUTPUT_PATH

INT8 SmoothQuant cung cấp cải thiện hiệu suất trung bình với tác động độ chính xác trung bình. Các tổ chức nên thử FP8 trước, quay lại INT8 SQ nếu kết quả FP8 không đáp ứng yêu cầu.

Khung lựa chọn lượng tử hóa

NVIDIA khuyến nghị thứ tự ưu tiên sau:⁹

  1. FP8 - Đánh đổi hiệu suất/độ chính xác tốt nhất, yêu cầu Hopper/Blackwell
  2. INT8 SmoothQuant - Thay thế tốt cho GPU Ada hoặc khi độ chính xác FP8 không đủ
  3. INT4 AWQ/GPTQ - Nén tối đa cho các kịch bản giới hạn bộ nhớ

Đặc biệt đối với KV cache, lượng tử hóa FP8 được khuyến nghị hơn INT8 trên GPU Hopper và Ada do tác động độ chính xác thấp hơn trong hầu hết các trường hợp.

Cấu hình triển khai sản xuất

Triển khai TensorRT-LLM tối ưu yêu cầu tinh chỉnh nhiều tham số dựa trên đặc điểm khối lượng công việc:

Cấu hình build engine

trtllm-build \
    --checkpoint_dir $CHECKPOINT_PATH \
    --output_dir $ENGINE_PATH \
    --max_batch_size 256 \
    --max_num_tokens 8192 \
    --max_input_len 4096 \
    --max_seq_len 8192 \
    --gemm_plugin auto \
    --use_paged_context_fmha enable \
    --workers 8

max_batch_size: Mặc định 256 trong các phiên bản gần đây. Các triển khai sản xuất đạt thông lượng tối đa thường tăng lên 2048, tận dụng đầy đủ khả năng inflight batching.¹⁰

max_num_tokens: Kiểm soát tổng số token được xử lý mỗi lần lặp batch. Mặc định 8192 cân bằng thông lượng với mức tiêu thụ bộ nhớ. Giảm cho các triển khai giới hạn bộ nhớ; tăng cẩn thận với giám sát.

use_paged_context_fmha: Kích hoạt paged attention để quản lý KV cache hiệu quả. Bắt buộc khi sử dụng inflight batching. Triển khai này phân bổ trước bộ nhớ KV cache, yêu cầu khoảng 60% VRAM nhiều hơn so với chỉ trọng số mô hình.¹¹

Tích hợp Triton Inference Server

Các triển khai sản xuất thường sử dụng NVIDIA Triton Inference Server với backend TensorRT-LLM:

model_repository/
└── llama-70b/
    ├── 1/
    │   └── model.py
    ├── config.pbtxt
    └── tensorrt_llm/
        └── 1/
            ├── config.json
            └── engine/

Triton cung cấp điều phối đa mô hình, hàng đợi request, thu thập metrics và mở rộng Kubernetes-native. Container NGC được xây dựng sẵn bao gồm backend TensorRT-LLM với inflight batching và hỗ trợ paged KV cache được kích hoạt.

Lập kế hoạch bộ nhớ

Ước tính yêu cầu bộ nhớ trước khi triển khai:

Tổng VRAM = Trọng số mô hình + KV Cache + Bộ nhớ kích hoạt + Chi phí runtime

Trọng số mô hình (FP8): Tham số × 1 byte
Trọng số mô hình (INT4): Tham số × 0.5 bytes
KV Cache: batch_size × seq_len × num_layers × 2 × hidden_dim × precision_bytes

Mô hình 70B tham số trong FP8 yêu cầu khoảng: - Trọng số: 70GB - KV Cache (batch 256, seq 8192): ~120GB - Kích hoạt + chi phí: ~30GB - Tổng: ~220GB (3x H100 80GB hoặc 2x H200 141GB)

Quy trình tinh chỉnh hiệu suất

Tối ưu hóa có hệ thống khai thác hiệu suất tối đa từ các triển khai TensorRT-LLM:

Giai đoạn 1: Đo lường baseline

Sử dụng trtllm-bench để đánh giá hiệu suất nhanh:

python -m tensorrt_llm.bench \
    --model_dir $ENGINE_PATH \
    --input_len 512 \
    --output_len 256 \
    --batch_size 32 \
    --num_requests 1000

Tiện ích benchmarking tự động đặt các tham số engine tối ưu, cung cấp hiệu suất baseline mà không cần độ phức tạp triển khai Triton đầy đủ.¹²

Giai đoạn 2: Lựa chọn lượng tử hóa

Thử FP8 đầu tiên đối với yêu cầu độ chính xác. Nếu độ chính xác suy giảm vượt quá ngưỡng chấp nhận được, đánh giá INT8 SQ hoặc INT4 AWQ. Chạy benchmark đánh giá trên các tác vụ đại diện, không chỉ đo perplexity.

Giai đoạn 3: Tối ưu hóa kích thước batch

Phân tích thông lượng qua các kích thước batch từ 1 đến max_batch_size. Xác định điểm uốn của đường cong thông lượng nơi batching bổ sung mang lại lợi nhuận giảm dần. Đặt max_batch_size cao hơn 20-30% so với điểm này để đáp ứng các đợt tải đột biến.

Giai đoạn 4: Tinh chỉnh KV cache

Giám sát việc sử dụng KV cache trong các khối lượng công việc sản xuất. Nếu việc sử dụng liên tục vượt quá 80%, tăng max_num_tokens hoặc giảm max_batch_size. Nếu việc sử dụng dưới 50%, giảm phân bổ để giải phóng bộ nhớ cho batch lớn hơn.

Giai đoạn 5: Giám sát liên tục

Theo dõi các metrics chính trong sản xuất: - Token mỗi giây (thông lượng) - Time-to-first-token (độ trễ) - Độ sâu hàng đợi (công suất) - Sử dụng KV cache (bộ nhớ) - Sử dụng GPU (hiệu quả)

Tối ưu hóa nâng cao

Speculative decoding

TensorRT-LLM hỗ trợ speculative decoding sử dụng các mô hình draft nhỏ hơn để dự đoán nhiều token được xác minh bởi mô hình chính. Kỹ thuật này cung cấp tốc độ cải thiện 1.5-2x cho các khối lượng công việc tương thích:

# Kích hoạt speculative decoding trong engine build
trtllm-build \
    --speculative_decoding_mode draft_tokens_external \
    --max_draft_len 5 \
    ...

Speculative decoding có lợi cho các ứng dụng nhạy cảm độ trễ nơi time-to-completion quan trọng hơn thông lượng. Tối ưu hóa này yêu cầu duy trì cả mô hình draft và target trong bộ nhớ.

Cấu hình multi-GPU

TensorRT-LLM hỗ trợ tensor parallelism (TP), pipeline parallelism (PP) và expert parallelism (EP) cho suy luận phân tán:

# Tensor parallelism 4 chiều
trtllm-build \
    --tp_size 4 \
    --pp_size 1 \
    ...

TP chia mỗi layer qua các GPU, yêu cầu các phép toán all-reduce ở mỗi ranh giới layer. PP chia các layer qua các GPU theo các stage pipeline. Đối với suy luận, TP thường cung cấp độ trễ tốt hơn trong khi PP cho phép

[Nội dung bị cắt ngắn cho bản dịch]

Yêu cầu báo giá_

Hãy cho chúng tôi biết về dự án của bạn và chúng tôi sẽ phản hồi trong vòng 72 giờ.

> TRUYỀN_TẢI_HOÀN_TẤT

Đã Nhận Yêu cầu_

Cảm ơn bạn đã gửi yêu cầu. Đội ngũ của chúng tôi sẽ xem xét và phản hồi trong vòng 72 giờ.

ĐANG XẾP HÀNG XỬ LÝ