资讯详情

Model-Optimizer 统一 Hugging Face 检查点导出指南:从 PTQ 量化到 TensorRT-LLM / vLLM / SGLang 一键部署

📅 2026/9/26 15:38:50 | 华诺云谱 👁 阅读
Model-Optimizer 统一 Hugging Face 检查点导出指南:从 PTQ 量化到 TensorRT-LLM / vLLM / SGLang 一键部署
【免费下载链接】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 提供了一套统一 Hugging Face 检查点Unified Hugging Face Checkpoint导出能力把经过 PTQ后训练量化、auto-quantize 或 QAT 优化过的 Hugging Face transformers 模型、diffusers 流水线/组件乃至 Megatron Core 模型导出为一种与原始检查点层结构、张量命名完全对齐的统一格式随后即可由 TensorRT-LLM、vLLM、SGLang 等推理框架直接加载加速推理。读完本文你将掌握统一检查点导出 API 的完整用法、受支持的量化格式及其底层张量布局、各框架的最低版本要求与加载参数quantizationmodelopt/modelopt_fp4并能对照官方部署矩阵与仓库源码定位自己模型的实际支持情况。统一检查点导出的整体工作流统一导出的设计目标非常明确量化一次处处部署。官方文档将其工作流概括为两个步骤量化与导出加载 Hugging Face 模型或 Megatron Core 模型先用 Model-Optimizer 完成量化如modelopt.torch.quantization提供的 PTQ 流程再导出为统一检查点格式。导出时检查点的层结构与张量名称与原始检查点保持一致——这是统一格式的契约部署端可以像加载普通 HF 权重那样加载它。部署加速在受支持的推理框架TensorRT-LLM、vLLM、SGLang中加载该统一检查点执行加速推理。导出的统一检查点目录包含三类内容内容说明一组.safetensors分片文件存放量化后的模型权重与各张量的缩放因子scaling factorshf_quant_config.json量化配置量化算法、块大小、打包方式等元数据其他 JSON 文件模型结构信息、tokenizer 信息与部署元数据在仓库中这一契约由 unified_export_hf.py 具体落实量化感知地逆转 transformers 在加载时施加的权重转换如gate_up_proj融合、MoE 叶子重命名、model/language_model前缀重排从而保证导出后的张量名与 HF Hub 原始检查点对齐参见revert_weight_conversion_quant_aware相关实现。导出 API 的最小用法export_hf_checkpoint是统一的公开入口位于modelopt.torch.exportfrom modelopt.torch.export import export_hf_checkpoint with torch.inference_mode(): export_hf_checkpoint( model, # The quantized model. export_dir, # The directory where the exported files will be stored. )从 源码签名 可以看到该 API 的完整参数def export_hf_checkpoint( model: Any, dtype: torch.dtype | None None, export_dir: Path | str tempfile.gettempdir(), save_modelopt_state: bool False, components: list[str] | None None, extra_state_dict: dict[str, torch.Tensor] | None None, max_shard_size: int | str 10GB, **kwargs, ):各参数的作用model待导出的量化模型。支持 transformers 模型如LlamaForCausalLM以及 diffusers 流水线/组件如StableDiffusionPipeline、UNet2DConditionModel。函数会自动检测模型类型并分派到对应的导出逻辑。dtype未量化层或默认模型的权重导出数据类型默认取模型自身 dtype。export_dir导出目标目录。save_modelopt_state是否额外保存 modelopt 的 state_dict。components仅 diffusers 流水线使用指定要导出的组件名列表为None时导出全部量化组件。extra_state_dict追加到导出检查点的额外张量字典。max_shard_size每个 safetensors 分片文件的最大体积默认10GB。值得注意的是源码会按模型状态自动选择三条导出路径见 dispatch 逻辑accelerate卸载offload模型走流式导出路径_export_transformers_checkpoint_streaming逐层物化并直接写入分片文件峰值显存只占一层 一个分片缓冲区FSDP2 多卡模型走_export_fsdp2_checkpoint_streaming各 rank 流式导出自己拥有的单元多卡并发写分片最终以 barrier 同步常规单进程模型走_export_transformers_checkpoint一次性生成完整 state_dict 后调用model.save_pretrained落盘。多卡 FSDP2 场景下只有 rank 0 写文件若模型带了量化器对象hf_quantizer导出后会被移除以免污染落盘内容。端到端 PTQ 导出示例仓库中的 hf_ptq 示例 给出了量化 → 导出的完整链路。先完成 PTQimport modelopt.torch.quantization as mtq # Setup the model model AutoModelForCausalLM.from_pretrained(...) # Simplified example set up a calibration data loader with the desired calib_size calib_set get_dataloader(num_samplescalib_size) # Prepare the calibration set and define a forward loop def forward_loop(model): for batch in calib_set: model(batch) # PTQ with in-place replacement to quantized modules model mtq.quantize(model, mtq.NVFP4_DEFAULT_CFG, forward_loop)随后即可调用export_hf_checkpoint导出统一检查点。命令行一键流程由 huggingface_example.sh 提供export HF_PATHthe downloaded LLaMA checkpoint from the Hugging Face hub, or simply the model card scripts/huggingface_example.sh --model $HF_PATH --quant QFORMAT --tp [1|2|4|8]其中QFORMAT取modelopt_recipes/configs/ptq/presets/model/下任一预设文件名如fp8、fp8_2d_blockwise_weight_only、int4_awq、w4a8_awq_beta、nvfp4、nvfp4_mlp_only、nvfp4_experts_only、nvfp4_omlp_only、nvfp4_svdquant、w4a8_nvfp4_fp8、w4a8_mxfp4_fp8、mxfp8等。脚本内部即通过hf_ptq.py的export_hf_checkpoint调用完成落盘并额外完成三件事将 tokenizer 的padding_side恢复为默认值后保存校准阶段为降低精度损失会临时改用左侧填充导出 tokenizer 文件若启用了trust_remote_code将自定义模型文件Python 文件与 JSON 配置一并复制到导出目录。在 hf_ptq.py 中可以看到导出本身的代码与本文开头的最小示例一致——export_hf_checkpoint(full_model, export_direxport_path)。该脚本还提示w4a16_nvfp4格式当前 TensorRT-LLM 与 SGLang 尚未支持vLLM 部署支持进行中导出时会给出警告。提示官方文档明确指出export_hf_checkpoint同样支持 diffusers 流水线与组件如 UNet/transformer完整的端到端工作流与 CLI 用法可参考仓库中的 diffusers 量化示例。支持的量化格式一览统一 HF 导出 API 支持以下量化格式#格式说明1FP88 位浮点2FP8_PB8 位浮点 逐块per-block缩放3NVFP4NVIDIA 4 位浮点4NVFP4_AWQNVIDIA 4 位浮点 AWQ 优化5INT4_AWQ4 位整型 AWQ 优化6W4A8_AWQ4 位权重 8 位激活 AWQ 优化7IQ1_S1 位码本量化采用 GGML 块布局8IQ2_XS2 位码本量化采用 GGML 块布局这些格式在 quant_format.py 中有对应的字符串常量定义fp8、fp8_pb_real、nvfp4、nvfp4_awq、int4_awq、w4a8_awq、iq1_s、iq2_xs等并存在独立的IQ_FORMATS、FUSION_FREE_FORMATS等分类导出逻辑据此区分处理路径。GGML 没有 FP8 等价物的说明官方文档特别提醒GGML 不存在 ModelOpt per-tensor FP8 权重-激活格式的等价物。GGML 没有定义一等的 FP8 张量类型也就没有对应的 per-tensor 权重与激活缩放语义。因此把 ModelOpt 的 FP8 检查点转成 GGUF 时必须先转换到其他 GGML 支持的张量类型而不是无损的 FP8 编码。IQ 权重的张量表示对于 IQ1_S 与 IQ2_XS统一导出会把每个浮点型的module.weight替换为一个包含字节级精确 GGML 块的uint8张量其形状为[*logical_shape[:-1], logical_shape[-1] // 256, payload_bytes]其中payload_bytes对 IQ1_S 为 50、对 IQ2_XS 为 74。不额外存储 shape 张量——加载方通过如下规则恢复逻辑形状[*weight.shape[:-2], weight.shape[-2] * 256]这一恢复是无歧义的因为 IQ 导出要求逻辑最后一维必须能被 256 整除。生成的配置会记录quant_method: modelopt、packing: ggml、256 值的块大小以及 payload 字节数。IQ payload不以 compressed-tensors 的整数weights分组表示因为所有缩放因子与索引都已内嵌进每个打包块中。Megatron 相关限制Megatron IQ 导出目前要求张量并行与流水线并行规模均为 1——打包发生在导出阶段若把张量并行分片当作完整权重打包、或流水线某阶段恰好不持有 IQ 层都不会触发与其它 rank 相同的拒绝。专家并行expert parallelism受支持前提是每个专家使用相同格式。警告Megatron 融合 MoEfused-MoE的 IQ 导出目前不受支持。其打包张量要求部署消费方理解[num_experts, out_features, in_features // 256, payload_bytes]而非普通 HF 融合专家顺序。在部署加载方真正掌握该布局并通过集成测试之前导出器会直接抛出NotImplementedError。稠密权重与单独命名的专家权重仍使用前述表示。IQ2_XS 74 字节块的内部布局每一个 74 字节的 IQ2_XS 块表示 256 个逻辑权重字节 0–1小端序 FP16 超块缩放因子d字节 2–6532 个小端序uint16码字每个码字对应一组 8 个权重。每个码字包含一个 9 位码本索引与 7 个存储的符号位第 8 个符号位由奇偶校验推导字节 66–7316 个 4 位局部缩放码每字节打包两个每个局部缩放由相邻两个 8 权重组共享。规范的 512×8 IQ2_XS 码本是实现的一部分而不是检查点的一部分完整块的成本为74 * 8 / 256 2.3125比特/逻辑权重。仓库中 iq2_xs.py 的模块注释与这一描述完全一致编码器在固定、经验锚定的超块缩放下执行单遍平方误差网格搜索每个 256 逻辑值生成一个 74 字节的block_iq2_xspayload码本来自 llama.cppggml-common.hcodebooks.py中以内嵌 base64 形式原样携带去量化公式对应 GGML 的ggml-quants.c。对称地iq1_s.py 定义了 50 字节block_iq1_spayload 的布局字节 0–1 为 FP16 超块缩放字节 2–33 为 32 个码本索引的低 8 位字节 34–49 为 8 个小端序uint16元数据字每个元数据字描述 4 个相邻的 8 值向量比特 0–11 为索引高 3 位比特 12–14 选择 8 个局部缩放之一比特 15 选择共享的 ±0.125 增量。部署支持矩阵最小框架版本框架最低版本TensorRT-LLMv1.2.0vLLMv0.10.1SGLangv0.4.10这是预期能加载统一 HF 检查点的最老版本。官方文档同时说明部署测试套件本身面向更新的版本——.github/workflows/中的 TensorRT-LLM 容器处于 1.3.x 系列更老的 TensorRT-LLM 发布版可能仍能服务 FP8 检查点只是没有被测试覆盖因此 v1.2.0 是声明的最老版本而非实际能工作的最老版本。模型支持矩阵及其边界矩阵条目取自发布部署套件 test_deploy.py对每个条目套件在对应框架中加载导出的检查点用四条短文本 prompt 做生成断言每条都返回非空输出。该文件以pytest.mark.release标记通过ModelDeployerList参数化出模型 × 后端 × 张量并行 × 最小 SM 版本的组合例如nvidia/DeepSeek-R1-NVFP4×(vllm, trtllm, sglang)×tensor_parallel_size8×mini_sm100。阅读这张矩阵前必须理解两个边界它们决定了任意一个 ✅ 的实际含义这些是声明过的用例而非 PR 门禁覆盖。套件被标记为release只有在 pytest 传--run-release时才会收集执行而.github/workflows/中的工作流目前没有任何一个传该参数。因此 PR 上的绿色勾选并不代表这些用例真正跑过。每个用例都是文本路径上的加载生成冒烟测试。它不验证精度、图像/音频输入、扩散输出也不验证投机解码speculative decoding是否真正生效。图例✅ —— 出现在发布部署套件中受上述两个边界约束⚠ —— 预期可用但非套件条目或承袭自更早文档或该用例并未实际走行名所声称的功能-—— 不在套件中仍可能工作见下文未列出的模型。语言模型矩阵模型量化格式TensorRT-LLMvLLMSGLangLlama 3.1, 3.3FP8, NVFP4✅✅✅Llama 4 Scout, MaverickFP8✅✅✅Llama 4 ScoutNVFP4✅✅✅Llama 4 MaverickNVFP4⚠--Llama Nemotron Super 49B v1, v1.5FP8✅✅✅Llama Nemotron Ultra 253B v1FP8✅✅✅Nemotron 3 Nano 30B-A3BFP8, NVFP4✅✅✅Nemotron 3 Super 120B-A12BFP8, NVFP4✅✅✅Nemotron 3 Ultra 550B-A55BNVFP4✅✅✅DeepSeek R1, R1-0528NVFP4✅✅✅DeepSeek R1, V3FP8⚠⚠⚠DeepSeek V3, V3.1, V3.2NVFP4✅✅✅DeepSeek V4 FlashNVFP4✅✅✅DeepSeek V4 ProNVFP4-✅✅Qwen 3 8B, 14BFP8, NVFP4✅✅✅Qwen 3 32BNVFP4✅✅✅Qwen 3 MoE 235B-A22BFP8, NVFP4✅✅✅Qwen 3 MoE 30B-A3BNVFP4✅✅✅Qwen 3 Coder 480B-A35BNVFP4✅✅✅Qwen 3-Next 80B-A3BNVFP4✅✅✅Qwen 3.5 397B-A17BNVFP4✅✅✅Qwen 3.5 122B-A10B, Qwen 3.6 35B-A3BNVFP4-✅-Qwen 2.5FP8⚠⚠⚠Qwen 2.5NVFP4⚠⚠-QwQ-32BFP8⚠⚠⚠QwQ-32BNVFP4⚠⚠-Gemma 4 31BNVFP4✅✅✅Gemma 4 26B-A4BNVFP4-✅-GLM-4.7, GLM-5, GLM-5.2NVFP4✅✅✅GLM-5.1NVFP4-✅✅Kimi K2-Thinking, K2.5NVFP4✅✅✅Kimi K2.6NVFP4-✅-MiniMax M2.5, M3NVFP4✅✅✅Mixtral 8x7BFP8⚠⚠⚠Mixtral 8x7BNVFP4⚠--视觉语言与多模态模型对 VLMModel-Optimizer 只量化语言模型部分视觉编码器保持高精度。因此导出的检查点依赖服务框架自身对该架构的多模态支持。注意表中 VLM 行的 ✅只是文本冒烟覆盖——套件发送与语言模型相同的纯文本 prompt没有任何图像或音频输入到达处理器或视觉编码器。这些条目证明量化检查点能加载、语言路径能生成但不证明多模态服务能力。模型量化格式TensorRT-LLMvLLMSGLangQwen 2.5-VL 7BFP8, NVFP4✅✅✅Qwen 3-VL 235B-A22BNVFP4✅✅✅Nemotron 3 Nano Omni 30B-A3BFP8, NVFP4✅✅✅投机解码 draftersDrafters 部署在各自基础检查点之上。该表有两个专属注意事项多数条目是双重条件。除--run-release门禁外test_eagle中的 drafter 用例还要求环境变量MODELOPT_LOCAL_EAGLE_MODEL指向包含 drafter 的目录否则跳过。例外是 Kimi K2.6 的 EAGLE3——它在test_kimi中声明、无此门禁这也是它是唯一带 vLLM 覆盖行的原因。Medusa 标记 ⚠ 因为用例并未真正走 Medusa。共享测试骨架只在模型 ID 包含eagle时才构建投机解码配置因此 Medusa 条目执行的是普通生成它证明检查点可加载、可服务但不验证 Medusa 解码。Drafter量化格式TensorRT-LLMvLLMSGLangEAGLE3 for Llama 3.3 70B, Llama 4 MaverickFP8✅-✅EAGLE3 for Qwen 3 235B-A22B (incl. Thinking-2507, FP4)BF16, NVFP4✅-✅EAGLE3 for Qwen 3 30B-A3B-Thinking-2507BF16✅-✅EAGLE3 for Kimi K2-Thinking, K2.5NVFP4✅-✅EAGLE3 for Kimi K2.6NVFP4✅✅✅EAGLE3 for gpt-oss-120bBF16✅-✅Medusa for Llama 3.1 8BFP8⚠-⚠扩散模型模型量化格式TensorRT-LLMvLLMSGLangWan 2.2 T2V A14BFP8, NVFP4⚠-⚠DiffusionGemma 26B-A4BNVFP4✅✅✅Wan 2.2 标记 ⚠ 的原因其用例与语言模型一样走自回归文本 helper 并对生成文本做断言从未调用扩散或视频服务 API因此不能支撑文生视频部署的结论。NVFP4 的硬件前提NVFP4 推理需要 Blackwell GPU。Hopper 可以产出 NVFP4 检查点但无法服务它。在 B300/GB300sm_103上请使用 CUDA-13 构建的服务框架CUDA-12 构建缺少sm_103的 FP4 kernel。test_deploy.py中mini_sm100即是对此硬件约束的显式声明。未列出的模型怎么办矩阵记录的是 Model-Optimizer验证过的组合并非能跑的穷举清单vLLM、SGLang 和 TensorRT-LLM 都是通用地加载统一 HF 检查点的因此一个由标准nn.Linear层构成、带hf_quant_config.json的模型往往无需任何 Model-Optimizer 改动就能部署。正确路径是先查服务框架自己的模型支持列表再直接尝试加载。表中每个 ✅ 背后的确切检查点含张量并行规模与最小 SM 版本都列在 test_deploy.py多数发布于 NVIDIA 的 Hugging Face 组织。在三大推理框架中部署TensorRT-LLM按 TensorRT-LLM 官方安装说明完成安装支持 FP8 与 NVFP4 量化模型需 v1.2.0 或更高版本。从 Hugging Face Hub 直接运行 Model-Optimizer 量化模型的示例from tensorrt_llm import LLM, SamplingParams def main(): prompts [ Hello, my name is, The president of the United States is, The capital of France is, The future of AI is, ] sampling_params SamplingParams(temperature0.8, top_p0.95) llm LLM(modelnvidia/Llama-3.1-8B-Instruct-FP8) outputs llm.generate(prompts, sampling_params) for output in outputs: prompt output.prompt generated_text output.outputs[0].text print(fPrompt: {prompt!r}, Generated text: {generated_text!r}) if __name__ __main__: main()vLLM按 vLLM 安装说明完成安装。支持 FP8 与 NVFP4 量化模型需 v0.10.1 或更高版本。关键参数FP8 传quantizationmodeloptNVFP4 传quantizationmodelopt_fp4。from vllm import LLM, SamplingParams def main(): model_id nvidia/Llama-3.1-8B-Instruct-FP8 sampling_params SamplingParams(temperature0.8, top_p0.9) prompts [ Hello, my name is, The president of the United States is, The capital of France is, The future of AI is, ] llm LLM(modelmodel_id, quantizationmodelopt) outputs llm.generate(prompts, sampling_params) for output in outputs: prompt output.prompt generated_text output.outputs[0].text print(fPrompt: {prompt!r}, Generated text: {generated_text!r}) if __name__ __main__: main()SGLang按 SGLang 安装说明完成安装。支持 FP8 与 NVFP4 量化模型需 v0.4.10 或更高版本。同样的参数约定FP8 传quantizationmodeloptNVFP4 传quantizationmodelopt_fp4。import sglang as sgl def main(): prompts [ Hello, my name is, The president of the United States is, The capital of France is, The future of AI is, ] sampling_params {temperature: 0.8, top_p: 0.95} llm sgl.Engine(model_pathnvidia/Llama-3.1-8B-Instruct-FP8, quantizationmodelopt) outputs llm.generate(prompts, sampling_params) for prompt, output in zip(prompts, outputs): print() print(fPrompt: {prompt}\nGenerated text: {output[text]}) if __name__ __main__: main()小结与实践建议统一 HF 检查点把量化产物与部署框架解耦Model-Optimizer 负责把量化权重、缩放因子与量化配置打包成与原始 HF 检查点对齐的目录结构TensorRT-LLM / vLLM / SGLang 只需读取hf_quant_config.json即可还原量化语义。实际使用中建议按以下顺序自查格式与硬件匹配NVFP4/NVFP4_AWQ 需要 Blackwell GPUFP8 与 INT4_AWQ 对硬件更宽容。IQ1_S/IQ2_XS 面向 GGML 生态的极低比特场景注意逻辑维度需被 256 整除。框架版本达标TensorRT-LLM ≥ v1.2.0、vLLM ≥ v0.10.1、SGLang ≥ v0.4.10B300/GB300 请用 CUDA-13 构建。对号入座查矩阵先看模型在矩阵中属于 ✅ / ⚠ /-哪一类理解冒烟测试的边界文本路径、无精度验证后再决定是否直接上线。未列模型先行尝试vLLM / SGLang / TensorRT-LLM 是通用加载标准nn.Linear架构 hf_quant_config.json通常可直接工作。如需从零复现完整链路可深入仓库的 hf_ptq 示例含 VLM 量化、recipe 式配置与多 GPU 校准建议、diffusers 量化示例流水线/组件导出以及发布部署套件 test_deploy.py逐条核对模型-格式-框架组合与硬件前提。赞分享【免费下载链接】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点击查看免费下载相关推荐Megatron-LM 模型导出指南从 Megatron Core 到 TensorRT-LLM 与 vLLM/SGLang 部署Megatron LM 模型导出指南从 Megatron Core 到 TensorRT LLM 与 vLLM/SGLang 部署 导读 本指南基于 Mega人工智能大模型预训练分布式训练深度学习强化学习vLLM 接入 NVIDIA Model OptimizerFP8 / NVFP4 / MXFP8 量化模型从 PTQ 导出到推理部署全指南vLLM 接入 NVIDIA Model OptimizerFP8 / NVFP4 / MXFP8 量化模型从 PTQ 导出到推理部署全指南 NVIDIA M人工智能大模型模型推理服务推理引擎本地部署Kimi K2部署实战vLLM、SGLang、TensorRT-LLM完整配置指南Kimi K2部署实战vLLM、SGLang、TensorRT LLM完整配置指南 终极指南快速掌握Kimi K2大语言模型的高性能部署方案 Kimi大模型人工智能创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑