新版流程与旧教程有什么不同

很多旧教程先执行权重转换、再用`trtllm-build`生成硬件相关引擎。新版TensorRT-LLM同时提供PyTorch后端、预优化模型和引擎路径,并用`trtllm-serve`统一启动服务。命令变化较快,因此必须锁定容器版本,并只参考同版本文档。

启动官方NGC容器

先验证NVIDIA Container Toolkit,然后拉取文档对应镜像。下面版本来自1.3快速入门示例,生产部署时应选择正式稳定版:

```bash docker pull nvcr.io/nvidia/tensorrt-llm/release:1.3.0rc7 docker image inspect nvcr.io/nvidia/tensorrt-llm/release:1.3.0rc7 \ --format '{{index .RepoDigests 0}}'

docker run --rm -it --name trtllm-lab \ --gpus all --ipc=host \ --ulimit memlock=-1 --ulimit stack=67108864 \ -p 127.0.0.1:8000:8000 \ -v /data/huggingface:/root/.cache/huggingface \ nvcr.io/nvidia/tensorrt-llm/release:1.3.0rc7 ```

`--ipc=host`与memlock/stack设置服务于多进程和通信需求;多租户环境应评估隔离边界。模型缓存挂载可避免容器退出后重新下载。

先用小模型验证服务链路

容器内执行:

trtllm-serve TinyLlama/TinyLlama-1.1B-Chat-v1.0 \
 --host 0.0.0.0 --port 8000

另一个终端依次验证:

curl -sS http://127.0.0.1:8000/health
curl -sS http://127.0.0.1:8000/version
curl -sS http://127.0.0.1:8000/v1/models | python -m json.tool
curl -sS http://127.0.0.1:8000/v1/chat/completions \
 -H 'Content-Type: application/json' \
 -d '{"model":"TinyLlama-1.1B-Chat-v1.0","messages":[{"role":"user","content":"What is KV cache?"}],"temperature":0,"max_tokens":64}' \
 | python -m json.tool

当前服务还支持completions和Responses等接口,但“兼容”不表示每个可选参数和返回扩展完全相同,客户端必须针对所用功能回归。

观察运行指标

至少发送一次请求后获取:

curl -sS http://127.0.0.1:8000/metrics | python -m json.tool

指标可包含GPU内存、inflight batching、迭代延迟和KV Cache状态。将这些数据与网关侧TTFT、TPOT和P95关联,才能判断瓶颈发生在排队、prefill还是生成。

换成目标模型

确认支持矩阵后可直接提供Hugging Face模型路径、本地checkpoint或TensorRT引擎目录:

trtllm-serve /data/models/your-model \
 --tp_size 2 \
 --max_batch_size 64 \
 --max_num_tokens 4096 \
 --host 0.0.0.0 --port 8000

`tp_size`必须与可见GPU及模型并行计划匹配;最大批量和每轮Token上限共同影响调度、显存和尾延迟。不要直接照搬官方极限示例,先从保守值压测。

预量化模型与引擎构建

官方快速入门提供FP8预量化模型示例,但运行前必须确认GPU支持FP8。若自行构建引擎,应把GPU架构、TensorRT-LLM版本、模型提交、精度、最大序列、批量和构建日志作为一个发布单元。引擎往往与硬件和版本强相关,不能默认跨型号GPU复用。

使用固定请求率做基准

官方推荐可使用genai-perf。最小方法是固定输入与输出Token均值、随机种子、请求数量和到达率:

pip install genai-perf
genai-perf profile \
 -m TinyLlama-1.1B-Chat-v1.0 \
 --tokenizer TinyLlama/TinyLlama-1.1B-Chat-v1.0 \
 --endpoint-type chat --random-seed 123 \
 --synthetic-input-tokens-mean 128 --synthetic-input-tokens-stddev 0 \
 --output-tokens-mean 128 --output-tokens-stddev 0 \
 --request-count 100 --request-rate 10 \
 --url localhost:8000 --streaming

逐级增加request-rate,直到P95超过服务目标或错误率上升。发布结果必须附镜像摘要、GPU、模型、精度和完整参数。

上线前的边界

8000端口仍应由认证网关保护;`trust_remote_code`只能对审查过的模型启用;客户端传入聊天模板等高风险选项不应向非可信用户开放。升级容器时在新端口完成输出质量、接口和性能回归,保留旧镜像与引擎用于快速回退。

来源、翻译与版权说明

来源:网昱原创。第三方内容版权归原作者或发布机构所有;本站仅在许可证或明确授权允许时提供本地原文。

原文语言
ZH-CN
原文更新时间
未提供
许可证
未登记