教程以 Llama 3 为例,讲解在 NVIDIA H100 与 RTX Pro 6000 上使用 TensorRT-LLM,从容器准备到 API 推理服务的部署流程。内容还涉及 FP8 量化对显存占用和推理效率的影响。
快速、经济地进行大语言模型(LLM)推理,其需求正处于历史高位。每增加一毫秒延迟、每百万 token 多花一美元,都会直接影响产品的经济效益。为了最大限度提高吞吐量并降低成本,企业基础设施团队正逐步统一采用市场上经过充分验证、具备可扩展性且可立即投入使用的两种 GPU 架构:NVIDIA H100(Hopper)和 RTX Pro 6000(Ada Lovelace)。
然而,拥有合适的底层芯片只是成功的一半。要从这些 GPU 中获得最高投资回报率,还需要一套高度优化的软件栈。承担这一核心角色的正是 TensorRT-LLM——NVIDIA 推出的开源库,用于在生产规模下编译和部署大语言模型服务。
本教程将以 Llama 3 为例,完整介绍在 H100 和 RTX Pro 6000 硬件上使用 TensorRT-LLM 部署大模型所需的具体步骤:从拉取正确的容器,到通过 API 提供实时推理服务。
H100 和 RTX Pro 6000 均通过第四代 Tensor Core 原生支持 FP8(8 位浮点数)量化。将权重精度从 FP16 降至 FP8,可以让模型权重占用的内存大致减半,由此产生两项相互叠加的巨大优势:
更高的模型密度:GPU 显存可以容纳更多模型内容。量化后的 Llama 3 70B 可以轻松部署在更少的 GPU 上,从而大幅降低硬件需求。
更大的 Paged KV Cache:能够为 KV cache 留出更多 VRAM 空间,使单台服务器可以支持大得多的批次规模,并同时处理更长的上下文窗口。
真实世界中的 LLM 流量并不会整齐、均匀地分批到达。TensorRT-LLM 支持 in-flight batching,也称为 continuous batching。它会在每一个生成步骤中评估请求队列。一旦某位用户的请求完成,新的请求就会立即加入当前批次——这意味着 GPU 计算资源不会因为等待较慢的请求而闲置。
由于 GPU 的持有成本或租用成本按小时固定,因此每小时生成的 token 越多,实际每百万 token 的成本就越低。FP8 带来的速度提升与 in-flight batching 相结合,可以用更低的成本提供企业级生成速度。
开始部署之前,请确认满足以下条件。
要充分利用 FP8 Tensor Core,你需要 NVIDIA Hopper 或 Ada 架构的 GPU。
NVIDIA H100 服务器:顶级的数据中心算力平台,非常适合大型 MoE 模型(DeepSeek、Mixtral)以及高并发生产环境 endpoint。
NVIDIA RTX Pro 6000 服务器:极具性价比的 48GB VRAM 高性能平台,非常适合单 GPU 推理(Llama 3 8B)、AI Agent 工作流以及开发和测试环境。
Ubuntu 22.04 LTS 或 24.04 LTS。
安装支持目标 CUDA toolkit 版本的较新 NVIDIA 驱动程序,例如 v535 或更高版本。
验证系统能否识别 GPU 和驱动程序:
nvidia-smi
TensorRT-LLM 以预构建的 NGC 容器形式发布。你必须安装 Docker 和 NVIDIA Container Toolkit,让容器能够直接访问 GPU:
# Install NVIDIA Container Toolkit (Ubuntu)
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
# Confirm the container runtime can see your H100 or RTX 6000
docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi
NVIDIA 会在 NGC 上发布带版本号的 TensorRT-LLM release 容器。请将 x.xx.x 替换为当前 release tag,例如 0.10.0 或更高版本:
docker pull nvcr.io/nvidia/tensorrt-llm/release:x.xx.x
docker run --rm -it --ipc=host \
--ulimit memlock=-1 --ulimit stack=67108864 \
--gpus all \
-v $(pwd):/workspace \
nvcr.io/nvidia/tensorrt-llm/release:x.xx.x
# Sanity check inside the container
python3 -c "import tensorrt_llm; print(tensorrt_llm.__version__)"
我们将使用 Llama 3 作为示例。请确保你已经在 Hugging Face 上接受其许可条款。
pip install -U "huggingface_hub[cli]"
huggingface-cli login # Enter your Hugging Face access token
huggingface-cli download meta-llama/Meta-Llama-3-8B-Instruct \
--local-dir /workspace/models/llama3-8b
构建 Engine 分为两个阶段:先将标准 Hugging Face 权重转换为 TensorRT-LLM 的优化格式,然后针对具体的 GPU 编译 Engine。
# 1. Convert the checkpoint and quantize to FP8
python3 examples/llama/convert_checkpoint.py \
--model_dir /workspace/models/llama3-8b \
--output_dir /workspace/checkpoints/llama3-8b-fp8 \
--dtype float16 \
--qformat fp8 \
--calib_size 1024
# 2. Compile the highly optimized TRT engine
trtllm-build \
--checkpoint_dir /workspace/checkpoints/llama3-8b-fp8 \
--output_dir /workspace/engines/llama3-8b-fp8 \
--gemm_plugin fp8 \
--max_batch_size 64 \
--max_input_len 4096 \
--max_seq_len 8192
专业提示:--calib_size 1024 参数会在 FP8 转换期间执行校准,以避免精度损失。根据服务器的 VRAM 总量合理设置 --max_batch_size,可以让 TensorRT-LLM 充分利用 in-flight batching。
编译后的 TensorRT-LLM Engine 最适合通过 NVIDIA Triton Inference Server 提供服务。它能够安全、高效地处理 HTTP/gRPC 请求。
docker run --rm -it --gpus all \
--shm-size=2g \
-p 8000:8000 -p 8001:8001 -p 8002:8002 \
-v /workspace/engines/llama3-8b-fp8:/models/llama3-8b/1 \
nvcr.io/nvidia/tritonserver:xx.xx-trtllm-python-py3 \
tritonserver --model-repository=/models
Triton 报告模型加载完成后,你就可以像调用 OpenAI-compatible endpoint 一样,向 8000 端口发送 API 请求。
两款 GPU 都完全支持这套工作流,但它们面向不同的业务需求。
部署大语言模型并不需要等待数月,只为尚未发布的硬件。NVIDIA H100 和 RTX Pro 6000 已经是当今生产级 AI 领域久经验证的强者。结合 TensorRT-LLM 的 FP8 精度与 in-flight batching,这些 GPU 可以显著节省成本。
不要让算力瓶颈拖慢你的产品路线图。你可以通过 GPUYard 即时获取顶级 AI 硬件,并按照这套工作流完成精准配置。
如需采取进一步措施,你可以考虑屏蔽此人和/或举报滥用行为。