TensorRT 如何导入 Hugging Face Hub 模型:ONNX 导出流程与何时改用 TensorRT-LLM TensorRT 如何导入 Hugging Face Hub 模型ONNX 导出流程与何时改用 TensorRT-LLM【免费下载链接】TensorRTNVIDIA® TensorRT™ is an SDK for high-performance deep learning inference on NVIDIA GPUs. This repository contains the open source components of TensorRT.项目地址: https://gitcode.com/GitHub_Trending/tens/TensorRT假设你手里有一个 Hugging Face Hub 上的模型目标是把它搬进 TensorRT、构建出可序列化的推理引擎并在部署前确认精度。仓库中的 documents/import_workflows.md 将这条路径称为 Path 3: Hugging Face Hub Models → TensorRT并给出明确的分岔规则LLM 生成类模型直接改用 TensorRT-LLM非 LLM 的 HF 模型encoder、视觉、扩散组件、语音走 optimum-onnx 导出 ONNX再按标准 ONNX 流程构建 TensorRT 引擎。适用前提文档明确要求受支持的 NVIDIA GPU以官方 Support Matrix 为准NVIDIA 驱动 与 TensorRT 发行版匹配的 CUDA——TRT 11.x 对应CUDA 13.x使用 Python API 时需要 Python 3.10。先做判断这个模型要不要走 TensorRT-LLM在动手导出之前先按 documents/import_workflows.md 开头的提示做分类LLM 生成文本生成、chat 推理直接采用 TensorRT-LLM。文档的理由是它是 NVIDIA 主推的生产级路径负责 KV-cache、batching、paged attention、FP8/INT4 量化、speculative decoding 以及多 GPU tensor/pipeline 并行。非 LLM 模型encoder-only NLP、视觉分类/嵌入、扩散管线的单个组件、语音走本文的主路径即 ONNX 导出 TensorRT 构建。documents/supported_models.md 的 LLM 表头也重复了同一结论Preferred path for LLM generation: TensorRT-LLM... For production LLM serving, use TensorRT-LLM. 该表列出的meta-llama/Llama-3.1-8B、meta-llama/Llama-3.2-1B、Qwen/Qwen3-0.6B、deepseek-ai/Janus-Pro-7B验证精度均为 bfloat16只是已验证基线生产 LLM 服务应使用 TensorRT-LLM 自身的模型支持矩阵。准备环境# Python TRT runtime Python bindings pip install --extra-index-url https://pypi.nvidia.com tensorrt-cu13文档特别强调TRT 11.x 一律使用-cu13包不要混用-cu12wheel。C 路径则按官方安装指南选择.deb/.tar/ 容器方式。安装后按文档给出的方式验证python3 -c import tensorrt; print(tensorrt.__version__) trtexec --help | head -5两条命令都能正常输出说明 Python 绑定和trtexec都可用可以继续导出。主路径用 optimum-onnx 导出 ONNXHF 模型中绝大多数可以通过optimum的 ONNX exporter 干净地导出。文档给出的安装与导出命令如下pip install optimum-onnx # ONNX integration moved out of the optimum package in v2 optimum-cli export onnx \ --model google-bert/bert-base-uncased \ --task feature-extraction \ bert_onnx/说明--model接受 HF Hub 上的模型 ID示例中的google-bert/bert-base-uncased是文档示例也是 documents/supported_models.md 中验证过的 encoder-only 模型float32 基线你可以换成自己的模型 ID。文档示例使用--task feature-extraction这一任务类型。注意包名变化optimumv2 起 ONNX 集成已从optimum包中拆出需要单独安装optimum-onnx。文档认为这是最持久的 HF → TRT 路径因为它只依赖仍在积极维护的组件optimum-onnx与trtexec/Python builder。可选简化与清理 ONNX 图导出后文档建议可选用 onnxsim 折叠常量、用 Polygraphy 清理后者还能顺带消除导出过程引入的多余动态轴pip install onnx onnxsim polygraphy python -m onnxsim model.onnx model.sim.onnx polygraphy surgeon sanitize model.sim.onnx -o model.clean.onnx --fold-constants如果你的导出输出正常、后续构建也没有形状问题这一步可以跳过。构建 TensorRT 引擎一个关键点TensorRT runtime 反序列化的是 plan.plan/.engine不解析 ONNX所以 ONNX 文件必须先转换成序列化引擎。文档给出三个可互换的前端底层都调用IBuildernvonnxparser::IParser。方式 A —trtexec最快上手trtexec \ --onnxmodel.clean.onnx \ --saveEnginemodel.plan \ --memPoolSizeworkspace:4096 \ --fp16 # or --bf16, --int8, --fp8 (platform-dependent)其中--onnx指向你导出的 ONNX例如bert_onnx/model.onnx精度开关--fp16/--bf16/--int8/--fp8按平台能力选择。涉及动态形状时补充--minShapesinput:1x3x224x224 \ --optShapesinput:8x3x224x224 \ --maxShapesinput:16x3x224x224方式 B — Pythontensorrt.BuilderOnnxParserimport tensorrt as trt logger trt.Logger(trt.Logger.WARNING) builder trt.Builder(logger) flags 1 int(trt.NetworkDefinitionCreationFlag.STRONGLY_TYPED) network builder.create_network(flags) parser trt.OnnxParser(network, logger) with open(model.clean.onnx, rb) as f: assert parser.parse(f.read()), [parser.get_error(i) for i in range(parser.num_errors)] config builder.create_builder_config() config.set_memory_pool_limit(trt.MemoryPoolType.WORKSPACE, 4 30) serialized builder.build_serialized_network(network, config) open(model.plan, wb).write(serialized)方式 C — Polygraphy适合脚本化管线polygraphy convert model.clean.onnx \ --convert-to trt \ --fp16 \ --workspace 4G \ --trt-min-shapes input:[1,3,224,224] \ --trt-opt-shapes input:[8,3,224,224] \ --trt-max-shapes input:[16,3,224,224] \ -o model.planC 用户可参考 samples/sampleOnnxMNIST/ 中同样的IBuilderIParser流程。验证引擎是否可用文档 Verifying an Engine 一节给出两个验证手段# Sanity-check performance and numerics trtexec --loadEnginemodel.plan --shapesinput:1x3x224x224 --verbose # Side-by-side accuracy against the ONNX source polygraphy run model.onnx --trt --onnxrt \ --atol 1e-3 --rtol 1e-3 --input-shapes input:[1,3,224,224]第一条加载已保存的 plan 检查运行表现第二条把 TRT 引擎与 ONNX Runtime 输出逐点对比--atol/--rtol为文档示例中的容差设定。文件名按你实际的导出/构建产物替换。如果你的模型带生成式输出文档要求在可信地启用新引擎之前先在一个确定性 seed 上与参考实现逐 token 对比。常见坑与对应的处理以下是文档在 ONNX 路径和 HF 路径中明确列出的问题不支持的算子trtexec会点名出问题的 op。处理选项依次是更新导出器/opset、改写子图或写自定义 pluginTRT 10 首选IPluginV3仓库中 samples/python/aliased_io_plugin/ 是可运行参考。形状推断失败用polygraphy inspect model model.onnx --show attrs确认每个 tensor 的 rank 已知。INT64 tensorTRT 会告警并转换为 INT32若数值超出 INT32 范围先做 sanitize。Tokenizer paddingHF 特有HF 默认右填充而一些 decoder 模型生成时要求左填充不匹配会产生静默错误的 logits。KV-cache 形状生成式模型在序列维上的动态形状是必须的需要手动定义 shape profile。扩散管线必须按组件拆分text encoder、UNet/DiT、VAE——TRT 不能直接吞下整个 pipeline 对象documents/supported_models.md 按组件逐行列出支持情况例如black-forest-labs/FLUX.2-dev的 Text Encoder 与 DiT 为 bfloat16、VAE 为 float16。仓库 demo/Diffusion/README.md 是 SD/ControlNet 管线按组件加速的完整示例可作为拆分参考。plan 文件不跨计算能力迁移Engine plan file is generated on an incompatible device 意味着要在部署 GPU 上重新构建或在构建时指定多个目标 SM。精度差距定位从polygraphy run ... --onnxrt --trt --atol ...开始定位若 FP16 引擎偏差文档建议尝试--stronglyTyped 对问题子图显式 FP32 cast。替代路径留在 PyTorch或直接用 optimum-nvidiaOption B — Torch-TensorRT适合想留在 PyTorch 内快速迭代的场景。用transformers加载模型、移到 CUDA 后通过torch_tensorrt.dynamo.compile或torch.compile(backendtensorrt)编译。文档认为 Dynamo frontend 是当前活跃、首选的路径JIT/tracing 方式仍可用但投入有限。常见坑是 graph break 回退到 eager可用TORCH_LOGSgraph_breaks检查。Option C —optimum-nvidia便利封装但上游已停滞pip install optimum-nvidiafrom optimum.nvidia import AutoModelForCausalLM model AutoModelForCausalLM.from_pretrained( meta-llama/Llama-3.2-1B, use_fp8False, # Or True on Hopper/Blackwell ) out model.generate(input_ids, max_new_tokens128)文档对这条路径给出了明确的状态警告最后一次发布是 2025-01-21 的v0.1.0b9此后无新发布截至 2026-Q2 已停滞超过一年它通过third-party/锁定了一个较旧的tensorrt-llm采用前必须核对其锁定版本与你的 TRT/CUDA 栈是否匹配。生产场景一律优先直接采用 TensorRT-LLM。已验证的模型基线与下一步documents/supported_models.md 声明该表不是穷举支持列表而是 NVIDIA 已验证并有已知良好基线的子集未列出的模型预期同样可运行。各家族的验证精度示例encoder-only NLPBERT 族、句嵌入google-bert/bert-base-uncased、FacebookAI/roberta-base、sentence-transformers/all-MiniLM-L6-v2等基线 float32视觉分类/嵌入torchvision/resnet50、openai/clip-vit-base-patch32、facebook/dinov2-base等基线 float32语音openai/whisper-large-v3-turbo的 Encoder/Decoder 分行验证float32扩散管线按组件验证如stabilityai/sd-turbofloat16、stabilityai/stable-diffusion-xl-base-1.0float16。如果你的模型不在表中、或按本文流程走不通文档给出的下一步是提 GitHub issue附上三样东西HF 模型 ID 或来源 URL、目标 dtypefp32 / fp16 / bf16 / fp8 / int8 / int4、以及一个框架层面的可复现示例。维护者会完成基准测试并扩展该表。【免费下载链接】TensorRTNVIDIA® TensorRT™ is an SDK for high-performance deep learning inference on NVIDIA GPUs. This repository contains the open source components of TensorRT.项目地址: https://gitcode.com/GitHub_Trending/tens/TensorRT创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考