ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Model-Optimizer 实战:TensorRT-LLM 部署量化模型完整指南

Model-Optimizer 实战:TensorRT-LLM 部署量化模型完整指南 人工智能大模型模型优化模型量化模型压缩【免费下载链接】Model-OptimizerA unified library of SOTA model optimization techniques like quantization, distillation, pruning, neural architecture search, speculative decoding, etc. It compresses deep learning models for downstream deployment frameworks like TensorRT-LLM, TensorRT, vLLM, etc. to optimize inference speed.项目地址https://gitcode.com/GitHub_Trending/te/Model-Optimizer点击查看免费下载本文聚焦 Model-Optimizer 项目中 TensorRT-LLM 部署路径的完整落地流程从 ModelOpt 量化 checkpoint 的产生PTQ / AutoQuantize到通过 unified HuggingFace checkpoint 格式加载进 TensorRT-LLM 的 Direct LLM API 完成推理再到用lm_eval_trtllm.py做精度评估。读完本文你将掌握 FP8 / NVFP4 量化模型的 TRT-LLM 部署命令、张量并行配置、AutoDeploy 的使用边界、legacy 导出路径的弃用原因以及评估时prompt_logprobs对齐问题的规避方法。环境要求与安装在开始部署之前需要准备 TensorRT-LLM 运行时。根据本仓库 deployment reference 与 unified HF 部署文档 的要求TensorRT-LLM 1.2.0这是加载 unified HF checkpoint 的最低版本要求对应框架版本表中 vLLM 0.10.1、SGLang 0.4.10。仓库文档同时说明部署套件本身实际以更新的 1.3.x 容器行进行验证。安装方式二选一使用 NVIDIA 容器镜像nvcr.io/nvidia/tensorrt-llm/release:version推荐随镜像附带完整的 TRT-LLM 运行环境或直接pip install tensorrt-llm。注意TP 张量并行部署、FP8/NVFP4 等格式的 kernel 支持都与具体版本强相关建议部署前先确认你使用的 TRT-LLM 版本不低于 1.2.0评估 loglikelihood 类任务时则要求 1.3.0rc11详见下文用 TRT-LLM 评估精度一节。第一步用 ModelOpt 产出可部署的量化 checkpointTensorRT-LLM 的 Direct LLM API 直接读取unified HuggingFace checkpoint因此部署的第一步是用 Model-Optimizer 完成量化与导出。这也是 unified HF 文档 中描述的推荐工作流加载 HuggingFace或 Megatron Core模型用 ModelOpt 完成量化PTQ 或 AutoQuantize通过export_hf_checkpoint()导出为 unified checkpoint 格式在推理框架中加载该 checkpoint 进行加速推理。量化PTQ 与 AutoQuantizeexamples/hf_ptq 提供了完整的 PTQ 入口。底层 API 是modelopt.torch.quantization.quantize见 model_quant.py以 NVFP4 为例import modelopt.torch.quantization as mtq model AutoModelForCausalLM.from_pretrained(...) # 准备校准数据集与 forward loop通常 128~512 个样本 calib_set get_dataloader(num_samplescalib_size) def forward_loop(model): for batch in calib_set: model(batch) # PTQ就地替换为量化模块 model mtq.quantize(model, mtq.NVFP4_DEFAULT_CFG, forward_loop)精度提示来自 hf_ptq README追求更高 NVFP4 精度时建议使用mtq.NVFP4_MLP_ONLY_CFG、mtq.NVFP4_EXPERTS_ONLY_CFG或mtq.NVFP4_OMLP_ONLY_CFG将量化限定在 MLP / MoE expert 层可选含o_proj让对精度敏感的 attention QKV 投影保持高精度。命令行方式推荐用于实际生产# 直接指定量化格式 python examples/hf_ptq/hf_ptq.py \ --pyt_ckpt_path huggingface_model_card \ --qformat fp8 \ --export_path quantized_ckpt_path # 或使用声明式 recipe覆盖 qformat推荐 python examples/hf_ptq/hf_ptq.py \ --pyt_ckpt_path huggingface_model_card \ --recipe general/ptq/nvfp4_default-kv_fp8_cast \ --export_path quantized_ckpt_path框架脚本 huggingface_example.sh 封装了量化 → 导出 → TRT-LLM 部署冒烟测试的完整链路其中--quant接受fp8、nvfp4等预设格式scripts/huggingface_example.sh --model $HF_PATH --quant fp8 --tp 4脚本内部会调用run_tensorrt_llm.py对导出的 checkpoint 做一次部署验证见 run_tensorrt_llm.py确认 checkpoint 可以被 TRT-LLM 加载并生成文本。若使用 NVFP4 格式脚本还会检查 GPU 计算能力nvidia-smi的 compute_cap在非 Blackwell计算能力 10机器上提前给出提示。导出unified HF checkpoint 格式export_hf_checkpoint()实现在 unified_export_hf.py将量化模型导出为一组 safetensors 文件量化权重与缩放因子hf_quant_config.json量化配置部署端据此自动识别量化格式其他 JSON模型结构信息、tokenizer 信息与元数据。from modelopt.torch.export import export_hf_checkpoint with torch.inference_mode(): export_hf_checkpoint( model, # 量化后的模型 export_dir, # 导出目录 )该 API 支持的量化格式详见 unified HF 文档包括FP8、FP8_PBper-block scaling、NVFP4、NVFP4_AWQ、INT4_AWQ、W4A8_AWQ、IQ1_S / IQ2_XSGGML 块布局的 codebook 量化。其中 IQ 导出会将权重替换为 byte-exact 的 GGML 块IQ1_S 每块 50 字节、IQ2_XS 每块 74 字节每块编码 256 个逻辑权重对应约 2.3125 bit/weight。注意unified checkpoint 导出当前不支持稀疏性而投机解码speculative decoding则仅支持通过 unified checkpoint 导出。Direct LLM API 部署推荐路径unified HF checkpoint 与原始 HuggingFace checkpoint 的层结构和张量命名对齐因此 TensorRT-LLM 可以直接通过 LLM API 加载无需构建 TensorRT engine。量化格式会自动从hf_quant_config.json中识别无需手动指定。基础 Python APIfrom tensorrt_llm import LLM, SamplingParams llm LLM(modelcheckpoint_path) # 量化格式从 hf_quant_config.json 自动检测 sampling_params SamplingParams(temperature0.8, top_p0.95) outputs llm.generate([Hello, my name is], sampling_params) for output in outputs: print(fPrompt: {output.prompt!r}, Generated: {output.outputs[0].text!r})直接从 HuggingFace Hub 加载Model-Optimizer 在 NVIDIA 的 HuggingFace 组织下发布了可直接部署的预量化 checkpoint如nvidia/Llama-3.1-8B-Instruct-FP8可直接作为模型标识符传入from tensorrt_llm import LLM llm LLM(modelnvidia/Llama-3.1-8B-Instruct-FP8) print(llm.generate([What is AI?]))unified HF 文档 给出了同样适用于本地导出目录的完整示例批量输入 4 个 prompt配合temperature0.8, top_p0.95的采样参数。本仓库的部署验证脚本 run_tensorrt_llm.py 则展示了更完整的用法——通过generate_text/generate_tokens/generate_context_logits分别获取文本、token 与上下文 logits并报告 GPU 显存占用。该脚本还提示generate_context_logits()需要禁用 KV cache reuseenable_kv_cache_reuseFalse否则共享前缀输入会返回被截断的静默错误的上下文 logits。张量并行部署大模型如 DeepSeek、Qwen 3 MoE 等需要跨多卡切分通过tensor_parallel_size指定 TP 规模from tensorrt_llm import LLM llm LLM(modelcheckpoint_path, tensor_parallel_size4)从 test_deploy.py 的部署矩阵可以看到仓库验证的组合普遍采用 TP8如nvidia/DeepSeek-R1-NVFP4等条目并且记录了每个用例的最小 SM 版本要求NVFP4 用例mini_sm100即 Blackwell 架构。因此在实际部署时TP 大小应与 checkpoint 导出时的切分方式、GPU 数量以及显存容量对齐。AutoDeployAutoQuant / 混合精度 checkpoints 的部署当 checkpoint 由 AutoQuantize自动按层搜索最优精度例如 NVFP4 与 FP8 混合、目标 effective bits 5.4或混合精度产生时推荐使用 TensorRT-LLM 的AutoDeploy后端它能自动化图变换以获得优化推理。标准工作流量化用 examples/hf_ptq 中的hf_ptq.py/scripts/huggingface_example.sh对模型做 PTQ含 AutoQuantize / 混合精度产出带hf_quant_config.json的 unified HuggingFace checkpoint。AutoQuantize 的命令入口示例详见 hf_ptq READMEscripts/huggingface_example.sh \ --model $HF_PATH \ --recipe general/auto_quantize/nvfp4_fp8_at_5p4bits \ --calib_batch_size 4部署将上述 checkpoint 交给 TensorRT-LLM 的 AutoDeploy 后端加载具体 API 与trtllm-serve参数以 TensorRT-LLM 上游文档为准。注意事项NVFP4 需要 Blackwell GPUAutoDeploy 中跑 NVFP4 必须在 Blackwell 架构上Hopper 上请改用 FP8。同理Hopper 可以产出 NVFP4 checkpoint但无法 serving。AutoDeploy 支持 CUDA graphs、torch compile 后端以及 KV cache 优化适合对延迟敏感的推理场景。本仓库在 0.46 版本移除了独立的examples/llm_autodeploy示例因此请直接使用 TensorRT-LLM 自带的 AutoDeploy配合 ModelOpt 量化的 checkpoint 使用。Legacy TRT-LLM Checkpoint 导出已弃用使用export_tensorrt_llm_checkpoint()的 legacy 导出路径已弃用。原因与事实依据如下1_tensorrt_llm.rst 明确说明该 API 导出的是针对 legacy TensorRT 后端的 checkpoint而当前 TensorRT-LLM 发布版已不再支持 legacy TensorRT 后端该 API 自 0.48.0 起弃用计划在 0.49.0 移除。正确做法是用export_hf_checkpoint()重新导出量化源模型并通过 TensorRT-LLM 的 PyTorch 后端部署即本文的 Direct LLM API 路径。用 TRT-LLM 评估精度lm_eval_trtllm.pyModel-Optimizer 通过 lm_eval_trtllm.py 在 TRT-LLM 后端上运行 lm-evaluation-harness 基准要求lm_eval 0.4.12旧的lm_eval_tensorrt_llm.py已移除。该脚本是围绕 lm-eval 内置trtllm后端的一层薄包装核心价值是修正两处问题prompt_logprobs对齐修正lm-eval 0.4.12 的trtllm后端对 TensorRT-LLM 返回的prompt_logprobs存在一个位置的错位导致所有 loglikelihood 类任务hellaswag、mmlu、arc……在第一条请求就抛KeyError。脚本通过覆盖TRTLLM._parse_logprobs修正对齐保留_UPSTREAM_PARSE_LOGPROBS供单元测试断言上游仍是坏实现一旦上游修复即可删除本文件。KV cache 内存分数透传lm-eval 后端会丢弃除固定键之外的--model_args因此脚本通过修补KvCacheConfig使kv_cache_free_gpu_memory_fraction参数真正生效。TRT-LLM 默认 0.9 的取值会为prompt_logprobs缓冲留太少空间在大显存 GPU 上导致 CUDA OOM脚本默认改为 0.8。命令行用法python examples/llm_eval/lm_eval_trtllm.py \ --model trtllm \ --model_args modelcheckpoint_path,tokenizercheckpoint_path,tensor_parallel_sizetp,max_batch_sizebs,max_input_len4096,max_output_len512 \ --tasks gsm8k,mmlu \ --batch_size bs关键参数与坑参数说明model/tokenizer量化 checkpoint 目录 / HF 模型目录tokenizer 通常就在 checkpoint 内tensor_parallel_size默认 1应设为 checkpoint 所需的 GPU 数pipeline_parallel_size亦支持max_input_len/max_output_len必须显式设置默认分别为 2048 / 512超过max_input_len的 prompt 会被静默截断——5-shot MMLU 或 gsm8k 的 prompt 通常超过 2048 tokenengine 的max_seq_len是两者之和kv_cache_free_gpu_memory_fractionKV cache 可占用的空闲显存比例默认 0.8覆盖 TRT-LLM 的 0.9--tasks逗号分隔的任务列表如gsm8k,mmlu另一个版本约束来自脚本内部的_MIN_TRTLLM_VERSION 1.3.0rc11TensorRT-LLM 直到 1.3.0rc11 才在compute_logprobs中把请求的 token id 完整传入prompt_logprobs此前每个位置只保留 top-1 token因此loglikelihood 任务要求 TensorRT-LLM 1.3.0rc11纯生成式任务gsm8k、ifeval不受影响。版本检查延后到首次打分时才触发这样旧版本上跑生成式任务仍然可用。在集成流程中huggingface_example.sh 会把--lm_eval_tasks透传进lm_eval_trtllm.py并默认按可见 GPU 数量设置LM_EVAL_TPMoE checkpoint 在部分 GPU 上如 SM 12.0TP 过高会触发 DeepEP kernel 失败此时应降低 TP。常见问题速查问题解决方案No module named tensorrt_llm通过 NVIDIA 容器nvcr.io/nvidia/tensorrt-llm/release:version或pip install tensorrt-llm安装NVFP4 推理在 Hopper 上失败NVFP4 推理需要 Blackwell GPUHopper 请改用 FP8 部署loglikelihood 任务抛KeyError用lm_eval_trtllm.py而非裸lm_evalCLI并确保 TensorRT-LLM 1.3.0rc115-shot 任务分数异常偏低显式设置max_input_len如 4096默认 2048 会静默截断长 prompt评估时 CUDA OOM设置kv_cache_free_gpu_memory_fraction0.8脚本默认值给prompt_logprobs缓冲留足空间export_tensorrt_llm_checkpoint不可用该 legacy API 已弃用改用export_hf_checkpoint() PyTorch 后端部署支持矩阵重要边界unified HF 文档 给出了 TRT-LLM / vLLM / SGLang 三端的部署支持矩阵其条目来自 test_deploy.py 的 release 部署套件。理解这张表需要明确三个边界矩阵记录的是声明过的用例而非 PR 门禁覆盖套件标记为release只有在 pytest 传入--run-release时才收集当前 CI 并不会跑这些用例每个用例只是 text 路径上的 load-and-generate 冒烟检查不验证精度、图片/音频输入、扩散输出或投机解码是否真正生效矩阵并非穷尽清单vLLM / SGLang / TRT-LLM 都是泛化加载 unified HF checkpoint标准nn.Linear构成的模型带hf_quant_config.json通常无需 ModelOpt 改动即可部署。与本文主题直接相关的事实是TRT-LLM 端对 FP8 与 NVFP4 均需 v1.2.0且 NVFP4 推理要求 Blackwell GPU而模型侧覆盖了 Llama 3.x/4、Nemotron 系列、DeepSeek R1/V3.x、Qwen 3 全系、GLM、Kimi、MiniMax、Mixtral 以及 EAGLE3 系列投机解码 drafters 等主流组合具体以 test_deploy.py 中的精确 checkpoint、TP 大小与最小 SM 版本为准。小结完整的 TRT-LLM 部署闭环是ModelOpt PTQ / AutoQuantize 量化 →export_hf_checkpoint()导出 unified checkpoint → TensorRT-LLM Direct LLM API或 AutoDeploy加载推理 →lm_eval_trtllm.py精度验证。三个最值得记住的版本/硬件约束是TRT-LLM 加载 unified checkpoint 需 v1.2.0、NVFP4 推理仅限 Blackwell GPU、loglikelihood 评估需 TRT-LLM 1.3.0rc11。相关文件均可在本仓库继续深入阅读unified HF 部署文档、TRT-LLM 部署文档、PTQ 示例、评估示例。赞分享人工智能大模型模型优化模型量化模型压缩【免费下载链接】Model-OptimizerA unified library of SOTA model optimization techniques like quantization, distillation, pruning, neural architecture search, speculative decoding, etc. It compresses deep learning models for downstream deployment frameworks like TensorRT-LLM, TensorRT, vLLM, etc. to optimize inference speed.项目地址https://gitcode.com/GitHub_Trending/te/Model-Optimizer点击查看免费下载相关推荐Model Optimizer 实战从 NVIDIA Hugging Face Model Hub 一键部署 FP8 量化模型到 TensorRT-LLM、vLLM 与 SGLangModel Optimizer 实战从 NVIDIA Hugging Face Model Hub 一键部署 FP8 量化模型到 TensorRT LLM、v人工智能大模型模型优化模型量化模型压缩Model Optimizer 扩散模型量化部署实战ONNX 导出与 TensorRT 引擎构建完整指南Model Optimizer 扩散模型量化部署实战ONNX 导出与 TensorRT 引擎构建完整指南 本篇指南基于 Model Optimizer 仓库中人工智能大模型模型优化模型量化模型压缩使用 TensorRT-LLM 部署 Model-Optimizer 量化模型统一 Hugging Face Checkpoint 工作流使用 TensorRT LLM 部署 Model Optimizer 量化模型统一 Hugging Face Checkpoint 工作流 Model Opt人工智能大模型模型优化模型量化模型压缩上一篇MMPose 在 COCO 上训练 SCNet 人体 2D 姿态估计模型结果、配置详解与源码剖析下一篇逆向工程实战如何打造你自己的微信QQ防撤回补丁创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表