- 人工智能
- 大模型
- 模型优化
- 模型量化
- 模型压缩
【免费下载链接】Model-Optimizer
A 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.
本篇技术指南以 NVIDIA Model Optimizer 官方版本变更日志(CHANGELOG.rst,由 docs/source/reference/0_changelog.rst 通过.. include:: ../../../CHANGELOG.rst引入文档站)为骨架,逐条解读从 0.48.0 回溯至 0.11.0 的关键变更,并结合仓库源码与配方文件佐证其实现原理。读完本文,你将掌握 Model Optimizer 在量化(PTQ/QAT/QAD)、稀疏化、剪枝、投机解码与 Megatron 框架集成上的版本演进脉络,理解 0.48.0 中 IQ1_S/IQ2 权重量化、layerwise 分层校准导出、配方$import委托机制等新能力的用法与迁移要点,并能据此评估升级路径与需要适配的 Breaking Changes。
变更日志文档的结构与定位
docs/source/reference/0_changelog.rst全文只有一行指令——.. include:: ../../../CHANGELOG.rst——它把仓库根目录下的 CHANGELOG.rst 直接嵌入 Sphinx 文档站的 reference 章节。因此,这份变更日志既是发布档案,也是了解 Model Optimizer 技术能力边界的权威入口。日志按"版本号(日期)→ New Features → Backward Breaking Changes → Deprecations → Bug Fixes → Windows Support / Misc"的结构组织,最新版本 0.48.0 位于文件头部,历史版本依次向下排列。
- New Features按功能域细分:Sparsity、Quantization、Megatron Framework (M-LM / M-Bridge)、Speculative Decoding、Misc,方便按技术方向检索;
- Backward Breaking Changes与Deprecations是升级时必须对照的迁移清单,多数条目附带了明确替代 API 或迁移路径;
- 部分条目直接指向仓库内的示例与配方文件,可作为深入学习的入口。
0.48.0:稀疏化校准、IQ1/IQ2 权重量化与配方体系重塑
0.48.0 是当前日志中最新的版本(标注日期 2026-10-xx,即发布中版本),其变更覆盖稀疏化、量化、Megatron 框架与配方加载机制,以下按域逐条解读。
稀疏化:skip-softmax 阈值校准落地 vLLM
- 新增通过 vLLM 面向 FlashAttention 与 FlashInfer 的skip-softmax 阈值校准:导出 prefill 与 decode 的拟合结果作为
sparse_attention_config。skip-softmax 推理保持校准得到的 128-token KV-tile 粒度(以及 128 行的 prefill Q tile),仅对其执行调度进行 autotune,并在单 token decode 时使用更小的 Q tile。 - 纯稀疏化的 vLLM 安装现在会拒绝不受支持的特性组合:DCP、DBO/ubatching、投机解码以及 FULL 混合批次的 CUDA graphs;校准后的 decode 也拒绝 FULL decode graphs。这意味着使用稀疏化服务时,需确认推理配置落在受支持集合内。
该能力与仓库中modelopt/torch/sparsity/attention_sparsity的 skip-softmax 实现(见 examples/llm_sparsity/attention_sparsity/README.md)一脉相承,属于从 Triton 内核校准向 vLLM 服务链路扩展的演进。
量化:IQ1_S / IQ2_XS / IQ2_XXS 极低比特权重量化
0.48.0 新增了三条 GGML 兼容的极低比特 weight-only 量化路径:
- IQ1_S:1.5625 bits/weight,使用 GGML 兼容的 256 值块编码器,内置
iq1_sPTQ 配方;量化权重最后一维必须能被 256 整除;Megatron 导出要求 tensor 与 pipeline 并行度均为 1。 - IQ2_XS:约 2.3125 bits/weight,同样基于 256 值块编码器,统一支持 HF 与 Megatron 导出。
- IQ2_XXS:2.0625 bits/weight,位于
iq1_s与iq2_xs之间,带 CUDA 编码器与general/ptq配方,适用相同的 256 值块约束。
以 modelopt_recipes/general/ptq/iq1_s.yaml 为例,该配方通过$import复用configs/ptq/presets/model/iq1_s预设,并对所有符合条件的 Linear 层应用均匀的 GGML 兼容 IQ1_S 量化——注意日志明确说明这是非混合per-tensor 精度预设,且无需校准数据(weight-only 无激活校准前向)。iq2_xs.yaml、iq2_xxs.yaml结构相同,区别仅在于引用的预设与比特数。
配方体系:顶层$import委托与# modelopt-schema:注释
0.48.0 允许一个配方用顶层$import把整个配方体委托给另一个配方;与之并列给出的任意顶层键会覆盖被导入配方(整体替换而非合并)。同时metadata.recipe_type变为可选项:配方的类型由# modelopt-schema:注释声明,或由metadata.recipe_type声明,或通过委托给带声明的配方间接获得——只有被其他文件导入的配方必须携带 schema 注释。无论哪种方式,声明必须与实际一致:schema 注释与recipe_type冲突、或委托双方类型冲突都会直接报错而非静默取一。
这一机制在源码 modelopt/recipe/loader.py 中有完整实现依据:_peek_recipe_type按 "schema 注释 →metadata.recipe_type→ 顶层$import委托目标" 的顺序解析配方类型(见loader.py第 215-244 行的 docstring),load_recipe支持单文件与目录两种形式,并支持key.path=value形式的 CLI 覆盖(_apply_dotlist通过 OmegaConf 合并)。实际效果是:modelopt_recipes/models/下的 checkpoint 条目不再复制配方正文,而是整体别名(alias)到能够复现该 checkpoint 的便携配方。例如moonshotai/Kimi-K2.6(以nvidia/Kimi-K2.6-NVFP4发布)直接委托通用专家专用 NVFP4 配方,Qwen/Qwen3.5-397B-A17B(发布为nvidia/Qwen3.5-397B-A17B-NVFP4-V2)则委托qwen3_5_moe架构配方,从而让"已发布 checkpoint 的量化方案可以从其 model-hub 路径直接溯源"。
分层校准:layerwise.export_dir边校准边导出
- 新增
layerwise.export_dir:分层校准在每完成一个 decoder 层时,立即把该层写入独立的量化 checkpoint 分片,不再需要单独的export_hf_checkpoint()阶段;配合layerwise.checkpoint_dir,被中断的运行可跳过已完成层直接续跑。 - 校准负责写层分片;留在模型上的导出器的
finalize()补齐尾部(tail)分片、索引与 config 产物——在 finalize 执行前 checkpoint 不可加载。examples/hf_ptq已内置该流程。 - 支持单进程模型上的 FP8 与 NVFP4(常驻或 offload 均可),包括多模态模型与带 MTP 层的模型;其他格式与放置方式在校准开始前即抛出
NotImplementedError。 - 同时新增对 transformer 层之外已启用算子的量化校准支持(如
lm_head)。
对应的层间激活语义在 0.48.0 的 Breaking Changes 中进一步明确:分层校准默认使用前一层 QDQ 激活(layerwise.get_qdq_activations_from_prev_layer=True),设False可恢复后续层使用全精度激活(即非分层 max 校准的默认行为)。可对照仓库配方 modelopt_recipes/general/ptq/nvfp4_experts_only-kv_fp8_layerwise.yaml 查看完整形态:algorithm.method: max、layerwise.enable: true、get_qdq_activations_from_prev_layer: false,并通过configs/ptq/units/base_disable_all、default_disabled_quantizers、configs/numerics/nvfp4、configs/ptq/units/kv_fp8组合出"仅专家层 W4A4 + FP8 KV cache"的量化配置。
ONNX 示例与配方新增
- 新增端到端BEVFormer ONNX PTQ 示例:时间维校准数据生成、INT8 与 FP8 量化、TensorRT 引擎构建、nuScenes 精度评估,见 examples/onnx_ptq/bevformer/README.md(配套
prepare_calibration.py与quantize.py)。 - 新增可复用的local-Hessian NVFP4 PTQ 配方,以及
nvidia/Qwen3.8-27B-NVFP4所用量化配方。local-Hessian 是比 max/mse 更精细的权重 scale 搜索算法(0.47 起还为其提供了约 34x 的 Triton 融合快路径)。
Megatron 框架(M-LM / M-Bridge)
- 新增 Qwen3.6-35B-A3B 的 W4A4 NVFP4 PTQ 与 QAD 端到端教程,覆盖评估与 vLLM 吞吐基准,见 examples/megatron_bridge/tutorials/Qwen3.6-35B-A3B/README.md。
examples/megatron_bridge/quantize.py新增--mlflow <tracking-uri>:一次 PTQ 运行会记录调用命令、每个参数(可搜索)、解析后的配方、主 rank 日志与量化器摘要,并向--export_megatron_path写入.experiment.json;实验名默认$USER/megatron_bridge_quantize/<模型basename>-<配方名或 --quant_cfg>,可用--mlflow_experiment/--mlflow_run_name覆盖。examples/hf_ptq/hf_ptq.py的受跟踪运行同样会向--export_path写入.experiment.json,使磁盘上的 checkpoint 可反查产生它的实验与 MLflow run id。
0.48.0 向后不兼容变更(升级必读)
examples/hf_ptq不再按名称探测 MTP 层:改为基于 Transformers 自身的output_loading_info=True上报的unexpected_keys识别装载器无法放置的权重(MTP head、辅助 tower),并原样带入导出。随之移除了load_mtp_weights、mtp_layer_prefixes_from_checkpoint、_add_mtp_exclusions以及预量化时追加的enable: False条目。后果有二:MTP 层现在像普通模块一样跟随配方(与examples/megatron_bridge对齐);quantization_config.ignore不再能声称某层未量化而导出时实际量化了。仍导入configs/ptq/units/default_disabled_quantizers的配方继续禁用mtp.*,行为不变。--vllm_fakequant_export在遇到"模型无参数但分片实际提供了权重"(MTP head、辅助 tower)时抛出NotImplementedError:fake-quant 导出器只写模型支撑的状态,静默丢弃会污染评估分数。建议改用统一 HF 导出;*.inv_freq这类 Transformers 会重算的 buffer 即使分片提供也跳过(老 Llama/Mistral 系转换常列出它)。该检查在模型加载后立即执行,使不兼容运行在校准前失败而非之后。modelopt.onnx.quantization.graph_utils模块移除且无兼容垫片,迁移映射如下:- 图索引/匹配 → modelopt/onnx/quantization/graph_indexing.py:
expand_node_names_from_patterns、find_mha_partitions、get_fusible_backbone、get_tensor_consumer_node_indices、get_tensor_consumer_nodes、get_tensor_from_name、get_tensor_producer_nodes、has_const_input、has_path_type、is_const_input、match_fp8_mha_pattern; - 节点选择 → modelopt/onnx/quantization/graph_selection.py:
find_nodes_from_convs_to_exclude、find_nodes_from_matmul_to_exclude、find_nodes_from_mha_to_exclude、find_nodes_to_exclude、get_extended_model_outputs、get_input_shapes、validate_op_types_spelling; - 图重写 → modelopt/onnx/quantization/graph_rewrites.py:
cast_custom_ops、convert_fp16_io、insert_fp8_mha_casts、insert_matmul_casts、remove_output_initializers、remove_redundant_cast_nodes; - QDQ 图 → modelopt/onnx/quantization/qdq_graph.py:
build_non_residual_input_map、classify_partially_quantized_weighted_ops、classify_partition_nodes、filter_quantizable_kgen_heads、find_conv_to_layernorm_nodes、get_concat_eliminated_tensors、get_layer_info、get_layer_precision_mapping、get_resize_scales、print_stat、remove_partial_input_qdq、should_quantize_to_8bit、validate_8bit_layers。
- 图索引/匹配 → modelopt/onnx/quantization/graph_indexing.py:
- 统一 HF 导出遇到未知专家投影命名的 MoE 块时抛出
NotImplementedError(不再假定 Mixtral 的w1/w2/w3):遇到时应在modelopt/torch/models/下为模型注册ModelSpec;此前能正确导出的 MoE 架构均已注册,无受支持模型回退。 --recipe(及load_recipe)改为"文件系统优先"解析:当前工作目录下同名相对路径优先于随附内置配方,与配方$import路径的解析规则对齐——此前内置配方优先。get_te_hybrid_stack_spec从modelopt.torch.nas.plugins.megatron移除(测试外无使用),改用modelopt.torch.utils.plugins.megatron_layer_specs.te_hybrid_stack_spec_sequential_mlp(SequentialMLP 布局)或megatron.core.models.hybrid.hybrid_layer_specs.hybrid_stack_spec(grouped GEMM)。
0.48.0 弃用项
- 架构专用配方层级从
modelopt_recipes/huggingface/更名为modelopt_recipes/model_type/(表明其按 HFmodel_type跨 checkpoint 共享);旧huggingface/<model_type>/...路径仍可解析但发出FutureWarning。注意仓库内该层级现已同时存在(如modelopt_recipes/model_type/qwen3_5/),并以别名保持兼容。 - 单格式量化 CLI flags 弃用,统一收敛到
--recipe:examples/hf_ptq的--qformat/--kv_cache_qformat、examples/megatron_bridge/quantize.py的--quant_cfg/--kv_cache_quant/--weight_only、examples/torch_onnx/torch_quant_to_onnx.py的--qformat。理由是一个配方把量化配置、校准算法与 KV-cache 设置收进同一文件,避免各 flag 各自漂移;迁移时注意配方若省略kv_cache,weight AutoQuantize 配方仍会回退到--kv_cache_qformat,请在配方中显式设置kv_cache。examples/speculative_decoding/scripts/quantize_drafter.py的--qformat暂不弃用(尚无--recipe替代)。 - TensorRT-LLM checkpoint 导出格式弃用(0.49.0 移除):
export_tensorrt_llm_checkpoint与torch_to_tensorrt_llm_checkpoint现在发出DeprecationWarning,改用export_hf_checkpoint(导出的统一 HF checkpoint 可部署到 TensorRT-LLM、vLLM、SGLang);实现已迁至modelopt.torch.export.trtllm,ModelConfig数据类从modelopt.torch.export.trtllm.model_config导入。 metadata.recipe_type弃用(单文件与目录配方的metadata.yml均适用):新配方应使用# modelopt-schema:注释声明 schema 类,或委托给带声明的配方;仓库内所有配方已转换,recipe_type仍被读取与尊重,因此仓库外配方不受影响,但两处同时存在时不一致即报错。evaluationagent skill 不再支持 GDPVal(属于 AA-suite,AA 请求现在只生成aa/任务,按任务分别报告分数而非与公开 AA Index 对比)。
0.47.0:AutoQuantize 纵深、DFlash 投机解码与 per-expert MoE 量化
0.47.0(2026-09-23)是上一个完整发布版,其变更同样值得逐项关注。
量化与 AutoQuantize
- ONNX Autotune 以请求的运行时精度做 placement 基准:仅当校准后的 INT8/FP8 Q/DQ 达到配置的 TensorRT 加速阈值(默认 1.02x)时才保留,否则保存不带 Q/DQ 的高精度模型。
- 新增
method="aumann_shapley"到mtq.auto_quantize,提供无标签的路径积分灵敏度打分与预测校准损伤;可传方法字典(如可选的损伤上界)。其入口在 modelopt/torch/quantization/model_quant.py。 - 新增
mtq.temporarily_fold_weights(重复冻结权重推理)与mtq.preserve_quantizer_attributes_context(恢复临时量化器属性/类型改动)。 - 新增
nvfp4_act_headroom校准算法:针对 NVFP4 激活全局 scale,不用最大 per-block amax(max会让更大的激活饱和),而是把 scale 锚定到 per-block amax 分布的低分位,用剩余 FP8 block-scale 区间做 headroom:amax = max(rho * anchor, upper),anchor_percentile默认 1、upper_percentile默认 99.99(设 100 则永不过裁剪校准数据)、rho默认 16384。仅作用于 NVFP4 动态块输入量化器(SequentialQuantizer激活量化器会报错);权重 scale 由嵌套的weight_scale_algorithm(默认max,可选mse/local_hessian)独立选择。成品配方 modelopt_recipes/general/ptq/nvfp4_act_headroom-kv_fp8_cast.yaml 镜像nvfp4_default-kv_fp8_cast,仅替换校准算法,导出标准 NVFP4 checkpoint。 - 新增层级 KV-cache AutoQuantize(
mtq.auto_quantize(..., cost_model="kv_cache")):对调用方给定的 K/V 格式测量隔离的全词表前向 KL,在可量化层集合上求解"按宽度加权、存储受限"的加性配方,保留搜索禁用层的现有格式,把选中的逐 attention 映射导出到统一 HF checkpoint,并把灵敏度元数据放入搜索状态,同时支持可续搜的搜索 checkpoint。配套 5.4 bits/scalar 的 cast 模式 FP8/NVFP4 配方 modelopt_recipes/general/auto_quantize/kv_fp8_nvfp4_cast_kl_div_at_5p4bits.yaml。同目录下还有nvfp4_fp8_at_5p4bits.yaml、nvfp4_mse_fp8_at_6p0bits.yaml、w4a16_nvfp4_fp8_at_6p0bits-active_moe.yaml、w4a8_awq_beta_fp8_at_6p0bits.yaml等搜索配方,覆盖不同有效比特目标与成本模型。 - 新增 Alpamayo QAD 示例(
examples/alpamayo/qad.py):在examples/alpamayo/quantize.py产出的量化 Alpamayo checkpoint 上,用QADTrainer对原始 FP16 VLM 做量化感知蒸馏,支持 FSDP2 多卡与--export重组完整 AlpamayoR1 checkpoint。 - 新增 Kimi-K3 免校准流式转换器与 checkpoint 镜像配方(
input_scale=1.0的 NVFP4 路由专家 + 128x128 块 FP8 KDA/MLA 注意力权重),逐分片处理源 checkpoint 的打包 MXFP4 专家,无需把 2.8T 模型载入内存。 - 新增 Step-3.7(
stepfun-ai/Step-3.7-Flash)PTQ:用新的model_type/step3p7/ptq/nvfp4_experts_only-kv_fp8_cast或nvfp4_mlp_only-kv_fp8配方(通用配方按 Step 不使用的模块名选专家)。 - 新增 FP8 Vision Encoder 配方(
qwen3_vl、qwen3_5model type):vision-only 配方保持语言模型与 KV cache 高精度;联合配方同时量化 Vision Encoder 与语言模型 Linear 并用 FP8 KV-cache cast。导出的 checkpoint 需要支持量化 Vision Encoder Linear 的推理运行时。
投机解码
- 新增LiLiCorr训练(候选格重排序器,架在 DFlash draft 骨干之上),通过
dflash_architecture_config.projector_type=lilicorr选择,配方 modelopt_recipes/general/speculative_decoding/lilicorr.yaml,仅训练与导出(serving 在配套 SGLang PR 中)。 - 新增
dflash_fp32_master_weights(0.47 默认False,0.48 起默认True):draft 参数与 Adam 动量保持 fp32、matmul 跑 bf16 的经典混合精度,需要 bf16 autocast(HFTrainer在TrainingArguments.bf16下提供)。0.48 将其从模型移入优化器(MasterWeightAdamW持有 fp32 主副本与 fp32 Adam 动量,fp32 应用更新后按参数 dtype 写回),使 draft 恒与冻结基座 dtype 一致,DDP 梯度 all-reduce 不再翻倍,导出 drafter 不变;关掉可省内存。 - 修复
training.gradient_checkpointing未到达 DFlash draft 的问题(此前仅作用于冻结目标模型)。 - 新增 LiLiCorr 的可选分组子层卷积(复用 DFlash2 的
DFlashGroupedConv),由dflash_architecture_config的conv_kernel_size/conv_group_size启用。
Megatron 框架
- 新增
clamp_kv_cache_scales参数到export_mcore_gpt_to_hf:导出 QAT Megatron-Core 模型时设False以保留学到的 FP8 KV-cache scale(默认保留 1.0 的最小值 clamp)。 examples/megatron_bridge/distill.py新增 SFT 掩码数据支持(--sft --sft_dataset_root <dir>,基于{"input","output"}JSONL、损失只掩到回复 token)。- Transformer Engine
TEGroupedLinear(融合 MoE 专家)改为 per-expert 权重量化:每个专家拥有独立weight_quantizer(GroupedQuantizer内含每专家一个TensorQuantizer)与独立amax,取代全体共享一个amax。这是 0.47 的重要 Breaking Change——含量化TEGroupedLinear的旧 checkpoint不兼容,需重跑 PTQ。 - 新增
MODELOPT_TEGROUPED_COMPILE_WEIGHT_LOOP=1以 opt-in 方式为 per-expert 权重量化器启用torch.compile(默认 eager,保留原生 checkpoint amax 形状)。 - Qwen3-VL / Qwen3.5-VL 的 HF 统一导出(PTQ 或 QAD)支持,仅量化语言模型、视觉塔复制自源 checkpoint。
- Megatron-Bridge 脚本自动选择 MoE 专家布局:更快的融合
TEGroupedMLP(grouped GEMM),除非架构无法导出到 HF 才用SequentialMLP,--no_moe_grouped_gemm可强制。
其他关键变更
- 新增
modelopt.torch.utils.mlflow.MlflowRunLogger,以及examples/hf_ptq/hf_ptq.py、examples/vllm_serve/vllm_serve_fakequant.py的--mlflow跟踪(记录调用、解析后的配方/合并的 QUANT_CFG、运行日志与量化摘要,命令行参数全部可搜索;失败运行记录 traceback)。mlflow是可选依赖,仅在启用跟踪时导入。 mtq.quantize现在会在"配置要求权重量化但无任何权重量化器模式匹配模型"时报错,而非校准并导出静默未量化的 checkpoint("quant_algo": null);可用MODELOPT_SKIP_WEIGHT_QUANT_CHECK=1全局关闭(如流水线并行 rank 本地阶段确实没有目标模块)。- 移除
examples/llm_eval/lm_eval_tensorrt_llm.py,改用 lm-evaluation-harness 自带的 TensorRT-LLM 后端(注册名trtllm);lm_eval_trtllm.py修正了后端_parse_logprobs的 off-by-one;loglikelihood 任务要求 TensorRT-LLM >= 1.3.0rc11;--input(默认 4096)与LM_EVAL_TP控制引擎上下文与 TP。 - 大量 Bug Fix:ONNX AutoCast 外部初始化器 >2GiB、NVFP4 ONNX 导出(block scale < 2**-9 clamp、非有限/负 scale 报错)、Megatron-Core 量化 KV-cache scale 丢失、VLM 多卡校准卡死(子集预算截断除法导致的 30 分钟 NCCL/gloo 超时)、EAGLE-3 context parallelism 启动失败等。其中"Megatron-Core HF 导出验证自身输出"与"加载含量化张量但无 ModelOpt state 的 Megatron checkpoint 直接报错"两条体现了 0.47 对 checkpoint 一致性的强化。
配方目录结构变迁:从 huggingface/ 到 model_type/ 与 models/
结合 0.45~0.48 的多条日志,可以清晰看到配方体系的三级结构(均可从仓库 modelopt_recipes/ 直接查看):
configs/:可复用片段库(configs/numerics/数字格式、configs/ptq/units/量化配置积木、configs/ptq/presets/model/与kv/预设),是所有内置配方$import的共享地基;general/:模型无关的通用配方(ptq/、auto_quantize/、qad/、distillation/、speculative_decoding/等),例如general/ptq/nvfp4_default-kv_fp8_cast.yaml;model_type/<model_type>/(原huggingface/,0.48 更名):按 HFmodel_type跨 checkpoint 共享的架构配方,如model_type/qwen3_5/、model_type/step3p7/;models/<org>/<model_id>/(0.47 从huggingface/models/顶层化):checkpoint 级镜像配方,通常用$import委托别名指向能复现该 checkpoint 的通用/架构配方,如models/moonshotai/、models/nvidia/、models/stepfun-ai/。
0.45 引入的$import组合系统({$import: name}可复用片段)与 0.48 的顶层委托(整配方别名)共同构成这一体系的底层机制,--recipe解析则遵循"文件系统优先"规则(0.48)。
从历史版本看技术演进主线
回溯日志可以勾勒出 Model Optimizer 的技术演进主线,各里程碑均为官方文档记录的项目事实:
- 0.11.0(2024-05-07):包从
ammo更名modelopt;pip install nvidia-modelopt改为最小核心依赖 +[deploy]/[onnx]/[torch]/[hf]可选依赖;支持 SAT + QAT 链式优化、分布式数据/张量并行校准。 - 0.17.0(2024-09-11):推出
modelopt.torch.prune、modelopt.torch.distill、modelopt.torch.speculative(Medusa)与统一 HF 导出export_hf_checkpoint(fp8/int4_awq 打包权重),统一导出成为后续主线。 - 0.23.0(2025-01-29):首次完整 OSS 发布(Apache 2.0);NVFP4 Blackwell 量化支持;OCP MX 格式(FP8/FP6/FP4/INT8)fake-quant;TensorRT-LLM MoE FP8 与 w4a8_awq。
- 0.31.0(2025-06-05):AutoCast FP16/BF16 工具、AWQ/SVDQuant/SmoothQuant 对 CPU-offload HF 模型支持、
--low_memory_mode、Megatron-Core 分布式 checkpoint 中modelopt_state存储重构。 - 0.39.0(2025-11-13):vLLM fakequant 快速评估、QLoRA 导出、SGLang 原生 FP8/NVFP4 支持、FSDP2 多节点 PTQ(
multinode_ptq.py)。 - 0.44.0(2026-05-13):Puzzletron 异构剪枝算法、可续跑的分层校准(layerwise)、
quant_cfg改为有序列表(QuantizerCfgEntry)、隐式 GEMM Conv3D NVFP4 内核、torch.loadweights_only=True安全默认。 - 0.45.0(2026-07-06):配方体系成型(
$import组合、CLI 预设动态发现、模型专属配方目录);W4A16 NVFP4 weight-only;AutoQuantize active-MoE 成本模型;LayerwiseConfig嵌套配置;Megatron-Bridge PTQ/导出/QAD 全套示例;Minitron pruning 支持 Megatron-Core MoE 变体。 - 0.46.0(2026-08-18):AutoQuantize recipe落地(
RecipeType.AUTO_QUANTIZE/AutoQuantizeConfig,配方化驱动搜索);NVFP4 Four-Over-Six(4/6)权重量化;dLLM 绑定权重导出去重与sync_tied_input_amax;D-PACE 默认损失;Domino 投机解码训练;Megatron VLM 剪枝/PTQ/QAD;effective_bits成本模型;examples/llm_ptq更名examples/hf_ptq并合并 VLM。 - 0.47.0 / 0.48.0:如上两节详述——AutoQuantize 的层级 KV-cache 搜索、per-expert MoE 量化、DFlash/LiLiCorr、IQ1/IQ2 极低比特、配方顶层
$import委托,以及围绕--recipe的 CLI 统一与 TensorRT-LLM 导出格式弃用。
贯穿始终的三条主线是:量化格式持续下探比特数(FP8 → NVFP4 → IQ1/IQ2,配合 AutoQuantize 的逐层最优搜索)、导出统一到 HF checkpoint(可同时部署 TensorRT-LLM/vLLM/SGLang)、配置收敛到 YAML 配方(--recipe取代散落的单格式 flags,$import组合与委托控制配方复杂度)。
升级建议与适配要点
结合 0.48.0 的 Breaking Changes 与 Deprecations,升级到此版本(或规划 0.49.0)时建议按以下清单核对:
- 迁移 ONNX 图工具导入:按上文迁移表把
graph_utils的导入改为graph_indexing/graph_selection/graph_rewrites/qdq_graph四个模块。 - 切换配方路径:
huggingface/<model_type>/...→model_type/<model_type>/...;huggingface/models/...→models/...(按 canonical HF id,NVIDIA 配方加NVIDIA-前缀);checkpoint 镜像配方按models/<org>/<model_id>/重新定位。 - 以
--recipe取代单格式 flags:--qformat/--quant_cfg/--kv_cache_quant等已弃用,迁移时在配方中显式设置kv_cache(避免 weight AutoQuantize 配方回退到旧 flag)。 - 处理 MTP / 附加权重:
hf_ptq不再按名探测 MTP 层,MTP 跟随配方量化;--vllm_fakequant_export遇到模型无参数但分片提供的权重会直接报错,改用统一 HF 导出。 - TEGroupedLinear per-expert amax(0.47 起):含旧共享 amax 的量化 checkpoint 不兼容,需重跑 PTQ;NVFP4 专家量化时确认权重最后一维可被 256 整除(IQ 系列)与块大小整除约束。
- TensorRT-LLM checkpoint 导出:改走
export_hf_checkpoint统一导出,ModelConfig从modelopt.torch.export.trtllm.model_config导入。 - recipe_type 弃用:仓库外自定义配方仍可用
metadata.recipe_type,但新配方建议改用# modelopt-schema:注释声明类型。
所有断言均可对照仓库根目录 CHANGELOG.rst、配方库 modelopt_recipes/ 与实现源码(如 modelopt/recipe/loader.py、modelopt/onnx/quantization/graph_indexing.py)逐一验证。
- 人工智能
- 大模型
- 模型优化
- 模型量化
- 模型压缩
【免费下载链接】Model-Optimizer
A 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.
相关推荐
gqlgen 变更日志深度解读:从 v0.17.50 回溯 v0.4.x 的版本演进路线图
gqlgen 变更日志深度解读:从 v0.17.50 回溯 v0.4.x 的版本演进路线图 本文以仓库根目录 CHANGELOG.md https://link
后端GraphQL代码生成PRQL 变更日志深度解读:从 changelog 看 PRQL 编译器的版本演进与技术路线
PRQL 变更日志深度解读:从 changelog 看 PRQL 编译器的版本演进与技术路线 PRQL 项目的官方变更日志通过 mdBook 的 {{ incl
后端react-boilerplate 演进全解析:从 v3 到 v4 的技术路线图与核心变更深度解读
react boilerplate 演进全解析:从 v3 到 v4 的技术路线图与核心变更深度解读 本文基于仓库内 Changelog.md https://l
前端示例工程开发工具
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考