拓冰建站拓冰建站
首页 / 资讯中心 / 正文

vLLM-Omni W4A4 MXFP4 量化实战:mxfp4 与 mxfp4_dualscale 的在线/离线配置、离线检查点制作与模型适配指南

vLLM-Omni W4A4 MXFP4 量化实战mxfp4 与 mxfp4_dualscale 的在线/离线配置、离线检查点制作与模型适配指南【免费下载链接】vllm-omniA framework for efficient model inference with omni-modality models项目地址: https://gitcode.com/GitHub_Trending/vl/vllm-omni本篇技术指南以 vLLM-Omni 的 W4A4 MXFP4Microscaling FP4量化为主题系统讲解mxfp4单尺度、仅在线与mxfp4_dualscale双尺度、在线 离线两种量化方法的原理、硬件与模型支持范围、三类配置方式在线单尺度 / 在线双尺度 / 离线双尺度、完整离线检查点制作流程msModelSlim 量化 → merge 脚本预处理 → 无--quantization标志自动加载以及将 MXFP4 适配到新模型的三个关键集成点。读完本文你将能够在 Ascend NPU / AMD ROCm gfx950 上为 Wan2.2 系列扩散模型配置 W4A4 量化并掌握 BF16 回退路由ignored_layersnum_bf16_fallback_layers的精确语义。概述什么是 W4A4 MXFP4W4A4 MXFP4 将权重Weight与激活Activation同时量化到 FP4float4_e2m1fn_x2每字节打包 2 个值并采用 OCPOpen Compute ProjectMX 格式每 32 个 K 维元素共享一个float8_e8m0fnu指数缩放因子scale。相比 W8A8256 个量化电平W4A4 只有 16 个量化电平量化噪声更高因此需要更精细的尺度设计来维持精度。vLLM-Omni 提供两种量化方法区别在于尺度结构与可用模式方法尺度结构模式适用场景mxfp4单尺度仅 per-32 细尺度仅在线快速精度基线无需检查点预处理mxfp4_dualscale双尺度per-32 细尺度 per-512 粗尺度 per-channelmul_scale在线 离线生产环境精度更好推荐离线推荐mxfp4_dualscale离线模式生产部署建议使用mxfp4_dualscale离线模式配合 msModelSlim 产出的预量化检查点。离线检查点从磁盘加载经过标定的mul_scale张量精度明显优于任何在线方法一次性的预处理成本可在后续所有推理中摊销。警告在线单尺度 ≠ 离线双尺度mxfp4_dualscale离线模式使用NPUMxfp4DualScaleLinearMethod细尺度per-32 K、粗尺度per-512 K、以及来自标定的 per-input-channelmul_scale——全部从检查点加载mxfp4_dualscale在线模式使用NPUMxfp4DualScaleOnlineLinearMethod两级尺度在加载时从 BF16 权重即时计算没有标定mul_scale用在线方法加载离线检查点或反之会产生错误结果或形状错误。从源码实现看这两种方法对应 vllm_omni/quantization/mxfp4_config.py 中的四个 NPU 线性方法类类层次如下该文件顶部注释给出了完整架构MXFPLinearMethodBase平台无关骨架来自 mxfp8_config ├── NPUMxfp4LinearMethod – NPU 单尺度离线W4A4 MXFP4 │ └── NPUMxfp4OnlineLinearMethod – NPU 单尺度在线BF16 → FP4 ├── ROCmMxfp4LinearMethod – ROCm 基类AITER 量化 shuffle仅在线 │ └── ROCmMxfp4OnlineLinearMethod – ROCm 在线BF16 → FP4经 AITER └── NPUMxfp4DualScaleLinearMethod – NPU 双尺度离线W4A4 MXFP4 DualScale └── NPUMxfp4DualScaleOnlineLinearMethod – NPU 双尺度在线BF16 → FP4对应的量化配置类为DiffusionMXFP4Configquant_methodmxfp4与DiffusionMXFP4DualScaleMixedConfigquant_methodmxfp4_dualscale支持 per-layer BF16 回退。与 MXFP8 的关键差异源码级mxfp4_config.py 的模块注释明确列出了与 MXFP8 的三点差异精度float4_e2m1fn_x2FP4 打包每元素 2 个值npu_dynamic_mx_quant(x)不指定dst_type时默认输出float4_e2m1fn_x2权重布局存储为(N, K)不预先转置——FP4 是打包格式转置打包张量无法保证安全连续性转置在_quant_matmul中通过layer.weight.transpose(0, 1)内联完成GEMM 签名npu_quant_matmul要求显式指定x1_dtypefloat4_e2m1fn_x2与x2_dtypefloat4_e2m1fn_x2FP4 dtype 无法从张量 dtype 推断。尺度布局为(N, S/2, 2)——与 MXFP8 相同的 reshape同样不预先转置在_quant_matmul中内联转置见 NPUMxfp4LinearMethod._quant_matmul。硬件与模型支持硬件支持矩阵设备支持情况NVIDIA Blackwell GPUSM 100⭕NVIDIA Ada/Hopper GPUSM 89⭕NVIDIA Ampere GPUSM 80⭕AMD ROCmgfx950 / MI355X✅Intel XPU⭕Ascend NPUAtlas 950 A5✅图例✅支持❌不支持⭕本指南未验证。从 DiffusionMXFP4Config.get_quant_method 的实现可以看出平台路由逻辑NPU 平台按is_checkpoint_mxfp4_serialized标志分派离线/在线单尺度方法ROCm 平台要求gcnArchName包含gfx950即 MI355X否则抛出NotImplementedError且ROCm 目前不支持预量化离线检查点离线路径直接 raise其他平台则统一提示仅支持 NPUAscend与 ROCmAMD gfx950。双尺度配置DiffusionMXFP4DualScaleMixedConfig目前仅支持 NPU 平台。扩散模型Wan2.2支持矩阵模型在线离线说明Wan2.2-T2V-A14Bmxfp4/mxfp4_dualscalemxfp4_dualscaleMoE 级联transformertransformer_2两个 transformer 使用相同配置量化Wan2.2-I2V-A14Bmxfp4/mxfp4_dualscalemxfp4_dualscaleMoE 级联方案与 T2V-A14B 相同Wan2.2-TI2V-5B❌❌参数量过小W4A4 导致不可接受的精度损失在线模式下mxfp4与mxfp4_dualscale的选择是量化质量问题而非模型兼容性问题——两者对级联A14B模型与单 transformer 模型同样适用与mxfp8在线模式一致mxfp4单尺度开销更低、计算更简单仅在线mxfp4_dualscale双尺度 可选 BF16 回退精度更好在线与离线均可用。离线检查点由 merge 脚本产出对 A14B 而言始终是mxfp4_dualscale格式不存在离线的mxfp4单尺度格式。注意离线级联模型中的 per-layer BF16 回退A14B 离线检查点使用quant_method: mxfp4_dualscale。绝大多数线性层以 W4A4 MXFP4 DualScale 存储对精度敏感层保留原始 BF16 权重并记录在各 transformer 的config.json的ignored_layers中。两个 transformer 的ignored_layers集合可能不同——pipeline 会读取每个 transformer 自己的config.json在两者不一致时本地重建配置保证逐层路由始终按 transformer 精确生效。警告TI2V-5B 不支持Wan2.2-TI2V-5B 被排除在 W4A4 量化之外。其较小参数量使其对 4-bit 量化噪声显著更敏感会造成不可接受的精度损失。TI2V-5B 请使用 MXFP8。配置三种模式mxfp4— 单尺度在线模式在线模式无需任何预处理。vLLM-Omni 在加载时使用npu_dynamic_mx_quant将 BF16 权重量化为 MXFP4。仅计算一个块尺度float8_e8m0fnu每 32 个 K 元素一个没有标定mul_scale。对单 transformer 与级联A14B模型同等适用——级联中两个 transformer 自动接收相同的量化配置。from vllm_omni import Omni from vllm_omni.inputs.data import OmniDiffusionSamplingParams omni Omni(modelyour-model, quantizationmxfp4) outputs omni.generate( A cat sitting on a windowsill, OmniDiffusionSamplingParams(num_inference_steps50), )# 单 transformer 或级联模型——同一命令 python text_to_video.py --model your-model --quantization mxfp4 # 在线服务 vllm serve your-model --omni --quantization mxfp4从源码看在线单尺度路径NPUMxfp4OnlineLinearMethod.process_weights_after_loading在权重加载阶段调用npu_dynamic_mx_quant(layer.weight)一次性完成BF16/FP16 (N,K) → FP4的转换尺度张量随后 reshape 为(N, S/2, 2)布局前向时由继承自NPUMxfp4LinearMethod的_quantize_activation对激活做同样的动态量化。在线路径使用_LazyWeightMixin在 meta device 上登记占位权重、加载时物化与离线路径共享apply()逻辑。mxfp4_dualscale— DualScale 在线模式在线 DualScale 模式使用npu_dynamic_dual_level_mx_quant从 BF16 权重即时计算**细尺度fine与粗尺度coarse**两级尺度。同样适用于单 transformer 与级联A14B模型。相比mxfp4在线模式DualScale 以更高计算开销换取更好量化精度。默认配置将前 5 个 transformer 块保留在 BF16num_bf16_fallback_layers5。在 Wan2.2-A14B 上的精度评估表明该设置足以满足质量要求是推荐配置。omni Omni(modelyour-model, quantizationmxfp4_dualscale)python text_to_video.py --model your-model --quantization mxfp4_dualscale若精度调试发现额外敏感层可通过 Python API 将其固定为 BF16omni Omni( modelyour-model, quantization_config{ method: mxfp4_dualscale, ignored_layers: [blocks.10.attn1.to_q], # 显式逐层覆盖 }, )在线模式的 BF16 回退路由按优先级顺序应用两条规则ignored_layers显式逐层覆盖前缀匹配的任意层无论块索引如何均保留 BF16num_bf16_fallback_layers粗略前导块规则前 N 个 transformer 块blocks.0…blocks.N-1回退到 BF16。默认为5推荐。blocks.N.*之外的层如condition_embedder始终量化。这条路由逻辑在 DiffusionMXFP4DualScaleMixedConfig.get_quant_method 中有精确实现在线分支先检查is_layer_skipped命中ignored_layers返回UnquantizedLinearMethod随后用_parse_block_idx解析blocks.(\d).前缀、与num_bf16_fallback_layers比较决定是否回退。块索引解析正则^blocks\.(\d)\.与_parse_block_idx定义在 mxfp4_config.py。对应行为在 tests/diffusion/quantization/test_mxfp4_config.py 中有系统覆盖例如test_mixed_dualscale_online_ignored_layers_override验证了块 10 ≥ 回退阈值但命中ignored_layers仍回退 BF16 的场景test_mixed_dualscale_online_non_block_prefix_returns_mxfp4验证了condition_embedder.*始终量化。mxfp4_dualscale— DualScale 离线模式推荐离线模式加载 msModelSlim 产出的预量化 DualScale 检查点。预处理步骤将原始量化输出转换为 vLLM-Omni 期望的 diffusers 格式并向每个transformer/config.json注入量化配置使 vLLM-Omni无需--quantization标志即可自动探测离线路径。BF16 回退层可交错分布在 transformer 任意位置不限于前导块。merge 脚本从quant_model_description.json探测它们并将其前缀写入config.json的ignored_layers。运行时每层前缀与ignored_layers匹配以决定 BF16 或 MXFP4 DualScale。检查点张量布局每个量化线性层存储四个张量张量形状dtype描述weight(N, K)float8_e4m3fnFP4 打包每字节 2 个值weight_scale(N, K//32)uint8细块尺度float8_e8m0fnu位模式weight_dual_scale(N, K//512, 1)float32粗块尺度mul_scale(K,)float32Per-input-channel 平滑预尺度来自标定BF16 回退层没有量化张量仅包含原始weight及可选的bias直接从基础检查点加载。这些布局在 NPUMxfp4DualScaleLinearMethod.create_weights 中逐一张量登记并在 process_weights_after_loading 中做加载后处理FP4 权重经npu_dtype_cast转float4_e2m1fn_x2后通过npu_format_cast转为 NZ 硬件格式format ID 29npu_dual_level_quant_matmul要求细尺度 reshape 为(N, K//64, 2)粗尺度 squeeze transpose 为(K//512, N)mul_scale转为 bfloat16 向量。前向计算调用npu_dynamic_dual_level_mx_quant(x, smooth_scalemul_scale)与npu_dual_level_quant_matmul见 _quantize_activation 与 _quant_matmul。在线双尺度路径NPUMxfp4DualScaleOnlineLinearMethod则传入smooth_scaleNone并将mul_scale置为单位向量印证在线无标定 mul_scale的说明。步骤 1 — 使用 msModelSlim 量化msmodelslim quant \ --model_path /path/to/Wan2.2-T2V-A14B-Diffusers \ --save_path /path/to/wan2_2_t2v_quantized_raw \ --device npu \ --model_type Wan2_2 \ --config_path /path/to/wan2_2_w4a4_mxfp4_dualscale.yaml \ --trust_remote_code True此步骤后--save_path包含原始量化 safetensors 文件、scale 文件以及元数据 JSONquant_model_description*.json。对于级联 MoE 模型T2V-A14B、I2V-A14BmsModelSlim 输出两个子目录high_noise_model/transformer和low_noise_model/transformer_2。步骤 2 — 使用 merge_mxfp4_dualscale_checkpoint.py 预处理脚本位于 vllm_omni/quantization/tools/merge_mxfp4_dualscale_checkpoint.py依次执行将原始 diffusers 模型复制到--output-pathVAE、文本编码器、scheduler 等均保留将张量名从 msModelSlim 约定重映射为 diffusers 约定并剥离量化工具添加的.linear./.div.包装将 MXFP4 张量weight、细/粗尺度、mul_scale叠加到 BF16 基础检查点上。未量化层保留原始 BF16 权重探测所有仍为 BF16 的线性层将其前缀写入config.json的ignored_layers注入quantization_config使 vLLM-Omni 自动探测离线 MXFP4 DualScale。对于级联 MoE 模型步骤 2–5 对每个 transformer 分别执行见 repack 与_get_transformer_dirs。python vllm_omni/quantization/tools/merge_mxfp4_dualscale_checkpoint.py \ --model-type Wan2.2-T2V-A14B \ --original-model /path/to/Wan2.2-T2V-A14B-Diffusers \ --quant-path /path/to/wan2_2_t2v_quantized_raw \ --output-path /path/to/Wan2.2-T2V-A14B-MXFP4-DualScale参数说明--model-type模型变体Wan2.2-T2V-A14B或Wan2.2-I2V-A14B--original-model原始 BF16 diffusers 模型根目录--quant-pathmsModelSlim 量化输出根目录--output-path合并模型输出目录由脚本创建脚本在--output-path输出完整的 diffusers 模型目录每个 transformer 子文件夹包含diffusion_pytorch_model.safetensors— MXFP4 权重 scale 张量BF16 回退层来自基础检查点config.json— 原始 transformer 配置 注入的quantization_configquant_model_description.json— 量化元数据仅参考。注入到每个 transformerconfig.json的quantization_config{ quant_method: mxfp4_dualscale, is_checkpoint_serialized: true, ignored_layers: [ blocks.0.attn1.to_qkv, blocks.0.attn1.to_out, proj_out ] }ignored_layers列出所有保留原始 BF16 权重的线性层使用vllm-omni 模型参数名QKV 融合、FFN 下划线命名、to_out无索引。具体条目由量化工具msModelSlim决定级联模型中transformer与transformer_2可能不同。从脚本源码看这一步的核心辅助函数是_diffusers_to_vllm_ignoredmerge_mxfp4_dualscale_checkpoint.py它完成三类命名变换attn1.to_q/to_k/to_v→attn1.to_qkv仅自注意力融合attn2交叉注意力不融合、ffn.net.0.proj→ffn.net_0.proj、to_out.0→to_out。_collect_ignored_layers通过有.weight但无对应.weight_scale的差集识别 BF16 回退层保证与运行时命名完全一致。步骤 3 — 服务python text_to_video.py --model /path/to/Wan2.2-T2V-A14B-MXFP4-DualScale # 在线服务 vllm serve /path/to/Wan2.2-T2V-A14B-MXFP4-DualScale --omniomni Omni(model/path/to/Wan2.2-T2V-A14B-MXFP4-DualScale)离线模式无需--quantization标志。预处理脚本将quantization_config注入每个transformer/config.jsonvLLM-Omni 读取后自动激活正确的离线路径。自动探测机制在 factory.resolve_quant_config_from_disk 与 pipeline_wan2_2.py 的 create_transformer_from_config 中实现当磁盘config.json声明quant_method且未传 CLI 量化配置时自动构建方法不匹配时抛出ValueError防止权重静默损坏磁盘标记is_checkpoint_*_serializedTrue而当前为在线模式时自动升级为离线ignored_layers不一致时从磁盘重建以保证逐层路由权威。级联场景下每个 transformer 从自身config.json独立自动探测od_config.quantization_config保持不被修改。这些契约在 tests/diffusion/models/wan2_2/test_create_transformer_quant.py 中有完整回归覆盖含test_pipeline_cascade_mxfp4_dualscale_each_transformer_gets_correct_ignored_layers。参数参考mxfp4单尺度仅在线参数类型默认值描述methodstr—mxfp4ignored_layerslist[str][]保留为 BF16 的层前缀mxfp4_dualscale双尺度在线 离线参数类型默认值描述methodstr—mxfp4_dualscaleis_checkpoint_serializedboolFalse离线 DualScale 检查点为True使用预处理脚本时从config.json自动设置ignored_layerslist[str][]保留为 BF16 的层前缀。两种模式均生效离线——由 merge 脚本填充交错敏感层在线——用户显式指定逐层精度覆盖num_bf16_fallback_layersint5仅在线模式前 N 个 transformer 块blocks.0…blocks.N-1保留 BF16。在ignored_layers之后应用离线模式忽略。默认值5是 Wan2.2-A14B 上评估出的推荐值从 DiffusionMXFP4DualScaleMixedConfig.from_config 的实现看ignored_layers还接受modules_to_not_convert作为别名兼容其他生态的命名num_bf16_fallback_layers默认 5配置工厂build_quant_configfactory.py接受字符串、字典或现成配置对象三种输入字典必须含method/quant_method键。这些默认值与别名行为在 tests/diffusion/quantization/test_mxfp4_config.py 中有直接断言。BF16 回退优先级在线模式for each linear layer: if prefix in ignored_layers → BF16 显式覆盖最高优先级 elif block_idx num_bf16_fallback_layers → BF16 粗略前导块规则 else → MXFP4 DualScale onlineblocks.N.*之外的层如condition_embedder.*除非出现在ignored_layers中否则始终量化。验证与注意事项在线单尺度mxfp4加载时用npu_dynamic_mx_quant单尺度量化 BF16 权重。没有标定mul_scale——所有输出分区接收恒等预尺度。该方法不存在离线检查点格式。在线双尺度mxfp4_dualscaleis_checkpoint_serializedFalse用npu_dynamic_dual_level_mx_quant细 粗尺度即时计算量化 BF16 权重。没有标定mul_scale前导块或显式ignored_layers保留 BF16 以保精度。离线双尺度mxfp4_dualscaleis_checkpoint_serializedTrue——生产推荐——每个量化层加载四个张量FP4 权重、细尺度uint8重解释为float8_e8m0fnu、粗尺度float32、per-input-channelmul_scalefloat32。BF16 回退层没有量化张量经ignored_layers路由。尺度 dtype细尺度在 safetensors 中以uint8存储与float8_e8m0fnu位布局相同加载时直接重解释避免有损的 float32 往返。这一点在 NPUMxfp4LinearMethod.process_weights_after_loading 的注释与实现中明确仅当 dtype 既非 uint8 也非目标 NPU dtype 时才转换。级联模型配置传播级联模型transformer transformer_2中vLLM-Omni 读取每个 transformer 自己的config.json当ignored_layers不一致时本地重建量化配置保证每层路由对每个 transformer 精确。第一个 transformer 的配置传播到od_config使第二个 transformer 可复用它作为起点resolve_quant_config_from_disk的文档注释确认了这一约定。自注意力 QKV 融合运行时 Q、K、V 投影权重融合为单个QKVParallelLinear层。ignored_layers条目使用融合后的名称attn1.to_qkv由 merge 脚本自动写入。W4A4 的量化噪声高于 W8A816 vs 256 个电平。DualScale 离线方法通过标定的mul_scale平滑量化缓解这一问题。可用ignored_layers与num_bf16_fallback_layers在压缩率与精度之间权衡敏感层。将 MXFP4 适配到新模型本节面向希望在 Wan2.2 之外为其他模型添加 MXFP4 支持的开发者。三个集成点(1) 发现正确的运行时层名(2) 将ignored_layers接入模型(3) 为离线检查点编写 merge 脚本。步骤 1 — 发现运行时层名ignored_layers条目必须匹配 vllm-omni 内部使用的运行时参数名这可能与 diffusers 检查点中存储的名称不同。权威来源是模型自身的named_parameters()。from vllm_omni import Omni # 不量化加载模型以检查参数名。 omni Omni(model/path/to/your-model) # 无 --quantization 标志 for name, _ in omni.pipeline.transformer.named_parameters(): if weight in name and scale not in name: print(name)将打印出的名称与 diffusers 检查点键safetensors.safe_open或torch.load对比识别模型应用的任何重命名。Wan2.2 中的常见差异模式其他模型也可能出现Diffusers 检查点名vllm-omni 运行时名原因attn1.to_q,attn1.to_k,attn1.to_vattn1.to_qkv自注意力 Q/K/V 融合为QKVParallelLinearffn.net.0.projffn.net_0.proj子模块名中的点替换为下划线ffn.net.2ffn.net_2同上to_out.0to_out剥离 Sequential 索引如果你的模型有不同的融合模式请检查模型类上的packed_modules_mapping——该字典记录检查点键到融合运行时参数的映射。警告不允许部分 QKV 回退若模型将 Q、K、V 融合为单层ignored_layers必须同时包含三者或全不包含。部分回退如to_q保留 BF16 而to_k、to_v量化在运行时无法表达因为它们共享同一个QKVParallelLinear。merge 脚本强制执行此约束当三者中仅部分出现在未量化集合中时抛出ValueError见 merge_mxfp4_dualscale_checkpoint.py 的_diffusers_to_vllm_ignored。步骤 2 — 将 ignored_layers 接入模型在线模式使用步骤 1 发现的运行时名直接在量化配置中传入ignored_layers。无需修改模型代码。omni Omni( model/path/to/your-model, quantization{ method: mxfp4_dualscale, ignored_layers: [ blocks.0.attn1.to_qkv, # 运行时名非 diffusers 名 blocks.0.attn1.to_out, blocks.0.ffn.net_0.proj, ], }, )# CLI 无法直接传 list 类型的 ignored_layers。 # 请使用 Python API或在 config.json 中设置 ignored_layers离线。 python your_script.py --model /path/to/your-model --quantization mxfp4_dualscalenum_bf16_fallback_layers粗略规则是逐层列举的替代方案设为 N 可将块 0 … N-1 中所有线性层保留在 BF16。正确值取决于模型敏感性在验证集上评估选择满足精度目标的最小 N。离线模式离线检查点的ignored_layers由 merge 脚本写入每个 transformer 的config.json见步骤 3。若 merge 脚本正确则无需手工编辑。注入块{ quant_method: mxfp4_dualscale, is_checkpoint_serialized: true, ignored_layers: [ blocks.0.attn1.to_qkv, blocks.0.attn1.to_out ] }如需手工添加层例如不重新运行 merge 脚本而将额外层固定为 BF16直接编辑 transformer 子文件夹内的config.json。务必使用运行时名而非 diffusers 检查点名。步骤 3 — 为离线模式编写 merge 脚本新模型的 merge 脚本镜像 vllm_omni/quantization/tools/merge_mxfp4_dualscale_checkpoint.py。必须完成四件事重映射张量名从量化工具约定到 diffusers 约定剥离.linear.、.div.包装修正任何前缀差异收集 ignored_layers加载后枚举所有无对应*.weight_scale的*.weight键即工具保留为 BF16 的层。将 diffusers 名转换为 vllm-omni 运行时名融合 QKV、重命名 FFN 子模块等将结果写入config.json注入quantization_config到config.jsonconfig[quantization_config] { quant_method: mxfp4_dualscale, is_checkpoint_serialized: True, ignored_layers: ignored_layers, # 运行时名 }保存合并后的 safetensors 与更新后的config.json。需要实现的关键辅助函数是 diffusers 到运行时名的翻译器等价于 Wan2.2 merge 脚本中的_diffusers_to_vllm_ignored。对每个未量化的 diffusers 权重键应用模型特有的重命名规则并收集结果。提示服务前先验证产出离线检查点后不加--quantization标志加载它确认 vLLM-Omni 自动探测到正确方法。检查启动日志中报告的层数是否符合预期量化层数 ignored_layers数应等于总线性层数。任何不匹配都说明 merge 脚本存在命名映射错误。总结W4A4 MXFP4 是 vLLM-Omni 为扩散模型当前支持 Wan2.2 A14B 系列提供的高压缩量化方案其核心设计在 mxfp4_config.py 中完整实现离线检查点链路msModelSlim → merge_mxfp4_dualscale_checkpoint.py → 自动探测辅以 test_mxfp4_config.py 与 test_create_transformer_quant.py 的回归保障。实践要点可归纳为快速验证用mxfp4在线零预处理、开销最低生产用mxfp4_dualscale离线借助标定mul_scale获得最佳精度在线双尺度的 BF16 回退由ignored_layers显式、最高优先级与num_bf16_fallback_layers前导块粗略规则默认 5共同决定离线检查点的 BF16 回退层可交错任意位置由 merge 脚本写入config.json的ignored_layers自动路由服务时无需任何量化标志适配新模型时务必以运行时named_parameters()为准发现层名遵守 QKV 全有或全无的回退约束并在 merge 脚本中复用命名翻译辅助逻辑。【免费下载链接】vllm-omniA framework for efficient model inference with omni-modality models项目地址: https://gitcode.com/GitHub_Trending/vl/vllm-omni创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门