transformer-deploy
将 Hugging Face Transformer 模型导出为 ONNX/TensorRT 格式,
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
将 Hugging Face Transformer 模型导出为 ONNX/TensorRT 格式,
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这个场景:你的 NLP 应用每天要处理几十万次搜索请求,用户在搜索框里敲入一句话,系统需要在几百毫秒内返回最相关的结果。PyTorch+FastAPI 的标准组合跑起来没问题,但延迟动不动就是 5-10 毫秒,高并发下用户体验直线下降——这就是企业级 Transformer 部署的典型痛点。
在语义搜索、法律文档检索、在线问答这类场景中,推理延迟直接影响用户体验。ELS-RD/transformer-deploy 正是为了解决这个问题而生。该项目由法国法律信息公司 Lefebvre Dalloz 团队开发和维护,他们每天在生产环境中运行基于 Transformer 的语义搜索引擎,积累了丰富的工程经验后才开源了这款工具。
作者 Michaël Benesty 在 Medium 上发表了一篇深度解析文章 Hugging Face Transformer inference under 1 millisecond latency,详细解释了为什么 TensorRT 能带来 10 倍推理加速,以及背后的技术原理。
transformer-deploy 的设计哲学是让复杂的企业级推理优化变得像安装一个 npm 包一样简单。用户只需要一条命令:
convert_model -m "philschmid/MiniLM-L6-H384-uncased-sst2" \
--backend tensorrt onnx \
--seq-len 16 128 128
这条命令会自动完成以下步骤:模型导出 ONNX → ONNX 优化(算子融合、混合精度)→ TensorRT 引擎编译。整个过程对用户透明,不需要深入了解 ONNX 或 TensorRT 的内部机制。
以 MiniLM-L6-H384 模型(SEQ-LEN 16-128-128)在 RTX 3090 上的实测结果:
| 推理引擎 | 平均延迟 | 相对速度 |
|---|---|---|
| PyTorch (FP32) | 5.43ms | 1x |
| PyTorch (FP16) | 6.55ms | 0.83x |
| ONNX Runtime (FP32) | 1.57ms | 3.5x |
| ONNX Runtime (优化) | 0.90ms | 6x |
| TensorRT (FP16) | 0.53ms | 10x |
TensorRT 相比原生 PyTorch 快了约 10 倍,平均推理时间从 5.43ms 降至 0.53ms,已经进入亚毫秒级别。
图1:Transformer 模型导出与优化流程
项目支持以下 NLP 任务,覆盖了企业应用的常见场景:
几乎所有能导出为 ONNX 格式的 Hugging Face 模型都兼容,适用范围极广。
项目采用模块化的后端架构,支持四种推理引擎并行对比:
作为基线对照,方便开发调试。
微软主导的跨平台推理引擎,相比 PyTorch 有 3-6 倍加速。通过 ort_utils.py 接入,支持 FP32/FP16 和算子融合优化。
NVIDIA 官方高性能推理引擎,调用 CUDA kernels 实现极致加速。trt_utils.py 负责引擎构建和推理调用,支持动态 batch 和动态序列长度。实测延迟最低,吞吐最高。
图2:ONNX → TensorRT 优化流程
专门针对稠密向量提取场景优化,通过 st_utils.py 提供 sentence-transformers 风格 API,对接语义搜索系统非常方便。
quantization/ 目录下实现了 PyTorch 量化功能,支持 INT8 量化推理,在 CPU 环境下也能获得显著加速。
推理服务通过 NVIDIA Triton Inference Server 部署,这是企业级生产环境的标配方案。相比直接用 FastAPI 部署,Triton 在批处理、模型热加载、GPU 利用率等方面都有成熟方案。项目 Dockerfile 基于 nvcr.io/nvidia/tritonserver:22.07-py3,包含 PyTorch nightly、sentence-transformers、pytorch-quantization。
图3:GPT-2 文本生成推理示例
最简方式是直接拉取官方预构建镜像,跑一个完整的推理 demo:
docker pull ghcr.io/els-rd/transformer-deploy:0.6.0
docker run -it --rm --gpus all \
-v $PWD:/project ghcr.io/els-rd/transformer-deploy:0.6.0 \
bash -c "cd /project && convert_model ..."
GPU 部署需要提前安装 NVIDIA 驱动和 NVIDIA Container Toolkit。
pip install transformer-deploy
pip install transformer-deploy[GPU] # GPU版
pip install transformer-deploy[CPU] # CPU版
安装后获得 convert_model CLI 命令,直接对 Hugging Face 模型进行优化。
transformer-deploy 代表了从"模型训练"到"模型部署"这一 ML 生命周期的关键环节。随着大模型应用爆发,推理效率成为制约成本和用户体验的核心瓶颈。该项目将原本需要专业知识的 TensorRT 优化流程封装成一条命令行,降低了企业级推理部署的门槛。同类项目(如 text-generation-inference、DeepSpeed-Inference)各有侧重,transformer-deploy 的差异化在于支持多种推理引擎横向对比,方便用户根据实际场景选择最优方案。