TGI 是什么
TGI(Text Generation Inference)是 Hugging Face 推出的推理服务,内置连续批处理、张量并行与 token 流式输出,官方容器镜像开箱可用。它面向标准 Transformers 权重,参数既可以用命令行传入,也可以用同名的大写环境变量配置,适合把已有权重快速变成 OpenAI 兼容的在线接口。默认在容器内监听 80 端口。
基本信息
| 维护方 | Hugging Face |
|---|---|
| 端口 | 容器内 80,示例映射到宿主机 8080 |
| 权重来源 | Hugging Face 仓库名或本地挂载目录 |
| 配置方式 | 命令行参数与环境变量两种,名称一致 |
| 并发控制 | 并发请求数与批内 token 预算两项分开设置 |
Docker 启动示例
Docker 启动示例
# 启动服务:映射端口、共享内存、挂载权重缓存目录
docker run --gpus all --shm-size 1g -p 8080:80 \
-v /data/hf-cache:/data \
ghcr.io/huggingface/text-generation-inference:latest \
--model-id /data/models/Qwen --max-concurrent-requests 64
# 验证接口(端点与版本有关,以镜像文档为准)
curl http://127.0.0.1:8080/health
curl http://127.0.0.1:8080/v1/models关键参数
| 参数 | 作用 |
|---|---|
| --model-id | 模型仓库名或容器内路径 |
| --num-shard | 张量并行卡数,单卡装不下时按卡切分 |
| --max-concurrent-requests | 同时在处理的请求数上限 |
| --max-batch-total-tokens | 单批 token 总预算,直接影响显存与首 token 延迟 |
| --max-input-length | 单请求输入长度上限 |
| --max-total-tokens | 输入加输出的总量上限,与上下文窗口对齐 |
典型使用场景
- 已有的标准权重快速服务化:不改代码就能得到可调用的 HTTPS 接口
- 流式对话:逐 token 返回,前端能做打字机效果
- 多卡推理:用张量并行承载单卡放不下的模型
- 与 Hugging Face 生态衔接:权重来源、缓存目录与镜像都由同一套工具管理
- 需要统一并发上限的接口:把并发与批预算写死在启动参数里,便于容量规划
--shm-size 设得过小会在批量推理时报共享内存错误:容器默认共享内存很小,启动时显式给 1g 以上能省掉一整轮排查。
并发上限与批内 token 预算都调大时首 token 延迟上升:这是吞吐与响应速度的取舍,要按业务能接受的最长等待时间反推参数。