已合并
【msmodelslim】【Doc】【bugfix】修正format资料issue #877
anreywmh创建于 12 天前
【msmodelslim】【Doc】【bugfix】修正format资料issue #877
已合并
共 8 个文件变更+471-430
| @@ -1,58 +1,63 @@ | |||
| 1 | -# 量化格式 | 1 | +# 量化格式 量化术语百科词条 |
| 2 | - | 2 | + |
| 3 | -> **词条类别**:量化数据格式 | 3 | +> **词条类别**:量化数据格式<br> |
| 4 | -> | 4 | +> **英文名称**:Quantization Format<br> |
| 5 | -> **英文名称**:Quantization Format | 5 | +> **应用领域**:大语言模型量化压缩、多模态理解与生成模型量化压缩、推理框架权重加载<br> |
| 6 | -> | 6 | +> **msModelSlim 实现**:[`msmodelslim/format/`](../../../../msmodelslim/format/) |
| 7 | -> **应用领域**:大语言模型量化压缩、多模态理解与生成模型量化压缩、推理框架权重加载 | 7 | + |
| 8 | -> | 8 | +--- |
| 9 | -> **msModelSlim 实现**:`msmodelslim/format/` | 9 | + |
| 10 | - | 10 | +## 1. 概述 |
| 11 | -## 1. 概述 | 11 | + |
| 12 | - | 12 | +[量化格式 量化术语百科词条](./README.md)是量化工具与推理框架之间的**落盘与加载协议**:它规定量化权重的文件结构、张量命名与元数据组织方式,使目标推理引擎能正确反量化并完成推理。它解决算法产出的量化参数如何被下游部署消费的问题。 |
| 13 | -[量化格式](./README.md)是量化工具与推理框架之间的**落盘与加载协议**:它规定量化权重的文件结构、张量命名与元数据组织方式,使目标推理引擎能正确反量化并完成推理。它解决算法产出的量化参数如何被下游部署消费的问题。 | 13 | + |
| 14 | - | 14 | +--- |
| 15 | -## 2. 词条介绍 | 15 | + |
| 16 | - | 16 | +## 2. 词条介绍 |
| 17 | -### 2.1 格式地图 | 17 | + |
| 18 | - | 18 | +### 2.1 格式地图 |
| 19 | -地图用于**选型与导航**:先按目标推理栈与模型类型选定格式,再进入对应词条核对模式 / 交付件,或进入使用指南完成确认模式支持、配置与执行。特定场景以各格式词条与使用指南为准,本表不展开。 | 19 | + |
| 20 | - | 20 | +地图用于**选型与导航**:先按目标推理栈与模型类型选定格式,再进入对应词条核对模式 / 交付件,或进入使用指南完成确认模式支持、配置与执行。特定场景以各格式词条与使用指南为准,本表不展开。 |
| 21 | -| 格式 | 典型适用场景 | 目标推理框架 | 模式概要与推荐 | 分布式导出 | 词条 | 使用指南 | | 21 | + |
| 22 | -| --- | --- | --- | --- | --- | --- | --- | | 22 | +| 格式 | 典型适用场景 | 目标推理框架 | 模式概要与推荐 | 分布式导出 | 词条 | 使用指南 | |
| 23 | -| AscendV1 | 昇腾侧 LLM / 多模态理解等通用部署 | vLLM Ascend、SGLang、MindIE | 覆盖 W8A8 / W8A16 / W4A4 / MXFP / KV Cache / FA 等 20+;**910 系推荐优先 W8A8(静/动)**,显存更紧时再选 W4;**950 系推荐优先 MXFP(W8A8_MXFP8 / W4A4_MXFP4 等)** | 支持 | 《[AscendV1](ascendv1/term_ascendv1.md)》 | 《[AscendV1 使用指南](ascendv1/ascendv1_usage.md)》 | | 23 | +| --- | --- | --- | --- | --- | --- | --- | |
| 24 | -| compressed-tensors | 量化权重要在 vLLM 等 HF 生态框架中加载,或需要与 compressed-tensors 规范的 `quantization_config` 对齐 | vLLM 等 HF 生态 | 当前仅 **W8A8 Static / W8A8 Dynamic**;激活 scale 已离线校准选 Static,需免校准或适应动态输入选 Dynamic;不支持 KV Cache | 不支持 | 《[compressed-tensors](compressed_tensors/term_compressed_tensors.md)》 | 《[compressed-tensors 使用指南](compressed_tensors/compressed_tensors_usage.md)》 | | 24 | +| AscendV1 | 昇腾侧 LLM / 多模态理解等通用部署 | vLLM Ascend、SGLang、MindIE | 覆盖 W8A8 / W8A16 / W4A4 / MXFP / KV Cache / FA 等 20+;**昇腾A2系列产品 / 昇腾A3系列产品推荐优先 W8A8(静/动)**,显存更紧时再选 W4;**昇腾950PR&950DT系列产品推荐优先 MXFP(W8A8_MXFP8 / W4A4_MXFP4 等)** | 支持 | 《[AscendV1 量化格式 量化术语百科词条](ascendv1/term_ascendv1.md)》 | 《[AscendV1 使用指南](ascendv1/ascendv1_usage.md)》 | |
| 25 | -| MindIE-SD | 扩散 / DiT 等多模态**生成**模型交付 MindIE | MindIE(多模态生成) | 面向生成流水线的枚举子集(含 W8A8、MXFP、FAQuant 等);**推荐按模型最佳实践 `quant_type` 选择**,勿套用 LLM 默认 AscendV1 路径 | 支持 | 《[MindIE-SD](mindie_sd/term_mindie_sd.md)》 | 《[MindIE-SD 使用指南](mindie_sd/mindie_sd_usage.md)》 | | 25 | +| compressed-tensors | 量化权重要在 vLLM 等 HF 生态框架中加载,或需要与 compressed-tensors 规范的 `quantization_config` 对齐 | vLLM 等 HF 生态 | 当前仅 **W8A8 Static / W8A8 Dynamic**;激活 scale 已离线校准选 Static,需免校准或适应动态输入选 Dynamic;不支持 KV Cache | 不支持 | 《[compressed-tensors 量化格式 量化术语百科词条](compressed_tensors/term_compressed_tensors.md)》 | 《[compressed-tensors 使用指南](compressed_tensors/compressed_tensors_usage.md)》 | |
| 26 | - | 26 | +| MindIE-SD | 扩散 / DiT 等多模态**生成**模型交付 MindIE | MindIE(多模态生成) | 面向生成流水线的枚举子集(含 W8A8、MXFP、FAQuant 等);**推荐按模型最佳实践 `quant_type` 选择**,勿套用 LLM 默认 AscendV1 路径 | 支持 | 《[MindIE-SD 量化格式 量化术语百科词条](mindie_sd/term_mindie_sd.md)》 | 《[MindIE-SD 使用指南](mindie_sd/mindie_sd_usage.md)》 | |
| 27 | -#### 三种格式如何区分 | 27 | + |
| 28 | - | 28 | +--- |
| 29 | -| 维度 | AscendV1 | compressed-tensors | MindIE-SD | | 29 | + |
| 30 | -| --- | --- | --- | --- | | 30 | +## 3. 三种格式如何区分 |
| 31 | -| 定位 | 昇腾推理默认量化落盘协议 | HF 生态兼容的量化格式 | 多模态生成专用 MindIE 落盘协议 | | 31 | + |
| 32 | -| 模型面 | 大语言模型和多模态理解模型 | 线性层量化、HF 风格权重 | 扩散 / DiT 等生成模型(如 Wan2.2) | | 32 | +| 维度 | AscendV1 | compressed-tensors | MindIE-SD | |
| 33 | -| 元数据形态 | 独立 `quant_model_description.json` + `quant_model_weights*.safetensors` | 注入 `config.json` 的 `quantization_config` + `model*.safetensors` | `quant_model_description*.json` + `quant_model_weight*.safetensors`(权重文件名为单数 weight) | | 33 | +| --- | --- | --- | --- | |
| 34 | -| 保存器 `type` | `ascendv1_saver` | `compressed_tensors` | `mindie_format_saver` | | 34 | +| 定位 | 昇腾推理默认量化落盘协议 | HF 生态兼容的量化格式 | 多模态生成专用 MindIE 落盘协议 | |
| 35 | -| 核心优势 | 描述 JSON 粒度最细:逐层标注量化类型,支持混合量化(同模型不同层可用不同模式);模式枚举最全,覆盖 20+ 量化组合 | 与 HF `from_pretrained` / vLLM 自动检测路径天然兼容,无需额外安装 `compressed-tensors` 包,零门槛接入 HF 生态 | 与 MindIE 多模态生成流水线深度对齐,支持 `fa_quant_type` 等生成场景专属元数据,`dump_config` 可捕获校准数据 | | 35 | +| 模型面 | 大语言模型和多模态理解模型 | 线性层量化、HF 风格权重 | 扩散 / DiT 等生成模型(如 Wan2.2) | |
| 36 | - | 36 | +| 元数据形态 | 独立 `quant_model_description.json` + `quant_model_weights*.safetensors` | 注入 `config.json` 的 `quantization_config` + `model*.safetensors` | `quant_model_description*.json` + `quant_model_weight*.safetensors`(权重文件名为单数 weight) | |
| 37 | -三者**不可互换加载**:换推理栈或换模型品类通常需重新导出。模式枚举、字段级交付件与限制见上表词条;配置与执行步骤见对应使用指南。 | 37 | +| 保存器 `type` | `ascendv1_saver` | `compressed_tensors` | `mindie_format_saver` | |
| 38 | - | 38 | +| 核心优势 | 描述 JSON 粒度最细:逐层标注量化类型,支持混合量化(同模型不同层可用不同模式);模式枚举最全,覆盖 20+ 量化组合 | 与 HF `from_pretrained` / vLLM 自动检测路径天然兼容,无需额外安装 `compressed-tensors` 包,零门槛接入 HF 生态 | 与 MindIE 多模态生成流水线深度对齐,支持 `fa_quant_type` 等生成场景专属元数据,`dump_config` 可捕获校准数据 | |
| 39 | -接入新格式请遵循《[量化格式接入指南](iformat_integration_guide.md)》及《[msModelSlim 资料规范](../../contributing/development_guide/docs_standards/README.md)》。 | 39 | + |
| 40 | - | 40 | +三者**不可互换加载**:换推理栈或换模型品类通常需重新导出。模式枚举、字段级别交付件与限制见上表词条;配置与执行步骤见对应使用指南。 |
| 41 | -## 3. 关联流程 | 41 | + |
| 42 | - | 42 | +接入新格式请遵循《[量化格式接入指南](iformat_integration_guide.md)》及《[msModelSlim 资料规范](../../contributing/development_guide/docs_standards/README.md)》。 |
| 43 | -| 流程 | 说明 | | 43 | + |
| 44 | -| --- | --- | | 44 | +--- |
| 45 | -| 《[量化格式接入指南](iformat_integration_guide.md)》 | 基于 IFormat 接入新落盘格式 | | 45 | + |
| 46 | -| 《[AscendV1 使用指南](ascendv1/ascendv1_usage.md)》 | AscendV1 确认模式支持、配置与执行 | | 46 | +## 4. 关联流程 |
| 47 | -| 《[compressed-tensors 使用指南](compressed_tensors/compressed_tensors_usage.md)》 | compressed-tensors 确认模式支持、配置与执行 | | 47 | + |
| 48 | -| 《[MindIE-SD 使用指南](mindie_sd/mindie_sd_usage.md)》 | MindIE-SD 确认模式支持、配置与执行 | | 48 | +- 《[量化格式接入指南](iformat_integration_guide.md)》:基于 IFormat 接入新落盘格式。 |
| 49 | -| 《[一键量化使用指南](../../user_guide/usage_quick_quantization.md)》 | `spec.save` 与命令行总览 | | 49 | +- 《[AscendV1 使用指南](ascendv1/ascendv1_usage.md)》:AscendV1 确认模式支持、配置与执行。 |
| 50 | - | 50 | +- 《[compressed-tensors 使用指南](compressed_tensors/compressed_tensors_usage.md)》:compressed-tensors 确认模式支持、配置与执行。 |
| 51 | -## 4. 关联词条 | 51 | +- 《[MindIE-SD 使用指南](mindie_sd/mindie_sd_usage.md)》:MindIE-SD 确认模式支持、配置与执行。 |
| 52 | - | 52 | +- 《[一键量化使用指南](../../user_guide/usage_quick_quantization.md)》:一键量化命令与配置协议总览。 |
| 53 | -- [AscendV1](ascendv1/term_ascendv1.md):下位概念,昇腾侧默认量化落盘格式。 | 53 | + |
| 54 | -- [compressed-tensors](compressed_tensors/term_compressed_tensors.md):下位概念,HuggingFace / vLLM 生态兼容的量化落盘格式。 | 54 | +--- |
| 55 | -- [MindIE-SD](mindie_sd/term_mindie_sd.md):下位概念,多模态生成场景的 MindIE 落盘格式。 | 55 | + |
| 56 | -- [量化算法](../quantization_algorithms/README.md):其他,量化计算与校准侧算法族,产出由本格式落盘。 | 56 | +## 5. 关联词条 |
| 57 | -- [量化模式](../quantization_mode/README.md):配套术语,格式枚举与交付件字段对应各量化模式。 | 57 | + |
| 58 | -- [大模型支持矩阵](../model/README.md):其他,模型 × 模式 × 推理栈的选型与验证口径。 | 58 | +- [AscendV1 量化格式 量化术语百科词条](ascendv1/term_ascendv1.md):下位概念,昇腾侧默认量化落盘格式。 |
| 59 | +- [compressed-tensors 量化格式 量化术语百科词条](compressed_tensors/term_compressed_tensors.md):下位概念,HuggingFace / vLLM 生态兼容的量化落盘格式。 | ||
| 60 | +- [MindIE-SD 量化格式 量化术语百科词条](mindie_sd/term_mindie_sd.md):下位概念,多模态生成场景的 MindIE 落盘格式。 | ||
| 61 | +- [量化算法](../quantization_algorithms/README.md):其他,量化计算与校准侧算法族,产出由各量化格式落盘。 | ||
| 62 | +- [量化模式](../quantization_mode/README.md):配套术语,格式枚举与交付件字段对应各量化模式。 | ||
| 63 | +- [大模型支持矩阵](../model/README.md):其他,模型 × 模式 × 推理栈的选型与验证口径。 | ||
| @@ -23,8 +23,8 @@ | |||
| 23 | 23 | ||
| 24 | | 类型 | 名称 | 来源或保存位置 | 格式或约束 | 验收方式 | | 24 | | 类型 | 名称 | 来源或保存位置 | 格式或约束 | 验收方式 | |
| 25 | | --- | --- | --- | --- | --- | | 25 | | --- | --- | --- | --- | --- | |
| 26 | -| 输入 | 浮点模型目录 | 本地或 ModelScope/HF | 可被目标 Transformers 版本加载 | `from_pretrained` 冒烟通过 | | 26 | +| 输入 | 浮点模型目录 | 本地或 ModelScope/HF | 可被目标 Transformers 版本加载 | `from_pretrained` 可成功加载 | |
| 27 | -| 输入 | 量化 YAML / 最佳实践 | 最佳实践库或自定义 `config_path` | 含 `spec.save` 且 `type` 为 `ascendv1_saver` | 字段通过配置协议校验 | | 27 | +| 输入 | 量化 YAML / 最佳实践 | 最佳实践库或自定义`--config`| 含 `spec.save` 且 `type` 为 `ascendv1_saver` | 字段通过配置协议校验 | |
| 28 | | 交付件 | AscendV1 量化权重目录 | `${SAVE_PATH}` | 含 `quant_model_description.json` 与权重 safetensors | 见《[AscendV1](term_ascendv1.md#export-artifacts)》导出产物 | | 28 | | 交付件 | AscendV1 量化权重目录 | `${SAVE_PATH}` | 含 `quant_model_description.json` 与权重 safetensors | 见《[AscendV1](term_ascendv1.md#export-artifacts)》导出产物 | |
| 29 | 29 | ||
| 30 | ## 4. 流程总览 | 30 | ## 4. 流程总览 |
| @@ -34,8 +34,6 @@ flowchart LR | |||
| 34 | adapt[确认模式支持] --> adapter["适配器适配save(可选)"] --> config[配置save] --> run[执行量化并核对产物] | 34 | adapt[确认模式支持] --> adapter["适配器适配save(可选)"] --> config[配置save] --> run[执行量化并核对产物] |
| 35 | ``` | 35 | ``` |
| 36 | 36 | ||
| 37 | -各阶段对应下文步骤 1~4:**确认**目标推理框架是否支持所选量化模式、**(可选)适配**模型适配器的 AscendV1 save 接口、**配置** `ascendv1_saver`、**执行**一键量化并核对交付件。 | ||
| 38 | - | ||
| 39 | ## 5. 操作步骤 | 37 | ## 5. 操作步骤 |
| 40 | 38 | ||
| 41 | ### 步骤 1:确认目标推理框架支持所选量化模式 | 39 | ### 步骤 1:确认目标推理框架支持所选量化模式 |
| @@ -44,13 +42,13 @@ flowchart LR | |||
| 44 | 42 | ||
| 45 | **操作**: | 43 | **操作**: |
| 46 | 44 | ||
| 47 | -1. 确认推理侧通过 `quant_model_description.json` 识别各张量量化类型,并从 `quant_model_weights*.safetensors`(或分片 + index)加载参数。 | 45 | +1. 对照《[AscendV1](term_ascendv1.md#engine-support)》推理引擎支持情况与《[AscendV1](term_ascendv1.md#mode-support)》量化模式支持情况,以及目标框架版本说明,确认所选量化模式可被该栈加载。 |
| 48 | -2. 对照《[AscendV1](term_ascendv1.md#engine-support)》「推理引擎支持情况」与《[AscendV1](term_ascendv1.md#mode-support)》「量化模式支持情况」,以及目标框架版本说明,确认所选量化模式可被该栈加载。 | 46 | +2. 确认推理侧通过 `quant_model_description.json` 识别各张量量化类型,并从 `quant_model_weights*.safetensors`(或分片 + index)加载参数。 |
| 49 | 3. 若启用 QuaRot 且需导出旋转矩阵,确认推理框架可消费 `optional/quarot.safetensors`(见《[AscendV1](term_ascendv1.md#optional-quarot)》可选导出:QuaRot 相关文件)。 | 47 | 3. 若启用 QuaRot 且需导出旋转矩阵,确认推理框架可消费 `optional/quarot.safetensors`(见《[AscendV1](term_ascendv1.md#optional-quarot)》可选导出:QuaRot 相关文件)。 |
| 50 | 48 | ||
| 51 | **输出**:明确的目标框架、量化模式与是否导出 optional 的决策记录。 | 49 | **输出**:明确的目标框架、量化模式与是否导出 optional 的决策记录。 |
| 52 | 50 | ||
| 53 | -**通过条件**:已选定 vLLM Ascend、SGLang 或 MindIE 作为部署目标;已确认采用 AscendV1 约定(`quant_model_description.json` + 权重 safetensors)加载;若启用 QuaRot 可选导出,已确认目标栈可消费对应文件。 | 51 | +**通过条件**:已选定 vLLM Ascend、SGLang 或 MindIE 作为部署目标;已确认采用 AscendV1 约定(`quant_model_description.json` + 权重 safetensors)加载;若启用 QuaRot 可选导出,推理侧已确认可加载 `optional/`。 |
| 54 | 52 | ||
| 55 | ### 步骤 2(可选):模型适配器实现 AscendV1SaveInterface | 53 | ### 步骤 2(可选):模型适配器实现 AscendV1SaveInterface |
| 56 | 54 | ||
| @@ -63,13 +61,16 @@ flowchart LR | |||
| 63 | 61 | ||
| 64 | **操作**: | 62 | **操作**: |
| 65 | 63 | ||
| 66 | -1. 让模型适配器继承 `AscendV1SaveInterface`,按需实现: | 64 | +1. 让模型适配器继承 [`AscendV1SaveInterface`](../../../../../msmodelslim/core/quant_service/modelslim_v1/save/interface.py),按需实现: |
| 67 | - `ascendv1_save_module_preprocess(prefix, module, model)`:保存模块前返回新的 `(prefix, module)` | 65 | - `ascendv1_save_module_preprocess(prefix, module, model)`:保存模块前返回新的 `(prefix, module)` |
| 68 | - `ascendv1_save_postprocess(model, save_directory)`:全部导出件写完后的目录后处理 | 66 | - `ascendv1_save_postprocess(model, save_directory)`:全部导出件写完后的目录后处理 |
| 69 | 2. 保存器仅在 `isinstance(adapter, AscendV1SaveInterface)` 时调用上述钩子;未实现则走默认落盘路径。 | 67 | 2. 保存器仅在 `isinstance(adapter, AscendV1SaveInterface)` 时调用上述钩子;未实现则走默认落盘路径。 |
| 70 | -3. 参考已实现该接口的适配器(如 DeepSeek-V3、Qwen3-Next、MiniMax-M2 等)核对行为是否与目标推理栈一致。 | 68 | +3. 参考已实现该接口的适配器源码核对行为是否与目标推理栈一致,例如: |
| 69 | + - [`msmodelslim/model/deepseek_v3/`](../../../../../msmodelslim/model/deepseek_v3/) | ||
| 70 | + - [`msmodelslim/model/qwen3_next/`](../../../../../msmodelslim/model/qwen3_next/) | ||
| 71 | + - [`msmodelslim/model/minimax_m2/`](../../../../../msmodelslim/model/minimax_m2/) | ||
| 71 | 72 | ||
| 72 | -**输出**:已实现钩子的适配器,或「无需实现、跳过本步骤」的结论。 | 73 | +**输出**:已实现钩子的适配器,或“无需实现、跳过本步骤”的结论。 |
| 73 | 74 | ||
| 74 | **通过条件**:不需要特殊钩子则可跳过;若实现了接口,则预处理 / 后处理与目标 AscendV1 产物约定一致。 | 75 | **通过条件**:不需要特殊钩子则可跳过;若实现了接口,则预处理 / 后处理与目标 AscendV1 产物约定一致。 |
| 75 | 76 | ||
| @@ -100,7 +101,7 @@ spec: | |||
| 100 | 101 | ||
| 101 | ### 步骤 4:执行量化并核对产物 | 102 | ### 步骤 4:执行量化并核对产物 |
| 102 | 103 | ||
| 103 | -**目标**:生成 AscendV1 权重并完成冒烟核对。 | 104 | +**目标**:生成 AscendV1 权重并完成加载与推理验证。 |
| 104 | 105 | ||
| 105 | **操作**: | 106 | **操作**: |
| 106 | 107 | ||
| @@ -137,20 +138,20 @@ spec: | |||
| 137 | --save_path ${SAVE_PATH} \ | 138 | --save_path ${SAVE_PATH} \ |
| 138 | --device npu \ | 139 | --device npu \ |
| 139 | --model_type ${MODEL_TYPE} \ | 140 | --model_type ${MODEL_TYPE} \ |
| 140 | - --config_path ${CONFIG_PATH} \ | 141 | + --config ${CONFIG_PATH} \ |
| 141 | - --trust_remote_code True | 142 | + --trust_remote_code False |
| 142 | ``` | 143 | ``` |
| 143 | 144 | ||
| 144 | 3. 核对 `${SAVE_PATH}` 中至少存在: | 145 | 3. 核对 `${SAVE_PATH}` 中至少存在: |
| 145 | - `quant_model_description.json`(含 `model_quant_type` 与各张量类型) | 146 | - `quant_model_description.json`(含 `model_quant_type` 与各张量类型) |
| 146 | - `quant_model_weights.safetensors` 或分片权重 + index | 147 | - `quant_model_weights.safetensors` 或分片权重 + index |
| 147 | - - 自源模型复制的 `config.json` / tokenizer 等辅助文件 | 148 | + - 自源模型复制的 `config.json` / tokenizer 等辅助文件 |
| 148 | - 目录树与字段细则见《[AscendV1](term_ascendv1.md#export-artifacts)》导出产物及「各量化模式交付件格式」。 | 149 | + 目录树与字段细则见《[AscendV1](term_ascendv1.md#export-artifacts)》导出产物及各量化模式交付件格式。 |
| 149 | -4. 使用目标推理框架加载该目录,完成 ≥1 条 generate 或 API 请求冒烟。 | 150 | +4. 使用目标推理框架加载该目录,完成至少 1 条 generate 或 API 请求,确认量化权重可正常加载且推理返回正常。该步骤为部署前的快速验证,不要求完整精度评测。 |
| 150 | 151 | ||
| 151 | -**输出**:可部署的 `${SAVE_PATH}` 目录与冒烟日志。 | 152 | +**输出**:可部署的 `${SAVE_PATH}` 目录与验证日志。 |
| 152 | 153 | ||
| 153 | -**通过条件**:描述文件与权重齐全;推理加载正常;冒烟返回正常。 | 154 | +**通过条件**:描述文件与权重齐全;推理加载正常;至少 1 条请求返回正常。 |
| 154 | 155 | ||
| 155 | ## 6. 验收条件 | 156 | ## 6. 验收条件 |
| 156 | 157 | ||
| @@ -164,11 +165,3 @@ spec: | |||
| 164 | | --- | --- | --- | | 165 | | --- | --- | --- | |
| 165 | | AscendV1 | 昇腾侧量化落盘格式 | 《[AscendV1](term_ascendv1.md)》 | | 166 | | AscendV1 | 昇腾侧量化落盘格式 | 《[AscendV1](term_ascendv1.md)》 | |
| 166 | | 量化格式 | 工具与推理框架的落盘协议 | 《[量化格式](../README.md)》 | | 167 | | 量化格式 | 工具与推理框架的落盘协议 | 《[量化格式](../README.md)》 | |
| 167 | - | ||
| 168 | -## 8. 接口文档列表 | ||
| 169 | - | ||
| 170 | -| 接口或能力 | 简述 | 链接 | | ||
| 171 | -| --- | --- | --- | | ||
| 172 | -| 一键量化 | 命令与配置协议 | 《[一键量化使用指南](../../../user_guide/usage_quick_quantization.md)》 | | ||
| 173 | -| ascendv1_saver | save 字段 | 《[一键量化使用指南](../../../user_guide/usage_quick_quantization.md#5251-ascendv1_saver)》 | | ||
| 174 | -| 格式接入 | 新格式开发对照 | 《[量化格式接入指南](../iformat_integration_guide.md)》 | | ||
| @@ -1,75 +1,72 @@ | |||
| 1 | -# AscendV1 | 1 | +# AscendV1 量化格式 量化术语百科词条 |
| 2 | 2 | ||
| 3 | -> **词条类别**:量化数据格式 | 3 | +> **词条类别**:[量化格式](../README.md)<br> |
| 4 | -> | 4 | +> **英文名称**:AscendV1 Quantization Format<br> |
| 5 | -> **英文名称**:AscendV1 Quantization Format | 5 | +> **应用领域**:昇腾 NPU 推理、大语言模型量化压缩、多模态理解模型量化压缩<br> |
| 6 | -> | 6 | +> **msModelSlim 实现**:[`msmodelslim/format/ascendV1_format/`](../../../../../msmodelslim/format/ascendV1_format/) |
| 7 | -> **英文缩写**:AscendV1 | 7 | + |
| 8 | -> | 8 | +--- |
| 9 | -> **应用领域**:昇腾 NPU 推理、大语言模型量化压缩、多模态理解模型量化压缩 | ||
| 10 | -> | ||
| 11 | -> **msModelSlim 实现**:`msmodelslim/format/ascendV1_format/`、`AscendV1Saver` | ||
| 12 | 9 | ||
| 13 | ## 1. 概述 | 10 | ## 1. 概述 |
| 14 | 11 | ||
| 15 | -AscendV1 是 msModelSlim 面向昇腾 NPU 推理的[量化格式](../README.md)。推理框架(vLLM Ascend、SGLang、MindIE)通过 `quant_model_description.json` 识别各张量的量化类型,并从 `quant_model_weights.safetensors` 加载对应参数。它解决昇腾侧量化权重的统一落盘与加载问题;核心特征是覆盖多种量化模式枚举,并与 vLLM Ascend、SGLang、MindIE 加载路径对齐。 | 12 | +AscendV1 是 msModelSlim 面向昇腾 NPU 推理的[量化格式 量化术语百科词条](../README.md)。推理框架(vLLM Ascend、SGLang、MindIE)通过 `quant_model_description.json` 识别各张量的量化类型,并从 `quant_model_weights*.safetensors` 加载对应参数。它解决昇腾侧量化权重的统一落盘与加载问题。核心特征是覆盖多种量化模式枚举,并与 vLLM Ascend、SGLang、MindIE 加载路径对齐。 |
| 16 | 13 | ||
| 17 | 配置、执行与部署步骤见《[AscendV1 使用指南](ascendv1_usage.md)》。各量化模式的原理与公式见《[量化模式](../../quantization_mode/README.md)》及下文支持表中的词条链接。 | 14 | 配置、执行与部署步骤见《[AscendV1 使用指南](ascendv1_usage.md)》。各量化模式的原理与公式见《[量化模式](../../quantization_mode/README.md)》及下文支持表中的词条链接。 |
| 18 | 15 | ||
| 16 | +--- | ||
| 17 | + | ||
| 19 | ## 2. 词条介绍 | 18 | ## 2. 词条介绍 |
| 20 | 19 | ||
| 21 | ### 2.1 原理 | 20 | ### 2.1 原理 |
| 22 | 21 | ||
| 23 | -#### 2.1.1 核心思想 | 22 | +**核心思想** |
| 24 | 23 | ||
| 25 | AscendV1 本质上是一套**昇腾推理侧的量化模型落盘约定**:它不执行校准或伪量化计算,而是在一键量化流水线末尾,将已量化完成的 QIR 模块转换为推理框架可直接加载的两类交付件——**量化描述文件** `quant_model_description.json` 与 **量化权重文件** `quant_model_weights*.safetensors`。前者作为张量级索引,供 vLLM Ascend、SGLang、MindIE 识别各张量名称及其量化模式(如 `W8A8`、`W4A4_MXFP4`);后者按相同键名存放对应的 int8 / FP8 / scale / zero-point 等数值。推理侧先读取描述文件以确定加载与算子路径,再按键名从 safetensors 取数,二者键名一一对应,缺一不可。 | 24 | AscendV1 本质上是一套**昇腾推理侧的量化模型落盘约定**:它不执行校准或伪量化计算,而是在一键量化流水线末尾,将已量化完成的 QIR 模块转换为推理框架可直接加载的两类交付件——**量化描述文件** `quant_model_description.json` 与 **量化权重文件** `quant_model_weights*.safetensors`。前者作为张量级索引,供 vLLM Ascend、SGLang、MindIE 识别各张量名称及其量化模式(如 `W8A8`、`W4A4_MXFP4`);后者按相同键名存放对应的 int8 / FP8 / scale / zero-point 等数值。推理侧先读取描述文件以确定加载与算子路径,再按键名从 safetensors 取数,二者键名一一对应,缺一不可。 |
| 26 | 25 | ||
| 27 | -生成流程在 YAML 中启用 `ascendv1_saver` 后自动触发,可概括为遍历模块、双写张量、汇总元数据、复制配置四步:(1)**初始化**:在 `save_path` 创建 JSON Writer 与 Safetensors Writer(权重过大时可按 `part_file_size` 分片);(2)**逐模块导出**:保存器深度遍历模型中的 QIR 量化模块(如 `W8A8StaticFakeQuantLinear`),按模块类型调用对应 handler——对每个参数同时执行两件事:在描述 JSON 中写入 `{张量全名}: {量化类型枚举}`,在 safetensors 中写入同名键的实际张量(例如 `{prefix}.weight` 写 int8 权重、`{prefix}.input_scale` 写 float32 scale);同一 Linear 层的 weight / scale / offset 等共享相同类型标识;(3)**收尾写全局字段**:全部模块处理完毕后,汇总写入 `version`、`model_quant_type`(混合量化时按优先级选取)、`group_size`、`kv_quant_type` / `fa_quant_type` 等全局元数据,关闭 Writer 落盘;若启用 QuaRot 等扩展,还会在 `optional/` 写出附加文件并在描述 JSON 的 `optional` 字段登记路径;(4)**复制源模型配置**:自浮点模型目录复制 `config.json`、tokenizer 等辅助文件到同一目录(并移除 `config.json` 内可能与 AscendV1 冲突的 `quantization_config` 字段),使部署目录既含量化权重,也保留推理所需的模型结构与词表。 | 26 | +因此,用户可将 AscendV1 理解为:**msModelSlim 量化结果的昇腾标准导出包**——算法负责量化计算与参数生成,AscendV1 负责权重落盘、元数据描述以及与 vLLM Ascend、SGLang、MindIE 加载路径的对齐。 |
| 28 | 27 | ||
| 29 | -因此,用户可将 AscendV1 理解为:**msModelSlim 量化结果的昇腾标准导出包**——算法负责量化计算与参数生成,AscendV1 负责权重落盘、元数据描述以及与 vLLM Ascend、SGLang、MindIE 加载路径的对齐。格式层不定义各量化模式内部的 $Q(\cdot)$ 映射与反量化公式,这些见对应量化模式资料;本词条与使用指南侧重交付件字段与核对方法。 | 28 | +**关键性质** |
| 30 | - | ||
| 31 | -#### 2.1.2 关键性质 | ||
| 32 | 29 | ||
| 33 | - 支持分布式导出与权重分片(`part_file_size`)。 | 30 | - 支持分布式导出与权重分片(`part_file_size`)。 |
| 34 | - 可选导出 QuaRot 旋转矩阵。 | 31 | - 可选导出 QuaRot 旋转矩阵。 |
| 35 | - 通过描述文件中的枚举值表达对多种量化模式的承载能力。 | 32 | - 通过描述文件中的枚举值表达对多种量化模式的承载能力。 |
| 36 | 33 | ||
| 37 | -### 2.2 <span id="export-artifacts">导出产物(交付件)</span> | 34 | +--- |
| 38 | 35 | ||
| 39 | -#### 目录与文件说明 | 36 | +## 3. <span id="export-artifacts">导出产物(交付件)</span> |
| 40 | 37 | ||
| 41 | -执行一键量化(`ascendv1_saver`)后,在指定的 `save_path` 目录下典型生成以下文件: | 38 | +### 3.1 目录与文件说明 |
| 39 | + | ||
| 40 | +执行一键量化并指定 AscendV1 落盘格式(保存器 `type` 为 `ascendv1_saver`)后,在指定的 `save_path` 目录下生成以下文件: | ||
| 42 | 41 | ||
| 43 | ```bash | 42 | ```bash |
| 44 | -├── config.json # 原始模型配置文件 | 43 | +├── config.json # 原始模型配置文件 |
| 45 | -├── generation_config.json # 原始生成配置文件 | 44 | +├── generation_config.json # 原始生成配置文件 |
| 46 | -├── quant_model_description.json # 量化权重描述文件 | 45 | +├── quant_model_description.json # 量化权重描述文件 |
| 47 | -├── quant_model_weights.safetensors # 量化权重文件(若权重较大可能分片,通过 index.json 索引) | 46 | +├── quant_model_weights*.safetensors # 量化权重:不分片为 quant_model_weights.safetensors;分片如 quant_model_weights-00001-of-00003.safetensors … + quant_model_weights.safetensors.index.json |
| 48 | -├── tokenizer_config.json # 原始分词器配置文件 | 47 | +├── tokenizer_config.json # 原始分词器配置文件 |
| 49 | -├── tokenizer.json # 原始分词器词汇表 | 48 | +├── tokenizer.json # 原始分词器词汇表 |
| 50 | -├── {model_type}_best_practice.yaml # 量化配置协议 | 49 | +├── {model_type}_best_practice.yaml # 量化配置协议 |
| 51 | -├── vocab.json # 原始词汇映射文件(部分模型) | 50 | +├── vocab.json # 原始词汇映射文件(部分模型) |
| 52 | -├── optional/ # 可选导出目录(部分算法启用时生成) | 51 | +└── optional/ # 可选导出目录(部分算法启用时生成) |
| 53 | - └── quarot.safetensors # QuaRot 全局旋转矩阵(启用 export_extra_info 时生成) | 52 | + └── quarot.safetensors # QuaRot 全局旋转矩阵(启用 export_extra_info 时生成) |
| 54 | - | ||
| 55 | ``` | 53 | ``` |
| 56 | 54 | ||
| 57 | | 文件名 | 说明 | | 55 | | 文件名 | 说明 | |
| 58 | |--------|------| | 56 | |--------|------| |
| 59 | | `config.json` | 原始模型的配置文件,包含模型架构、层数、隐藏维度等关键参数 | | 57 | | `config.json` | 原始模型的配置文件,包含模型架构、层数、隐藏维度等关键参数 | |
| 60 | | `generation_config.json` | 原始模型的生成配置文件,包含采样策略、最大生成长度等推理相关参数 | | 58 | | `generation_config.json` | 原始模型的生成配置文件,包含采样策略、最大生成长度等推理相关参数 | |
| 61 | -| `quant_model_description.json` | **量化权重描述文件**,记录每个权重张量的量化类型和元数据 | | 59 | +| `quant_model_description.json` | **量化权重描述文件**,记录每个权重张量的量化类型和元数据;每个张量键对应一个量化类型标识,同一 Linear 层的所有参数(weight、scale 等)共享相同的类型标识 | |
| 62 | -| `quant_model_weights.safetensors` | **量化权重文件**,包含实际存储的量化后的模型权重数据(若权重较大可能分片保存为多个文件,通过 index.json 索引) | | 60 | +| `quant_model_weights*.safetensors` | **量化权重文件**;不分片为 `quant_model_weights.safetensors`;分片为 `quant_model_weights-00001-of-0000N.safetensors` 等形式,并由 `quant_model_weights.safetensors.index.json` 索引 | |
| 63 | | `tokenizer_config.json` | 原始分词器的配置文件,包含特殊 token、词表大小等信息 | | 61 | | `tokenizer_config.json` | 原始分词器的配置文件,包含特殊 token、词表大小等信息 | |
| 64 | | `tokenizer.json` | 原始分词器的词汇表文件,定义 token 与 ID 的映射关系 | | 62 | | `tokenizer.json` | 原始分词器的词汇表文件,定义 token 与 ID 的映射关系 | |
| 65 | | `{model_type}_best_practice.yaml` | **量化配置协议文件**,记录本次量化所使用的完整配置信息,参考《[量化配置协议详解](../../../user_guide/usage_quick_quantization.md#5-量化配置协议详解)》 | | 63 | | `{model_type}_best_practice.yaml` | **量化配置协议文件**,记录本次量化所使用的完整配置信息,参考《[量化配置协议详解](../../../user_guide/usage_quick_quantization.md#5-量化配置协议详解)》 | |
| 66 | | `vocab.json` | 原始词汇映射文件,部分模型(如 GPT 风格模型)会包含此文件 | | 64 | | `vocab.json` | 原始词汇映射文件,部分模型(如 GPT 风格模型)会包含此文件 | |
| 67 | | `optional/quarot.safetensors` | **可选导出**:QuaRot 全局旋转矩阵(仅在使用 QuaRot 且 `export_extra_info: true` 时生成),见下文可选导出 | | 65 | | `optional/quarot.safetensors` | **可选导出**:QuaRot 全局旋转矩阵(仅在使用 QuaRot 且 `export_extra_info: true` 时生成),见下文可选导出 | |
| 68 | -|`quant_model_description.json` | 每个张量键对应一个量化类型标识;同一 Linear 层的所有参数(weight、scale 等)共享相同的类型标识。| | ||
| 69 | 66 | ||
| 70 | -#### quant_model_description.json | 67 | +### 3.2 quant_model_description.json |
| 71 | 68 | ||
| 72 | -##### 文件结构示例 | 69 | +**文件结构示例** |
| 73 | 70 | ||
| 74 | ```json | 71 | ```json |
| 75 | { | 72 | { |
| @@ -87,13 +84,13 @@ AscendV1 本质上是一套**昇腾推理侧的量化模型落盘约定**:它 | |||
| 87 | } | 84 | } |
| 88 | ``` | 85 | ``` |
| 89 | 86 | ||
| 90 | -> `*.weight` 字段名称由模型本身决定。 | 87 | +> 上例中 `*.weight` 字段名称由模型本身决定。 |
| 91 | 88 | ||
| 92 | -##### <span id="global-metadata">全局元数据字段</span> | 89 | +**<span id="global-metadata">全局元数据字段</span>** |
| 93 | 90 | ||
| 94 | | 字段名 | 类型 | 说明 | | 91 | | 字段名 | 类型 | 说明 | |
| 95 | |--------|------|------| | 92 | |--------|------|------| |
| 96 | -| `model_quant_type` | string | 模型整体量化类型(混合量化时取优先级最高者) | | 93 | +| `model_quant_type` | string | 模型整体量化类型(混合量化时取优先级最高者,见 [混合量化优先级](#quant-type-priority)) | |
| 97 | | `version` | string | 格式版本,当前 `"1.0.0"` | | 94 | | `version` | string | 格式版本,当前 `"1.0.0"` | |
| 98 | | `group_size` | int | 分组量化时的 group 大小 | | 95 | | `group_size` | int | 分组量化时的 group 大小 | |
| 99 | | `kv_quant_type` / `kv_cache_type` | string | KV Cache 量化类型 | | 96 | | `kv_quant_type` / `kv_cache_type` | string | KV Cache 量化类型 | |
| @@ -104,7 +101,25 @@ AscendV1 本质上是一套**昇腾推理侧的量化模型落盘约定**:它 | |||
| 104 | 101 | ||
| 105 | 其余键值对为 `{张量名}: {量化类型}`,例如 `"model.layers.0.self_attn.q_proj.weight": "W8A8"`。 | 102 | 其余键值对为 `{张量名}: {量化类型}`,例如 `"model.layers.0.self_attn.q_proj.weight": "W8A8"`。 |
| 106 | 103 | ||
| 107 | -#### <span id="optional-quarot">可选导出:QuaRot 相关文件</span> | 104 | +**<span id="quant-type-priority">混合量化时 `model_quant_type` 优先级</span>** |
| 105 | + | ||
| 106 | +列表越靠后优先级越高(低比特优先;同比特内 `W8A8` 优先于 `W8A8_DYNAMIC` / `W8A8_MIX`)。`W4A8_DYNAMIC` 不参与选取。优先级由低到高: | ||
| 107 | + | ||
| 108 | +1. `FLOAT` | ||
| 109 | +2. `W16A16S` | ||
| 110 | +3. `W8A16` | ||
| 111 | +4. `W8A8_DYNAMIC` | ||
| 112 | +5. `W8A8_MIX` | ||
| 113 | +6. `W8A8` | ||
| 114 | +7. `WFP8AFP8_DYNAMIC` | ||
| 115 | +8. `W8A8_MXFP8` | ||
| 116 | +9. `W4A8_MXFP` | ||
| 117 | +10. `W4A4_DYNAMIC` | ||
| 118 | +11. `W4A4_MXFP4` | ||
| 119 | +12. `W4A4_MXFP4_DUALSCALE` | ||
| 120 | +13. `W4A4_MXFP4_SVD` | ||
| 121 | + | ||
| 122 | +### 3.3 <span id="optional-quarot">可选导出:QuaRot 相关文件</span> | ||
| 108 | 123 | ||
| 109 | 当流水线启用 QuaRot 且配置 `export_extra_info: true` 时,AscendV1 可额外写出旋转矩阵文件,并在描述文件中登记路径。算法本身见对应算法词条;此处仅说明**格式侧**落盘约定。 | 124 | 当流水线启用 QuaRot 且配置 `export_extra_info: true` 时,AscendV1 可额外写出旋转矩阵文件,并在描述文件中登记路径。算法本身见对应算法词条;此处仅说明**格式侧**落盘约定。 |
| 110 | 125 | ||
| @@ -117,9 +132,24 @@ optional/ | |||
| 117 | |------|----------|------| | 132 | |------|----------|------| |
| 118 | | `global_rotation` | float32 | 全局旋转矩阵 | | 133 | | `global_rotation` | float32 | 全局旋转矩阵 | |
| 119 | 134 | ||
| 120 | -**启用 `online`** 时,`quant_model_description.json` 可含 `metadata.quarot`(层列表与在线旋转描述)。 | 135 | +启用 `online` 时,`quant_model_description.json` 包含 `metadata.quarot`(层列表与在线旋转描述),示例如下: |
| 121 | 136 | ||
| 122 | -**启用 `export_extra_info`** 时,可含: | 137 | +```json |
| 138 | +{ | ||
| 139 | + "metadata": { | ||
| 140 | + "quarot": { | ||
| 141 | + "heads_rotation": { | ||
| 142 | + "layers": ["model.layers.0.self_attn.o_proj", "model.layers.1.self_attn.o_proj"] | ||
| 143 | + }, | ||
| 144 | + "kronecker_rotation": { | ||
| 145 | + "layers": ["model.layers.0.mlp.down_proj"] | ||
| 146 | + } | ||
| 147 | + } | ||
| 148 | + } | ||
| 149 | +} | ||
| 150 | +``` | ||
| 151 | + | ||
| 152 | +启用 `export_extra_info` 时,包含: | ||
| 123 | 153 | ||
| 124 | ```jsonc | 154 | ```jsonc |
| 125 | { | 155 | { |
| @@ -135,33 +165,37 @@ optional/ | |||
| 135 | 165 | ||
| 136 | 推理框架按 `optional.quarot.rotation_map` 加载矩阵文件。 | 166 | 推理框架按 `optional.quarot.rotation_map` 加载矩阵文件。 |
| 137 | 167 | ||
| 138 | -### 2.3 <span id="engine-support">推理引擎支持情况</span> | 168 | +--- |
| 139 | 169 | ||
| 140 | -AscendV1 **均可落盘**下表中的格式枚举;下表描述的是产物能否被目标推理引擎加载部署。口径依据《[大模型支持矩阵](../../model/README.md)》注释与 lab_practice 验证标签;具体模型 × 模式 × 引擎组合以支持矩阵与官方最佳实践为准,并受 CANN / 引擎版本与硬件代际约束。 | 170 | +## 4. <span id="engine-support">推理引擎支持情况</span> |
| 171 | + | ||
| 172 | +下表中的格式枚举**均可被 AscendV1 落盘**;下表描述的是产物能否被目标推理引擎加载部署。口径依据《[大模型支持矩阵](../../model/README.md)》注释与 lab_practice 验证标签;具体模型 × 模式 × 引擎组合以支持矩阵与官方最佳实践为准,并受 CANN / 引擎版本与硬件代际约束。 | ||
| 141 | 173 | ||
| 142 | | 格式枚举值 | vLLM Ascend | SGLang | MindIE | 说明 | | 174 | | 格式枚举值 | vLLM Ascend | SGLang | MindIE | 说明 | |
| 143 | | --- | --- | --- | --- | --- | | 175 | | --- | --- | --- | --- | --- | |
| 144 | | `FLOAT` | √ | √ | √ | 未量化张量,随模型一并加载 | | 176 | | `FLOAT` | √ | √ | √ | 未量化张量,随模型一并加载 | |
| 145 | -| `W8A8` | √ | √ | √ | 910 / 950 通用入口之一 | | 177 | +| `W8A8` | √ | √ | √ | 昇腾A2系列产品 / 昇腾A3系列产品 / 昇腾950PR&950DT系列产品通用入口之一 | |
| 146 | -| `W8A8_DYNAMIC` | √ | √ | √ | 910 / 950 通用入口之一 | | 178 | +| `W8A8_DYNAMIC` | √ | √ | √ | 昇腾A2系列产品 / 昇腾A3系列产品 / 昇腾950PR&950DT系列产品通用入口之一 | |
| 147 | | `W4A8_DYNAMIC` | √ | √ | √ | 显存更紧时常用 | | 179 | | `W4A8_DYNAMIC` | √ | √ | √ | 显存更紧时常用 | |
| 148 | | `W4A4_DYNAMIC` | √ | √ | √ | 更低比特 INT 路径 | | 180 | | `W4A4_DYNAMIC` | √ | √ | √ | 更低比特 INT 路径 | |
| 149 | -| `W8A8_MXFP8` | √ | √ | √ | **推荐 Ascend 950**;910 系通常不可用 | | 181 | +| `W8A8_MXFP8` | √ | √ | √ | **推荐昇腾950PR&950DT系列产品**;昇腾A2系列产品 / 昇腾A3系列产品通常不可用 | |
| 150 | -| `W4A8_MXFP` | √ | √ | √ | **推荐 Ascend 950** | | 182 | +| `W4A8_MXFP` | √ | √ | √ | **推荐昇腾950PR&950DT系列产品** | |
| 151 | -| `W4A4_MXFP4` | √ | √ | √ | **推荐 Ascend 950** | | 183 | +| `W4A4_MXFP4` | √ | √ | √ | **推荐昇腾950PR&950DT系列产品** | |
| 152 | -| `W4A4_MXFP4_DUALSCALE` | √ | √ | √ | **推荐 Ascend 950** | | 184 | +| `W4A4_MXFP4_DUALSCALE` | √ | √ | √ | **推荐昇腾950PR&950DT系列产品** | |
| 153 | -| `WFP8AFP8_DYNAMIC` | 视版本 | 视版本 | √ | 以目标引擎版本与模型最佳实践为准 | | 185 | +| `WFP8AFP8_DYNAMIC` | √ | — | — | 仅 vLLM Ascend;**推荐昇腾950PR&950DT系列产品** | |
| 154 | | `W8A16` | — | — | √ | 仅 MindIE | | 186 | | `W8A16` | — | — | √ | 仅 MindIE | |
| 155 | | `W8A8_MIX` | — | — | √ | PD-Mix;仅 MindIE | | 187 | | `W8A8_MIX` | — | — | √ | PD-Mix;仅 MindIE | |
| 156 | | `W16A16S` | — | — | √ | 稀疏量化;仅 MindIE | | 188 | | `W16A16S` | — | — | √ | 稀疏量化;仅 MindIE | |
| 157 | | `C8` | — | — | √ | KV Cache;仅 MindIE(含 w8a8c8 / w4a8c8 等组合) | | 189 | | `C8` | — | — | √ | KV Cache;仅 MindIE(含 w8a8c8 / w4a8c8 等组合) | |
| 158 | | `FAQuant` | — | — | √ | FA3 等;仅 MindIE | | 190 | | `FAQuant` | — | — | √ | FA3 等;仅 MindIE | |
| 159 | 191 | ||
| 160 | -> **图例**:`√` 表示该引擎存在可加载路径或已有验证实践;`—` 表示当前不作为该引擎推荐部署路径;`视版本` 表示依赖具体引擎版本,部署前须核对。选型时先按引擎缩小候选枚举,再在下文「[量化模式支持情况](#mode-support)」核对 AscendV1 交付件字段。 | 192 | +> **图例**:`√` 表示该引擎存在可加载路径或已有验证实践;`—` 表示当前不作为该引擎推荐部署路径。选型时先按引擎缩小候选枚举,再在下文 [量化模式支持情况](#mode-support) 核对 AscendV1 交付件字段。 |
| 161 | 193 | ||
| 162 | -### 2.4 <span id="mode-support">量化模式支持情况</span> | 194 | +--- |
| 163 | 195 | ||
| 164 | -> **交付件说明**:「交付件:量化描述 JSON」→ `quant_model_description.json`;「交付件:量化 safetensors」→ `quant_model_weights*.safetensors`。模式原理见《[量化模式](../../quantization_mode/README.md)》词条,本表不展开反量化公式与 NPU 算子。 | 196 | +## 5. <span id="mode-support">量化模式支持情况</span> |
| 197 | + | ||
| 198 | +> **交付件说明**:表中交付件:量化描述 JSON对应 `quant_model_description.json`;交付件:量化 safetensors对应 `quant_model_weights*.safetensors`。模式原理见《[量化模式](../../quantization_mode/README.md)》词条,本表不展开反量化公式与 NPU 算子。本词条交付件分两列说明:描述 JSON 键值与 safetensors 张量字段。 | ||
| 165 | 199 | ||
| 166 | | 格式枚举值 | AscendV1 是否支持落盘 | 量化模式词条 | 交付件:量化描述 JSON | 交付件:量化 safetensors | | 200 | | 格式枚举值 | AscendV1 是否支持落盘 | 量化模式词条 | 交付件:量化描述 JSON | 交付件:量化 safetensors | |
| 167 | | --- | --- | --- | --- | --- | | 201 | | --- | --- | --- | --- | --- | |
| @@ -181,51 +215,52 @@ AscendV1 **均可落盘**下表中的格式枚举;下表描述的是产物能 | |||
| 181 | | `C8` | 支持 | [KVCache-PerChannel](../../quantization_mode/kv_cache_quantization/term_kv_cache_perchannel.md) | [C8 描述键](#desc-c8) | [C8 权重张量](#st-c8) | | 215 | | `C8` | 支持 | [KVCache-PerChannel](../../quantization_mode/kv_cache_quantization/term_kv_cache_perchannel.md) | [C8 描述键](#desc-c8) | [C8 权重张量](#st-c8) | |
| 182 | | `FAQuant` | 支持 | [FA 量化](../../quantization_mode/fa_quantization/README.md) | [FAQuant 描述键](#desc-faquant) | [FAQuant 权重张量](#st-faquant) | | 216 | | `FAQuant` | 支持 | [FA 量化](../../quantization_mode/fa_quantization/README.md) | [FAQuant 描述键](#desc-faquant) | [FAQuant 权重张量](#st-faquant) | |
| 183 | 217 | ||
| 184 | -### 2.5 各量化模式交付件格式 | 218 | +--- |
| 219 | + | ||
| 220 | +## 6. 各量化模式交付件格式 | ||
| 185 | 221 | ||
| 186 | 约定: | 222 | 约定: |
| 187 | 223 | ||
| 188 | - `{prefix}` 为模块前缀(例如 `model.layers.0.self_attn.q_proj`)。 | 224 | - `{prefix}` 为模块前缀(例如 `model.layers.0.self_attn.q_proj`)。 |
| 189 | -- **描述 JSON**:文件 `quant_model_description.json`;键为张量全名,值为量化类型字符串(与枚举一致);全局字段见上文「[全局元数据字段](#global-metadata)」。 | 225 | +- **描述 JSON**:文件 `quant_model_description.json`;键为张量全名,值为量化类型字符串(与枚举一致);全局字段见上文[全局元数据字段](#global-metadata)。 |
| 190 | - **safetensors**:文件 `quant_model_weights*.safetensors`(可分片);键为 `{prefix}.<param>`,存实际数值张量。 | 226 | - **safetensors**:文件 `quant_model_weights*.safetensors`(可分片);键为 `{prefix}.<param>`,存实际数值张量。 |
| 191 | 227 | ||
| 192 | -#### FLOAT | 228 | +### 6.1 FLOAT |
| 193 | - | 229 | +**<span id="desc-float">quant_model_description.json</span>** |
| 194 | -##### <span id="desc-float">quant_model_description.json</span> | ||
| 195 | 230 | ||
| 196 | | 描述键 | 取值 | 说明 | | 231 | | 描述键 | 取值 | 说明 | |
| 197 | | --- | --- | --- | | 232 | | --- | --- | --- | |
| 198 | | `{prefix}.weight` | `"FLOAT"` | 未量化权重 | | 233 | | `{prefix}.weight` | `"FLOAT"` | 未量化权重 | |
| 199 | | `{prefix}.bias` | `"FLOAT"` | 偏置(若存在) | | 234 | | `{prefix}.bias` | `"FLOAT"` | 偏置(若存在) | |
| 200 | 235 | ||
| 201 | -整体 `model_quant_type` 在仅含 FLOAT 时可为 `"FLOAT"`(混合量化时按优先级选取,见上文)。 | 236 | +整体 `model_quant_type` 在仅含 FLOAT 时可为 `"FLOAT"`(混合量化时按 [优先级](#quant-type-priority) 选取)。 |
| 202 | 237 | ||
| 203 | -##### <span id="st-float">quant_model_weights*.safetensors</span> | 238 | +**<span id="st-float">`quant_model_weights*.safetensors`</span>** |
| 204 | 239 | ||
| 205 | | 张量名 | 数据类型 | 说明 | | 240 | | 张量名 | 数据类型 | 说明 | |
| 206 | | --- | --- | --- | | 241 | | --- | --- | --- | |
| 207 | | `{prefix}.weight` | float16 / bfloat16 | 原始浮点权重 | | 242 | | `{prefix}.weight` | float16 / bfloat16 | 原始浮点权重 | |
| 208 | | `{prefix}.bias` | float16 / bfloat16 | 偏置(可选) | | 243 | | `{prefix}.bias` | float16 / bfloat16 | 偏置(可选) | |
| 209 | 244 | ||
| 210 | -#### W16A16S | 245 | +### 6.2 W16A16S |
| 246 | +**<span id="desc-w16a16s">quant_model_description.json</span>** | ||
| 211 | 247 | ||
| 212 | -##### <span id="desc-w16a16s">quant_model_description.json</span> | ||
| 213 | 248 | ||
| 214 | | 描述键 | 取值 | 说明 | | 249 | | 描述键 | 取值 | 说明 | |
| 215 | | --- | --- | --- | | 250 | | --- | --- | --- | |
| 216 | | `{prefix}.weight` | `"W16A16S"` | 稀疏权重 | | 251 | | `{prefix}.weight` | `"W16A16S"` | 稀疏权重 | |
| 217 | | `{prefix}.scale` | `"W16A16S"` | 稀疏缩放因子 | | 252 | | `{prefix}.scale` | `"W16A16S"` | 稀疏缩放因子 | |
| 218 | 253 | ||
| 219 | -##### <span id="st-w16a16s">quant_model_weights*.safetensors</span> | 254 | +**<span id="st-w16a16s">`quant_model_weights*.safetensors`</span>** |
| 255 | + | ||
| 220 | 256 | ||
| 221 | | 张量名 | 数据类型 | 说明 | | 257 | | 张量名 | 数据类型 | 说明 | |
| 222 | | --- | --- | --- | | 258 | | --- | --- | --- | |
| 223 | | `{prefix}.weight` | float16 / bfloat16 | 稀疏处理后的权重 | | 259 | | `{prefix}.weight` | float16 / bfloat16 | 稀疏处理后的权重 | |
| 224 | | `{prefix}.scale` | float16 / bfloat16 | 缩放因子 | | 260 | | `{prefix}.scale` | float16 / bfloat16 | 缩放因子 | |
| 225 | 261 | ||
| 226 | -#### W8A8 | 262 | +### 6.3 W8A8 |
| 227 | - | 263 | +**<span id="desc-w8a8">quant_model_description.json</span>** |
| 228 | -##### <span id="desc-w8a8">quant_model_description.json</span> | ||
| 229 | 264 | ||
| 230 | 同一 Linear 下下列键共享类型 `"W8A8"`(`bias` 若保留浮点则可标 `"FLOAT"`): | 265 | 同一 Linear 下下列键共享类型 `"W8A8"`(`bias` 若保留浮点则可标 `"FLOAT"`): |
| 231 | 266 | ||
| @@ -238,7 +273,8 @@ AscendV1 **均可落盘**下表中的格式枚举;下表描述的是产物能 | |||
| 238 | | `{prefix}.deq_scale` | `"W8A8"` | 综合反量化 scale | | 273 | | `{prefix}.deq_scale` | `"W8A8"` | 综合反量化 scale | |
| 239 | | `{prefix}.bias` | `"FLOAT"` 或 `"W8A8"` | 原始浮点偏置(可选) | | 274 | | `{prefix}.bias` | `"FLOAT"` 或 `"W8A8"` | 原始浮点偏置(可选) | |
| 240 | 275 | ||
| 241 | -##### <span id="st-w8a8">quant_model_weights*.safetensors</span> | 276 | +**<span id="st-w8a8">`quant_model_weights*.safetensors`</span>** |
| 277 | + | ||
| 242 | 278 | ||
| 243 | | 张量名 | 数据类型 | 说明 | | 279 | | 张量名 | 数据类型 | 说明 | |
| 244 | | --- | --- | --- | | 280 | | --- | --- | --- | |
| @@ -249,9 +285,9 @@ AscendV1 **均可落盘**下表中的格式枚举;下表描述的是产物能 | |||
| 249 | | `{prefix}.deq_scale` | int64 / float32 | 综合反量化 scale(bfloat16 模型多为 float32,否则常按算子约定以 int64 位型存储) | | 285 | | `{prefix}.deq_scale` | int64 / float32 | 综合反量化 scale(bfloat16 模型多为 float32,否则常按算子约定以 int64 位型存储) | |
| 250 | | `{prefix}.bias` | float32 | 原始浮点偏置(可选) | | 286 | | `{prefix}.bias` | float32 | 原始浮点偏置(可选) | |
| 251 | 287 | ||
| 252 | -#### W8A8_DYNAMIC | 288 | +### 6.4 W8A8_DYNAMIC |
| 289 | +**<span id="desc-w8a8-dynamic">quant_model_description.json</span>** | ||
| 253 | 290 | ||
| 254 | -##### <span id="desc-w8a8-dynamic">quant_model_description.json</span> | ||
| 255 | 291 | ||
| 256 | | 描述键 | 取值 | 说明 | | 292 | | 描述键 | 取值 | 说明 | |
| 257 | | --- | --- | --- | | 293 | | --- | --- | --- | |
| @@ -262,7 +298,8 @@ AscendV1 **均可落盘**下表中的格式枚举;下表描述的是产物能 | |||
| 262 | 298 | ||
| 263 | 激活动态参数不落盘,故 description 中无 `input_scale` / `input_offset` 等激活静态键。 | 299 | 激活动态参数不落盘,故 description 中无 `input_scale` / `input_offset` 等激活静态键。 |
| 264 | 300 | ||
| 265 | -##### <span id="st-w8a8-dynamic">quant_model_weights*.safetensors</span> | 301 | +**<span id="st-w8a8-dynamic">`quant_model_weights*.safetensors`</span>** |
| 302 | + | ||
| 266 | 303 | ||
| 267 | | 张量名 | 数据类型 | 说明 | | 304 | | 张量名 | 数据类型 | 说明 | |
| 268 | | --- | --- | --- | | 305 | | --- | --- | --- | |
| @@ -273,9 +310,9 @@ AscendV1 **均可落盘**下表中的格式枚举;下表描述的是产物能 | |||
| 273 | 310 | ||
| 274 | 激活量化参数在推理时动态计算,**不写入**权重文件。 | 311 | 激活量化参数在推理时动态计算,**不写入**权重文件。 |
| 275 | 312 | ||
| 276 | -#### W8A8_MIX | 313 | +### 6.5 W8A8_MIX |
| 314 | +**<span id="desc-w8a8-mix">quant_model_description.json</span>** | ||
| 277 | 315 | ||
| 278 | -##### <span id="desc-w8a8-mix">quant_model_description.json</span> | ||
| 279 | 316 | ||
| 280 | | 描述键 | 取值 | 说明 | | 317 | | 描述键 | 取值 | 说明 | |
| 281 | | --- | --- | --- | | 318 | | --- | --- | --- | |
| @@ -288,7 +325,7 @@ AscendV1 **均可落盘**下表中的格式枚举;下表描述的是产物能 | |||
| 288 | | `{prefix}.weight_offset` | `"W8A8_MIX"` | 权重量化 zero-point | | 325 | | `{prefix}.weight_offset` | `"W8A8_MIX"` | 权重量化 zero-point | |
| 289 | | `{prefix}.bias` | `"FLOAT"` 或 `"W8A8_MIX"` | 偏置(可选) | | 326 | | `{prefix}.bias` | `"FLOAT"` 或 `"W8A8_MIX"` | 偏置(可选) | |
| 290 | 327 | ||
| 291 | -##### <span id="st-w8a8-mix">quant_model_weights*.safetensors</span> | 328 | +**<span id="st-w8a8-mix">`quant_model_weights*.safetensors`</span>** |
| 292 | 329 | ||
| 293 | W8A8 静态激活相关字段与 W8A8_DYNAMIC 权重量化字段的并集: | 330 | W8A8 静态激活相关字段与 W8A8_DYNAMIC 权重量化字段的并集: |
| 294 | 331 | ||
| @@ -303,9 +340,9 @@ W8A8 静态激活相关字段与 W8A8_DYNAMIC 权重量化字段的并集: | |||
| 303 | | `{prefix}.weight_offset` | float32 | 权重量化 zero-point | | 340 | | `{prefix}.weight_offset` | float32 | 权重量化 zero-point | |
| 304 | | `{prefix}.bias` | float32 | 原始浮点偏置(可选) | | 341 | | `{prefix}.bias` | float32 | 原始浮点偏置(可选) | |
| 305 | 342 | ||
| 306 | -#### W8A16 | 343 | +### 6.6 W8A16 |
| 344 | +**<span id="desc-w8a16">quant_model_description.json</span>** | ||
| 307 | 345 | ||
| 308 | -##### <span id="desc-w8a16">quant_model_description.json</span> | ||
| 309 | 346 | ||
| 310 | | 描述键 | 取值 | 说明 | | 347 | | 描述键 | 取值 | 说明 | |
| 311 | | --- | --- | --- | | 348 | | --- | --- | --- | |
| @@ -314,7 +351,8 @@ W8A8 静态激活相关字段与 W8A8_DYNAMIC 权重量化字段的并集: | |||
| 314 | | `{prefix}.weight_offset` | `"W8A16"` | 权重量化 zero-point | | 351 | | `{prefix}.weight_offset` | `"W8A16"` | 权重量化 zero-point | |
| 315 | | `{prefix}.bias` | `"FLOAT"` 或 `"W8A16"` | 偏置(可选) | | 352 | | `{prefix}.bias` | `"FLOAT"` 或 `"W8A16"` | 偏置(可选) | |
| 316 | 353 | ||
| 317 | -##### <span id="st-w8a16">quant_model_weights*.safetensors</span> | 354 | +**<span id="st-w8a16">`quant_model_weights*.safetensors`</span>** |
| 355 | + | ||
| 318 | 356 | ||
| 319 | | 张量名 | 数据类型 | 说明 | | 357 | | 张量名 | 数据类型 | 说明 | |
| 320 | | --- | --- | --- | | 358 | | --- | --- | --- | |
| @@ -323,9 +361,9 @@ W8A8 静态激活相关字段与 W8A8_DYNAMIC 权重量化字段的并集: | |||
| 323 | | `{prefix}.weight_offset` | float32 | 权重量化 zero-point | | 361 | | `{prefix}.weight_offset` | float32 | 权重量化 zero-point | |
| 324 | | `{prefix}.bias` | float32 | 原始浮点偏置(可选) | | 362 | | `{prefix}.bias` | float32 | 原始浮点偏置(可选) | |
| 325 | 363 | ||
| 326 | -#### W4A4_DYNAMIC | 364 | +### 6.7 W4A4_DYNAMIC |
| 365 | +**<span id="desc-w4a4-dynamic">quant_model_description.json</span>** | ||
| 327 | 366 | ||
| 328 | -##### <span id="desc-w4a4-dynamic">quant_model_description.json</span> | ||
| 329 | 367 | ||
| 330 | | 描述键 | 取值 | 说明 | | 368 | | 描述键 | 取值 | 说明 | |
| 331 | | --- | --- | --- | | 369 | | --- | --- | --- | |
| @@ -334,7 +372,8 @@ W8A8 静态激活相关字段与 W8A8_DYNAMIC 权重量化字段的并集: | |||
| 334 | | `{prefix}.weight_offset` | `"W4A4_DYNAMIC"` | 权重量化 zero-point | | 372 | | `{prefix}.weight_offset` | `"W4A4_DYNAMIC"` | 权重量化 zero-point | |
| 335 | | `{prefix}.bias` | `"FLOAT"` 或 `"W4A4_DYNAMIC"` | 偏置(可选) | | 373 | | `{prefix}.bias` | `"FLOAT"` 或 `"W4A4_DYNAMIC"` | 偏置(可选) | |
| 336 | 374 | ||
| 337 | -##### <span id="st-w4a4-dynamic">quant_model_weights*.safetensors</span> | 375 | +**<span id="st-w4a4-dynamic">`quant_model_weights*.safetensors`</span>** |
| 376 | + | ||
| 338 | 377 | ||
| 339 | | 张量名 | 数据类型 | 说明 | | 378 | | 张量名 | 数据类型 | 说明 | |
| 340 | | --- | --- | --- | | 379 | | --- | --- | --- | |
| @@ -345,9 +384,9 @@ W8A8 静态激活相关字段与 W8A8_DYNAMIC 权重量化字段的并集: | |||
| 345 | 384 | ||
| 346 | 激活量化参数推理时动态计算,不写入权重文件。 | 385 | 激活量化参数推理时动态计算,不写入权重文件。 |
| 347 | 386 | ||
| 348 | -#### W4A8_DYNAMIC | 387 | +### 6.8 W4A8_DYNAMIC |
| 388 | +**<span id="desc-w4a8-dynamic">quant_model_description.json</span>** | ||
| 349 | 389 | ||
| 350 | -##### <span id="desc-w4a8-dynamic">quant_model_description.json</span> | ||
| 351 | 390 | ||
| 352 | | 描述键 | 取值 | 说明 | | 391 | | 描述键 | 取值 | 说明 | |
| 353 | | --- | --- | --- | | 392 | | --- | --- | --- | |
| @@ -357,7 +396,8 @@ W8A8 静态激活相关字段与 W8A8_DYNAMIC 权重量化字段的并集: | |||
| 357 | | `{prefix}.scale_bias` | `"W4A8_DYNAMIC"` | 反量化额外调整因子 | | 396 | | `{prefix}.scale_bias` | `"W4A8_DYNAMIC"` | 反量化额外调整因子 | |
| 358 | | `{prefix}.bias` | `"FLOAT"` 或 `"W4A8_DYNAMIC"` | 偏置(可选) | | 397 | | `{prefix}.bias` | `"FLOAT"` 或 `"W4A8_DYNAMIC"` | 偏置(可选) | |
| 359 | 398 | ||
| 360 | -##### <span id="st-w4a8-dynamic">quant_model_weights*.safetensors</span> | 399 | +**<span id="st-w4a8-dynamic">`quant_model_weights*.safetensors`</span>** |
| 400 | + | ||
| 361 | 401 | ||
| 362 | | 张量名 | 数据类型 | 说明 | | 402 | | 张量名 | 数据类型 | 说明 | |
| 363 | | --- | --- | --- | | 403 | | --- | --- | --- | |
| @@ -367,9 +407,9 @@ W8A8 静态激活相关字段与 W8A8_DYNAMIC 权重量化字段的并集: | |||
| 367 | | `{prefix}.scale_bias` | float32 | 反量化额外调整因子 | | 407 | | `{prefix}.scale_bias` | float32 | 反量化额外调整因子 | |
| 368 | | `{prefix}.bias` | float32 | 原始浮点偏置(可选) | | 408 | | `{prefix}.bias` | float32 | 原始浮点偏置(可选) | |
| 369 | 409 | ||
| 370 | -#### WFP8AFP8_DYNAMIC | 410 | +### 6.9 WFP8AFP8_DYNAMIC |
| 411 | +**<span id="desc-wfp8afp8-dynamic">quant_model_description.json</span>** | ||
| 371 | 412 | ||
| 372 | -##### <span id="desc-wfp8afp8-dynamic">quant_model_description.json</span> | ||
| 373 | 413 | ||
| 374 | | 描述键 | 取值 | 说明 | | 414 | | 描述键 | 取值 | 说明 | |
| 375 | | --- | --- | --- | | 415 | | --- | --- | --- | |
| @@ -378,7 +418,8 @@ W8A8 静态激活相关字段与 W8A8_DYNAMIC 权重量化字段的并集: | |||
| 378 | | `{prefix}.weight_offset` | `"WFP8AFP8_DYNAMIC"` | 权重量化 zero-point | | 418 | | `{prefix}.weight_offset` | `"WFP8AFP8_DYNAMIC"` | 权重量化 zero-point | |
| 379 | | `{prefix}.bias` | `"FLOAT"` 或 `"WFP8AFP8_DYNAMIC"` | 偏置(可选) | | 419 | | `{prefix}.bias` | `"FLOAT"` 或 `"WFP8AFP8_DYNAMIC"` | 偏置(可选) | |
| 380 | 420 | ||
| 381 | -##### <span id="st-wfp8afp8-dynamic">quant_model_weights*.safetensors</span> | 421 | +**<span id="st-wfp8afp8-dynamic">`quant_model_weights*.safetensors`</span>** |
| 422 | + | ||
| 382 | 423 | ||
| 383 | | 张量名 | 数据类型 | 说明 | | 424 | | 张量名 | 数据类型 | 说明 | |
| 384 | | --- | --- | --- | | 425 | | --- | --- | --- | |
| @@ -387,9 +428,8 @@ W8A8 静态激活相关字段与 W8A8_DYNAMIC 权重量化字段的并集: | |||
| 387 | | `{prefix}.weight_offset` | float32 | 权重量化 zero-point | | 428 | | `{prefix}.weight_offset` | float32 | 权重量化 zero-point | |
| 388 | | `{prefix}.bias` | float32 | 原始浮点偏置(可选) | | 429 | | `{prefix}.bias` | float32 | 原始浮点偏置(可选) | |
| 389 | 430 | ||
| 390 | -#### W8A8_MXFP8 / W4A8_MXFP / W4A4_MXFP4 | 431 | +### 6.10 W8A8_MXFP8 / W4A8_MXFP / W4A4_MXFP4 |
| 391 | - | 432 | +**<span id="desc-mxfp">quant_model_description.json</span>** |
| 392 | -##### <span id="desc-mxfp">quant_model_description.json</span> | ||
| 393 | 433 | ||
| 394 | 描述键取值分别为 `"W8A8_MXFP8"` / `"W4A8_MXFP"` / `"W4A4_MXFP4"`(与具体枚举一致): | 434 | 描述键取值分别为 `"W8A8_MXFP8"` / `"W4A8_MXFP"` / `"W4A4_MXFP4"`(与具体枚举一致): |
| 395 | 435 | ||
| @@ -399,7 +439,8 @@ W8A8 静态激活相关字段与 W8A8_DYNAMIC 权重量化字段的并集: | |||
| 399 | | `{prefix}.weight_scale` | 对应 MXFP 枚举 | block-wise scale | | 439 | | `{prefix}.weight_scale` | 对应 MXFP 枚举 | block-wise scale | |
| 400 | | `{prefix}.bias` | `"FLOAT"` 或对应枚举 | 偏置(可选) | | 440 | | `{prefix}.bias` | `"FLOAT"` 或对应枚举 | 偏置(可选) | |
| 401 | 441 | ||
| 402 | -##### <span id="st-mxfp">quant_model_weights*.safetensors</span> | 442 | +**<span id="st-mxfp">`quant_model_weights*.safetensors`</span>** |
| 443 | + | ||
| 403 | 444 | ||
| 404 | | 张量名 | 数据类型 | 说明 | | 445 | | 张量名 | 数据类型 | 说明 | |
| 405 | | --- | --- | --- | | 446 | | --- | --- | --- | |
| @@ -407,9 +448,8 @@ W8A8 静态激活相关字段与 W8A8_DYNAMIC 权重量化字段的并集: | |||
| 407 | | `{prefix}.weight_scale` | uint8 | block-wise scale(导出时常见 **+127 偏移**后存储,范围 0~255) | | 448 | | `{prefix}.weight_scale` | uint8 | block-wise scale(导出时常见 **+127 偏移**后存储,范围 0~255) | |
| 408 | | `{prefix}.bias` | float32 | 原始浮点偏置(可选) | | 449 | | `{prefix}.bias` | float32 | 原始浮点偏置(可选) | |
| 409 | 450 | ||
| 410 | -#### W4A4_MXFP4_DUALSCALE | 451 | +### 6.11 W4A4_MXFP4_DUALSCALE |
| 411 | - | 452 | +**<span id="desc-mxfp-dualscale">quant_model_description.json</span>** |
| 412 | -##### <span id="desc-mxfp-dualscale">quant_model_description.json</span> | ||
| 413 | 453 | ||
| 414 | 在 [MXFP 描述字段](#desc-mxfp)基础上,取值均为 `"W4A4_MXFP4_DUALSCALE"`,并增加: | 454 | 在 [MXFP 描述字段](#desc-mxfp)基础上,取值均为 `"W4A4_MXFP4_DUALSCALE"`,并增加: |
| 415 | 455 | ||
| @@ -417,7 +457,7 @@ W8A8 静态激活相关字段与 W8A8_DYNAMIC 权重量化字段的并集: | |||
| 417 | | --- | --- | --- | | 457 | | --- | --- | --- | |
| 418 | | `{prefix}.weight_dual_scale` | `"W4A4_MXFP4_DUALSCALE"` | 第二路 scale | | 458 | | `{prefix}.weight_dual_scale` | `"W4A4_MXFP4_DUALSCALE"` | 第二路 scale | |
| 419 | 459 | ||
| 420 | -##### <span id="st-mxfp-dualscale">quant_model_weights*.safetensors</span> | 460 | +**<span id="st-mxfp-dualscale">`quant_model_weights*.safetensors`</span>** |
| 421 | 461 | ||
| 422 | 在 [MXFP 权重字段](#st-mxfp)基础上额外包含: | 462 | 在 [MXFP 权重字段](#st-mxfp)基础上额外包含: |
| 423 | 463 | ||
| @@ -425,9 +465,9 @@ W8A8 静态激活相关字段与 W8A8_DYNAMIC 权重量化字段的并集: | |||
| 425 | | --- | --- | --- | | 465 | | --- | --- | --- | |
| 426 | | `{prefix}.weight_dual_scale` | float32 | 第二路 scale | | 466 | | `{prefix}.weight_dual_scale` | float32 | 第二路 scale | |
| 427 | 467 | ||
| 428 | -#### C8 | 468 | +### 6.12 C8 |
| 469 | +**<span id="desc-c8">quant_model_description.json</span>** | ||
| 429 | 470 | ||
| 430 | -##### <span id="desc-c8">quant_model_description.json</span> | ||
| 431 | 471 | ||
| 432 | | 描述键 / 全局字段 | 取值 | 说明 | | 472 | | 描述键 / 全局字段 | 取值 | 说明 | |
| 433 | | --- | --- | --- | | 473 | | --- | --- | --- | |
| @@ -435,7 +475,8 @@ W8A8 静态激活相关字段与 W8A8_DYNAMIC 权重量化字段的并集: | |||
| 435 | | `{prefix}.kv_cache_offset` | `"C8"` | KV Cache zero-point | | 475 | | `{prefix}.kv_cache_offset` | `"C8"` | KV Cache zero-point | |
| 436 | | `kv_quant_type` / `kv_cache_type` | 如 `"C8"` / `"KV8"` | 全局 KV 量化类型(与导出实现一致时写入) | | 476 | | `kv_quant_type` / `kv_cache_type` | 如 `"C8"` / `"KV8"` | 全局 KV 量化类型(与导出实现一致时写入) | |
| 437 | 477 | ||
| 438 | -##### <span id="st-c8">quant_model_weights*.safetensors</span> | 478 | +**<span id="st-c8">`quant_model_weights*.safetensors`</span>** |
| 479 | + | ||
| 439 | 480 | ||
| 440 | | 张量名 | 数据类型 | 说明 | | 481 | | 张量名 | 数据类型 | 说明 | |
| 441 | | --- | --- | --- | | 482 | | --- | --- | --- | |
| @@ -444,25 +485,27 @@ W8A8 静态激活相关字段与 W8A8_DYNAMIC 权重量化字段的并集: | |||
| 444 | 485 | ||
| 445 | 具体 `{prefix}` 随注意力 KV 相关模块命名而定。 | 486 | 具体 `{prefix}` 随注意力 KV 相关模块命名而定。 |
| 446 | 487 | ||
| 447 | -#### FAQuant | 488 | +### 6.13 FAQuant |
| 448 | - | ||
| 449 | > **命名约定**:本节 `{prefix}` 指**注意力模块**全名(如 `model.layers.0.self_attn`),与上文 Linear 的 `{prefix}`(如 `...self_attn.q_proj`)不同。AscendV1 经 `export_fa_quant_params` 按 Q / K / V **分别**写出 `fa_q` / `fa_k` / `fa_v` 子键,而非单一的 `{prefix}.scale` / `{prefix}.offset`。 | 489 | > **命名约定**:本节 `{prefix}` 指**注意力模块**全名(如 `model.layers.0.self_attn`),与上文 Linear 的 `{prefix}`(如 `...self_attn.q_proj`)不同。AscendV1 经 `export_fa_quant_params` 按 Q / K / V **分别**写出 `fa_q` / `fa_k` / `fa_v` 子键,而非单一的 `{prefix}.scale` / `{prefix}.offset`。 |
| 450 | 490 | ||
| 451 | -##### <span id="desc-faquant">quant_model_description.json</span> | 491 | +**<span id="desc-faquant">quant_model_description.json</span>** |
| 492 | + | ||
| 452 | 493 | ||
| 453 | | 描述键 / 全局字段 | 取值 | 说明 | | 494 | | 描述键 / 全局字段 | 取值 | 说明 | |
| 454 | | --- | --- | --- | | 495 | | --- | --- | --- | |
| 455 | -| `{prefix}.fa_q.scale` | `"FAQuant"` | Q 激活量化 scale | | 496 | +| `{prefix}.fa_q.scale` | `"FAQuant"` | Q 激活量化 scale(仅静态 per-head 路径写出) | |
| 456 | -| `{prefix}.fa_q.offset` | `"FAQuant"` | Q 激活量化 zero-point | | 497 | +| `{prefix}.fa_q.offset` | `"FAQuant"` | Q 激活量化 zero-point(仅静态 per-head 路径写出) | |
| 457 | -| `{prefix}.fa_k.scale` | `"FAQuant"` | K 激活量化 scale | | 498 | +| `{prefix}.fa_k.scale` | `"FAQuant"` | K 激活量化 scale(仅静态 per-head 路径写出) | |
| 458 | -| `{prefix}.fa_k.offset` | `"FAQuant"` | K 激活量化 zero-point | | 499 | +| `{prefix}.fa_k.offset` | `"FAQuant"` | K 激活量化 zero-point(仅静态 per-head 路径写出) | |
| 459 | -| `{prefix}.fa_v.scale` | `"FAQuant"` | V 激活量化 scale | | 500 | +| `{prefix}.fa_v.scale` | `"FAQuant"` | V 激活量化 scale(仅静态 per-head 路径写出) | |
| 460 | -| `{prefix}.fa_v.offset` | `"FAQuant"` | V 激活量化 zero-point | | 501 | +| `{prefix}.fa_v.offset` | `"FAQuant"` | V 激活量化 zero-point(仅静态 per-head 路径写出) | |
| 461 | -| `fa_quant_type` | `"FAQuant"` | 全局 FA 量化类型(启用 FA 量化时写入) | | 502 | +| `{prefix}.quant_type` | string | 该注意力层 FA 策略串,由 AscendV1 按 Q/K/V 的 dtype 与 STATIC/DYNAMIC 拼装(如 `INT8`、`FP8_DYNAMIC`) | |
| 503 | +| `fa_quant_type` | string | 全局 FA 量化类型(启用 FA 量化时写入,如 `"FAQuant"`) | | ||
| 462 | 504 | ||
| 463 | -动态量化路径下,对应激活可不落盘 `scale` / `offset`(见 FA3 `quant_type` 约定);静态 per-head 路径通常 Q/K/V 六键齐全。 | 505 | +动态量化路径(激活 `scope` 为 `per_token` / `per_block`)下,对应激活**不落盘** `scale` / `offset`,仅更新上述 `{prefix}.quant_type`;静态 per-head 路径通常 Q/K/V 六键齐全。该落盘差异由 AscendV1 导出逻辑决定,与《[FA3 Quant](../../quantization_algorithms/fa3_quant/term_fa3_quant.md)》算法配置(`qconfig` / `details`)配合使用。 |
| 506 | + | ||
| 507 | +**<span id="st-faquant">`quant_model_weights*.safetensors`</span>** | ||
| 464 | 508 | ||
| 465 | -##### <span id="st-faquant">quant_model_weights*.safetensors</span> | ||
| 466 | 509 | ||
| 467 | | 张量名 | 数据类型 | 说明 | | 510 | | 张量名 | 数据类型 | 说明 | |
| 468 | | --- | --- | --- | | 511 | | --- | --- | --- | |
| @@ -473,30 +516,33 @@ W8A8 静态激活相关字段与 W8A8_DYNAMIC 权重量化字段的并集: | |||
| 473 | | `{prefix}.fa_v.scale` | float16 / bfloat16 | V 的 per-head scale | | 516 | | `{prefix}.fa_v.scale` | float16 / bfloat16 | V 的 per-head scale | |
| 474 | | `{prefix}.fa_v.offset` | int8 | V 的 per-head zero-point | | 517 | | `{prefix}.fa_v.offset` | int8 | V 的 per-head zero-point | |
| 475 | 518 | ||
| 476 | -### 2.6 适用场景与限制 | 519 | +--- |
| 477 | 520 | ||
| 478 | -#### 2.6.1 适用场景 | 521 | +## 7. 适用场景与限制 |
| 522 | + | ||
| 523 | +### 7.1 适用场景 | ||
| 479 | 524 | ||
| 480 | - 昇腾侧 vLLM Ascend、SGLang、MindIE 部署 LLM / 多模态理解量化权重。 | 525 | - 昇腾侧 vLLM Ascend、SGLang、MindIE 部署 LLM / 多模态理解量化权重。 |
| 481 | - 需要在同一套描述文件中承载多种量化类型枚举的落盘。 | 526 | - 需要在同一套描述文件中承载多种量化类型枚举的落盘。 |
| 482 | 527 | ||
| 483 | -#### 2.6.2 使用限制 | 528 | +### 7.2 使用限制 |
| 484 | 529 | ||
| 485 | - 不适用于仅面向 HF `quantization_config` / compressed-tensors 的通用 vLLM 路径。 | 530 | - 不适用于仅面向 HF `quantization_config` / compressed-tensors 的通用 vLLM 路径。 |
| 486 | - 具体量化模式是否可用取决于 CANN、推理框架版本与模型最佳实践。 | 531 | - 具体量化模式是否可用取决于 CANN、推理框架版本与模型最佳实践。 |
| 487 | -- 本词条交付件分两列说明:`quant_model_description.json` 键值与 `quant_model_weights*.safetensors` 张量字段。 | ||
| 488 | 532 | ||
| 489 | -## 3. 关联流程 | 533 | +--- |
| 490 | 534 | ||
| 491 | -| 流程 | 说明 | | 535 | +## 8. 关联流程 |
| 492 | -| --- | --- | | ||
| 493 | -| 《[AscendV1 使用指南](ascendv1_usage.md)》 | 确认模式支持、配置与执行 | | ||
| 494 | -| 《[一键量化使用指南](../../../user_guide/usage_quick_quantization.md)》 | 命令与配置协议 | | ||
| 495 | -| 《[量化格式接入指南](../iformat_integration_guide.md)》 | 新格式开发对照 | | ||
| 496 | 536 | ||
| 497 | -## 4. 关联词条 | 537 | +- 《[AscendV1 使用指南](ascendv1_usage.md)》:确认模式支持、配置与执行。 |
| 538 | +- 《[一键量化使用指南](../../../user_guide/usage_quick_quantization.md)》:命令与配置协议。 | ||
| 539 | +- 《[量化格式接入指南](../iformat_integration_guide.md)》:新格式开发对照。 | ||
| 498 | 540 | ||
| 499 | -- [量化格式](../README.md):上位概念,本词条所属目录。 | 541 | +--- |
| 500 | -- [compressed-tensors](../compressed_tensors/term_compressed_tensors.md):其他,同属量化格式的并列落盘协议。 | 542 | + |
| 501 | -- [MindIE-SD](../mindie_sd/term_mindie_sd.md):其他,同属量化格式的并列落盘协议。 | 543 | +## 9. 关联词条 |
| 544 | + | ||
| 545 | +- [量化格式 量化术语百科词条](../README.md):上位概念,本词条所属目录。 | ||
| 546 | +- [compressed-tensors 量化格式 量化术语百科词条](../compressed_tensors/term_compressed_tensors.md):其他,同属量化格式的并列落盘协议。 | ||
| 547 | +- [MindIE-SD 量化格式 量化术语百科词条](../mindie_sd/term_mindie_sd.md):其他,同属量化格式的并列落盘协议。 | ||
| 502 | - [量化模式](../../quantization_mode/README.md):配套术语,本格式交付件枚举对应各量化模式。 | 548 | - [量化模式](../../quantization_mode/README.md):配套术语,本格式交付件枚举对应各量化模式。 |
| @@ -1,6 +1,6 @@ | |||
| 1 | # compressed-tensors 使用指南 | 1 | # compressed-tensors 使用指南 |
| 2 | 2 | ||
| 3 | -本指南说明如何在 msModelSlim 中选用 **compressed-tensors** 量化格式,按 **确认模式支持 → 配置 → 执行** 完成落盘,并将产物部署到 vLLM 等支持 HuggingFace `quantization_config` 的推理框架。格式字段与 Preset 见《[compressed-tensors](term_compressed_tensors.md)》;一键量化命令总览见《[一键量化使用指南](../../../user_guide/usage_quick_quantization.md)》。 | 3 | +本指南说明如何在 msModelSlim 中选用 **compressed-tensors** 量化格式,按 **确认模式支持 → 配置 save → 执行量化并核对产物** 完成落盘,并将产物部署到 vLLM 等支持 HuggingFace `quantization_config` 的推理框架。格式字段与 Preset 见《[compressed-tensors](term_compressed_tensors.md)》;一键量化命令总览见《[一键量化使用指南](../../../user_guide/usage_quick_quantization.md)》。 |
| 4 | 4 | ||
| 5 | ## 1. 适用范围 | 5 | ## 1. 适用范围 |
| 6 | 6 | ||
| @@ -24,19 +24,17 @@ | |||
| 24 | 24 | ||
| 25 | | 类型 | 名称 | 来源或保存位置 | 格式或约束 | 验收方式 | | 25 | | 类型 | 名称 | 来源或保存位置 | 格式或约束 | 验收方式 | |
| 26 | | --- | --- | --- | --- | --- | | 26 | | --- | --- | --- | --- | --- | |
| 27 | -| 输入 | 浮点模型目录 | 本地或 ModelScope/HF | 可被目标 Transformers 版本加载 | `from_pretrained` 冒烟通过 | | 27 | +| 输入 | 浮点模型目录 | 本地或 ModelScope/HF | 可被目标 Transformers 版本加载 | `from_pretrained` 可成功加载 | |
| 28 | -| 输入 | 量化 YAML / 最佳实践 | 最佳实践库或自定义 `config_path` | 含 `spec.save` 且 `type` 为 `compressed_tensors` | 字段通过配置协议校验 | | 28 | +| 输入 | 量化 YAML / 最佳实践 | 最佳实践库或自定义 `--config` | 含 `spec.save` 且 `type` 为 `compressed_tensors` | 字段通过配置协议校验 | |
| 29 | | 交付件 | compressed-tensors 权重目录 | `${SAVE_PATH}` | 含注入 `quantization_config` 的 `config.json` 与 `model*.safetensors` | 见《[compressed-tensors](term_compressed_tensors.md#export-artifacts)》导出产物 | | 29 | | 交付件 | compressed-tensors 权重目录 | `${SAVE_PATH}` | 含注入 `quantization_config` 的 `config.json` 与 `model*.safetensors` | 见《[compressed-tensors](term_compressed_tensors.md#export-artifacts)》导出产物 | |
| 30 | 30 | ||
| 31 | ## 4. 流程总览 | 31 | ## 4. 流程总览 |
| 32 | 32 | ||
| 33 | ```mermaid | 33 | ```mermaid |
| 34 | flowchart LR | 34 | flowchart LR |
| 35 | - adapt[确认模式支持] --> config[配置save] --> run[执行量化并核对产物] | 35 | + adapt[确认模式支持] --> config[配置 save] --> run[执行量化并核对产物] |
| 36 | ``` | 36 | ``` |
| 37 | 37 | ||
| 38 | -各阶段对应下文步骤 1~3:**确认**目标推理框架是否支持所选量化模式、**配置** `compressed_tensors`、**执行**一键量化并核对交付件。 | ||
| 39 | - | ||
| 40 | ## 5. 操作步骤 | 38 | ## 5. 操作步骤 |
| 41 | 39 | ||
| 42 | ### 步骤 1:确认目标推理框架支持所选量化模式 | 40 | ### 步骤 1:确认目标推理框架支持所选量化模式 |
| @@ -46,7 +44,7 @@ flowchart LR | |||
| 46 | **操作**: | 44 | **操作**: |
| 47 | 45 | ||
| 48 | 1. 确认目标框架读取 `config.json` 中 `quantization_config.quant_method == "compressed-tensors"`(或显式 `quantization="compressed-tensors"`),而非 Ascend 私有加载路径。 | 46 | 1. 确认目标框架读取 `config.json` 中 `quantization_config.quant_method == "compressed-tensors"`(或显式 `quantization="compressed-tensors"`),而非 Ascend 私有加载路径。 |
| 49 | -2. 对照《[compressed-tensors](term_compressed_tensors.md#mode-support)》「量化模式支持情况」,确认当前仅 W8A8 Static / Dynamic 有导出 handler;不支持分布式导出与 KV Cache scheme。 | 47 | +2. 对照《[compressed-tensors](term_compressed_tensors.md#mode-support)》量化模式支持情况,确认当前仅 W8A8 Static / Dynamic 有导出 handler;不支持分布式导出与 KV Cache scheme。 |
| 50 | 3. 规划推理启动参数:避免误用 `--quantization ascend`。 | 48 | 3. 规划推理启动参数:避免误用 `--quantization ascend`。 |
| 51 | 49 | ||
| 52 | **输出**:明确的目标框架、Preset(W8A8 Static / Dynamic)与加载参数说明。 | 50 | **输出**:明确的目标框架、Preset(W8A8 Static / Dynamic)与加载参数说明。 |
| @@ -79,7 +77,7 @@ spec: | |||
| 79 | 77 | ||
| 80 | ### 步骤 3:执行量化并核对产物 | 78 | ### 步骤 3:执行量化并核对产物 |
| 81 | 79 | ||
| 82 | -**目标**:生成可被 vLLM 等加载的权重并完成冒烟核对。 | 80 | +**目标**:生成可被 vLLM 等加载的权重并完成加载与推理验证。 |
| 83 | 81 | ||
| 84 | **操作**: | 82 | **操作**: |
| 85 | 83 | ||
| @@ -115,20 +113,20 @@ spec: | |||
| 115 | --save_path ${SAVE_PATH} \ | 113 | --save_path ${SAVE_PATH} \ |
| 116 | --device npu \ | 114 | --device npu \ |
| 117 | --model_type ${MODEL_TYPE} \ | 115 | --model_type ${MODEL_TYPE} \ |
| 118 | - --config_path ${CONFIG_PATH} \ | 116 | + --config ${CONFIG_PATH} \ |
| 119 | - --trust_remote_code True | 117 | + --trust_remote_code False |
| 120 | ``` | 118 | ``` |
| 121 | 119 | ||
| 122 | 3. 核对 `${SAVE_PATH}` 中至少存在: | 120 | 3. 核对 `${SAVE_PATH}` 中至少存在: |
| 123 | - `config.json` 含 `quantization_config`,且 `quant_method` 为 `"compressed-tensors"` | 121 | - `config.json` 含 `quantization_config`,且 `quant_method` 为 `"compressed-tensors"` |
| 124 | - `model.safetensors` 或分片权重 + `model.safetensors.index.json` | 122 | - `model.safetensors` 或分片权重 + `model.safetensors.index.json` |
| 125 | - 自源模型复制的 HF 辅助文件齐全 | 123 | - 自源模型复制的 HF 辅助文件齐全 |
| 126 | - 目录树与字段细则见《[compressed-tensors](term_compressed_tensors.md#export-artifacts)》导出产物及「各量化模式交付件格式」。 | 124 | + 目录树与字段细则见《[compressed-tensors](term_compressed_tensors.md#export-artifacts)》导出产物及各量化模式交付件格式。 |
| 127 | -4. 使用目标推理框架加载该目录,完成 ≥1 条 generate 或 API 请求冒烟。 | 125 | +4. 使用目标推理框架加载该目录,完成至少 1 条 generate 或 API 请求,确认量化权重可正常加载且推理返回正常。该步骤为部署前的快速验证,不要求完整精度评测。 |
| 128 | 126 | ||
| 129 | -**输出**:可部署的 `${SAVE_PATH}` 目录与冒烟日志。 | 127 | +**输出**:可部署的 `${SAVE_PATH}` 目录与验证日志。 |
| 130 | 128 | ||
| 131 | -**通过条件**:无权重 shape / dtype mismatch;`quantization_config` 字段合法;冒烟返回正常。 | 129 | +**通过条件**:无权重 shape / dtype mismatch;`quantization_config` 字段合法;至少 1 条请求返回正常。 |
| 132 | 130 | ||
| 133 | ## 6. 验收条件 | 131 | ## 6. 验收条件 |
| 134 | 132 | ||
| @@ -142,11 +140,3 @@ spec: | |||
| 142 | | --- | --- | --- | | 140 | | --- | --- | --- | |
| 143 | | compressed-tensors | HF / vLLM 生态量化格式 | 《[compressed-tensors](term_compressed_tensors.md)》 | | 141 | | compressed-tensors | HF / vLLM 生态量化格式 | 《[compressed-tensors](term_compressed_tensors.md)》 | |
| 144 | | 量化格式 | 工具与推理框架的落盘协议 | 《[量化格式](../README.md)》 | | 142 | | 量化格式 | 工具与推理框架的落盘协议 | 《[量化格式](../README.md)》 | |
| 145 | - | ||
| 146 | -## 8. 接口文档列表 | ||
| 147 | - | ||
| 148 | -| 接口或能力 | 简述 | 链接 | | ||
| 149 | -| --- | --- | --- | | ||
| 150 | -| 一键量化 | 命令与配置协议 | 《[一键量化使用指南](../../../user_guide/usage_quick_quantization.md)》 | | ||
| 151 | -| compressed_tensors | save 字段 | 《[一键量化使用指南](../../../user_guide/usage_quick_quantization.md#5252-compressed_tensors)》 | | ||
| 152 | -| 格式接入 | IFormat 1-shot | 《[量化格式接入指南](../iformat_integration_guide.md)》 | | ||
| @@ -1,46 +1,47 @@ | |||
| 1 | -# compressed-tensors | 1 | +# compressed-tensors 量化格式 量化术语百科词条 |
| 2 | 2 | ||
| 3 | -> **词条类别**:量化数据格式 | 3 | +> **词条类别**:[量化数据格式](../README.md)<br> |
| 4 | -> | 4 | +> **英文名称**:compressed_tensors<br> |
| 5 | -> **英文名称**:compressed-tensors | 5 | +> **应用领域**:HuggingFace / vLLM 生态量化权重交换<br> |
| 6 | -> | 6 | +> **msModelSlim 实现**:[`msmodelslim/format/compressed_tensors_format/`](../../../../../msmodelslim/format/compressed_tensors_format/) |
| 7 | -> **应用领域**:HuggingFace / vLLM 生态量化权重交换 | 7 | + |
| 8 | -> | 8 | +--- |
| 9 | -> **msModelSlim 实现**:`msmodelslim/format/compressed_tensors_format/` | ||
| 10 | 9 | ||
| 11 | ## 1. 概述 | 10 | ## 1. 概述 |
| 12 | 11 | ||
| 13 | -compressed-tensors 是与 HuggingFace / vLLM 生态兼容的[量化格式](../README.md),字段约定遵循 [vllm-project/compressed-tensors](https://github.com/vllm-project/compressed-tensors) 规范。msModelSlim **导出时内置**该规范的结构定义,量化过程**无需**安装 `compressed-tensors` 包。核心特征是将方案写入 `config.json` → `quantization_config`,权重写入 HF 风格 safetensors。 | 12 | +compressed-tensors 是与 HuggingFace / vLLM 生态兼容的[量化格式 量化术语百科词条](../README.md),字段约定遵循 [vllm-project/compressed-tensors](https://github.com/vllm-project/compressed-tensors) 规范。msModelSlim **导出时内置**该规范的结构定义,量化过程**无需**安装 `compressed-tensors` 包。核心特征是将方案写入 `config.json` → `quantization_config`,权重写入 HF 风格 safetensors。 |
| 14 | 13 | ||
| 15 | 配置、执行与部署步骤见《[compressed-tensors 使用指南](compressed_tensors_usage.md)》。各量化模式的原理与公式见《[量化模式](../../quantization_mode/README.md)》及下文支持表中的词条链接。 | 14 | 配置、执行与部署步骤见《[compressed-tensors 使用指南](compressed_tensors_usage.md)》。各量化模式的原理与公式见《[量化模式](../../quantization_mode/README.md)》及下文支持表中的词条链接。 |
| 16 | 15 | ||
| 16 | +--- | ||
| 17 | + | ||
| 17 | ## 2. 词条介绍 | 18 | ## 2. 词条介绍 |
| 18 | 19 | ||
| 19 | ### 2.1 原理 | 20 | ### 2.1 原理 |
| 20 | 21 | ||
| 21 | -#### 2.1.1 核心思想 | 22 | +**核心思想** |
| 22 | 23 | ||
| 23 | compressed-tensors 本质上是一套**面向 HuggingFace / vLLM 生态的量化模型落盘约定**:它不执行校准或伪量化计算,而是在一键量化流水线末尾,将已量化完成的 QIR 模块转换为推理框架可直接加载的两类交付件——**注入 `config.json` 的 `quantization_config`** 与 **HF 风格权重文件** `model*.safetensors`。前者描述 `quant_method: "compressed-tensors"`、scheme(`QuantizationArgs` / `config_groups`)等元数据,供 vLLM 等按 HF 自动检测路径识别量化方案;后者按模块前缀写入 int8 / scale / zero-point 等张量。推理侧先读 `quantization_config` 确定 scheme,再按键名从 safetensors 取数。 | 24 | compressed-tensors 本质上是一套**面向 HuggingFace / vLLM 生态的量化模型落盘约定**:它不执行校准或伪量化计算,而是在一键量化流水线末尾,将已量化完成的 QIR 模块转换为推理框架可直接加载的两类交付件——**注入 `config.json` 的 `quantization_config`** 与 **HF 风格权重文件** `model*.safetensors`。前者描述 `quant_method: "compressed-tensors"`、scheme(`QuantizationArgs` / `config_groups`)等元数据,供 vLLM 等按 HF 自动检测路径识别量化方案;后者按模块前缀写入 int8 / scale / zero-point 等张量。推理侧先读 `quantization_config` 确定 scheme,再按键名从 safetensors 取数。 |
| 24 | 25 | ||
| 25 | 因此,用户可将 compressed-tensors 理解为:**msModelSlim 量化结果的 HF 生态标准导出包**——算法负责量化计算,本格式负责与 [vllm-project/compressed-tensors](https://github.com/vllm-project/compressed-tensors) 规范对齐的落盘与描述。 | 26 | 因此,用户可将 compressed-tensors 理解为:**msModelSlim 量化结果的 HF 生态标准导出包**——算法负责量化计算,本格式负责与 [vllm-project/compressed-tensors](https://github.com/vllm-project/compressed-tensors) 规范对齐的落盘与描述。 |
| 26 | 27 | ||
| 27 | -#### 2.1.2 关键性质 | 28 | +**关键性质** |
| 28 | 29 | ||
| 29 | - 与 HF `from_pretrained` / vLLM 自动检测路径兼容。 | 30 | - 与 HF `from_pretrained` / vLLM 自动检测路径兼容。 |
| 30 | - 当前仅线性层量化;`targets` 固定为 `["Linear"]`。 | 31 | - 当前仅线性层量化;`targets` 固定为 `["Linear"]`。 |
| 31 | - 不支持分布式导出;`kv_cache_scheme` 恒为 `null`。 | 32 | - 不支持分布式导出;`kv_cache_scheme` 恒为 `null`。 |
| 32 | -- 仅部分 QIR preset 实现了导出 handler(见下文支持表)。 | ||
| 33 | 33 | ||
| 34 | -### 2.2 <span id="export-artifacts">导出产物(交付件)</span> | 34 | +--- |
| 35 | 35 | ||
| 36 | -#### 目录与文件说明 | 36 | +## 3. <span id="export-artifacts">导出产物(交付件)</span> |
| 37 | +### 3.1 目录与文件说明 | ||
| 37 | 38 | ||
| 38 | -执行一键量化(`compressed_tensors`)后,在指定的 `save_path` 目录下典型生成以下文件: | 39 | +执行一键量化并指定 compressed-tensors 落盘格式(保存器 `type` 为 `compressed_tensors`)后,在指定的 `save_path` 目录下生成以下文件: |
| 39 | 40 | ||
| 40 | ```text | 41 | ```text |
| 41 | save_directory/ | 42 | save_directory/ |
| 42 | ├── config.json # 注入 quantization_config 字段 | 43 | ├── config.json # 注入 quantization_config 字段 |
| 43 | -├── model.safetensors # 或 model-00001-of-xxxxx.safetensors(分片) | 44 | +├── model*.safetensors # 不分片时为 model.safetensors;分片时为 model-*-of-*.safetensors |
| 44 | ├── model.safetensors.index.json # 分片时生成 | 45 | ├── model.safetensors.index.json # 分片时生成 |
| 45 | └── (从源模型复制的 HF 辅助文件) | 46 | └── (从源模型复制的 HF 辅助文件) |
| 46 | └── *.json / *.py / *.txt / *.jinja | 47 | └── *.json / *.py / *.txt / *.jinja |
| @@ -53,11 +54,11 @@ save_directory/ | |||
| 53 | | `model.safetensors.index.json` | 分片索引(仅分片时生成) | | 54 | | `model.safetensors.index.json` | 分片索引(仅分片时生成) | |
| 54 | | HF 辅助文件 | 自源模型复制的 `*.json` / `*.py` / `*.txt` / `*.jinja` 等 | | 55 | | HF 辅助文件 | 自源模型复制的 `*.json` / `*.py` / `*.txt` / `*.jinja` 等 | |
| 55 | 56 | ||
| 56 | -#### config.json → quantization_config | 57 | +### 3.2 config.json → quantization_config |
| 57 | 58 | ||
| 58 | -##### 文件结构示例 | 59 | +**文件结构示例** |
| 59 | 60 | ||
| 60 | -`quantization_config` 典型结构如下: | 61 | +`quantization_config` 结构示例如下: |
| 61 | 62 | ||
| 62 | ```json | 63 | ```json |
| 63 | { | 64 | { |
| @@ -81,7 +82,8 @@ save_directory/ | |||
| 81 | } | 82 | } |
| 82 | ``` | 83 | ``` |
| 83 | 84 | ||
| 84 | -##### <span id="global-metadata">顶层字段说明</span> | 85 | +**<span id="global-metadata">顶层字段说明</span>** |
| 86 | + | ||
| 85 | 87 | ||
| 86 | | 字段 | 说明 | | 88 | | 字段 | 说明 | |
| 87 | | -------------------------------------- | ------------------------------------------------------------- | | 89 | | -------------------------------------- | ------------------------------------------------------------- | |
| @@ -95,7 +97,8 @@ save_directory/ | |||
| 95 | | `kv_cache_scheme` | KV Cache 量化方案,**当前不支持**,恒为 `null` | | 97 | | `kv_cache_scheme` | KV Cache 量化方案,**当前不支持**,恒为 `null` | |
| 96 | | `sparsity_config` / `transform_config` | 空对象占位 | | 98 | | `sparsity_config` / `transform_config` | 空对象占位 | |
| 97 | 99 | ||
| 98 | -##### QuantizationScheme(config_groups 内) | 100 | +**QuantizationScheme(config_groups 内)** |
| 101 | + | ||
| 99 | 102 | ||
| 100 | 每个 `config_groups` 条目描述一组层的量化方案。**msModelSlim 当前仅支持线性层(**`nn.Linear` **/ QIR FakeQuantLinear)量化**,因此 `targets` 固定为 `["Linear"]`。 | 103 | 每个 `config_groups` 条目描述一组层的量化方案。**msModelSlim 当前仅支持线性层(**`nn.Linear` **/ QIR FakeQuantLinear)量化**,因此 `targets` 固定为 `["Linear"]`。 |
| 101 | 104 | ||
| @@ -107,7 +110,8 @@ save_directory/ | |||
| 107 | | `output_activations` | 输出激活量化参数 | | 110 | | `output_activations` | 输出激活量化参数 | |
| 108 | | `format` | 层压缩格式,如 `int-quantized` | | 111 | | `format` | 层压缩格式,如 `int-quantized` | |
| 109 | 112 | ||
| 110 | -##### QuantizationArgs 参数说明 | 113 | +**QuantizationArgs 参数说明** |
| 114 | + | ||
| 111 | 115 | ||
| 112 | | 参数 | 类型 | 默认值 | 说明 | | 116 | | 参数 | 类型 | 默认值 | 说明 | |
| 113 | | ----------------- | --------- | ------- | -------------------------------------------------------------------------------------- | | 117 | | ----------------- | --------- | ------- | -------------------------------------------------------------------------------------- | |
| @@ -124,37 +128,42 @@ save_directory/ | |||
| 124 | | `observer` | string | 自动推断 | 校准方法;静态量化默认 `memoryless_minmax`,动态量化为 `null` | | 128 | | `observer` | string | 自动推断 | 校准方法;静态量化默认 `memoryless_minmax`,动态量化为 `null` | |
| 125 | | `observer_kwargs` | object | `{}` | 传给 observer 的额外参数 | | 129 | | `observer_kwargs` | object | `{}` | 传给 observer 的额外参数 | |
| 126 | 130 | ||
| 127 | -### 2.3 <span id="engine-support">推理引擎支持情况</span> | 131 | +--- |
| 128 | 132 | ||
| 129 | -compressed-tensors **均可导出**下表中的 Preset;下表描述的是产物能否被目标推理引擎按 HF `quantization_config` 加载。具体模型 × Preset × 引擎组合以支持矩阵与官方最佳实践为准。 | 133 | +## 4. <span id="engine-support">推理引擎支持情况</span> |
| 134 | + | ||
| 135 | +下表中的 Preset **均可被 compressed-tensors 导出**;下表描述的是产物能否被目标推理引擎按 HF `quantization_config` 加载。具体模型 × Preset × 引擎组合以《[大模型支持矩阵](../../model/README.md)》与官方最佳实践为准。 | ||
| 130 | 136 | ||
| 131 | | 格式 Preset | vLLM(HF 生态) | 说明 | | 137 | | 格式 Preset | vLLM(HF 生态) | 说明 | |
| 132 | | --- | --- | --- | | 138 | | --- | --- | --- | |
| 133 | | W8A8 Static | √ | 激活已离线校准;`act.scope: per_tensor` | | 139 | | W8A8 Static | √ | 激活已离线校准;`act.scope: per_tensor` | |
| 134 | | W8A8 Dynamic | √ | 激活动态;`act.scope: per_token` | | 140 | | W8A8 Dynamic | √ | 激活动态;`act.scope: per_token` | |
| 135 | 141 | ||
| 136 | -> **图例**:`√` 表示该引擎存在可加载路径或已有验证实践。选型时先确认框架支持 `quant_method: "compressed-tensors"`,再在下文「[量化模式支持情况](#mode-support)」核对交付件字段。Ascend 私有路径请改用《[AscendV1](../ascendv1/term_ascendv1.md)》。 | 142 | +> **图例**:`√` 表示该引擎存在可加载路径或已有验证实践。选型时先确认框架支持 `quant_method: "compressed-tensors"`,再在下文 [量化模式支持情况](#mode-support) 核对交付件字段。Ascend 私有路径请改用《[AscendV1](../ascendv1/term_ascendv1.md)》。 |
| 137 | 143 | ||
| 138 | -### 2.4 <span id="mode-support">量化模式支持情况</span> | 144 | +--- |
| 139 | 145 | ||
| 140 | -> **交付件说明**:「交付件:quantization_config」→ `config.json` 内 scheme;「交付件:safetensors」→ `model*.safetensors`。模式原理见《[量化模式](../../quantization_mode/README.md)》词条。 | 146 | +## 5. <span id="mode-support">量化模式支持情况</span> |
| 147 | + | ||
| 148 | +> **交付件说明**:表中交付件:quantization_config对应 `config.json` 内 scheme;交付件:safetensors对应 `model*.safetensors`。模式原理见《[量化模式](../../quantization_mode/README.md)》词条。本词条交付件分两列说明:`quantization_config` 与 `model*.safetensors`。 | ||
| 141 | 149 | ||
| 142 | | 格式 Preset | compressed-tensors 是否支持导出 | 量化模式词条 | 交付件:quantization_config | 交付件:safetensors | | 150 | | 格式 Preset | compressed-tensors 是否支持导出 | 量化模式词条 | 交付件:quantization_config | 交付件:safetensors | |
| 143 | | ------------ | ------------------------- | ---------------- | ----------------------------------------- | ------------------------------------- | | 151 | | ------------ | ------------------------- | ---------------- | ----------------------------------------- | ------------------------------------- | |
| 144 | | W8A8 Static | 支持 | [W8A8 静态量化](../../quantization_mode/linear_layer_quantization/term_w8a8_static.md) | [W8A8 Static scheme](#desc-w8a8-static) | [W8A8 Static 权重张量](#st-w8a8-static) | | 152 | | W8A8 Static | 支持 | [W8A8 静态量化](../../quantization_mode/linear_layer_quantization/term_w8a8_static.md) | [W8A8 Static scheme](#desc-w8a8-static) | [W8A8 Static 权重张量](#st-w8a8-static) | |
| 145 | | W8A8 Dynamic | 支持 | [W8A8 动态量化](../../quantization_mode/linear_layer_quantization/term_w8a8_dynamic.md) | [W8A8 Dynamic scheme](#desc-w8a8-dynamic) | [W8A8 Dynamic 权重张量](#st-w8a8-dynamic) | | 153 | | W8A8 Dynamic | 支持 | [W8A8 动态量化](../../quantization_mode/linear_layer_quantization/term_w8a8_dynamic.md) | [W8A8 Dynamic scheme](#desc-w8a8-dynamic) | [W8A8 Dynamic 权重张量](#st-w8a8-dynamic) | |
| 146 | 154 | ||
| 147 | -### 2.5 各量化模式交付件格式 | 155 | +--- |
| 156 | + | ||
| 157 | +## 6. 各量化模式交付件格式 | ||
| 148 | 158 | ||
| 149 | 约定: | 159 | 约定: |
| 150 | 160 | ||
| 151 | - `{prefix}` 为模块前缀(例如 `model.layers.0.self_attn.q_proj`)。 | 161 | - `{prefix}` 为模块前缀(例如 `model.layers.0.self_attn.q_proj`)。 |
| 152 | -- **quantization_config**:写入 `config.json`;顶层与 `QuantizationArgs` 见上文「[顶层字段说明](#global-metadata)」;下文给出各 Preset 在 `config_groups` 中的典型 scheme。 | 162 | +- **quantization_config**:写入 `config.json`;顶层与 `QuantizationArgs` 见上文[顶层字段说明](#global-metadata);下文给出各 Preset 在 `config_groups` 中的典型 scheme。 |
| 153 | - **safetensors**:文件 `model*.safetensors`(可分片);键为 `{prefix}.<param>`,存实际数值张量。 | 163 | - **safetensors**:文件 `model*.safetensors`(可分片);键为 `{prefix}.<param>`,存实际数值张量。 |
| 154 | 164 | ||
| 155 | -#### W8A8 Static | 165 | +### 6.1 W8A8 Static |
| 156 | - | 166 | +**<span id="desc-w8a8-static">config.json → quantization_config</span>** |
| 157 | -##### <span id="desc-w8a8-static">config.json → quantization_config</span> | ||
| 158 | 167 | ||
| 159 | 典型 `config_groups` 条目(`weights.dynamic = false`,含静态激活): | 168 | 典型 `config_groups` 条目(`weights.dynamic = false`,含静态激活): |
| 160 | 169 | ||
| @@ -165,7 +174,8 @@ compressed-tensors **均可导出**下表中的 Preset;下表描述的是产 | |||
| 165 | | `input_activations.num_bits` / `type` / `strategy` / `symmetric` / `dynamic` | `8` / `"int"` / `"tensor"` / `false` / `false` | 静态激活量化 | | 174 | | `input_activations.num_bits` / `type` / `strategy` / `symmetric` / `dynamic` | `8` / `"int"` / `"tensor"` / `false` / `false` | 静态激活量化 | |
| 166 | | `format` | `"int-quantized"` | 层压缩格式 | | 175 | | `format` | `"int-quantized"` | 层压缩格式 | |
| 167 | 176 | ||
| 168 | -##### <span id="st-w8a8-static">model*.safetensors</span> | 177 | +**<span id="st-w8a8-static">`model*.safetensors`</span>** |
| 178 | + | ||
| 169 | 179 | ||
| 170 | | 张量名 | 数据类型 | 说明 | | 180 | | 张量名 | 数据类型 | 说明 | |
| 171 | | --------------------------- | ------- | -------------------------- | | 181 | | --------------------------- | ------- | -------------------------- | |
| @@ -175,20 +185,20 @@ compressed-tensors **均可导出**下表中的 Preset;下表描述的是产 | |||
| 175 | | `{prefix}.input_zero_point` | - | 仅当 `input_offset != 0` 时写入 | | 185 | | `{prefix}.input_zero_point` | - | 仅当 `input_offset != 0` 时写入 | |
| 176 | | `{prefix}.bias` | float32 | 可选 | | 186 | | `{prefix}.bias` | float32 | 可选 | |
| 177 | 187 | ||
| 178 | -#### W8A8 Dynamic | 188 | +### 6.2 W8A8 Dynamic |
| 189 | +**<span id="desc-w8a8-dynamic">config.json → quantization_config</span>** | ||
| 179 | 190 | ||
| 180 | -##### <span id="desc-w8a8-dynamic">config.json → quantization_config</span> | 191 | +典型 `config_groups` 条目(激活为动态,导出时 `input_activations.dynamic = true`): |
| 181 | 192 | ||
| 182 | -典型 `config_groups` 条目(激活为动态,导出时 `input_activations.dynamic = true` 或按 QIR 约定写入): | 193 | +| 字段路径 | 典型取值 | 说明 | |
| 194 | +| ---------------------------------------------------------------------------- | --------------------------------------------- | ------------------------------- | | ||
| 195 | +| `targets` | `["Linear"]` | 仅线性层 | | ||
| 196 | +| `weights.num_bits` / `type` / `strategy` / `symmetric` / `dynamic` | `8` / `"int"` / `"channel"` / `true` / `false` | 权重量化(per-channel) | | ||
| 197 | +| `input_activations.num_bits` / `type` / `strategy` / `symmetric` / `dynamic` | `8` / `"int"` / `"token"` / `false` / `true` | 动态激活;scale / zero-point **不落盘** | | ||
| 198 | +| `format` | `"int-quantized"` | 层压缩格式 | | ||
| 183 | 199 | ||
| 184 | -| 字段路径 | 典型取值 | 说明 | | 200 | +**<span id="st-w8a8-dynamic">`model*.safetensors`</span>** |
| 185 | -| ------------------------------------------------------------------ | ---------------------------------------------- | ------------------------------- | | ||
| 186 | -| `targets` | `["Linear"]` | 仅线性层 | | ||
| 187 | -| `weights.num_bits` / `type` / `strategy` / `symmetric` / `dynamic` | `8` / `"int"` / `"channel"` / `true` / `false` | 权重量化(per-channel) | | ||
| 188 | -| `input_activations` | 动态激活参数(`dynamic: true`) | 激活动态;scale / zero-point **不落盘** | | ||
| 189 | -| `format` | `"int-quantized"` | 层压缩格式 | | ||
| 190 | 201 | ||
| 191 | -##### <span id="st-w8a8-dynamic">model*.safetensors</span> | ||
| 192 | 202 | ||
| 193 | | 张量名 | 数据类型 | 说明 | | 203 | | 张量名 | 数据类型 | 说明 | |
| 194 | | ----------------------- | ------- | ------------------------------- | | 204 | | ----------------------- | ------- | ------------------------------- | |
| @@ -198,31 +208,35 @@ compressed-tensors **均可导出**下表中的 Preset;下表描述的是产 | |||
| 198 | 208 | ||
| 199 | > 动态激活的 scale / zero-point **不写入**权重文件,推理时 per-token 动态计算。 | 209 | > 动态激活的 scale / zero-point **不写入**权重文件,推理时 per-token 动态计算。 |
| 200 | 210 | ||
| 201 | -### 2.6 适用场景与限制 | 211 | +--- |
| 202 | 212 | ||
| 203 | -#### 2.6.1 适用场景 | 213 | +## 7. 适用场景与限制 |
| 214 | + | ||
| 215 | +### 7.1 适用场景 | ||
| 204 | 216 | ||
| 205 | - 向 vLLM 等 HF 生态框架交付可互换量化权重。 | 217 | - 向 vLLM 等 HF 生态框架交付可互换量化权重。 |
| 206 | - 需要与 compressed-tensors 规范对齐的 `quantization_config` 交换。 | 218 | - 需要与 compressed-tensors 规范对齐的 `quantization_config` 交换。 |
| 207 | 219 | ||
| 208 | -#### 2.6.2 使用限制 | 220 | +### 7.2 使用限制 |
| 209 | 221 | ||
| 210 | - 不支持分布式导出(`support_distributed() = False`)。 | 222 | - 不支持分布式导出(`support_distributed() = False`)。 |
| 211 | - KV Cache 量化暂不支持(`kv_cache_scheme = null`)。 | 223 | - KV Cache 量化暂不支持(`kv_cache_scheme = null`)。 |
| 212 | - 仅 W8A8 Static / W8A8 Dynamic 两种 QIR 有 handler。 | 224 | - 仅 W8A8 Static / W8A8 Dynamic 两种 QIR 有 handler。 |
| 213 | -- 本词条交付件分两列说明:`quantization_config` 与 `model*.safetensors`;不展开量化模式原理与算子说明(见《[量化模式](../../quantization_mode/README.md)》)。 | 225 | +- 不展开量化模式原理与算子说明(见《[量化模式](../../quantization_mode/README.md)》)。 |
| 214 | 226 | ||
| 215 | -## 3. 关联流程 | 227 | +--- |
| 216 | 228 | ||
| 217 | -| 流程 | 说明 | | 229 | +## 8. 关联流程 |
| 218 | -| ------------------------------------------------------------- | ----------------- | | ||
| 219 | -| 《[compressed-tensors 使用指南](compressed_tensors_usage.md)》 | 确认模式支持、配置与执行 | | ||
| 220 | -| 《[量化格式接入指南](../iformat_integration_guide.md)》 | IFormat 1-shot 参考 | | ||
| 221 | -| 《[一键量化使用指南](../../../user_guide/usage_quick_quantization.md)》 | save 配置总览 | | ||
| 222 | 230 | ||
| 223 | -## 4. 关联词条 | 231 | +- 《[compressed-tensors 使用指南](compressed_tensors_usage.md)》:确认模式支持、配置与执行。 |
| 232 | +- 《[量化格式接入指南](../iformat_integration_guide.md)》:IFormat 1-shot 参考。 | ||
| 233 | +- 《[一键量化使用指南](../../../user_guide/usage_quick_quantization.md)》:save 配置总览。 | ||
| 224 | 234 | ||
| 225 | -- [量化格式](../README.md):上位概念,本词条所属目录。 | 235 | +--- |
| 226 | -- [AscendV1](../ascendv1/term_ascendv1.md):其他,同属量化格式的并列落盘协议。 | 236 | + |
| 227 | -- [MindIE-SD](../mindie_sd/term_mindie_sd.md):其他,同属量化格式的并列落盘协议。 | 237 | +## 9. 关联词条 |
| 228 | -- [量化模式](../../quantization_mode/README.md):配套术语,本格式 Preset 与交付件字段对应各量化模式;详见本页「[量化模式支持情况](#mode-support)」。 | 238 | + |
| 239 | +- [量化格式 量化术语百科词条](../README.md):上位概念,本词条所属目录。 | ||
| 240 | +- [AscendV1 量化格式 量化术语百科词条](../ascendv1/term_ascendv1.md):其他,同属量化格式的并列落盘协议。 | ||
| 241 | +- [MindIE-SD 量化格式 量化术语百科词条](../mindie_sd/term_mindie_sd.md):其他,同属量化格式的并列落盘协议。 | ||
| 242 | +- [量化模式](../../quantization_mode/README.md):配套术语,本格式 Preset 与交付件字段对应各量化模式;详见本页[量化模式支持情况](#mode-support)。 | ||
| @@ -15,7 +15,7 @@ | |||
| 15 | - 已阅读《[量化格式](README.md)》并确认需新增格式(而非扩展既有 handler) | 15 | - 已阅读《[量化格式](README.md)》并确认需新增格式(而非扩展既有 handler) |
| 16 | - 已明确目标推理框架的加载约定(张量命名与元数据 schema) | 16 | - 已明确目标推理框架的加载约定(张量命名与元数据 schema) |
| 17 | 17 | ||
| 18 | -**后续操作**:合入后更新《[量化格式](README.md)》格式地图词条与使用指南;按《[资料规范](../../contributing/development_guide/docs_standards/README.md)》及 docs-management 场景《[新建量化格式资料](../../../../skills/docs-management/scenarios/add-quantization-format.md)》(`add-quantization-format`)补齐文档。 | 18 | +**后续操作**:代码合入后补齐文档:按《[资料规范](../../contributing/development_guide/docs_standards/README.md)》与《[新建量化格式资料](../../../../skills/docs-management/scenarios/add-quantization-format.md)》编写格式词条与使用指南,并更新《[量化格式](README.md)》格式地图。 |
| 19 | 19 | ||
| 20 | ## 3. 输入和交付件 | 20 | ## 3. 输入和交付件 |
| 21 | 21 | ||
| @@ -23,7 +23,7 @@ | |||
| 23 | | --- | --- | --- | --- | --- | | 23 | | --- | --- | --- | --- | --- | |
| 24 | | 输入 | 目标格式规范 | 上游项目或内部 RFC | 张量键名、dtype、元数据字段可核对 | 与推理侧加载文档对照 | | 24 | | 输入 | 目标格式规范 | 上游项目或内部 RFC | 张量键名、dtype、元数据字段可核对 | 与推理侧加载文档对照 | |
| 25 | | 输入 | QIR 模块类型列表 | `msmodelslim/ir` | 需实现 handler 的 FakeQuant 类型 | 列出模块类名 | | 25 | | 输入 | QIR 模块类型列表 | `msmodelslim/ir` | 需实现 handler 的 FakeQuant 类型 | 列出模块类名 | |
| 26 | -| 交付件 | IFormat 实现与 Config | `msmodelslim/format/<name>/` | 注册进 `QuantFormatFactory` / Union | 单测通过 | | 26 | +| 交付件 | IFormat 实现与 Config | `msmodelslim/format/<name>/` | Config 加入 `QuantFormatConfigUnion` | 单测通过 | |
| 27 | | 交付件 | YAML 可启用的 `type` | 一键量化 `spec.save` | 与 Config `Literal` 一致 | 配置反序列化成功 | | 27 | | 交付件 | YAML 可启用的 `type` | 一键量化 `spec.save` | 与 Config `Literal` 一致 | 配置反序列化成功 | |
| 28 | | 交付件 | 单元测试 | `test/cases/format/` | 覆盖张量键与元数据 | CI / 本地断言通过 | | 28 | | 交付件 | 单元测试 | `test/cases/format/` | 覆盖张量键与元数据 | CI / 本地断言通过 | |
| 29 | 29 | ||
| @@ -41,7 +41,7 @@ flowchart LR | |||
| 41 | 41 | ||
| 42 | ### 步骤 1:适配协议与基类 | 42 | ### 步骤 1:适配协议与基类 |
| 43 | 43 | ||
| 44 | -**目标**:理解 `IFormat` / `ExportContext` / `QuantFormatBase` 职责边界。 | 44 | +**目标**:理解 `IFormat` / `ExportContext` / `QuantFormatBase` 职责边界,并据此完成新格式适配所需的协议对齐与基类选型。 |
| 45 | 45 | ||
| 46 | **操作**:阅读 [`msmodelslim/format/interface.py`](../../../../msmodelslim/format/interface.py) 与 [`msmodelslim/format/base.py`](../../../../msmodelslim/format/base.py)。 | 46 | **操作**:阅读 [`msmodelslim/format/interface.py`](../../../../msmodelslim/format/interface.py) 与 [`msmodelslim/format/base.py`](../../../../msmodelslim/format/base.py)。 |
| 47 | 47 | ||
| @@ -145,36 +145,25 @@ class MyQuantFormat(QuantFormatBase): | |||
| 145 | 145 | ||
| 146 | ### 步骤 4:注册格式绑定与 YAML 联合类型 | 146 | ### 步骤 4:注册格式绑定与 YAML 联合类型 |
| 147 | 147 | ||
| 148 | -**操作**:在 [`msmodelslim/format/registry.py`](../../../../msmodelslim/format/registry.py) 注册,并将 Config 加入 `QuantFormatConfigUnion`: | 148 | +**目标**:使 YAML spec.save[].type 能按 type 反序列化为新 Config。 |
| 149 | + | ||
| 150 | +**操作**:在 [msmodelslim/format/registry.py](../../../../msmodelslim/format/registry.py) 中 import 新 Config,并加入 QuantFormatConfigUnion: | ||
| 149 | 151 | ||
| 150 | ```python | 152 | ```python |
| 151 | -class QuantFormatFactory: | 153 | +from msmodelslim.format.my_format.my_format import MyQuantFormatConfig |
| 152 | - BUILTIN_BINDINGS = ( | ||
| 153 | - (CompressedTensorsQuantFormatConfig, CompressedTensorsQuantFormat), | ||
| 154 | - (MyQuantFormatConfig, MyQuantFormat), # 新增 | ||
| 155 | - ) | ||
| 156 | -``` | ||
| 157 | 154 | ||
| 158 | -或运行时: | ||
| 159 | - | ||
| 160 | -```python | ||
| 161 | -from msmodelslim.processor.save.registry import register_quant_format | ||
| 162 | -register_quant_format(MyQuantFormatConfig, MyQuantFormat) | ||
| 163 | -``` | ||
| 164 | - | ||
| 165 | -```python | ||
| 166 | QuantFormatConfigUnion = Annotated[ | 155 | QuantFormatConfigUnion = Annotated[ |
| 167 | Union[ | 156 | Union[ |
| 168 | CompressedTensorsQuantFormatConfig, | 157 | CompressedTensorsQuantFormatConfig, |
| 169 | - MyQuantFormatConfig, # 新增 | ||
| 170 | AscendV1QuantFormatConfig, | 158 | AscendV1QuantFormatConfig, |
| 171 | MindIEQuantFormatConfig, | 159 | MindIEQuantFormatConfig, |
| 160 | + MyQuantFormatConfig, # 新增 | ||
| 172 | ], | 161 | ], |
| 173 | Field(discriminator="type"), | 162 | Field(discriminator="type"), |
| 174 | ] | 163 | ] |
| 175 | ``` | 164 | ``` |
| 176 | 165 | ||
| 177 | -`import msmodelslim.format` 时会自动执行安装注册。 | 166 | +加入后,parse_format_config 与一键量化 spec.save 即可识别 type: "my_format"。 |
| 178 | 167 | ||
| 179 | **输出**:可被 Pydantic 按 `type` 反序列化的配置绑定。 | 168 | **输出**:可被 Pydantic 按 `type` 反序列化的配置绑定。 |
| 180 | 169 | ||
| @@ -195,7 +184,7 @@ QuantFormatConfigUnion = Annotated[ | |||
| 195 | 184 | ||
| 196 | 3. 按资料标准在 `docs/zh/knowledge_base/quantization_format/<format_name>/` 新增词条与使用指南,并在《[量化格式](README.md)》地图登记链接。 | 185 | 3. 按资料标准在 `docs/zh/knowledge_base/quantization_format/<format_name>/` 新增词条与使用指南,并在《[量化格式](README.md)》地图登记链接。 |
| 197 | 186 | ||
| 198 | -**输出**:可运行导出、通过单测、文档地图可导航。 | 187 | +**输出**:可通过一键量化 YAML(`spec.save.type`)启动导出、单测通过、文档地图可导航。 |
| 199 | 188 | ||
| 200 | **通过条件**:配置可解析;单测断言通过;地图存在新格式词条与使用指南链接。 | 189 | **通过条件**:配置可解析;单测断言通过;地图存在新格式词条与使用指南链接。 |
| 201 | 190 | ||
| @@ -205,7 +194,7 @@ QuantFormatConfigUnion = Annotated[ | |||
| 205 | - 缺少对关键 QIR 类型的 handler 或元数据写入失败,不得合入。 | 194 | - 缺少对关键 QIR 类型的 handler 或元数据写入失败,不得合入。 |
| 206 | - 文档未登记到格式地图时,资料验收不通过。 | 195 | - 文档未登记到格式地图时,资料验收不通过。 |
| 207 | 196 | ||
| 208 | -## 9. 术语 | 197 | +## 7. 术语 |
| 209 | 198 | ||
| 210 | | 术语 | 简述 | 链接 | | 199 | | 术语 | 简述 | 链接 | |
| 211 | | --- | --- | --- | | 200 | | --- | --- | --- | |
| @@ -213,11 +202,9 @@ QuantFormatConfigUnion = Annotated[ | |||
| 213 | | compressed-tensors | 1-shot 参考格式 | 《[compressed-tensors](compressed_tensors/term_compressed_tensors.md)》 | | 202 | | compressed-tensors | 1-shot 参考格式 | 《[compressed-tensors](compressed_tensors/term_compressed_tensors.md)》 | |
| 214 | | AscendV1 | 昇腾默认格式(对照) | 《[AscendV1](ascendv1/term_ascendv1.md)》 | | 203 | | AscendV1 | 昇腾默认格式(对照) | 《[AscendV1](ascendv1/term_ascendv1.md)》 | |
| 215 | 204 | ||
| 216 | -## 10. 接口文档列表 | 205 | +## 8. 接口文档列表 |
| 217 | 206 | ||
| 218 | | 接口或能力 | 简述 | 链接 | | 207 | | 接口或能力 | 简述 | 链接 | |
| 219 | | --- | --- | --- | | 208 | | --- | --- | --- | |
| 220 | -| IFormat | 导出协议 | [`msmodelslim/format/interface.py`](../../../../msmodelslim/format/interface.py) | | 209 | +| `IFormat` | 量化落盘格式协议,需实现三个接口:`prepare_export`、`process_module_tensors`、`finalize_export` | [接口定义](../../../../msmodelslim/format/interface.py) | |
| 221 | -| QuantFormatBase | 推荐基类 | [`msmodelslim/format/base.py`](../../../../msmodelslim/format/base.py) | | 210 | +| `QuantFormatFactory` / registry | `QuantFormatConfigUnion` 反序列化与格式工厂构造 | [注册与工厂](../../../../msmodelslim/format/registry.py) | |
| 222 | -| 注册表 | Config 联合类型与工厂 | [`msmodelslim/format/registry.py`](../../../../msmodelslim/format/registry.py) | | ||
| 223 | -| 保存处理器 | 调用导出 | [`msmodelslim/processor/save/processor.py`](../../../../msmodelslim/processor/save/processor.py) | | ||
| @@ -1,6 +1,6 @@ | |||
| 1 | # MindIE-SD 使用指南 | 1 | # MindIE-SD 使用指南 |
| 2 | 2 | ||
| 3 | -本指南说明如何在 msModelSlim 中选用 **MindIE-SD** 量化格式,按 **确认模式支持 → 配置 → 执行** 完成落盘,并将产物部署到 MindIE 多模态生成路径。格式字段与枚举见《[MindIE-SD](term_mindie_sd.md)》;一键量化与多模态协议见《[一键量化使用指南](../../../user_guide/usage_quick_quantization.md)》。 | 3 | +本指南说明如何在 msModelSlim 中选用 **MindIE-SD** 量化格式,按 **确认模式支持 → 配置 save → 执行量化并核对产物** 完成落盘,并将产物部署到 MindIE 多模态生成路径。格式字段与枚举见《[MindIE-SD](term_mindie_sd.md)》;模型适配与 `--config` 执行量化见《[权重量化使用指南](../../../user_guide/usage_weight_quantization.md)》;配置协议与最佳实践入口见《[一键量化使用指南](../../../user_guide/usage_quick_quantization.md)》。 |
| 4 | 4 | ||
| 5 | ## 1. 适用范围 | 5 | ## 1. 适用范围 |
| 6 | 6 | ||
| @@ -10,7 +10,7 @@ | |||
| 10 | 10 | ||
| 11 | ## 2. 流程关系与前置条件 | 11 | ## 2. 流程关系与前置条件 |
| 12 | 12 | ||
| 13 | -**上级流程**:《[一键量化使用指南](../../../user_guide/usage_quick_quantization.md)》;模型侧参见《[多模态生成模型接入](../../model/integrating_multimodal_generation_model.md)》。 | 13 | +**上级流程**:《[权重量化使用指南](../../../user_guide/usage_weight_quantization.md)》;模型侧接入细节见《[多模态生成模型接入指南](../../model/integrating_multimodal_generation_model.md)》;配置协议与最佳实践入口见《[一键量化使用指南](../../../user_guide/usage_quick_quantization.md)》。 |
| 14 | 14 | ||
| 15 | **前置条件**: | 15 | **前置条件**: |
| 16 | 16 | ||
| @@ -24,20 +24,16 @@ | |||
| 24 | | 类型 | 名称 | 来源或保存位置 | 格式或约束 | 验收方式 | | 24 | | 类型 | 名称 | 来源或保存位置 | 格式或约束 | 验收方式 | |
| 25 | | --- | --- | --- | --- | --- | | 25 | | --- | --- | --- | --- | --- | |
| 26 | | 输入 | 多模态生成浮点模型 | 本地路径 | 适配器可加载 | 适配器 init 成功 | | 26 | | 输入 | 多模态生成浮点模型 | 本地路径 | 适配器可加载 | 适配器 init 成功 | |
| 27 | -| 输入 | YAML(`apiversion: multimodal_sd_modelslim_v1`)或官方 `quant_type` | 最佳实践 / lab_practice | `save` 含 `mindie_format_saver` | 配置校验通过 | | 27 | +| 输入 | YAML(`apiversion: multimodal_sd_modelslim_v1`)或官方 `quant_type` | 最佳实践 / lab_practice / `${CONFIG_PATH}` | `save` 含 `mindie_format_saver` | 配置校验通过 | |
| 28 | | 交付件 | MindIE-SD 量化目录 | `${SAVE_PATH}` | 含描述 JSON 与 `quant_model_weight*.safetensors` | 见《[MindIE-SD](term_mindie_sd.md#export-artifacts)》导出产物 | | 28 | | 交付件 | MindIE-SD 量化目录 | `${SAVE_PATH}` | 含描述 JSON 与 `quant_model_weight*.safetensors` | 见《[MindIE-SD](term_mindie_sd.md#export-artifacts)》导出产物 | |
| 29 | 29 | ||
| 30 | ## 4. 流程总览 | 30 | ## 4. 流程总览 |
| 31 | 31 | ||
| 32 | ```mermaid | 32 | ```mermaid |
| 33 | flowchart LR | 33 | flowchart LR |
| 34 | - adapt[确认模式支持] --> config[配置save] --> run[执行量化并核对产物] | 34 | + adapt[确认模式支持] --> config[配置 save] --> run[执行量化并核对产物] |
| 35 | ``` | 35 | ``` |
| 36 | 36 | ||
| 37 | -各阶段对应下文步骤 1~3:**确认**目标推理框架是否支持所选量化模式、**配置** `mindie_format_saver`、**执行**一键量化并核对交付件。 | ||
| 38 | - | ||
| 39 | -> 说明:MindIE-SD 无 AscendV1 侧的 `AscendV1SaveInterface` 钩子;新模型接入见《[多模态生成模型接入](../../model/integrating_multimodal_generation_model.md)》,本流程不单独设「适配器适配 save」步骤。 | ||
| 40 | - | ||
| 41 | ## 5. 操作步骤 | 37 | ## 5. 操作步骤 |
| 42 | 38 | ||
| 43 | ### 步骤 1:确认目标推理框架支持所选量化模式 | 39 | ### 步骤 1:确认目标推理框架支持所选量化模式 |
| @@ -46,8 +42,8 @@ flowchart LR | |||
| 46 | 42 | ||
| 47 | **操作**: | 43 | **操作**: |
| 48 | 44 | ||
| 49 | -1. 确认业务为多模态生成(如 Wan2.2 T2V / I2V / TI2V),且 MindIE 版本支持对应量化权重;走 MindIE-SD,而非 AscendV1 / compressed-tensors。 | 45 | +1. 确认业务为多模态生成(如 Wan2.2 T2V / I2V / TI2V),且 MindIE 版本支持对应量化权重;须走 MindIE-SD(`mindie_format_saver`)。多模态生成场景不要改用 AscendV1 / compressed-tensors。 |
| 50 | -2. 对照《[MindIE-SD](term_mindie_sd.md#mode-support)》「量化模式支持情况」与 example / lab_practice 推荐 YAML,确认所选模式在 MindIE-SD 支持表内;不支持的模式改走《[AscendV1](../ascendv1/term_ascendv1.md)》。 | 46 | +2. 对照《[MindIE-SD](term_mindie_sd.md#mode-support)》量化模式支持情况与 example / lab_practice 推荐 YAML,确认所选模式在 MindIE-SD 支持表内。 |
| 51 | 3. 明确 `multimodal_sd_config.inference_config`(如 `task`、`size`、`frame_num`)须与 `--model_type` 场景一致。 | 47 | 3. 明确 `multimodal_sd_config.inference_config`(如 `task`、`size`、`frame_num`)须与 `--model_type` 场景一致。 |
| 52 | 4. 明确是否启用 dump(`dump_config.enable_dump`)及 `dump_data_dir`(见《[MindIE-SD](term_mindie_sd.md#optional-dump)》可选导出)。 | 48 | 4. 明确是否启用 dump(`dump_config.enable_dump`)及 `dump_data_dir`(见《[MindIE-SD](term_mindie_sd.md#optional-dump)》可选导出)。 |
| 53 | 49 | ||
| @@ -74,19 +70,19 @@ spec: | |||
| 74 | | `part_file_size` | int | `4`(代码默认;多模态示例常写 `0`) | 权重分片大小(GB);`0` 表示不分片 | | 70 | | `part_file_size` | int | `4`(代码默认;多模态示例常写 `0`) | 权重分片大小(GB);`0` 表示不分片 | |
| 75 | | `ext` | object | `{}` | 可选扩展配置;常规导出可省略 | | 71 | | `ext` | object | `{}` | 可选扩展配置;常规导出可省略 | |
| 76 | 72 | ||
| 77 | -也可直接使用官方 `quant_type` 最佳实践(多模态最佳实践通常已含 `mindie_format_saver`)。完整协议见《[一键量化使用指南](../../../user_guide/usage_quick_quantization.md#5341-mindie_format_saver)》及 `#53-multimodal_sd_modelslim_v1-配置详解`。 | 73 | +也可直接使用官方 `quant_type` 最佳实践(多模态最佳实践通常已含 `mindie_format_saver`)。完整协议见《[一键量化使用指南](../../../user_guide/usage_quick_quantization.md#5341-mindie_format_saver)》及《[multimodal_sd_modelslim_v1 配置详解](../../../user_guide/usage_quick_quantization.md#53-multimodal_sd_modelslim_v1-配置详解)》。 |
| 78 | 74 | ||
| 79 | **输出**:可用 YAML 配置路径,或确认采用官方 `quant_type` 一键路径。 | 75 | **输出**:可用 YAML 配置路径,或确认采用官方 `quant_type` 一键路径。 |
| 80 | 76 | ||
| 81 | -**通过条件**:`type` 为 `mindie_format_saver`;`apiversion` 为 `multimodal_sd_modelslim_v1`(或等价官方入口)。 | 77 | +**通过条件**:`type` 为 `mindie_format_saver`;`apiversion` 为 `multimodal_sd_modelslim_v1`(也可直接使用官方 `quant_type` 最佳实践入口,无需手写完整 YAML)。 |
| 82 | 78 | ||
| 83 | ### 步骤 3:执行量化并核对产物 | 79 | ### 步骤 3:执行量化并核对产物 |
| 84 | 80 | ||
| 85 | -**目标**:生成 MindIE 可加载目录并完成冒烟核对。 | 81 | +**目标**:生成 MindIE 可加载目录并完成加载与生成验证。 |
| 86 | 82 | ||
| 87 | **操作**: | 83 | **操作**: |
| 88 | 84 | ||
| 89 | -1. 准备最小可执行 YAML(保存为 `${CONFIG_PATH}`)。以下以 Wan2.2 T2V 场景的线性层 MXFP8 + `mindie_format_saver` 为例;`process` / `inference_config` 可按场景替换,`save` 须保留 `mindie_format_saver`,`apiversion` 须为 `multimodal_sd_modelslim_v1`: | 85 | +1. 准备最小可执行 YAML(保存为 `${CONFIG_PATH}`)。以下以 Wan2.2 T2V 场景的线性层 MXFP8 + `mindie_format_saver` 为例;`process` / `inference_config` 可按场景替换,`save` 须保留 `mindie_format_saver`,`apiversion` 须为 `multimodal_sd_modelslim_v1`。 |
| 90 | 86 | ||
| 91 | ```yaml | 87 | ```yaml |
| 92 | apiversion: multimodal_sd_modelslim_v1 | 88 | apiversion: multimodal_sd_modelslim_v1 |
| @@ -122,26 +118,28 @@ spec: | |||
| 122 | task: "t2v-A14B" | 118 | task: "t2v-A14B" |
| 123 | ``` | 119 | ``` |
| 124 | 120 | ||
| 125 | -2. 按《[多模态生成模型接入](../../model/integrating_multimodal_generation_model.md)》或《[一键量化使用指南](../../../user_guide/usage_quick_quantization.md)》执行量化: | 121 | +2. 确认目标模型已完成多模态接入,再以本步骤第 1 点写出的 `${CONFIG_PATH}` 执行量化。适配与显式指定配置的完整步骤见《[权重量化使用指南](../../../user_guide/usage_weight_quantization.md)》: |
| 122 | + - **尚未接入**:先按该指南[步骤 2:完成模型适配](../../../user_guide/usage_weight_quantization.md#步骤-2完成模型适配)完成适配器开发与注册,再进入量化。 | ||
| 123 | + - **已接入**:确认 `--model_type` 可命中适配器后,按该指南[步骤 4:执行一键量化命令](../../../user_guide/usage_weight_quantization.md#步骤-4执行一键量化命令),使用 `--config ${CONFIG_PATH}` 执行量化: | ||
| 126 | 124 | ||
| 127 | ```bash | 125 | ```bash |
| 128 | msmodelslim quant \ | 126 | msmodelslim quant \ |
| 129 | --model_path ${MODEL_PATH} \ | 127 | --model_path ${MODEL_PATH} \ |
| 130 | --save_path ${SAVE_PATH} \ | 128 | --save_path ${SAVE_PATH} \ |
| 131 | --device npu \ | 129 | --device npu \ |
| 132 | - --model_type Wan2.2-T2V-A14B \ | 130 | + --model_type ${MODEL_TYPE} \ |
| 133 | - --config_path ${CONFIG_PATH} \ | 131 | + --config ${CONFIG_PATH} \ |
| 134 | - --trust_remote_code True | 132 | + --trust_remote_code False |
| 135 | ``` | 133 | ``` |
| 136 | 134 | ||
| 137 | 3. 核对 `${SAVE_PATH}` 中至少存在: | 135 | 3. 核对 `${SAVE_PATH}` 中至少存在: |
| 138 | - `quant_model_description.json`(或带量化类型后缀的变体) | 136 | - `quant_model_description.json`(或带量化类型后缀的变体) |
| 139 | - `quant_model_weight.safetensors`(或分片 + index / 带量化类型后缀的变体) | 137 | - `quant_model_weight.safetensors`(或分片 + index / 带量化类型后缀的变体) |
| 140 | - 自源模型复制的 `.json` / `.py` 配置与代码文件 | 138 | - 自源模型复制的 `.json` / `.py` 配置与代码文件 |
| 141 | - 目录树与字段细则见《[MindIE-SD](term_mindie_sd.md#export-artifacts)》导出产物及「各量化模式交付件格式」。 | 139 | + 目录树与字段细则见《[MindIE-SD](term_mindie_sd.md#export-artifacts)》导出产物及各量化模式交付件格式。 |
| 142 | -4. 按 MindIE 部署文档加载该目录,完成一次生成冒烟(分辨率 / 帧数等与 `inference_config` 一致)。 | 140 | +4. 按 MindIE 部署文档加载该目录,完成一次生成验证(分辨率 / 帧数等与 `inference_config` 一致)。该步骤为部署前的快速验证,不要求完整画质评测。 |
| 143 | 141 | ||
| 144 | -**输出**:可部署的 `${SAVE_PATH}` 与冒烟结果。 | 142 | +**输出**:可部署的 `${SAVE_PATH}` 与验证结果。 |
| 145 | 143 | ||
| 146 | **通过条件**:描述文件与权重齐全;MindIE 可加载;生成流程无权重 shape / dtype 加载错误。 | 144 | **通过条件**:描述文件与权重齐全;MindIE 可加载;生成流程无权重 shape / dtype 加载错误。 |
| 147 | 145 | ||
| @@ -158,13 +156,4 @@ spec: | |||
| 158 | | --- | --- | --- | | 156 | | --- | --- | --- | |
| 159 | | MindIE-SD | 多模态生成 MindIE 落盘格式 | 《[MindIE-SD](term_mindie_sd.md)》 | | 157 | | MindIE-SD | 多模态生成 MindIE 落盘格式 | 《[MindIE-SD](term_mindie_sd.md)》 | |
| 160 | | 量化格式 | 工具与推理框架的落盘协议 | 《[量化格式](../README.md)》 | | 158 | | 量化格式 | 工具与推理框架的落盘协议 | 《[量化格式](../README.md)》 | |
| 161 | - | 159 | +| 权重量化 | 模型适配、编写配置并以 --config 执行量化的业务路径 | 《[权重量化使用指南](../../../user_guide/usage_weight_quantization.md)》 | |
| 162 | -## 8. 接口文档列表 | ||
| 163 | - | ||
| 164 | -| 接口或能力 | 简述 | 链接 | | ||
| 165 | -| --- | --- | --- | | ||
| 166 | -| 一键量化 | 命令与配置协议 | 《[一键量化使用指南](../../../user_guide/usage_quick_quantization.md)》 | | ||
| 167 | -| mindie_format_saver | save 字段 | 《[一键量化使用指南](../../../user_guide/usage_quick_quantization.md#5341-mindie_format_saver)》 | | ||
| 168 | -| multimodal_sd 配置 | dump / inference_config | 《[一键量化使用指南](../../../user_guide/usage_quick_quantization.md#53-multimodal_sd_modelslim_v1-配置详解)》 | | ||
| 169 | -| 多模态生成接入 | 模型与示例 | 《[多模态生成模型接入](../../model/integrating_multimodal_generation_model.md)》 | | ||
| 170 | -| 格式接入 | 新格式开发对照 | 《[量化格式接入指南](../iformat_integration_guide.md)》 | | ||
| @@ -1,34 +1,31 @@ | |||
| 1 | -# MindIE-SD | 1 | +# MindIE-SD 量化格式 量化术语百科词条 |
| 2 | 2 | ||
| 3 | -> **词条类别**:量化数据格式 | 3 | +> **词条类别**:[量化格式](../README.md)<br> |
| 4 | -> | 4 | +> **英文名称**:MindIE-SD Quantization Format<br> |
| 5 | -> **英文名称**:MindIE-SD Quantization Format | 5 | +> **应用领域**:多模态生成模型量化压缩、MindIE-SD 部署<br> |
| 6 | -> | 6 | +> **msModelSlim 实现**:[`msmodelslim/format/mindie_format/`](../../../../../msmodelslim/format/mindie_format/) |
| 7 | -> **英文缩写**:MindIE-SD | 7 | + |
| 8 | -> | 8 | +--- |
| 9 | -> **中文别名**:MindIE 多模态生成保存格式 | ||
| 10 | -> | ||
| 11 | -> **应用领域**:多模态生成模型量化压缩、MindIE 部署 | ||
| 12 | -> | ||
| 13 | -> **msModelSlim 实现**:`msmodelslim/format/mindie_format/`、`MindIEQuantFormatConfig` | ||
| 14 | 9 | ||
| 15 | ## 1. 概述 | 10 | ## 1. 概述 |
| 16 | 11 | ||
| 17 | -MindIE-SD 是 msModelSlim 面向 **多模态生成** 场景、供 MindIE-SD 消费的[量化格式](../README.md)。一键量化通过保存器类型 `mindie_format_saver` 启用。它解决扩散 / DiT 等多模态生成模型量化权重与 MindIE-SD 加载约定对齐的问题;核心特征是与 `multimodal_sd_modelslim_v1` 配置协议配合,并以 `quant_model_description.json` + `quant_model_weight.safetensors` 落盘。 | 12 | +MindIE-SD 是 msModelSlim 面向 **多模态生成** 场景、供 MindIE-SD 消费的[量化格式 量化术语百科词条](../README.md)。一键量化通过保存器类型 `mindie_format_saver` 启用。它解决扩散 / DiT 等多模态生成模型量化权重与 MindIE-SD 加载约定对齐的问题。核心特征是与 `multimodal_sd_modelslim_v1` 配置协议配合,并以 `quant_model_description*.json` + `quant_model_weight*.safetensors` 落盘。 |
| 18 | 13 | ||
| 19 | 配置、执行与部署步骤见《[MindIE-SD 使用指南](mindie_sd_usage.md)》。各量化模式的原理与公式见《[量化模式](../../quantization_mode/README.md)》及下文支持表中的词条链接。 | 14 | 配置、执行与部署步骤见《[MindIE-SD 使用指南](mindie_sd_usage.md)》。各量化模式的原理与公式见《[量化模式](../../quantization_mode/README.md)》及下文支持表中的词条链接。 |
| 20 | 15 | ||
| 16 | +--- | ||
| 17 | + | ||
| 21 | ## 2. 词条介绍 | 18 | ## 2. 词条介绍 |
| 22 | 19 | ||
| 23 | ### 2.1 原理 | 20 | ### 2.1 原理 |
| 24 | 21 | ||
| 25 | -#### 2.1.1 核心思想 | 22 | +**核心思想** |
| 26 | 23 | ||
| 27 | MindIE-SD 本质上是一套**面向多模态生成、供 MindIE-SD 推理引擎消费的量化模型落盘约定**:它不执行校准或伪量化计算,而是在 `multimodal_sd_modelslim_v1` 量化流水线末尾,将已量化完成的模块转换为 MindIE-SD 推理引擎可直接加载的两类交付件——**量化描述文件** `quant_model_description*.json` 与 **量化权重文件** `quant_model_weight*.safetensors`(注意权重文件名为单数 `weight`,与 AscendV1 的 `quant_model_weights` 不同)。前者作为张量级索引,供 MindIE-SD 推理引擎识别各张量名称及其量化模式;后者按相同键名存放对应量化参数。推理侧先读取描述文件,再按键名从 safetensors 取数。 | 24 | MindIE-SD 本质上是一套**面向多模态生成、供 MindIE-SD 推理引擎消费的量化模型落盘约定**:它不执行校准或伪量化计算,而是在 `multimodal_sd_modelslim_v1` 量化流水线末尾,将已量化完成的模块转换为 MindIE-SD 推理引擎可直接加载的两类交付件——**量化描述文件** `quant_model_description*.json` 与 **量化权重文件** `quant_model_weight*.safetensors`(注意权重文件名为单数 `weight`,与 AscendV1 的 `quant_model_weights` 不同)。前者作为张量级索引,供 MindIE-SD 推理引擎识别各张量名称及其量化模式;后者按相同键名存放对应量化参数。推理侧先读取描述文件,再按键名从 safetensors 取数。 |
| 28 | 25 | ||
| 29 | 因此,用户可将 MindIE-SD 理解为:**多模态生成量化结果的 MindIE-SD 推理引擎标准导出包**——算法与多模态适配器负责量化与校准编排,MindIE-SD 负责与 MindIE-SD 推理引擎加载路径对齐的落盘与描述。 | 26 | 因此,用户可将 MindIE-SD 理解为:**多模态生成量化结果的 MindIE-SD 推理引擎标准导出包**——算法与多模态适配器负责量化与校准编排,MindIE-SD 负责与 MindIE-SD 推理引擎加载路径对齐的落盘与描述。 |
| 30 | 27 | ||
| 31 | -#### 2.1.2 关键性质 | 28 | +**关键性质** |
| 32 | 29 | ||
| 33 | - 面向多模态生成(如 Wan2.2),而非通用 LLM AscendV1 默认路径。 | 30 | - 面向多模态生成(如 Wan2.2),而非通用 LLM AscendV1 默认路径。 |
| 34 | - YAML 中 `type` 固定为 `mindie_format_saver`。 | 31 | - YAML 中 `type` 固定为 `mindie_format_saver`。 |
| @@ -36,51 +33,62 @@ MindIE-SD 本质上是一套**面向多模态生成、供 MindIE-SD 推理引擎 | |||
| 36 | - 常与 `multimodal_sd_config`(dump / inference_config)一同出现。 | 33 | - 常与 `multimodal_sd_config`(dump / inference_config)一同出现。 |
| 37 | - 描述文件中的枚举值表达对多种量化模式的承载能力;未实现 handler 的模式需改用《[AscendV1](../ascendv1/term_ascendv1.md)》。 | 34 | - 描述文件中的枚举值表达对多种量化模式的承载能力;未实现 handler 的模式需改用《[AscendV1](../ascendv1/term_ascendv1.md)》。 |
| 38 | 35 | ||
| 39 | -### 2.2 <span id="export-artifacts">导出产物(交付件)</span> | 36 | +--- |
| 40 | 37 | ||
| 41 | -#### 目录与文件说明 | 38 | +## 3. <span id="export-artifacts">导出产物(交付件)</span> |
| 42 | 39 | ||
| 43 | -执行一键量化(`mindie_format_saver`)后,典型交付件位于 `save_path`(分布式场景下可能落在 `rank_*` 子目录): | 40 | +### 3.1 目录与文件说明 |
| 41 | + | ||
| 42 | +执行一键量化并指定 MindIE-SD 落盘格式(保存器 `type` 为 `mindie_format_saver`)后,交付件位于 `save_path`(分布式场景下可能落在 `rank_*` 子目录)。通用单模型目录示例如下: | ||
| 44 | 43 | ||
| 45 | ```bash | 44 | ```bash |
| 46 | -├── quant_model_description.json # 量化权重描述(也可带量化类型后缀) | 45 | +├── quant_model_description*.json # 量化权重描述(可不带或带量化类型后缀) |
| 47 | -├── quant_model_weight.safetensors # 量化权重(可分片;也可带量化类型后缀) | 46 | +├── quant_model_weight*.safetensors # 量化权重(单数 weight;可分片 / 可带量化类型后缀) |
| 48 | -├── quant_model_weight.safetensors.index.json # 分片时生成的索引(可选) | 47 | +├── quant_model_weight*.safetensors.index.json # 分片时生成的索引(可选) |
| 49 | -├── *.json / *.py # 自源模型复制的配置与代码(不含 index.json) | 48 | +├── *.json / *.py # 自源模型复制的配置与代码(不含 index.json) |
| 50 | -└── (可选)calib_data_*.pth # dump 校准数据(enable_dump 时,目录由 dump_data_dir 决定) | 49 | +└── (可选)calib_data_*.pth # dump 校准数据(enable_dump 时,目录由 dump_data_dir 决定) |
| 51 | ``` | 50 | ``` |
| 52 | 51 | ||
| 53 | -| 文件名 | 说明 | | 52 | +对 Wan2.2 等双噪声专家结构,描述文件与量化权重通常分别落在 `low_noise_model/` 与 `high_noise_model/` 子目录下,例如: |
| 54 | -| --------------------------------------------------------------------------------- | --------------------------------------------- | | ||
| 55 | -| `quant_model_description.json`(或 `quant_model_description_{quant_type}.json`) | **量化权重描述文件**,记录张量量化类型与元数据 | | ||
| 56 | -| `quant_model_weight.safetensors`(或 `quant_model_weight_{quant_type}.safetensors`) | **量化权重文件**;较大时可分片,并通过 index.json 索引 | | ||
| 57 | -| `*.json` / `*.py` | 自源模型复制的配置与代码文件;**不复制** `index.json`;权限按工具约定设置 | | ||
| 58 | -| `calib_data_*.pth` | **可选**:校准 dump 数据,见下文可选导出 | | ||
| 59 | 53 | ||
| 60 | -> 注意:MindIE-SD 权重文件名为 `quant_model_weight`(单数),与 AscendV1 的 `quant_model_weights`(复数)不同。 | 54 | +```bash |
| 55 | +├── low_noise_model/ | ||
| 56 | +│ ├── quant_model_description*.json | ||
| 57 | +│ └── quant_model_weight*.safetensors | ||
| 58 | +└── high_noise_model/ | ||
| 59 | + ├── quant_model_description*.json | ||
| 60 | + └── quant_model_weight*.safetensors | ||
| 61 | +``` | ||
| 61 | 62 | ||
| 62 | -`quant_model_description.json` 中,每个张量键对应一个量化类型标识;同一 Linear 层的相关参数通常共享相同类型标识。 | 63 | +| 文件名 | 说明 | |
| 64 | +| --- | --- | | ||
| 65 | +| `quant_model_description*.json` | **量化权重描述文件**,记录张量量化类型与元数据;也可带 `{quant_type}` 后缀 | | ||
| 66 | +| `quant_model_weight*.safetensors` | **量化权重文件**(单数 `weight`,与 AscendV1 的复数 `weights` 不同);较大时可分片,并通过 index.json 索引 | | ||
| 67 | +| `*.json` / `*.py` | 自源模型复制的配置与代码文件;**不复制** `index.json`;权限按工具约定设置 | | ||
| 68 | +| `calib_data_*.pth` | **可选**:校准 dump 数据,见下文可选导出 | | ||
| 63 | 69 | ||
| 64 | -#### quant_model_description.json | 70 | +`quant_model_description*.json` 中,每个张量键对应一个量化类型标识;同一 Linear 层的相关参数通常共享相同类型标识。 |
| 65 | 71 | ||
| 66 | -##### 文件结构示例 | 72 | +### 3.2 quant_model_description.json |
| 73 | + | ||
| 74 | +**文件结构示例** | ||
| 67 | 75 | ||
| 68 | ```json | 76 | ```json |
| 69 | { | 77 | { |
| 70 | "model_quant_type": "W8A8", | 78 | "model_quant_type": "W8A8", |
| 71 | "group_size": 32, | 79 | "group_size": 32, |
| 72 | - "model.layers.0.self_attn.q_proj.weight": "W8A8", | 80 | + "blocks.0.self_attn.q.weight": "W8A8", |
| 73 | - "model.layers.0.self_attn.q_proj.input_scale": "W8A8", | 81 | + "blocks.0.self_attn.q.input_scale": "W8A8", |
| 74 | - "model.layers.0.self_attn.q_proj.input_offset": "W8A8", | 82 | + "blocks.0.self_attn.q.input_offset": "W8A8", |
| 75 | - "model.layers.0.self_attn.q_proj.deq_scale": "W8A8", | 83 | + "blocks.0.self_attn.q.deq_scale": "W8A8", |
| 76 | - "model.layers.0.self_attn.q_proj.quant_bias": "W8A8", | 84 | + "blocks.0.self_attn.q.quant_bias": "W8A8", |
| 77 | - "model.layers.0.self_attn.q_proj.bias": "FLOAT" | 85 | + "blocks.0.self_attn.q.bias": "FLOAT" |
| 78 | } | 86 | } |
| 79 | ``` | 87 | ``` |
| 80 | 88 | ||
| 81 | -> 张量键名由模型适配器决定;启用 FA3 等时还可出现 `fa_quant_type`、层级 `quant_type` 等字段。 | 89 | +> 张量键名由模型适配器决定(多模态生成模型常见 `blocks.*` 前缀,而非 LLM 的 `model.layers.*`);启用 FA3 等时还可出现 `fa_quant_type`、层级 `quant_type` 等字段。 |
| 82 | 90 | ||
| 83 | -##### <span id="global-metadata">全局元数据字段</span> | 91 | +**<span id="global-metadata">全局元数据字段</span>** |
| 84 | 92 | ||
| 85 | | 字段名 | 类型 | 说明 | | 93 | | 字段名 | 类型 | 说明 | |
| 86 | | ------------------ | ------ | ------------------------------------------------ | | 94 | | ------------------ | ------ | ------------------------------------------------ | |
| @@ -91,7 +99,7 @@ MindIE-SD 本质上是一套**面向多模态生成、供 MindIE-SD 推理引擎 | |||
| 91 | 99 | ||
| 92 | 完整多模态配置协议见《[一键量化使用指南](../../../user_guide/usage_quick_quantization.md#53-multimodal_sd_modelslim_v1-配置详解)》。 | 100 | 完整多模态配置协议见《[一键量化使用指南](../../../user_guide/usage_quick_quantization.md#53-multimodal_sd_modelslim_v1-配置详解)》。 |
| 93 | 101 | ||
| 94 | -#### <span id="optional-dump">可选导出:校准 dump 数据</span> | 102 | +### 3.3 <span id="optional-dump">可选导出:校准 dump 数据</span> |
| 95 | 103 | ||
| 96 | 当 `multimodal_sd_config.dump_config.enable_dump` 为 true 时,可在 `dump_data_dir`(为空则使用 `save_path`)写出校准 pth,例如: | 104 | 当 `multimodal_sd_config.dump_config.enable_dump` 为 true 时,可在 `dump_data_dir`(为空则使用 `save_path`)写出校准 pth,例如: |
| 97 | 105 | ||
| @@ -102,9 +110,11 @@ calib_data_<task_config>_high_noise_model.pth | |||
| 102 | 110 | ||
| 103 | 字段含义见《[一键量化使用指南](../../../user_guide/usage_quick_quantization.md#dump_config---校准数据捕获配置)》。该目录属于量化过程辅助数据,**不一定**随 MindIE 部署目录一并交付。 | 111 | 字段含义见《[一键量化使用指南](../../../user_guide/usage_quick_quantization.md#dump_config---校准数据捕获配置)》。该目录属于量化过程辅助数据,**不一定**随 MindIE 部署目录一并交付。 |
| 104 | 112 | ||
| 105 | -### 2.3 <span id="engine-support">推理引擎支持情况</span> | 113 | +--- |
| 106 | 114 | ||
| 107 | -MindIE-SD **均可落盘**下表中的格式枚举;下表描述的是产物能否被 **MindIE 多模态生成**路径加载。口径依据《[大模型支持矩阵](../../model/README.md)》与 lab_practice 验证标签;具体模型 × 模式 × MindIE-SD 版本以支持矩阵与官方最佳实践为准。 | 115 | +## 4. <span id="engine-support">推理引擎支持情况</span> |
| 116 | + | ||
| 117 | +下表中的格式枚举**均可被 MindIE-SD 落盘**;下表描述的是产物能否被 **MindIE 多模态生成**路径加载。口径依据《[大模型支持矩阵](../../model/README.md)》与 lab_practice 验证标签;具体模型 × 模式 × MindIE-SD 版本以支持矩阵与官方最佳实践为准。 | ||
| 108 | 118 | ||
| 109 | | 格式枚举值 | MindIE-SD | 说明 | | 119 | | 格式枚举值 | MindIE-SD | 说明 | |
| 110 | | --- | --- | --- | | 120 | | --- | --- | --- | |
| @@ -116,11 +126,13 @@ MindIE-SD **均可落盘**下表中的格式枚举;下表描述的是产物能 | |||
| 116 | | `W4A4_MXFP4_DUALSCALE` | √ | MXFP4 双 Scale | | 126 | | `W4A4_MXFP4_DUALSCALE` | √ | MXFP4 双 Scale | |
| 117 | | `FAQuant` | √ | FA3 等;常与线性层量化组合 | | 127 | | `FAQuant` | √ | FA3 等;常与线性层量化组合 | |
| 118 | 128 | ||
| 119 | -> **图例**:`√` 表示该引擎存在可加载路径或已有验证实践。通用 LLM 的 vLLM Ascend / SGLang / MindIE 路径请改用《[AscendV1](../ascendv1/term_ascendv1.md)》;选型后再在下文「[量化模式支持情况](#mode-support)」核对交付件字段。 | 129 | +> **图例**:√ 表示该引擎存在可加载路径或已有验证实践。通用 LLM 的 vLLM Ascend / SGLang / MindIE 路径请改用《[AscendV1](../ascendv1/term_ascendv1.md)》;选型后再在下文 [量化模式支持情况](#mode-support) 核对交付件字段。 |
| 120 | 130 | ||
| 121 | -### 2.4 <span id="mode-support">量化模式支持情况</span> | 131 | +--- |
| 122 | 132 | ||
| 123 | -> **交付件说明**:「交付件:量化描述 JSON」→ `quant_model_description*.json`;「交付件:量化 safetensors」→ `quant_model_weight*.safetensors`。模式原理见《[量化模式](../../quantization_mode/README.md)》词条。具体模型与 `quant_type` 组合以《[大模型支持矩阵](../../model/README.md)》及 lab_practice / example 为准。 | 133 | +## 5. <span id="mode-support">量化模式支持情况</span> |
| 134 | + | ||
| 135 | +> **交付件说明**:表中交付件:量化描述 JSON对应 `quant_model_description*.json`;交付件:量化 safetensors对应 `quant_model_weight*.safetensors`。模式原理见《[量化模式](../../quantization_mode/README.md)》词条(本词条不展开反量化公式与 NPU 算子)。具体模型与 `quant_type` 组合以《[大模型支持矩阵](../../model/README.md)》及 lab_practice / example 为准。 | ||
| 124 | 136 | ||
| 125 | | 格式枚举值 | MindIE-SD 是否支持落盘 | 量化模式词条 | 交付件:量化描述 JSON | 交付件:量化 safetensors | | 137 | | 格式枚举值 | MindIE-SD 是否支持落盘 | 量化模式词条 | 交付件:量化描述 JSON | 交付件:量化 safetensors | |
| 126 | | ---------------------- | ---------------- | ------ | ------------------------------------------------ | ----------------------------------------------- | | 138 | | ---------------------- | ---------------- | ------ | ------------------------------------------------ | ----------------------------------------------- | |
| @@ -132,31 +144,33 @@ MindIE-SD **均可落盘**下表中的格式枚举;下表描述的是产物能 | |||
| 132 | | `W4A4_MXFP4_DUALSCALE` | 支持 | [W4A4 MX 双 Scale](../../quantization_mode/linear_layer_quantization/term_w4a4_mx_dualscale.md) | [W4A4_MXFP4_DUALSCALE 描述键](#desc-mxfp-dualscale) | [W4A4_MXFP4_DUALSCALE 权重张量](#st-mxfp-dualscale) | | 144 | | `W4A4_MXFP4_DUALSCALE` | 支持 | [W4A4 MX 双 Scale](../../quantization_mode/linear_layer_quantization/term_w4a4_mx_dualscale.md) | [W4A4_MXFP4_DUALSCALE 描述键](#desc-mxfp-dualscale) | [W4A4_MXFP4_DUALSCALE 权重张量](#st-mxfp-dualscale) | |
| 133 | | `FAQuant` | 支持(FA3 等) | [FA PerHead](../../quantization_mode/fa_quantization/term_fa_perhead.md) | [FAQuant 描述键](#desc-faquant) | [FAQuant 权重张量](#st-faquant) | | 145 | | `FAQuant` | 支持(FA3 等) | [FA PerHead](../../quantization_mode/fa_quantization/term_fa_perhead.md) | [FAQuant 描述键](#desc-faquant) | [FAQuant 权重张量](#st-faquant) | |
| 134 | 146 | ||
| 135 | -### 2.5 各量化模式交付件格式 | 147 | +--- |
| 148 | + | ||
| 149 | +## 6. 各量化模式交付件格式 | ||
| 136 | 150 | ||
| 137 | 约定: | 151 | 约定: |
| 138 | 152 | ||
| 139 | - `{prefix}` 为模块前缀(由多模态适配器命名决定)。 | 153 | - `{prefix}` 为模块前缀(由多模态适配器命名决定)。 |
| 140 | -- **描述 JSON**:文件 `quant_model_description*.json`;键为张量全名,值为量化类型字符串;全局字段见上文「[全局元数据字段](#global-metadata)」。 | 154 | +- **描述 JSON**:文件 `quant_model_description*.json`;键为张量全名,值为量化类型字符串;全局字段见上文[全局元数据字段](#global-metadata)。 |
| 141 | - **safetensors**:文件 `quant_model_weight*.safetensors`(可分片);键为 `{prefix}.<param>`,存实际数值张量。 | 155 | - **safetensors**:文件 `quant_model_weight*.safetensors`(可分片);键为 `{prefix}.<param>`,存实际数值张量。 |
| 142 | 156 | ||
| 143 | -#### FLOAT | 157 | +### 6.1 FLOAT |
| 144 | 158 | ||
| 145 | -##### <span id="desc-float">quant_model_description.json</span> | 159 | +**<span id="desc-float">quant_model_description.json</span>** |
| 146 | 160 | ||
| 147 | | 描述键 | 取值 | 说明 | | 161 | | 描述键 | 取值 | 说明 | |
| 148 | | ---------------------- | --------- | ----------------------------------------------- | | 162 | | ---------------------- | --------- | ----------------------------------------------- | |
| 149 | | `{prefix}.weight` 等参数名 | `"FLOAT"` | 未量化参数;`on_float_module` 按 `named_parameters` 写出 | | 163 | | `{prefix}.weight` 等参数名 | `"FLOAT"` | 未量化参数;`on_float_module` 按 `named_parameters` 写出 | |
| 150 | 164 | ||
| 151 | -##### <span id="st-float">quant_model_weight*.safetensors</span> | 165 | +**<span id="st-float">`quant_model_weight*.safetensors`</span>** |
| 152 | 166 | ||
| 153 | | 张量名 | 数据类型 | 说明 | | 167 | | 张量名 | 数据类型 | 说明 | |
| 154 | | ------------ | ------ | ----------------------------------- | | 168 | | ------------ | ------ | ----------------------------------- | |
| 155 | | `{prefix}.*` | 与源参数一致 | 浮点参数原样落盘;在线旋转矩阵等也可能以 `"FLOAT"` 标签写入 | | 169 | | `{prefix}.*` | 与源参数一致 | 浮点参数原样落盘;在线旋转矩阵等也可能以 `"FLOAT"` 标签写入 | |
| 156 | 170 | ||
| 157 | -#### W8A8 | 171 | +### 6.2 W8A8 |
| 158 | 172 | ||
| 159 | -##### <span id="desc-w8a8">quant_model_description.json</span> | 173 | +**<span id="desc-w8a8">quant_model_description.json</span>** |
| 160 | 174 | ||
| 161 | | 描述键 | 取值 | 说明 | | 175 | | 描述键 | 取值 | 说明 | |
| 162 | | ----------------------- | --------- | ------------- | | 176 | | ----------------------- | --------- | ------------- | |
| @@ -167,7 +181,7 @@ MindIE-SD **均可落盘**下表中的格式枚举;下表描述的是产物能 | |||
| 167 | | `{prefix}.deq_scale` | `"W8A8"` | 综合反量化 scale | | 181 | | `{prefix}.deq_scale` | `"W8A8"` | 综合反量化 scale | |
| 168 | | `{prefix}.bias` | `"FLOAT"` | 原始浮点偏置(可选) | | 182 | | `{prefix}.bias` | `"FLOAT"` | 原始浮点偏置(可选) | |
| 169 | 183 | ||
| 170 | -##### <span id="st-w8a8">quant_model_weight*.safetensors</span> | 184 | +**<span id="st-w8a8">`quant_model_weight*.safetensors`</span>** |
| 171 | 185 | ||
| 172 | | 张量名 | 数据类型 | 说明 | | 186 | | 张量名 | 数据类型 | 说明 | |
| 173 | | ----------------------- | ------- | --------------- | | 187 | | ----------------------- | ------- | --------------- | |
| @@ -178,9 +192,9 @@ MindIE-SD **均可落盘**下表中的格式枚举;下表描述的是产物能 | |||
| 178 | | `{prefix}.deq_scale` | float32 | 综合反量化 scale | | 192 | | `{prefix}.deq_scale` | float32 | 综合反量化 scale | |
| 179 | | `{prefix}.bias` | float32 | 原始浮点偏置(可选) | | 193 | | `{prefix}.bias` | float32 | 原始浮点偏置(可选) | |
| 180 | 194 | ||
| 181 | -#### W8A8_DYNAMIC | 195 | +### 6.3 W8A8_DYNAMIC |
| 182 | 196 | ||
| 183 | -##### <span id="desc-w8a8-dynamic">quant_model_description.json</span> | 197 | +**<span id="desc-w8a8-dynamic">quant_model_description.json</span>** |
| 184 | 198 | ||
| 185 | | 描述键 | 取值 | 说明 | | 199 | | 描述键 | 取值 | 说明 | |
| 186 | | ------------------------ | ---------------- | --------------- | | 200 | | ------------------------ | ---------------- | --------------- | |
| @@ -191,7 +205,7 @@ MindIE-SD **均可落盘**下表中的格式枚举;下表描述的是产物能 | |||
| 191 | 205 | ||
| 192 | 激活动态参数不落盘。 | 206 | 激活动态参数不落盘。 |
| 193 | 207 | ||
| 194 | -##### <span id="st-w8a8-dynamic">quant_model_weight*.safetensors</span> | 208 | +**<span id="st-w8a8-dynamic">`quant_model_weight*.safetensors`</span>** |
| 195 | 209 | ||
| 196 | | 张量名 | 数据类型 | 说明 | | 210 | | 张量名 | 数据类型 | 说明 | |
| 197 | | ------------------------ | ------- | ----------------------- | | 211 | | ------------------------ | ------- | ----------------------- | |
| @@ -200,9 +214,9 @@ MindIE-SD **均可落盘**下表中的格式枚举;下表描述的是产物能 | |||
| 200 | | `{prefix}.weight_offset` | float32 | 权重量化 zero-point(对称时为 0) | | 214 | | `{prefix}.weight_offset` | float32 | 权重量化 zero-point(对称时为 0) | |
| 201 | | `{prefix}.bias` | float32 | 原始浮点偏置(可选) | | 215 | | `{prefix}.bias` | float32 | 原始浮点偏置(可选) | |
| 202 | 216 | ||
| 203 | -#### W8A8_MXFP8 | 217 | +### 6.4 W8A8_MXFP8 |
| 204 | 218 | ||
| 205 | -##### <span id="desc-w8a8-mxfp8">quant_model_description.json</span> | 219 | +**<span id="desc-w8a8-mxfp8">quant_model_description.json</span>** |
| 206 | 220 | ||
| 207 | | 描述键 | 取值 | 说明 | | 221 | | 描述键 | 取值 | 说明 | |
| 208 | | ----------------------- | -------------- | ---------------- | | 222 | | ----------------------- | -------------- | ---------------- | |
| @@ -210,7 +224,7 @@ MindIE-SD **均可落盘**下表中的格式枚举;下表描述的是产物能 | |||
| 210 | | `{prefix}.weight_scale` | `"W8A8_MXFP8"` | block-wise scale | | 224 | | `{prefix}.weight_scale` | `"W8A8_MXFP8"` | block-wise scale | |
| 211 | | `{prefix}.bias` | `"FLOAT"` | 偏置(可选) | | 225 | | `{prefix}.bias` | `"FLOAT"` | 偏置(可选) | |
| 212 | 226 | ||
| 213 | -##### <span id="st-w8a8-mxfp8">quant_model_weight*.safetensors</span> | 227 | +**<span id="st-w8a8-mxfp8">`quant_model_weight*.safetensors`</span>** |
| 214 | 228 | ||
| 215 | | 张量名 | 数据类型 | 说明 | | 229 | | 张量名 | 数据类型 | 说明 | |
| 216 | | ----------------------- | ------------- | -------------------------------------- | | 230 | | ----------------------- | ------------- | -------------------------------------- | |
| @@ -218,9 +232,9 @@ MindIE-SD **均可落盘**下表中的格式枚举;下表描述的是产物能 | |||
| 218 | | `{prefix}.weight_scale` | uint8 | block-wise scale(导出时常见 **+127 偏移**后存储) | | 232 | | `{prefix}.weight_scale` | uint8 | block-wise scale(导出时常见 **+127 偏移**后存储) | |
| 219 | | `{prefix}.bias` | float32 | 原始浮点偏置(可选) | | 233 | | `{prefix}.bias` | float32 | 原始浮点偏置(可选) | |
| 220 | 234 | ||
| 221 | -#### W4A4_MXFP4 | 235 | +### 6.5 W4A4_MXFP4 |
| 222 | 236 | ||
| 223 | -##### <span id="desc-w4a4-mxfp4">quant_model_description.json</span> | 237 | +**<span id="desc-w4a4-mxfp4">quant_model_description.json</span>** |
| 224 | 238 | ||
| 225 | | 描述键 | 取值 | 说明 | | 239 | | 描述键 | 取值 | 说明 | |
| 226 | | ----------------------- | -------------- | ---------------- | | 240 | | ----------------------- | -------------- | ---------------- | |
| @@ -228,7 +242,7 @@ MindIE-SD **均可落盘**下表中的格式枚举;下表描述的是产物能 | |||
| 228 | | `{prefix}.weight_scale` | `"W4A4_MXFP4"` | block-wise scale | | 242 | | `{prefix}.weight_scale` | `"W4A4_MXFP4"` | block-wise scale | |
| 229 | | `{prefix}.bias` | `"FLOAT"` | 偏置(可选) | | 243 | | `{prefix}.bias` | `"FLOAT"` | 偏置(可选) | |
| 230 | 244 | ||
| 231 | -##### <span id="st-w4a4-mxfp4">quant_model_weight*.safetensors</span> | 245 | +**<span id="st-w4a4-mxfp4">`quant_model_weight*.safetensors`</span>** |
| 232 | 246 | ||
| 233 | | 张量名 | 数据类型 | 说明 | | 247 | | 张量名 | 数据类型 | 说明 | |
| 234 | | ----------------------- | ------- | -------------------------------- | | 248 | | ----------------------- | ------- | -------------------------------- | |
| @@ -236,9 +250,9 @@ MindIE-SD **均可落盘**下表中的格式枚举;下表描述的是产物能 | |||
| 236 | | `{prefix}.weight_scale` | uint8 | block-wise scale(常见 **+127 偏移**) | | 250 | | `{prefix}.weight_scale` | uint8 | block-wise scale(常见 **+127 偏移**) | |
| 237 | | `{prefix}.bias` | float32 | 原始浮点偏置(可选) | | 251 | | `{prefix}.bias` | float32 | 原始浮点偏置(可选) | |
| 238 | 252 | ||
| 239 | -#### W4A4_MXFP4_DUALSCALE | 253 | +### 6.6 W4A4_MXFP4_DUALSCALE |
| 240 | 254 | ||
| 241 | -##### <span id="desc-mxfp-dualscale">quant_model_description.json</span> | 255 | +**<span id="desc-mxfp-dualscale">quant_model_description.json</span>** |
| 242 | 256 | ||
| 243 | 在 [W4A4_MXFP4 描述键](#desc-w4a4-mxfp4) 基础上,取值均为 `"W4A4_MXFP4_DUALSCALE"`,并增加: | 257 | 在 [W4A4_MXFP4 描述键](#desc-w4a4-mxfp4) 基础上,取值均为 `"W4A4_MXFP4_DUALSCALE"`,并增加: |
| 244 | 258 | ||
| @@ -246,7 +260,7 @@ MindIE-SD **均可落盘**下表中的格式枚举;下表描述的是产物能 | |||
| 246 | | ---------------------------- | ------------------------ | --------- | | 260 | | ---------------------------- | ------------------------ | --------- | |
| 247 | | `{prefix}.weight_dual_scale` | `"W4A4_MXFP4_DUALSCALE"` | 第二路 scale | | 261 | | `{prefix}.weight_dual_scale` | `"W4A4_MXFP4_DUALSCALE"` | 第二路 scale | |
| 248 | 262 | ||
| 249 | -##### <span id="st-mxfp-dualscale">quant_model_weight*.safetensors</span> | 263 | +**<span id="st-mxfp-dualscale">`quant_model_weight*.safetensors`</span>** |
| 250 | 264 | ||
| 251 | | 张量名 | 数据类型 | 说明 | | 265 | | 张量名 | 数据类型 | 说明 | |
| 252 | | ---------------------------- | ------- | ------------------------- | | 266 | | ---------------------------- | ------- | ------------------------- | |
| @@ -255,9 +269,9 @@ MindIE-SD **均可落盘**下表中的格式枚举;下表描述的是产物能 | |||
| 255 | | `{prefix}.weight_dual_scale` | float32 | 第二路 scale | | 269 | | `{prefix}.weight_dual_scale` | float32 | 第二路 scale | |
| 256 | | `{prefix}.bias` | float32 | 原始浮点偏置(可选) | | 270 | | `{prefix}.bias` | float32 | 原始浮点偏置(可选) | |
| 257 | 271 | ||
| 258 | -#### FAQuant | 272 | +### 6.7 FAQuant |
| 259 | 273 | ||
| 260 | -##### <span id="desc-faquant">quant_model_description.json</span> | 274 | +**<span id="desc-faquant">quant_model_description.json</span>** |
| 261 | 275 | ||
| 262 | | 描述键 / 全局字段 | 取值 | 说明 | | 276 | | 描述键 / 全局字段 | 取值 | 说明 | |
| 263 | | --------------------------------- | ----------- | ------------------ | | 277 | | --------------------------------- | ----------- | ------------------ | |
| @@ -265,38 +279,41 @@ MindIE-SD **均可落盘**下表中的格式枚举;下表描述的是产物能 | |||
| 265 | | `{prefix}.offset` | `"FAQuant"` | FA per-head offset | | 279 | | `{prefix}.offset` | `"FAQuant"` | FA per-head offset | |
| 266 | | `fa_quant_type` / 层级 `quant_type` | 由 FA3 策略拼装 | 启用 FA3 等时写入 | | 280 | | `fa_quant_type` / 层级 `quant_type` | 由 FA3 策略拼装 | 启用 FA3 等时写入 | |
| 267 | 281 | ||
| 268 | -##### <span id="st-faquant">quant_model_weight*.safetensors</span> | 282 | +**<span id="st-faquant">`quant_model_weight*.safetensors`</span>** |
| 269 | 283 | ||
| 270 | | 张量名 | 数据类型 | 说明 | | 284 | | 张量名 | 数据类型 | 说明 | |
| 271 | | ----------------- | -------------- | -------------------------- | | 285 | | ----------------- | -------------- | -------------------------- | |
| 272 | | `{prefix}.scale` | float32 | FA 量化 scale | | 286 | | `{prefix}.scale` | float32 | FA 量化 scale | |
| 273 | | `{prefix}.offset` | int8 或 float32 | 随 INT8 / FP8 per-head 路径而定 | | 287 | | `{prefix}.offset` | int8 或 float32 | 随 INT8 / FP8 per-head 路径而定 | |
| 274 | 288 | ||
| 275 | -### 2.6 适用场景与限制 | 289 | +--- |
| 276 | 290 | ||
| 277 | -#### 2.6.1 适用场景 | 291 | +## 7. 适用场景与限制 |
| 292 | + | ||
| 293 | +### 7.1 适用场景 | ||
| 278 | 294 | ||
| 279 | - Wan2.2 等已接入的多模态生成模型量化并交付 MindIE。 | 295 | - Wan2.2 等已接入的多模态生成模型量化并交付 MindIE。 |
| 280 | - 需要与 `multimodal_sd_modelslim_v1` 的 `inference_config` / dump 配置一并使用的导出场景。 | 296 | - 需要与 `multimodal_sd_modelslim_v1` 的 `inference_config` / dump 配置一并使用的导出场景。 |
| 281 | 297 | ||
| 282 | -#### 2.6.2 使用限制 | 298 | +### 7.2 使用限制 |
| 283 | 299 | ||
| 284 | - 不替代 AscendV1 作为通用 LLM 默认导出格式;未实现 handler 的模式会提示改用 AscendV1。 | 300 | - 不替代 AscendV1 作为通用 LLM 默认导出格式;未实现 handler 的模式会提示改用 AscendV1。 |
| 285 | - 产物文件命名与字段随模型适配器演进,部署前须按目标 MindIE 版本核对。 | 301 | - 产物文件命名与字段随模型适配器演进,部署前须按目标 MindIE 版本核对。 |
| 286 | -- 本词条不展开量化模式原理、反量化公式与 NPU 算子说明(见《[量化模式](../../quantization_mode/README.md)》)。 | ||
| 287 | 302 | ||
| 288 | -## 3. 关联流程 | 303 | +--- |
| 289 | 304 | ||
| 290 | -| 流程 | 说明 | | 305 | +## 8. 关联流程 |
| 291 | -| --------------------------------------------------------------------- | ------------------ | | ||
| 292 | -| 《[MindIE-SD 使用指南](mindie_sd_usage.md)》 | 确认模式支持、配置与执行 | | ||
| 293 | -| 《[一键量化使用指南](../../../user_guide/usage_quick_quantization.md)》 | multimodal_sd 配置详解 | | ||
| 294 | -| 《[多模态生成模型接入](../../model/integrating_multimodal_generation_model.md)》 | 模型接入与示例 | | ||
| 295 | -| 《[量化格式接入指南](../iformat_integration_guide.md)》 | 新格式开发对照 | | ||
| 296 | 306 | ||
| 297 | -## 4. 关联词条 | 307 | +- 《[MindIE-SD 使用指南](mindie_sd_usage.md)》:确认模式支持、配置与执行。 |
| 308 | +- 《[一键量化使用指南](../../../user_guide/usage_quick_quantization.md)》:multimodal_sd 配置详解。 | ||
| 309 | +- 《[多模态生成模型接入](../../model/integrating_multimodal_generation_model.md)》:模型接入与示例。 | ||
| 310 | +- 《[量化格式接入指南](../iformat_integration_guide.md)》:新格式开发对照。 | ||
| 298 | 311 | ||
| 299 | -- [量化格式](../README.md):上位概念,本词条所属目录。 | 312 | +--- |
| 300 | -- [AscendV1](../ascendv1/term_ascendv1.md):其他,同属量化格式的并列落盘协议;未实现 handler 的模式可改用 AscendV1。 | 313 | + |
| 301 | -- [compressed-tensors](../compressed_tensors/term_compressed_tensors.md):其他,同属量化格式的并列落盘协议。 | 314 | +## 9. 关联词条 |
| 302 | -- [量化模式](../../quantization_mode/README.md):配套术语,本格式交付件枚举对应各量化模式;详见本页「[量化模式支持情况](#mode-support)」。 | 315 | + |
| 316 | +- [量化格式 量化术语百科词条](../README.md):上位概念,本词条所属目录。 | ||
| 317 | +- [AscendV1 量化格式 量化术语百科词条](../ascendv1/term_ascendv1.md):其他,同属量化格式的并列落盘协议;未实现 handler 的模式可改用 AscendV1。 | ||
| 318 | +- [compressed-tensors 量化格式 量化术语百科词条](../compressed_tensors/term_compressed_tensors.md):其他,同属量化格式的并列落盘协议。 | ||
| 319 | +- [量化模式](../../quantization_mode/README.md):配套术语,本格式交付件枚举对应各量化模式;详见本页[量化模式支持情况](#mode-support)。 | ||