MindStudio-ModelSlim(msModelSlim)是MindStudio全流程工具链推出的模型量化压缩工具。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[Feature] 引入基于 DevContainer 的高效开发环境 Co-authored-by: LeeQT<liqitong@huawei.com> # message auto-generated for no-merge-commit merge: !940 merge dev/devcontainer-env into master [Feature] 引入基于 DevContainer 的高效开发环境 Created-by: LeeQT Commit-by: LeeQT Merged-by: ascend-robot Description: PR 标题前缀:[Feature] ## 1. 影响面评估 **接口变更:** 无 **输出件变更:** 无 **非兼容变更:** 无 **SIG 评审结论:** 无 ## 2. 修改描述 **修改背景:** 开发者需按 MSOT 指南手动拉镜像并用 ctr_in.py 初始化,才能复现与 CI 一致的环境,成本高。 **修改目的:** 提供 VS Code Dev Container 底座,在 MindStudio 标准构建镜像中一键拉起与 CI 一致的环境。 **修改内容:** - devcontainer:新增 .devcontainer(devcontainer.json / initialize.sh / init.sh / post-create.sh / README.md),引用 SWR 预置镜像、固定 /workspace 挂载、缓存 bind 持久化、初始化分步日志与 pre-commit 后台预热 - .vscode:新增 tasks / launch / settings,封装构建、UT、Lint 任务与 Python 调试 - 治理:补充 .gitignore;.gitattributes 强制 *.sh 用 LF;.pre-commit-config.yaml 对 devcontainer/.vscode 的 JSONC 豁免 check-json - 单测:UT 任务自动先装测试依赖,规避 No module named pytest ## 3. 功能验证 - [x] 功能自验(离线:bash -n、JSONC 解析、文档公共清单已通过;容器内 UT 冒烟待真机验证) - [x] 本地自验用例截图(请勿包含个人信息;可附复现命令) **复现步骤:** bash # VS Code:Dev Containers: Reopen in Container # Terminal → Run Task → msmodelslim: UT reduced (modelslim_v1) ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [x] 是否已校验外部数据:N/A(仅 shell/JSONC 配置,无外部输入解析) - [x] 是否未采集或打印敏感信息:是(仅把宿主 git 身份同步到容器内 .gitconfig) - [x] 是否已正确设置文件权限:是(脚本 100755、.host-gitconfig 600、容器内数据副本 640) - [x] 是否充分考虑浮点运算溢出、除零等异常场景:N/A - [x] 是否已对正则表达式做 ReDos 检查:N/A(仅 openEuler repo URL 前缀替换) **DT** - [x] 是否具备 UT 测试用例看护:未新增(改动仅 devcontainer/构建脚本,不影响产品逻辑;既有 UT 与 CI 冒烟不变) - [x] 是否需要添加冒烟:否 See merge request: Ascend/msmodelslim!940 | 23 天前 | |
[Feature] msmodelslim gitcode代码化 Co-authored-by: hwstaff_mindstudio<lguanchi9@163.com> # message auto-generated for no-merge-commit merge: !979 merge master into master [Feature] msmodelslim gitcode代码化 Created-by: A1streomeria Commit-by: liguanchi;hwstaff_mindstudio Merged-by: ascend-robot Description: # PR 提交说明 提交前请阅读 [贡献指南](https://gitcode.com/Ascend/msmodelslim/blob/master/docs/zh/contributing/contributing_guide.md),开发者文档:[模型接入指南](../docs/zh/knowledge_base/model/integrating_models.md) PR 标题前缀:[Feature]、[Bugfix]、[Doc]、[Test](与 CONTRIBUTING 一致) ## 1. 影响面评估 **接口变更(按需):** 无 > 备注:若无变更请保留「无」;涉及 CLI、API、YAML 等请在此项补充说明。 **输出件变更(按需):** 无 > 备注:若无变更请保留「无」;涉及导出格式、产物路径等请在此项补充说明。 **非兼容变更(按需):** 无 > 备注:若无变更请保留「无」;若有非兼容变更请说明迁移方式。 **SIG 评审结论(按需):** 无 > 提醒:非兼容、安全风险等高危 PR 须经 SIG 评审后合入;无则保留「无」。 ## 2. 修改描述 ### 1. 修改描述 - **修改原因:** - msmodelslim gitcode actions代码化切换 - **修改方案:** - gitcode 代码化配置合入 - 只修改.gitcode文件夹下 负责actions流水线启动的配置文件 不影响业务 构建 以及其他场景 - **修改内容:** -  - https://gitcode.com/Ascend/msmodelslim/issues/569 预期结果为:  (在此填写) **概念域参考(填写提示):** - cli:命令行 quant / analyze / tune - app:最佳实践量化、量化分析、精度反馈自动调优等 - core:算法、量化服务、调度、张量量化、调优策略、最佳实践、上下文等 - infra:模型适配、调优计划/历史/缓存、测评服务等 - utils:日志、错误处理、插件等 ## 3. 功能验证 冒烟由 CI 门禁检查,无需填写「冒烟是否通过」。 - [ ] 功能自验 - [ ] 本地自验用例截图(请勿包含个人信息;可附复现命令) **复现步骤(可选):** bash # 在此粘贴可复现命令 ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [ ] 是否已校验外部数据 - [ ] 是否未采集或打印敏感信息 - [ ] 是否已正确设置文件权限 - [ ] 是否充分考虑浮点运算溢出、除零等异常场景 - [ ] 是否已对正则表达式做 ReDos 检查 **DT** - [ ] 是否具备 UT 测试用例看护(路径:用例路径;未添加请说明原因) - [ ] 是否需要添加冒烟:否(若「是」请说明冒烟场景及对应用途) See merge request: Ascend/msmodelslim!979 | 9 天前 | |
[Feature] 引入基于 DevContainer 的高效开发环境 Co-authored-by: LeeQT<liqitong@huawei.com> # message auto-generated for no-merge-commit merge: !940 merge dev/devcontainer-env into master [Feature] 引入基于 DevContainer 的高效开发环境 Created-by: LeeQT Commit-by: LeeQT Merged-by: ascend-robot Description: PR 标题前缀:[Feature] ## 1. 影响面评估 **接口变更:** 无 **输出件变更:** 无 **非兼容变更:** 无 **SIG 评审结论:** 无 ## 2. 修改描述 **修改背景:** 开发者需按 MSOT 指南手动拉镜像并用 ctr_in.py 初始化,才能复现与 CI 一致的环境,成本高。 **修改目的:** 提供 VS Code Dev Container 底座,在 MindStudio 标准构建镜像中一键拉起与 CI 一致的环境。 **修改内容:** - devcontainer:新增 .devcontainer(devcontainer.json / initialize.sh / init.sh / post-create.sh / README.md),引用 SWR 预置镜像、固定 /workspace 挂载、缓存 bind 持久化、初始化分步日志与 pre-commit 后台预热 - .vscode:新增 tasks / launch / settings,封装构建、UT、Lint 任务与 Python 调试 - 治理:补充 .gitignore;.gitattributes 强制 *.sh 用 LF;.pre-commit-config.yaml 对 devcontainer/.vscode 的 JSONC 豁免 check-json - 单测:UT 任务自动先装测试依赖,规避 No module named pytest ## 3. 功能验证 - [x] 功能自验(离线:bash -n、JSONC 解析、文档公共清单已通过;容器内 UT 冒烟待真机验证) - [x] 本地自验用例截图(请勿包含个人信息;可附复现命令) **复现步骤:** bash # VS Code:Dev Containers: Reopen in Container # Terminal → Run Task → msmodelslim: UT reduced (modelslim_v1) ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [x] 是否已校验外部数据:N/A(仅 shell/JSONC 配置,无外部输入解析) - [x] 是否未采集或打印敏感信息:是(仅把宿主 git 身份同步到容器内 .gitconfig) - [x] 是否已正确设置文件权限:是(脚本 100755、.host-gitconfig 600、容器内数据副本 640) - [x] 是否充分考虑浮点运算溢出、除零等异常场景:N/A - [x] 是否已对正则表达式做 ReDos 检查:N/A(仅 openEuler repo URL 前缀替换) **DT** - [x] 是否具备 UT 测试用例看护:未新增(改动仅 devcontainer/构建脚本,不影响产品逻辑;既有 UT 与 CI 冒烟不变) - [x] 是否需要添加冒烟:否 See merge request: Ascend/msmodelslim!940 | 23 天前 | |
【msmodelslim】刷新文件头部声明和版权 Co-authored-by: caishengcheng<caishengcheng@huawei.com> # message auto-generated for no-merge-commit merge: !28 merge license into master 【msmodelslim】刷新文件头部声明和版权 Created-by: caishengcheng Commit-by: caishengcheng Merged-by: ascend-robot Description: 【msmodelslim】刷新文件头部声明和版权 See merge request: Ascend/msmodelslim!28 | 8 个月前 | |
[Feature] 接入 DeepSeek-V4-Pro-0813 W4A4C8 配置 Co-authored-by: Rigel_Chen<chenruijie9@huawei.com> # message auto-generated for no-merge-commit merge: !968 merge feature/deepseek-v4-pro-0813-w4a4c8 into master [Feature] 接入 DeepSeek-V4-Pro-0813 W4A4C8 配置 Created-by: Rigel_Chen Commit-by: Rigel_Chen Merged-by: ascend-robot Description: # PR 提交说明 ## 1. 影响面评估 **接口变更(按需):** 无 **输出件变更(按需):** 无 **非兼容变更(按需):** 无 **SIG 评审结论(按需):** 无 ## 2. 修改描述 **修改背景(可选):** 官方 DeepSeek-V4-Pro-0813 结构与 DeepSeek-V4-Pro-DSpark / Flash-0731 相同(投机解码模块键名为 mtp.0/1/2)。Flash-0731 已按同一方式合入;Pro-0813 本地已验证可直接复用 加载路径。 **修改目的:** 在已有 DSpark 加载路径上注册官方 0813 模型名,支持一键 W4A4C8 量化;MTP 不量化并以 FLOAT 落盘。 **修改内容:** - infra:config.ini 将 DeepSeek-V4-Pro-0813 注册到 deepseek_v4_dspark - app:新增 lab_practice/deepseek_v4/deepseek_v4_pro_w4a4c8.yaml ## 3. 功能验证 - [x] 功能自验 - [ ] 本地自验用例截图(请勿包含个人信息;可附复现命令) **复现步骤(可选):** bash msmodelslim quant \ --model_path <DeepSeek-V4-Pro-0813 原始权重> \ --save_path <...-w4a4c8> \ --model_type DeepSeek-V4-Pro-0813 \ --config lab_practice/deepseek_v4/deepseek_v4_pro_w4a4c8.yaml \ --device npu --device_id 0 1 2 3 4 5 6 7 \ --trust_remote_code true ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [ ] 是否已校验外部数据 - [ ] 是否未采集或打印敏感信息 - [ ] 是否已正确设置文件权限 - [ ] 是否充分考虑浮点运算溢出、除零等异常场景 - [ ] 是否已对正则表达式做 ReDos 检查 **DT** - [ ] 是否具备 UT 测试用例看护(路径:用例路径;未添加请说明原因) - [ ] 是否需要添加冒烟:否(若「是」请说明冒烟场景及对应用途) See merge request: Ascend/msmodelslim!968 | 17 天前 | |
[Bugfix] 修复head.pt落盘产物保存空列表 Co-authored-by: zwling<906711886@qq.com> # message auto-generated for no-merge-commit merge: !1045 merge fix/analyze-attn-head-keep-empty-lists into master [Bugfix] 修复head.pt落盘产物保存空列表 Created-by: zwling Commit-by: zwling Merged-by: ascend-robot Description: ## 1. 影响面评估 **接口变更(按需):** 无 **输出件变更(按需):** 有。 analyze attn_head --save_path 产出的 head.pt 结构变化:prefix_matching / copying 两个字典由「只包含有入选 head 的层」变为「覆盖全部已分析层」,未被选中任何 head 的层保留键、value 为空列表([])。键名、取值含义(层索引 -> KV 头索引列表)与文件格式均不变。 > 下游若存在「键存在即代表该层有入选 head」的隐含假设,需改为判断 value 是否非空;按层索引直接取值(含空列表)的用法不受影响,且不再需要处理键缺失。 **非兼容变更(按需):** 无 **SIG 评审结论(按需):** 无 ## 2. 修改描述 **修改背景(可选):** - 80 层模型实测中,induction head 只有 29 层、echo head 只有 6 层被选中,其余层在 head.pt 中整体缺失,下游按层索引取用时必须额外判断键是否存在,容易漏判。 - 同一批输出中,逐层日志会把全部 80+ 层都打印一遍(大量 Layer x: KV heads []),单次分析刷屏上百行,真正的入选结果被淹没。 **修改目的:** - 让 head.pt 覆盖全部已分析层,未被选中 head 的层保留空列表,下游可按层索引直接取用; - 逐层日志只列出有入选 head 的层,并在标题行给出「覆盖层数 / 入选层数」,保证信息不丢失。 **修改内容:** - core/算法(ra_compress 分析):RaCompressAnalysisMethod.get_compress_heads 不再对 prefix_matching / copying 剔除空列表层,直接返回逐层结果;删除仅用于剔除的静态方法 _remove_empty_list_keys;同步补充方法 docstring 说明。 - infra/结果展示与交付:RaCompressAnalysisResultDisplayer 写 head.pt 时逐层写入(空列表同样写入);同一层存在多条记录(如 q_proj / k_proj)时,空列表不覆盖该层已有的非空结果;层名无法解析出 layers.<idx> 的记录跳过,并汇总打印一条 warning。 - infra/结果展示与交付:逐层日志跳过 value 为空的层,标题行由 Selected N layers with ... heads 改为 ... head dict covers N layers, M with selected heads,保证覆盖层数与入选层数可见。 - test:test_get_compress_heads_keeps_empty_lists_when_layer_scores_zero 断言由「空列表层被移除」改为「保留该层键且 value 为 []」。 ## 3. 功能验证 冒烟由 CI 门禁检查,无需填写「冒烟是否通过」。 - [x] 功能自验 - [x] 本地自验用例截图(请勿包含个人信息;可附复现命令) **复现步骤(可选):** bash # 单元测试 python -m pytest test/cases/processor/analysis/test_ra_compress_head_selection.py -q # 相关用例集(分析 / 结果展示 / app / cli) python -m pytest test/cases/processor/analysis test/cases/infra/test_logging_analysis_result_displayer.py \ test/cases/app/analysis test/cases/cli -q # => 282 passed # 端到端存盘验证(模拟 3 层,仅 layer 1 有入选 head) # 期望 head.pt 内容:{'prefix_matching': {0: [], 1: [0], 2: []}, 'copying': {0: [], 1: [], 2: []}} 自验结论:head.pt 中 0 / 1 / 2 层键均保留,未入选层 value 为空列表;80 层模型逐层日志只打印有入选 head 的层,标题行显示 Induction head dict covers 80 layers, 29 with selected heads。 ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [x] 是否已校验外部数据(层名解析失败时不猜测索引,跳过并汇总告警) - [x] 是否未采集或打印敏感信息(新增日志仅涉及层索引与层名) - [ ] 是否已正确设置文件权限 — N/A - [ ] 是否充分考虑浮点运算溢出、除零等异常场景 — N/A(本次不涉及数值运算) - [ ] 是否已对正则表达式做 ReDos 检查 — N/A(未新增正则表达式) **DT** - [x] 是否具备 UT 测试用例看护:test/cases/processor/analysis/test_ra_compress_head_selection.py(更新 test_get_compress_heads_keeps_empty_lists_when_layer_scores_zero);head.pt 落盘逻辑由现有 test/cases/infra/test_logging_analysis_result_displayer.py 看护 - [x] 是否需要添加冒烟:否 --- See merge request: Ascend/msmodelslim!1045 | 4 天前 | |
[master][Doc] GLM量化资料整改:命令行统一8卡多卡量化并补充W8A8C8支持说明 Co-authored-by: qq_46439621<wanlongze1@huawei.com> # message auto-generated for no-merge-commit merge: !1030 merge ziliao_0924 into master [master][Doc] GLM量化资料整改:命令行统一8卡多卡量化并补充W8A8C8支持说明 Created-by: qq_46439621 Commit-by: qq_46439621 Merged-by: ascend-robot Description: # PR 提交说明 **PR 标题:** [Doc] GLM量化资料整改:命令行统一8卡多卡量化并补充W8A8C8/W4A4C8支持说明 提交前请阅读 [贡献指南](https://gitcode.com/Ascend/msmodelslim/blob/master/docs/zh/contributing/contributing_guide.md),开发者文档:[模型接入指南](../docs/zh/knowledge_base/model/integrating_models.md) PR 标题前缀:[Doc](与 CONTRIBUTING 一致) ## 1. 影响面评估 **接口变更(按需):** 无 > 备注:纯文档变更; --device_id 为 CLI 既有参数,仅文档展示多卡用法。 **输出件变更(按需):** 无 **非兼容变更(按需):** 无 > 备注:单卡用户仍可不带 --device_id 执行,原有用法不受影响。 **SIG 评审结论(按需):** 无 ## 2. 修改描述 **修改背景:** 1. GLM-5 系列为 744B 级 MoE,官方验证的量化方式为 8 卡并行,但 example/GLM-5/README.md 中 19 处量化命令示例均为单卡写法; 2. 知识库支持矩阵(docs/zh/knowledge_base/model/README.md)与 lab_practice 实际配置不一致:GLM-5.1 的 w8a8/w4a8、GLM-5.3-Flash 的 w8a8c8 未体现;GLM-5.1/5.3 无 W4A4 配置却标了 W4A4 支持存在误导;多款模型的 W4A4C8 能力缺失。 **修改目的:** 统一 GLM-5 系列量化命令为 8 卡写法,补齐 GLM-5.3-Flash W8A8C8 与 w4a4c8 列支持说明,修正 W4A4 误标,使支持矩阵与 lab_practice 配置对齐。 **修改内容:** - **example/GLM-5/README.md**:19 处量化命令统一增加 --device_id 0 1 2 3 4 5 6 7 八卡并行;GLM-5.3-Flash 支持矩阵补充 W8A8C8(与 W8A8 共用同一量化方式、复用 glm_5_next_w8a8.yaml)并附说明; - **docs/zh/knowledge_base/model/README.md**:补齐 GLM-5.1 w8a8/w4a8、GLM-5.3-Flash w8a8c8;新增 w4a4c8 列并标记 DeepSeek-V3.1-Terminus、DeepSeek-V4-Flash/Pro、GLM-5.1/5.2/5.3;删除 GLM-5.1/5.3 的 W4A4 误标(仅有 W4A4C8 配置);修复 GLM5-MOE系列 rowspan 缺失导致的 GLM-5.3-Flash 行错位。 **冲突解决说明:** 本提交 cherry-pick 时与分支上较新的矩阵(w4a4c8 列骨架、DeepSeek-V4-Flash-0731/Pro-0813 新行)冲突 5 处,按单元格级语义合并:表头采用 w4a4c8<sup>2</sup>(与脚注 2 一致);GLM-5.1 行采用本提交修正版(舍弃分支旧标注——其 W4A4 √ 与 lab_practice 无 W4A4 配置不符);保留分支新增的 -0731/-0813 模型行及脚注 5;另修复自动合并引入的 3 处单元格错位(V3.1-Terminus、GLM-5.3、GLM-5.3-Flash)。落地后全表 73 行列数校验全部对齐。 **概念域参考:** - app:最佳实践量化(GLM-5 系列量化命令示例、实践配置支持度呈现) ## 3. 功能验证 - [x] 功能自验(文档渲染与矩阵/lab_practice 配置核对) - [ ] 本地自验用例截图:N/A(纯文档变更) ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [x] 是否已校验外部数据 — N/A - [x] 是否未采集或打印敏感信息 — N/A(仅含 ${MODEL_PATH} 等占位变量) - [x] 是否已正确设置文件权限 — N/A - [x] 是否充分考虑浮点运算溢出、除零等异常场景 — N/A - [x] 是否已对正则表达式做 ReDos 检查 — N/A **DT** - [x] 是否具备 UT 测试用例看护 — N/A(纯文档变更) - [x] 是否需要添加冒烟:否(纯文档变更,无功能行为变化) See merge request: Ascend/msmodelslim!1030 | 4 天前 | |
[Feature] Qwen3.5/3.6模型FA混合量化:QK-MXFP8 动态 + V-MXFP8 PerChannel 静态 Co-authored-by: joejoezhou<zhourongchen1@huawei.com> # message auto-generated for no-merge-commit merge: !934 merge feature/qwen35-397b-fa-mxfp8 into master [Feature] Qwen3.5/3.6模型FA混合量化:QK-MXFP8 动态 + V-MXFP8 PerChannel 静态 Created-by: joejoezhou Commit-by: joejoezhou Merged-by: ascend-robot Description: ## 1. 影响面评估 **接口变更(按需):** 无。 **输出件变更(按需):** AscendV1 格式新增 FA 混合量化量化 QK_MXFP8_DYNAMIC_V_MXFP8_PER_CHANNEL。 **非兼容变更(按需):** 无 **SIG 评审结论(按需):** 无 ## 2. 修改描述 **修改背景(可选):** Qwen3.5-397B 全量化(线性层 W4A4 / W8A8)需要注意力部分配套低比特方案。Q/K 参与得分计算、随输入分布变化,宜动态免校准;V 承接缓存写入,若沿用 MX per-block 按 32 元素分块,head_dim 不是 32 整数倍时行尾会留下不足 32 元素的尾块,V 缓存随 decode 逐 token 追加,反复 padding 代价高。因此 Q/K 走 MXFP8 per-block 动态,V 改走 per-channel 静态,将 head 并入通道维跨整条序列共享 E8M0 指数,从根上消除尾块,量化参数离线固化并与 KVCache 量化的通道语义对齐。 **修改目的:** 为 Qwen3.5-397B 提供 Q/K MXFP8 per-block 动态 + V MXFP8 per-channel 静态的注意力混合量化能力,打通 IR、校准、AscendV1 落盘与模型适配全链路,并补齐对应量化模式资料。 **修改内容:** - 量化模式:新增 MXFP8FakeQuantActivationPerChannel(FA V 分支 MXFP8 per-channel 静态伪量化层) - 量化格式:AscendV1 支持 per-channel 静态分支的类型串拼装与 uint8 scale 落盘,多卡 merge 阶段跨 rank 聚合分支状态统一拼串 - FA3 量化:支持 per-channel 静态分支(离线校准取参);动态分支免校准,校准阶段不再空转 per-head 统计 - 数据格式:mxfp per-block 量化削减整份 fp32 临时,降低 FA3 校准显存峰值 - 模型适配:qwen3_5_moe 注入 full_attention 层 FA3 量化、跳过 linear_attention 层 - 校准集:新增 qwen3_cot_vlm_text 校准集,超长样本按段落截断至 8k,避免校准 OOM - docs:新增《FA QK-MXFP8 动态 / V-MXFP8 PerChannel 静态量化》词条,同步 FA 量化模式索引、量化模式总览表及 AscendV1 quant_type 取值规则与落盘说明 ## 3. 功能验证 - [x] 功能自验:本地单测通过(190 个用例) - [ ] 本地自验用例截图(请勿包含个人信息;可附复现命令) ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [x] 是否已校验外部数据 - [x] 是否未采集或打印敏感信息 - [x] 是否已正确设置文件权限 - [x] 是否充分考虑浮点运算溢出、除零等异常场景 - [x] 是否已对正则表达式做 ReDos 检查 **DT** - [x] 是否具备 UT 测试用例看护:test_cases/ir/test_mxfp8_activation_static.py、test_cases/ir/api/impl/test_mxfp8_per_channel_quantization.py、test_ascendv1.py、test_ascendv1_distributed.py、test_fa3_processor.py 等 - [ ] 是否需要添加冒烟:否 See merge request: Ascend/msmodelslim!934 | 24 天前 | |
[master][bugfix]修改最佳实践及对应文档中vLLM_Ascend为vLLM-Ascend Co-authored-by: m0_622025341111<ligengxi1@huawei.com> # message auto-generated for no-merge-commit merge: !1039 merge doc-repair-2 into master [master][bugfix]修改最佳实践及对应文档中vLLM_Ascend为vLLM-Ascend Created-by: m0_622025341111 Commit-by: m0_622025341111 Merged-by: ascend-robot Description: # PR 提交说明 提交前请阅读 [贡献指南](https://gitcode.com/Ascend/msmodelslim/blob/master/docs/zh/contributing/contributing_guide.md),开发者文档:[模型接入指南](../docs/zh/knowledge_base/model/integrating_models.md) PR 标题前缀:[Feature]、[Bugfix]、[Doc]、[Test](与 CONTRIBUTING 一致) ## 1. 影响面评估 **接口变更(按需):** 无 > 备注:若无变更请保留「无」;涉及 CLI、API、YAML 等请在此项补充说明。 **输出件变更(按需):** 无 > 备注:若无变更请保留「无」;涉及导出格式、产物路径等请在此项补充说明。 **非兼容变更(按需):** 无 > 备注:若无变更请保留「无」;若有非兼容变更请说明迁移方式。 **SIG 评审结论(按需):** 无 > 提醒:非兼容、安全风险等高危 PR 须经 SIG 评审后合入;无则保留「无」。 ## 2. 修改描述 **修改背景(可选):** 详见关联issue:https://gitcode.com/Ascend/msmodelslim/issues/597 **修改目的:**(本 PR 要达成什么目标) 修复最佳实践yaml,及相关README文档中,vLLM-Ascend和vLLM_Ascend不统一的问题。 **修改内容:** app:lab_practice/最佳实践中将89处vLLM_Ascend修改为vLLM-Ascend 文档:docs/zh/knowledge_base/model/README.md及example中各具体模型的一键量化命令 UT:test/cases/lab_practice/gemma4/test_gemma4_w8a8.py中断言为vLLM_Ascend,需同步调整 ## 3. 功能验证 冒烟由 CI 门禁检查,无需填写「冒烟是否通过」。 - [ ] 功能自验 - [ ] 本地自验用例截图(请勿包含个人信息;可附复现命令) **复现步骤(可选):** bash # 在此粘贴可复现命令 ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [ ] 是否已校验外部数据(N/A) - [ ] 是否未采集或打印敏感信息(N/A) - [ ] 是否已正确设置文件权限(N/A) - [ ] 是否充分考虑浮点运算溢出、除零等异常场景(N/A) - [ ] 是否已对正则表达式做 ReDos 检查(N/A) **DT** - [ ] 是否具备 UT 测试用例看护(未添加,原因:纯 YAML 配置与文档变更,不含代码逻辑,通过量化功能验证) - [ ] 是否需要添加冒烟:否(若「是」请说明冒烟场景及对应用途)(N/A) See merge request: Ascend/msmodelslim!1039 | 5 天前 | |
【msmodelslim】目录整改后目录文件同步修改 Co-authored-by: caishengcheng<caishengcheng@huawei.com> # message auto-generated for no-merge-commit merge: !38 merge dir into master 【msmodelslim】目录整改后目录文件同步修改 Created-by: caishengcheng Commit-by: caishengcheng Merged-by: ascend-robot Description: 【msmodelslim】目录整改后目录文件同步修改 See merge request: Ascend/msmodelslim!38 | 8 个月前 | |
[Bugfix] 分析结果落盘改用 msmodelslim.utils.security 校验 Co-authored-by: zwling<906711886@qq.com> # message auto-generated for no-merge-commit merge: !1048 merge fix/analyze-save-path-security into master [Bugfix] 分析结果落盘改用 msmodelslim.utils.security 校验 Created-by: zwling Commit-by: zwling Merged-by: ascend-robot Description: # PR 提交说明 提交前请阅读 [贡献指南](https://gitcode.com/Ascend/msmodelslim/blob/master/docs/zh/contributing/contributing_guide.md),开发者文档:[模型接入指南](../docs/zh/knowledge_base/model/integrating_models.md) PR 标题前缀:[Feature]、[Bugfix]、[Doc]、[Test](与 CONTRIBUTING 一致) ## 1. 影响面评估 **接口变更(按需):** 无 > 备注:CLI 参数、Python API、YAML 配置均无改动, --save_path 的取值方式与语义保持一致。 **输出件变更(按需):** 无 > 备注:YAML(top <n>: + disable_names)与 head.pt(prefix_matching / copying)的内容、文件名拼接规则、产物路径均未改动;产物权限仍由 SafeWriteUmask(0o027) 保证(实测 0640)。 **非兼容变更(按需):** 无 > 备注:仅在校验来源替换后,原先会被旧实现拒绝的「目标文件属主非当前用户」场景由报错变为允许写入。 **SIG 评审结论(按需):** 无 > 提醒:本 PR 不涉及非兼容接口与高危安全变更。 ## 2. 修改描述 **修改背景(可选):** 分析结果展示器 msmodelslim/infra/logging_analysis_result_displayer.py 的落盘函数仍调用历史模块 ascend_utils.common.security: - _save_yaml(msmodelslim/infra/logging_analysis_result_displayer.py:49) - _save_head_pt(msmodelslim/infra/logging_analysis_result_displayer.py:67) 其中 ascend_utils.common.security.get_valid_write_path(ascend_utils/common/security/path.py:160)默认 check_user_stat=True,会对**已存在**的目标文件做属主硬校验 os.stat(path).st_uid != os.getuid() 并直接抛错,另有 st_mode 位检查。因此在该场景下运行 msmodelslim analyze ... --save_path <已存在且属主非当前用户的文件> 时,分析跑完后在落盘一步失败,例如: - 以 root 运行、目标文件属主为普通用户; - 多用户共享目录下复用同一 result.yaml / head.pt; - 结果目录由他人预创建。 这与仓库新安全模块的行为已经不一致,也是 analyze 场景下「权限校验报错」的来源之一。 **修改目的:** 让分析结果落盘使用仓库自身的 msmodelslim.utils.security 校验,与其它新代码(如 msmodelslim/utils/cache/pth.py:31)保持同一入口,并去掉本文件对历史 ascend_utils 的依赖。 **修改内容:** - **infra**:msmodelslim/infra/logging_analysis_result_displayer.py 的 _save_yaml 与 _save_head_pt 两处写入校验来源由 ascend_utils.common.security 替换为 msmodelslim.utils.security(两者均提供同名 SafeWriteUmask 与 get_valid_write_path)。调用点、入参(extensions=_YAML_EXTENSIONS / extensions=".pt")、目录拼接、SafeWriteUmask() 上下文与返回路径均不变,改动共 2 行,不涉及任何算法与输出内容。 新旧校验行为对比: | 项 | 旧:ascend_utils.common.security.get_valid_write_path | 新:msmodelslim.utils.security.get_valid_write_path | | --- | --- | --- | | check_user_stat 默认值 | True | False | | 属主校验 | st_uid != os.getuid() 即抛错 | 属主校验已整体禁用(msmodelslim/utils/security/path.py:103 恒 True) | | st_mode 位校验 | 参与判断 | 已禁用(msmodelslim/utils/security/path.py:39/41 置 0) | | 保留校验 | 路径字符白名单 / 长度 / 目录存在 / os.access(W_OK) | 同上,行为一致 | **概念域参考(填写提示):** - infra:模型适配、调优计划/历史/缓存、测评服务等 ← 本次改动域 ## 3. 功能验证 冒烟由 CI 门禁检查,无需填写「冒烟是否通过」。 - [x] 功能自验 - [x] 本地自验用例截图(请勿包含个人信息;可附复现命令) **复现步骤(可选):** bash # 1) 构造「目标文件已存在且属主非当前用户」的场景(root 运行时尤为明显) install -o 1000 -g 1000 -m 644 /dev/null /tmp/ra_result/head.pt # 2) 执行分析并落盘 msmodelslim analyze attn_head \ --model_type Qwen2-72B \ --model_path /data/models/Qwen2-72B-Instruct/ \ --metrics ra_compress \ --device npu \ --save_path /tmp/ra_result/head.pt 2>&1 | tee analyze_$(date +%s).log # 修改前:落盘阶段因 ascend_utils 属主硬校验失败 # 修改后:正常写入,日志出现 "RA compress heads saved to: /tmp/ra_result/head.pt" bash # 本地自验(无需真实模型,直接验证落盘分支) python3 -m pytest test/cases/infra/test_logging_analysis_result_displayer.py -q # 5 passed python3 -m pytest test/cases/app/analysis/test_analysis_app.py -q # 23 passed python3 -c " import os, tempfile from msmodelslim.infra.logging_analysis_result_displayer import _save_yaml, _save_head_pt d = tempfile.mkdtemp() print(_save_yaml('top 1:\n - \'layers.0.self_attn.q_proj\'', d, 'Qwen2-72B', 'kurtosis')) print(_save_head_pt({'prefix_matching': {0: [1]}, 'copying': {0: []}}, d)) " # 观察点:qwen2-72b-kurtosis.yaml 与 head.pt 均生成成功,权限为 0640(SafeWriteUmask 0o027 生效) ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [x] 是否已校验外部数据:--save_path 仍完整经过 get_valid_write_path(路径字符白名单、长度、目录存在性、os.access 写权限)与 get_valid_path 校验,校验强度不降低(仅去掉了与仓库现行策略冲突的属主/st_mode 位校验)。 - [x] 是否未采集或打印敏感信息:未新增任何打印;保存成功日志仅回显输出路径。 - [x] 是否已正确设置文件权限:SafeWriteUmask(0o027) 保持不变,YAML 与 head.pt 落盘权限实测 0o640,未放宽。 - N/A 是否充分考虑浮点运算溢出、除零等异常场景:本次仅替换校验模块,未引入算术运算路径。 - N/A 是否已对正则表达式做 ReDos 检查:未新增或修改正则。 **DT** - [x] 是否具备 UT 测试用例看护:已有用例 test/cases/infra/test_logging_analysis_result_displayer.py(TestSaveYamlSuffix 覆盖 _save_yaml 的写盘与 [.yaml/.yml/目录拼接/不支持后缀] 规则、TestStandardAnalysisResultDisplayerSavePath 覆盖 display_result 的 save_path 分支),全部经新校验入口执行并通过;test/cases/app/analysis/test_analysis_app.py 全量通过。本 PR 仅替换同等能力的校验来源、未新增代码路径,故未新增用例。 - [x] 是否需要添加冒烟:否(无新增运行时路径、无算子变动,落盘行为与产物格式不变)。 See merge request: Ascend/msmodelslim!1048 | 3 天前 | |
[Feature] ra_compress代码对齐V0版本 [Bugfix] 增加save_path,calib_dataset校验 Co-authored-by: zwling<906711886@qq.com> # message auto-generated for no-merge-commit merge: !965 merge feature/ra_compress-refine-v2 into master [Feature] ra_compress代码对齐V0版本 [Bugfix] 增加save_path,calib_dataset校验 Created-by: zwling Commit-by: zwling Merged-by: ascend-robot Description: # PR 提交说明 提交前请阅读 [贡献指南](https://gitcode.com/Ascend/msmodelslim/blob/master/docs/zh/contributing/contributing_guide.md),开发者文档:[模型接入指南](../docs/zh/knowledge_base/model/integrating_models.md) PR 标题前缀:[Feature]、[Bugfix]、[Doc]、[Test](与 CONTRIBUTING 一致) ## 1. 影响面评估 **接口变更(按需):** 有 > 备注:若无变更请保留「无」;涉及 CLI、API、YAML 等请在此项补充说明。 - cli: msmodelslim analyze attn_head 的 --calibration_dataset 默认值为内置数据集 ra_compress_dummy;--calibration_dataset、--save_path 非法值在参数校验阶段报 SecurityError(204);帮助文案改用 %(default)s - YAML:ra_compress.yaml 新增 induction_head_ratio(0.14)、echo_head_ratio(0.01),UnaryAnalysisProcessorConfig 新增同名字段并校验范围 **输出件变更(按需):** 无 > 备注:若无变更请保留「无」;涉及导出格式、产物路径等请在此项补充说明。 **非兼容变更(按需):** 无 > 备注:若无变更请保留「无」;若有非兼容变更请说明迁移方式。 **SIG 评审结论(按需):** 无 > 提醒:非兼容、安全风险等高危 PR 须经 SIG 评审后合入;无则保留「无」。 ## 2. 修改描述 **修改背景(可选):** ra_compress 长序列压缩头分析的打分逻辑与 V0 存在偏差(按 (token, offset) 对求均值给后段加权且相位偏 1、RoPE 因未剥离 prefix 而静默失效),head 筛选结果与 V0 不一致;该指标支持的模型有限,校准集需用户自行构造,文档未说明内置数据集与长度约束。 见如下issue描述 - https://gitcode.com/Ascend/msmodelslim/issues/515 **修改目的:** 使 msmodelslim analyze attn_head --metrics ra_compress 打分与 V0 对齐;提供内置校准集并同步文档;收紧 CLI 参数校验。 **修改内容:**(按「概念 - 变化」分条,示例:core/算法:新增 SmoothQuant 离群值抑制) - core/算法:ra_compress 打分与 V0 对齐(截断 BOS 行列、按 token 求均值、补齐 RoPE 并修复 _find_self_attn 未剥离 prefix),打分改为 device 侧向量化,单层耗时由 90s 降至 0.5s,所有层分数为空时显式报 ERROR - core/算法:新增内置预分词校准数据集 ra_compress_dummy(BOS + 2500×4 = 10001 tokens),RA_COMPRESS_DUMMY_DATASET 常量移入 impl.py,消除 dataset 与 impl 循环导入 - core/服务:分数合并与配置透传适配;移除加载失败回退内置数据集的逻辑 - infra/配置:head 比例可配置(induction_head_ratio / echo_head_ratio)并透传 - cli:完善 --save_path、--calibration_dataset 帮助文案;修复 set_defaults 污染共享 parent 导致其它 scope 默认值被改;save_path 非法值前置校验 - utils/错误处理(错误处理):校准集路径经 get_valid_path 前置校验,非法路径报 SecurityError(204) 且不再静默回退 - docs:同步 5 篇文档(内置校准集、长度表述统一为「2500 的整数倍 + 1」、门槛 10000 与正确结构 10001 的区别),mkdocs.yml 补充 RA Compress 词条与 Attention Head 使用指南导航 - 代码风格:ruff-format 格式化与 bandit 误报 # nosec 标注,对齐仓库 pre-commit 校验 **概念域参考(填写提示):** - cli:命令行 quant / analyze / tune - app:最佳实践量化、量化分析、精度反馈自动调优等 - core:算法、量化服务、调度、张量量化、调优策略、最佳实践、上下文等 - infra:模型适配、调优计划/历史/缓存、测评服务等 - utils:日志、错误处理、插件等 ## 3. 功能验证 冒烟由 CI 门禁检查,无需填写「冒烟是否通过」。 - [ ] 功能自验 - [ ] 本地自验用例截图(请勿包含个人信息;可附复现命令) **复现步骤(可选):** bash TS=$(date +%Y%m%d_%H%M%S) # 指定使用 0 号昇腾卡 export ASCEND_RT_VISIBLE_DEVICES=0 msmodelslim analyze attn_head \ --model_type Qwen2-72B \ --model_path /data/models/Qwen2-72B-Instruct/ \ --metrics ra_compress \ --device npu \ --save_path ./head_${TS} \ 2>&1 | tee analyze_${TS}.log ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [x] 是否已校验外部数据(校准集路径 get_valid_path 前置校验、--save_path 前置校验、trust_remote_code 默认 false) - [x] 是否未采集或打印敏感信息(日志仅输出层名与分数) - [x] 是否已正确设置文件权限(未新增文件写入逻辑,沿用既有保存链路) - [x] 是否充分考虑浮点运算溢出、除零等异常场景(softmax 后权重值域 [0,1]、float32/float64 累加;空列表与全 False 分支提前返回) - [x] 是否已对正则表达式做 ReDos 检查(本次未引入正则表达式) **DT** - [x] 是否具备 UT 测试用例看护(路径:test/cases/processor/analysis/test_ra_compress_head_selection.py、test/cases/processor/analysis/test_distributed_utils.py、test/cases/processor/analysis/test_unary_analysis_processor.py;未新增用例请说明原因) - [x] 是否需要添加冒烟:否(若「是」请说明冒烟场景及对应用途) See merge request: Ascend/msmodelslim!965 | 8 天前 | |
【msmodelslim】刷新文件头部声明和版权 Co-authored-by: caishengcheng<caishengcheng@huawei.com> # message auto-generated for no-merge-commit merge: !28 merge license into master 【msmodelslim】刷新文件头部声明和版权 Created-by: caishengcheng Commit-by: caishengcheng Merged-by: ascend-robot Description: 【msmodelslim】刷新文件头部声明和版权 See merge request: Ascend/msmodelslim!28 | 8 个月前 | |
【msmodelslim】刷新文件头部声明和版权 Co-authored-by: caishengcheng<caishengcheng@huawei.com> # message auto-generated for no-merge-commit merge: !28 merge license into master 【msmodelslim】刷新文件头部声明和版权 Created-by: caishengcheng Commit-by: caishengcheng Merged-by: ascend-robot Description: 【msmodelslim】刷新文件头部声明和版权 See merge request: Ascend/msmodelslim!28 | 8 个月前 | |
[Doc] 修复 issue 528 part.1(cli 和 config 文档问题及相关引用更新) Co-authored-by: jiamingxuaa<xujiaming19@h-partners.com> # message auto-generated for no-merge-commit merge: !1021 merge master into master [Doc] 修复 issue 528 part.1(cli 和 config 文档问题及相关引用更新) Created-by: jiamingxuaa Commit-by: jiamingxuaa Merged-by: ascend-robot Description: # PR 提交说明 提交前请阅读 [贡献指南](https://gitcode.com/Ascend/msmodelslim/blob/master/docs/zh/contributing/contributing_guide.md),开发者文档:[模型接入指南](../docs/zh/knowledge_base/model/integrating_models.md) PR 标题前缀:[Feature]、[Bugfix]、[Doc]、[Test](与 CONTRIBUTING 一致) ## 1. 影响面评估 **接口变更(按需):** 无 > 备注:若无变更请保留「无」;涉及 CLI、API、YAML 等请在此项补充说明。 **输出件变更(按需):** 无 > 备注:若无变更请保留「无」;涉及导出格式、产物路径等请在此项补充说明。 **非兼容变更(按需):** 文档路径调整(书签/外链需迁移) - docs/zh/api_reference/config/task/ → docs/zh/api_reference/config/quant/ - 删除手写页 docs/zh/api_reference/config/auto_precision_tuning.md,改由 config/tuning/README.md + 既有 tuning/* 字段页承接 - docs/zh/api_reference/config/processor_group.md → docs/zh/user_guide/usage_processor_group.md 迁移:将旧链接中的 config/task/ 改为 config/quant/;自动调优协议说明改链至 config/tuning/README.md;组合处理器用法改链至 user_guide/usage_processor_group.md。仓库内交叉引用已同步更新。 **SIG 评审结论(按需):** 无 > 提醒:非兼容、安全风险等高危 PR 须经 SIG 评审后合入;无则保留「无」。 ## 2. 修改描述 **修改背景(可选):** API Reference 中配置文档按类型组织,缺少统一的“先选协议 / 再按 type 查处理器”导航;CLI 与配置字段说明、示例标签等与现状不完全一致;自动调优手写长文与 tuning/ 生成页并存,入口分散;以及[测试提出的各种修改建议](https://gitcode.com/Ascend/msmodelslim/issues/528)。 **修改目的:** 理顺cli / config 文档层级与导航,校准命令行与配置字段说明,并同步全库交叉链接与文档生成约定,降低查阅与后续维护成本。 **修改内容:** - cli:新增 api_reference/cli/README.md(全局/公共参数、子命令总览);校准 quant / analyze / eval / tune 参数表、互斥关系、权重转换省略 --model_type、--save_path 公共化、tags 示例等表述 - docs/api_reference/config:新增手写导航 config/README.md、config/quant/README.md、config/tuning/README.md;任务配置目录 task/ 重命名为 quant/;删除 auto_precision_tuning.md;组合处理器说明迁至 user_guide/usage_processor_group.md - docs/api_reference/config(生成页):更新 processor/*、format/*、tuning/* 及 quant/* 字段说明/结构(如 modelslim_convert、evaluation_service_oriented、group、trainable_linear_quant 等) - docs/knowledge_base & user_guide & skills:批量将 config/task/ 链接改为 config/quant/,并同步自动调优/组合处理器相关入口 - docs/contributing & skills/docs-management:更新 api_reference_docgen.md 与脚本 README,明确 quant/ 产出目录、手写 README.md 受 MANUAL_KEEP 保护、配置块编号最多 3 段等约定 **概念域参考(填写提示):** 说明:本 PR 为文档与导航重构,未改动 app / core / infra / utils 运行时代码;修改内容主要落在 cli(文档) 与文档体系本身。 ## 3. 功能验证 冒烟由 CI 门禁检查,无需填写「冒烟是否通过」。 - [ ] 功能自验 - [ ] 本地自验用例截图(请勿包含个人信息;可附复现命令) **复现步骤(可选):** bash # 在此粘贴可复现命令 ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [ ] 是否已校验外部数据 - [x] 是否未采集或打印敏感信息 - [ ] 是否已正确设置文件权限 - [ ] 是否充分考虑浮点运算溢出、除零等异常场景 - [ ] 是否已对正则表达式做 ReDos 检查 **DT** - [ ] 是否具备 UT 测试用例看护(路径:用例路径;未添加请说明原因) - [x] 是否需要添加冒烟:否(若「是」请说明冒烟场景及对应用途) See merge request: Ascend/msmodelslim!1021 | 8 天前 | |
[Bugfix] 修复head.pt落盘产物保存空列表 Co-authored-by: zwling<906711886@qq.com> # message auto-generated for no-merge-commit merge: !1045 merge fix/analyze-attn-head-keep-empty-lists into master [Bugfix] 修复head.pt落盘产物保存空列表 Created-by: zwling Commit-by: zwling Merged-by: ascend-robot Description: ## 1. 影响面评估 **接口变更(按需):** 无 **输出件变更(按需):** 有。 analyze attn_head --save_path 产出的 head.pt 结构变化:prefix_matching / copying 两个字典由「只包含有入选 head 的层」变为「覆盖全部已分析层」,未被选中任何 head 的层保留键、value 为空列表([])。键名、取值含义(层索引 -> KV 头索引列表)与文件格式均不变。 > 下游若存在「键存在即代表该层有入选 head」的隐含假设,需改为判断 value 是否非空;按层索引直接取值(含空列表)的用法不受影响,且不再需要处理键缺失。 **非兼容变更(按需):** 无 **SIG 评审结论(按需):** 无 ## 2. 修改描述 **修改背景(可选):** - 80 层模型实测中,induction head 只有 29 层、echo head 只有 6 层被选中,其余层在 head.pt 中整体缺失,下游按层索引取用时必须额外判断键是否存在,容易漏判。 - 同一批输出中,逐层日志会把全部 80+ 层都打印一遍(大量 Layer x: KV heads []),单次分析刷屏上百行,真正的入选结果被淹没。 **修改目的:** - 让 head.pt 覆盖全部已分析层,未被选中 head 的层保留空列表,下游可按层索引直接取用; - 逐层日志只列出有入选 head 的层,并在标题行给出「覆盖层数 / 入选层数」,保证信息不丢失。 **修改内容:** - core/算法(ra_compress 分析):RaCompressAnalysisMethod.get_compress_heads 不再对 prefix_matching / copying 剔除空列表层,直接返回逐层结果;删除仅用于剔除的静态方法 _remove_empty_list_keys;同步补充方法 docstring 说明。 - infra/结果展示与交付:RaCompressAnalysisResultDisplayer 写 head.pt 时逐层写入(空列表同样写入);同一层存在多条记录(如 q_proj / k_proj)时,空列表不覆盖该层已有的非空结果;层名无法解析出 layers.<idx> 的记录跳过,并汇总打印一条 warning。 - infra/结果展示与交付:逐层日志跳过 value 为空的层,标题行由 Selected N layers with ... heads 改为 ... head dict covers N layers, M with selected heads,保证覆盖层数与入选层数可见。 - test:test_get_compress_heads_keeps_empty_lists_when_layer_scores_zero 断言由「空列表层被移除」改为「保留该层键且 value 为 []」。 ## 3. 功能验证 冒烟由 CI 门禁检查,无需填写「冒烟是否通过」。 - [x] 功能自验 - [x] 本地自验用例截图(请勿包含个人信息;可附复现命令) **复现步骤(可选):** bash # 单元测试 python -m pytest test/cases/processor/analysis/test_ra_compress_head_selection.py -q # 相关用例集(分析 / 结果展示 / app / cli) python -m pytest test/cases/processor/analysis test/cases/infra/test_logging_analysis_result_displayer.py \ test/cases/app/analysis test/cases/cli -q # => 282 passed # 端到端存盘验证(模拟 3 层,仅 layer 1 有入选 head) # 期望 head.pt 内容:{'prefix_matching': {0: [], 1: [0], 2: []}, 'copying': {0: [], 1: [], 2: []}} 自验结论:head.pt 中 0 / 1 / 2 层键均保留,未入选层 value 为空列表;80 层模型逐层日志只打印有入选 head 的层,标题行显示 Induction head dict covers 80 layers, 29 with selected heads。 ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [x] 是否已校验外部数据(层名解析失败时不猜测索引,跳过并汇总告警) - [x] 是否未采集或打印敏感信息(新增日志仅涉及层索引与层名) - [ ] 是否已正确设置文件权限 — N/A - [ ] 是否充分考虑浮点运算溢出、除零等异常场景 — N/A(本次不涉及数值运算) - [ ] 是否已对正则表达式做 ReDos 检查 — N/A(未新增正则表达式) **DT** - [x] 是否具备 UT 测试用例看护:test/cases/processor/analysis/test_ra_compress_head_selection.py(更新 test_get_compress_heads_keeps_empty_lists_when_layer_scores_zero);head.pt 落盘逻辑由现有 test/cases/infra/test_logging_analysis_result_displayer.py 看护 - [x] 是否需要添加冒烟:否 --- See merge request: Ascend/msmodelslim!1045 | 4 天前 | |
[Feature] 引入基于 DevContainer 的高效开发环境 Co-authored-by: LeeQT<liqitong@huawei.com> # message auto-generated for no-merge-commit merge: !940 merge dev/devcontainer-env into master [Feature] 引入基于 DevContainer 的高效开发环境 Created-by: LeeQT Commit-by: LeeQT Merged-by: ascend-robot Description: PR 标题前缀:[Feature] ## 1. 影响面评估 **接口变更:** 无 **输出件变更:** 无 **非兼容变更:** 无 **SIG 评审结论:** 无 ## 2. 修改描述 **修改背景:** 开发者需按 MSOT 指南手动拉镜像并用 ctr_in.py 初始化,才能复现与 CI 一致的环境,成本高。 **修改目的:** 提供 VS Code Dev Container 底座,在 MindStudio 标准构建镜像中一键拉起与 CI 一致的环境。 **修改内容:** - devcontainer:新增 .devcontainer(devcontainer.json / initialize.sh / init.sh / post-create.sh / README.md),引用 SWR 预置镜像、固定 /workspace 挂载、缓存 bind 持久化、初始化分步日志与 pre-commit 后台预热 - .vscode:新增 tasks / launch / settings,封装构建、UT、Lint 任务与 Python 调试 - 治理:补充 .gitignore;.gitattributes 强制 *.sh 用 LF;.pre-commit-config.yaml 对 devcontainer/.vscode 的 JSONC 豁免 check-json - 单测:UT 任务自动先装测试依赖,规避 No module named pytest ## 3. 功能验证 - [x] 功能自验(离线:bash -n、JSONC 解析、文档公共清单已通过;容器内 UT 冒烟待真机验证) - [x] 本地自验用例截图(请勿包含个人信息;可附复现命令) **复现步骤:** bash # VS Code:Dev Containers: Reopen in Container # Terminal → Run Task → msmodelslim: UT reduced (modelslim_v1) ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [x] 是否已校验外部数据:N/A(仅 shell/JSONC 配置,无外部输入解析) - [x] 是否未采集或打印敏感信息:是(仅把宿主 git 身份同步到容器内 .gitconfig) - [x] 是否已正确设置文件权限:是(脚本 100755、.host-gitconfig 600、容器内数据副本 640) - [x] 是否充分考虑浮点运算溢出、除零等异常场景:N/A - [x] 是否已对正则表达式做 ReDos 检查:N/A(仅 openEuler repo URL 前缀替换) **DT** - [x] 是否具备 UT 测试用例看护:未新增(改动仅 devcontainer/构建脚本,不影响产品逻辑;既有 UT 与 CI 冒烟不变) - [x] 是否需要添加冒烟:否 See merge request: Ascend/msmodelslim!940 | 23 天前 | |
[Feature] 引入基于 DevContainer 的高效开发环境 Co-authored-by: LeeQT<liqitong@huawei.com> # message auto-generated for no-merge-commit merge: !940 merge dev/devcontainer-env into master [Feature] 引入基于 DevContainer 的高效开发环境 Created-by: LeeQT Commit-by: LeeQT Merged-by: ascend-robot Description: PR 标题前缀:[Feature] ## 1. 影响面评估 **接口变更:** 无 **输出件变更:** 无 **非兼容变更:** 无 **SIG 评审结论:** 无 ## 2. 修改描述 **修改背景:** 开发者需按 MSOT 指南手动拉镜像并用 ctr_in.py 初始化,才能复现与 CI 一致的环境,成本高。 **修改目的:** 提供 VS Code Dev Container 底座,在 MindStudio 标准构建镜像中一键拉起与 CI 一致的环境。 **修改内容:** - devcontainer:新增 .devcontainer(devcontainer.json / initialize.sh / init.sh / post-create.sh / README.md),引用 SWR 预置镜像、固定 /workspace 挂载、缓存 bind 持久化、初始化分步日志与 pre-commit 后台预热 - .vscode:新增 tasks / launch / settings,封装构建、UT、Lint 任务与 Python 调试 - 治理:补充 .gitignore;.gitattributes 强制 *.sh 用 LF;.pre-commit-config.yaml 对 devcontainer/.vscode 的 JSONC 豁免 check-json - 单测:UT 任务自动先装测试依赖,规避 No module named pytest ## 3. 功能验证 - [x] 功能自验(离线:bash -n、JSONC 解析、文档公共清单已通过;容器内 UT 冒烟待真机验证) - [x] 本地自验用例截图(请勿包含个人信息;可附复现命令) **复现步骤:** bash # VS Code:Dev Containers: Reopen in Container # Terminal → Run Task → msmodelslim: UT reduced (modelslim_v1) ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [x] 是否已校验外部数据:N/A(仅 shell/JSONC 配置,无外部输入解析) - [x] 是否未采集或打印敏感信息:是(仅把宿主 git 身份同步到容器内 .gitconfig) - [x] 是否已正确设置文件权限:是(脚本 100755、.host-gitconfig 600、容器内数据副本 640) - [x] 是否充分考虑浮点运算溢出、除零等异常场景:N/A - [x] 是否已对正则表达式做 ReDos 检查:N/A(仅 openEuler repo URL 前缀替换) **DT** - [x] 是否具备 UT 测试用例看护:未新增(改动仅 devcontainer/构建脚本,不影响产品逻辑;既有 UT 与 CI 冒烟不变) - [x] 是否需要添加冒烟:否 See merge request: Ascend/msmodelslim!940 | 23 天前 | |
[Feature] 引入基于 DevContainer 的高效开发环境 Co-authored-by: LeeQT<liqitong@huawei.com> # message auto-generated for no-merge-commit merge: !940 merge dev/devcontainer-env into master [Feature] 引入基于 DevContainer 的高效开发环境 Created-by: LeeQT Commit-by: LeeQT Merged-by: ascend-robot Description: PR 标题前缀:[Feature] ## 1. 影响面评估 **接口变更:** 无 **输出件变更:** 无 **非兼容变更:** 无 **SIG 评审结论:** 无 ## 2. 修改描述 **修改背景:** 开发者需按 MSOT 指南手动拉镜像并用 ctr_in.py 初始化,才能复现与 CI 一致的环境,成本高。 **修改目的:** 提供 VS Code Dev Container 底座,在 MindStudio 标准构建镜像中一键拉起与 CI 一致的环境。 **修改内容:** - devcontainer:新增 .devcontainer(devcontainer.json / initialize.sh / init.sh / post-create.sh / README.md),引用 SWR 预置镜像、固定 /workspace 挂载、缓存 bind 持久化、初始化分步日志与 pre-commit 后台预热 - .vscode:新增 tasks / launch / settings,封装构建、UT、Lint 任务与 Python 调试 - 治理:补充 .gitignore;.gitattributes 强制 *.sh 用 LF;.pre-commit-config.yaml 对 devcontainer/.vscode 的 JSONC 豁免 check-json - 单测:UT 任务自动先装测试依赖,规避 No module named pytest ## 3. 功能验证 - [x] 功能自验(离线:bash -n、JSONC 解析、文档公共清单已通过;容器内 UT 冒烟待真机验证) - [x] 本地自验用例截图(请勿包含个人信息;可附复现命令) **复现步骤:** bash # VS Code:Dev Containers: Reopen in Container # Terminal → Run Task → msmodelslim: UT reduced (modelslim_v1) ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [x] 是否已校验外部数据:N/A(仅 shell/JSONC 配置,无外部输入解析) - [x] 是否未采集或打印敏感信息:是(仅把宿主 git 身份同步到容器内 .gitconfig) - [x] 是否已正确设置文件权限:是(脚本 100755、.host-gitconfig 600、容器内数据副本 640) - [x] 是否充分考虑浮点运算溢出、除零等异常场景:N/A - [x] 是否已对正则表达式做 ReDos 检查:N/A(仅 openEuler repo URL 前缀替换) **DT** - [x] 是否具备 UT 测试用例看护:未新增(改动仅 devcontainer/构建脚本,不影响产品逻辑;既有 UT 与 CI 冒烟不变) - [x] 是否需要添加冒烟:否 See merge request: Ascend/msmodelslim!940 | 23 天前 | |
【docs】资料架构重构,并将资料托管至readthedocs。 Co-authored-by: keith_wa<keith_wwa@163.com> # message auto-generated for no-merge-commit merge: !109 merge pr_docs_re_copy into master 【docs】资料架构重构,并将资料托管至readthedocs。 Created-by: keith_wa Commit-by: keith_wa Merged-by: ascend-robot Description: 1. 动机 (Motivation) 内容上: 优化导航结构:原目录结构逻辑不清晰、目录层级深且链接复杂。 提升阅读体验:原 traditional_quantization_v0 目录下存在 20+ 个零散文档,内容分布碎片化,用户难以快速建立完整的技术全景认知。 消除内容冗余:多个文档之间存在重复的依赖说明、操作流程及参数介绍,增加了维护成本及版本不一致的风险。 呈现上: 提供专业资料托管:原docs/目录结构不清晰、目录名/文档名不直观(英文),跳转繁琐且无搜索功能。 2. 修改点 (Changes) 2.1 重新梳理目录结构  2.2. 文档整合与重构 V0及传统量化核心文档合并:将 20 多个零散文档按功能维度深度整合为 10篇核心指南: # V0框架文档导航(已停止演进) 本目录文档按模型类型与任务场景重排,便于按需求快速定位。 ## 一、传统模型量化与校准 - [传统模型量化与校准](traditional_model_quantization_and_calibration.md) - 包含 PyTorch/ONNX/MindSpore 训练后量化与 QAT。 ## 二、大模型量化与压缩 - [大模型量化与校准](foundation_model_quantization_and_calibration.md) - 包含低显存量化、混合校准数据集、FA3 量化。 - [压缩与结构优化(大模型为主)](foundation_model_compression.md) - 包含稀疏量化与权重压缩、长序列压缩、权重压缩流程、低秩分解。 ## 三、训练加速与模型改造 - [训练加速与模型改造](pruning_and_distillation.md) - 包含重要性剪枝、Transformer 剪枝、Sparse tool、模型蒸馏。 - [稀疏加速训练](sparse_acceleration_training.md) - 包含宽度扩增与深度扩增模型的稀疏训练加速流程。 ## 四、工具与生态适配 - [辅助工具与专项指导](compression_utils.md) - 包含量化权重格式说明与 MindSpeed 适配器。 - [伪量化精度测试工具](fake_quantization_accuracy_testing_tool.md) - 包含 Precision Tool 使用方式与测试流程。 - [多模态生成模型推理优化](inference_optimization_for_multimodal_generative_model.md) - 包含 DiT 缓存优化与自适应采样优化流程。 - [常见代码示例](quantization_and_sparse_quantization_scenario_import_code_examples.md) - 包含常见量化/稀疏量化场景导入代码样例。 2.3 配置readthedocs文档托管: https://modelslim.readthedocs.io/zh-cn/latest/ 2.4 配置deepwiki: https://deepwiki.com/Keithwwa/ModelSlim 3. 验证: 3.1. gimini代码检视: https://github.com/Keithwwa/ModelSlim/pull/1 See merge request: Ascend/msmodelslim!109 | 7 个月前 | |
【msmodelslim】资料问题整改 Co-authored-by: caishengcheng<caishengcheng@huawei.com> # message auto-generated for no-merge-commit merge: !18 merge docs into master 【msmodelslim】资料问题整改 Created-by: caishengcheng Commit-by: caishengcheng Merged-by: ascend-robot Description: 【msmodelslim】资料问题整改 See merge request: Ascend/msmodelslim!18 | 9 个月前 | |
【msmodelslim】cleancode Co-authored-by: caishengcheng<caishengcheng@huawei.com> | 9 个月前 | |
[Doc] FAQ 资料规范整改、文档链接修复与版本说明导航清理 Co-authored-by: LeeQT<liqitong@huawei.com> # message auto-generated for no-merge-commit merge: !967 merge docs-release-notes-faq into master [Doc] FAQ 资料规范整改、文档链接修复与版本说明导航清理 Created-by: LeeQT Commit-by: LeeQT Merged-by: ascend-robot Description: 提交前请阅读 [贡献指南](https://gitcode.com/Ascend/msmodelslim/blob/master/docs/zh/contributing/contributing_guide.md),开发者文档:[模型接入指南](https://gitcode.com/Ascend/msmodelslim/blob/master/docs/zh/knowledge_base/model/integrating_models.md) ## 1. 影响面评估 **接口变更(按需):** 无 **输出件变更(按需):** 无 **非兼容变更(按需):** 无 **SIG 评审结论(按需):** 无 ## 2. 修改描述 **修改背景(可选):** - FAQ 各篇标题编号不符合《公共校验清单》CE-13 的要求:二级标题误用 x.x、三级标题完全无序号。 - 硬件兼容篇在 FAQ 条目下架后,残留的引言文案沿用了「精度与调优」的表述,与主题不符。 - README 存在失效链接(msagent 文档大小写不符导致 404)与标点缺失。 - 上游 3d342f33 删除了 docs/zh/release_notes/release_notes.md,但 mkdocs.yml 的导航条目仍指向该文件,形成悬空引用。 **修改目的:** 使 FAQ 资料满足《msModelSlim 资料规范》,修复文档失效链接,清理悬空导航引用。 **修改内容:** - docs/support/faq*:按 CE-13 补齐标题编号——二级标题由 x.x 改为 x,三级标题补 x.x,同级序号连续;同步修正 4 篇引言与 2 篇预留分类中「新增条目按 1.x 顺序追加」的指引文字。 - docs/support/faq.md:修订记录由 3 条(v2.1/v2.0/v1.0)合并为 v1.0 单行,并按时间升序记录;分类索引中「硬件兼容」一行改为预留分类描述;frontmatter keywords 调整。 - docs/support/faq_hardware.md:FAQ 条目下架,参照预留分类样式补全——修正原引言误用「精度与调优」文案的问题,补充硬件兼容相关指引文档链接与新增条目约定。 - docs/support/faq_installation.md:将「操作系统版本,或通过以下命令规避」拆为「升级操作系统版本」「通过以下命令规避」两条独立的解决方法。 - docs/support/faq_warning.md:新增条目约定补充「关联文档(可选)」,匹配后续条目结构。 - README:最新消息 改指 GitCode Releases「发行版说明」页面;量化收益描述补齐「W8A8 量化后」;快速开始 行补句末句号;修正「AI 智能体(msagent)」文档链接大小写(Quantizer.md → quantizer.md,原链接 404)。 - mkdocs.yml:移除「九、附录」中指向已删除文件的「版本说明」导航条目。 **备注(合并冲突处理):** 本分支曾重写 docs/zh/release_notes/release_notes.md,与上游 3d342f33 的删除操作构成 modify/delete 冲突。经确认接受上游删除,本分支的版本说明重写不再合入;同时补齐上游遗漏的 mkdocs.yml 悬空引用清理。当前分支已合并 center/master(3d342f33),无冲突。 ## 3. 功能验证 冒烟由 CI 门禁检查,无需填写「冒烟是否通过」。 - [x] 功能自验 - [ ] 本地自验用例截图(N/A:本 PR 为纯文档变更,无界面可截图;校验以脚本方式进行,见下) **复现步骤(可选):** bash cd <repo_root> # 1) 标题编号校验(CE-13):一级标题不带序号,二级须为 x,三级须为 x.x,同级连续 grep -nE '^#{1,3} ' docs/zh/support/faq*.md # 2) 篇内相对链接可达性校验:列出所有 ](../xxx.md) 链接并确认目标文件存在 grep -ohE '\]\(\.\.?/[^)#]+\)' docs/zh/support/faq*.md | tr -d ']()' | sort -u | while read -r p; do [ -e "docs/zh/support/$p" ] && echo "OK $p" || echo "BROKEN $p" done # 3) 确认 docs 内已无指向已删除 release_notes.md 的链接 grep -rn 'release_notes/release_notes\.md' docs/ mkdocs.yml || echo "无悬空引用" 本地校验结果:docs/zh/support/ 下 7 篇 FAQ 全部满足 CE-13;篇内 15 处相对链接全部可解析到仓库内实际文件;代码围栏均标注语言(CE-11);docs/ 与 mkdocs.yml 中已无指向已删除文件的引用。 ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [x] 是否已校验外部数据 - [x] 是否未采集或打印敏感信息 - [x] 是否已正确设置文件权限 - [x] 是否充分考虑浮点运算溢出、除零等异常场景 - [x] 是否已对正则表达式做 ReDos 检查 **DT** - [x] 是否具备 UT 测试用例看护(路径:用例路径;未添加请说明原因) - [x] 是否需要添加冒烟:否(若「是」请说明冒烟场景及对应用途) --- 🤖 Generated with [Claude Code](https://claude.com/claude-code) See merge request: Ascend/msmodelslim!967 | 17 天前 | |
【docs】:产品系列名称整改;英文26.1.0更新入master分支 Co-authored-by: zzm30<zhengzhimin1@h-partners.com> # message auto-generated for no-merge-commit merge: !928 merge master into master 【docs】:产品系列名称整改;英文26.1.0更新入master分支 Created-by: zzm30 Commit-by: zzm30 Merged-by: ascend-robot Description: # PR 提交说明 提交前请阅读 [CONTRIBUTING.md](https://gitcode.com/Ascend/msmodelslim/blob/master/docs/zh/contributing/contributing_guide.md),开发者文档:[模型接入指南](../docs/zh/development_guide/integrating_models.md) PR 标题前缀:[Feature]、[Bugfix]、[Doc]、[Test](与 CONTRIBUTING 一致) ## 1. 影响面评估 **接口变更(按需):** 无 > 备注:若无变更请保留「无」;涉及 CLI、API、YAML 等请在此项补充说明。 **输出件变更(按需):** 无 > 备注:若无变更请保留「无」;涉及导出格式、产物路径等请在此项补充说明。 **非兼容变更(按需):** 无 > 备注:若无变更请保留「无」;若有非兼容变更请说明迁移方式。 **SIG 评审结论(按需):** 无 > 提醒:非兼容、安全风险等高危 PR 须经 SIG 评审后合入;无则保留「无」。 ## 2. 修改描述 **修改背景(可选):** 文档硬件产品形态内容统一;英文26.1.0合入master分支,后续再做差异化翻译。 **修改目的:** 整改产品系列名称问题。 **修改内容:** 1. 产品系列名称整改; 2. 英文26.1.0更新入master分支。 **概念域参考(填写提示):** - cli:命令行 quant / analyze / tune - app:最佳实践量化、量化分析、精度反馈自动调优等 - core:算法、量化服务、调度、张量量化、调优策略、最佳实践、上下文等 - infra:模型适配、调优计划/历史/缓存、测评服务等 - utils:日志、错误处理、插件等 ## 3. 功能验证 - [x] 功能自验 - [ ] 本地自验用例截图(请勿包含个人信息;可附复现命令) ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [x] 是否已校验外部数据 - [x] 是否未采集或打印敏感信息 - [x] 是否已正确设置文件权限 - [x] 是否充分考虑浮点运算溢出、除零等异常场景 - [x] 是否已对正则表达式做 ReDos 检查 **DT** - [x] 是否具备 UT 测试用例看护 资料修改 - [ ] 是否需要添加冒烟:否 See merge request: Ascend/msmodelslim!928 | 24 天前 | |
[Feature] add full UT support: -e FULL_UT=true triggers all test cases Co-authored-by: tanxiangyuu<tanxiangyu2@huawei.com> # message auto-generated for no-merge-commit merge: !783 merge feat/full-ut into master [Feature] add full UT support: -e FULL_UT=true triggers all test cases Created-by: tanxiangyuu Commit-by: tanxiangyuu Merged-by: ascend-robot Description: # PR 提交说明 提交前请阅读 [贡献指南](https://gitcode.com/Ascend/msmodelslim/blob/master/docs/zh/contributing/contributing_guide.md),开发者文档:[模型接入指南](../docs/zh/knowledge_base/model/integrating_models.md) PR 标题前缀:[Feature] add full UT support via test -e full_ut=true ## 1. 影响面评估 **接口变更(按需):** 有 > 备注: build.py 新增 -e full_ut=true 选项,与 test 命令组合使用触发全量单元测试。原有 test 命令行为不变,-e 其余 KEY=VALUE 格式兼容。 > > 变更范围:build.py 的 test 分支增加 full_ut 判断,顶层增加 -e 解析逻辑,不涉及 CLI、API、YAML。 **输出件变更(按需):** 无 > 备注:全量 UT 模式下不产生构建产物;正常构建路径产物不变。 **非兼容变更(按需):** 无 > 备注:test 命令行为完全不变,仅新增选项,无迁移成本。 **SIG 评审结论(按需):** 无 ## 2. 修改描述 **修改背景(可选):** 当前 python build.py test 仅执行 run_ut.sh --modelslim_v1(精简 UT 子集),在需要跑全量 UT case 时缺少统一的入口。 **修改目的:** 提供一键全量 UT 能力,安装全量依赖并运行全部测试用例(13 个模块 + smoke)。 **修改内容:** - build:新增 _prepare_all_dependencies() 方法,安装 requirements_all.txt 全量依赖 - build:新增 requirements_all.txt 文件,聚合运行时 + 测试框架 + 核心 ML + ONNX + 多模态等依赖 - build:顶层解析 -e 选项,test 命令下 full_ut=true 时安装全量依赖并执行全部测试用例 **概念域参考(填写提示):** - cli:命令行 quant / analyze / tune - app:最佳实践量化、量化分析、精度反馈自动调优等 - core:算法、量化服务、调度、张量量化、调优策略、最佳实践、上下文等 - infra:模型适配、调优计划/历史/缓存、测评服务等 - utils:日志、错误处理、插件等 ## 3. 功能验证 冒烟由 CI 门禁检查,无需填写「冒烟是否通过」。 - [x] 功能自验 - [ ] 本地自验用例截图(请勿包含个人信息;可附复现命令) **复现步骤(可选):** bash # 全量 UT(安装全量依赖 + 执行全部用例) python build.py test -e full_ut=true # 全量 UT(跳过依赖安装,仅执行用例) python build.py test local -e full_ut=true # 原有精简 UT 不受影响 python build.py test python build.py test local # 正常构建不受影响 python build.py python build.py -v 2.0.0 ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [ ] N/A 是否已校验外部数据 - [ ] N/A 是否未采集或打印敏感信息 - [ ] N/A 是否已正确设置文件权限 - [ ] N/A 是否充分考虑浮点运算溢出、除零等异常场景 - [ ] N/A 是否已对正则表达式做 ReDos 检查 **DT** - [ ] N/A 是否具备 UT 测试用例看护:N/A(构建脚本变更,非业务逻辑代码) - [ ] N/A 是否需要添加冒烟:否 See merge request: Ascend/msmodelslim!783 | 2 个月前 | |
【msmodelslim】刷新文件头部声明和版权 Co-authored-by: caishengcheng<caishengcheng@huawei.com> # message auto-generated for no-merge-commit merge: !28 merge license into master 【msmodelslim】刷新文件头部声明和版权 Created-by: caishengcheng Commit-by: caishengcheng Merged-by: ascend-robot Description: 【msmodelslim】刷新文件头部声明和版权 See merge request: Ascend/msmodelslim!28 | 8 个月前 | |
[Doc] 修复 issue 528 part.1(cli 和 config 文档问题及相关引用更新) Co-authored-by: jiamingxuaa<xujiaming19@h-partners.com> # message auto-generated for no-merge-commit merge: !1021 merge master into master [Doc] 修复 issue 528 part.1(cli 和 config 文档问题及相关引用更新) Created-by: jiamingxuaa Commit-by: jiamingxuaa Merged-by: ascend-robot Description: # PR 提交说明 提交前请阅读 [贡献指南](https://gitcode.com/Ascend/msmodelslim/blob/master/docs/zh/contributing/contributing_guide.md),开发者文档:[模型接入指南](../docs/zh/knowledge_base/model/integrating_models.md) PR 标题前缀:[Feature]、[Bugfix]、[Doc]、[Test](与 CONTRIBUTING 一致) ## 1. 影响面评估 **接口变更(按需):** 无 > 备注:若无变更请保留「无」;涉及 CLI、API、YAML 等请在此项补充说明。 **输出件变更(按需):** 无 > 备注:若无变更请保留「无」;涉及导出格式、产物路径等请在此项补充说明。 **非兼容变更(按需):** 文档路径调整(书签/外链需迁移) - docs/zh/api_reference/config/task/ → docs/zh/api_reference/config/quant/ - 删除手写页 docs/zh/api_reference/config/auto_precision_tuning.md,改由 config/tuning/README.md + 既有 tuning/* 字段页承接 - docs/zh/api_reference/config/processor_group.md → docs/zh/user_guide/usage_processor_group.md 迁移:将旧链接中的 config/task/ 改为 config/quant/;自动调优协议说明改链至 config/tuning/README.md;组合处理器用法改链至 user_guide/usage_processor_group.md。仓库内交叉引用已同步更新。 **SIG 评审结论(按需):** 无 > 提醒:非兼容、安全风险等高危 PR 须经 SIG 评审后合入;无则保留「无」。 ## 2. 修改描述 **修改背景(可选):** API Reference 中配置文档按类型组织,缺少统一的“先选协议 / 再按 type 查处理器”导航;CLI 与配置字段说明、示例标签等与现状不完全一致;自动调优手写长文与 tuning/ 生成页并存,入口分散;以及[测试提出的各种修改建议](https://gitcode.com/Ascend/msmodelslim/issues/528)。 **修改目的:** 理顺cli / config 文档层级与导航,校准命令行与配置字段说明,并同步全库交叉链接与文档生成约定,降低查阅与后续维护成本。 **修改内容:** - cli:新增 api_reference/cli/README.md(全局/公共参数、子命令总览);校准 quant / analyze / eval / tune 参数表、互斥关系、权重转换省略 --model_type、--save_path 公共化、tags 示例等表述 - docs/api_reference/config:新增手写导航 config/README.md、config/quant/README.md、config/tuning/README.md;任务配置目录 task/ 重命名为 quant/;删除 auto_precision_tuning.md;组合处理器说明迁至 user_guide/usage_processor_group.md - docs/api_reference/config(生成页):更新 processor/*、format/*、tuning/* 及 quant/* 字段说明/结构(如 modelslim_convert、evaluation_service_oriented、group、trainable_linear_quant 等) - docs/knowledge_base & user_guide & skills:批量将 config/task/ 链接改为 config/quant/,并同步自动调优/组合处理器相关入口 - docs/contributing & skills/docs-management:更新 api_reference_docgen.md 与脚本 README,明确 quant/ 产出目录、手写 README.md 受 MANUAL_KEEP 保护、配置块编号最多 3 段等约定 **概念域参考(填写提示):** 说明:本 PR 为文档与导航重构,未改动 app / core / infra / utils 运行时代码;修改内容主要落在 cli(文档) 与文档体系本身。 ## 3. 功能验证 冒烟由 CI 门禁检查,无需填写「冒烟是否通过」。 - [ ] 功能自验 - [ ] 本地自验用例截图(请勿包含个人信息;可附复现命令) **复现步骤(可选):** bash # 在此粘贴可复现命令 ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [ ] 是否已校验外部数据 - [x] 是否未采集或打印敏感信息 - [ ] 是否已正确设置文件权限 - [ ] 是否充分考虑浮点运算溢出、除零等异常场景 - [ ] 是否已对正则表达式做 ReDos 检查 **DT** - [ ] 是否具备 UT 测试用例看护(路径:用例路径;未添加请说明原因) - [x] 是否需要添加冒烟:否(若「是」请说明冒烟场景及对应用途) See merge request: Ascend/msmodelslim!1021 | 8 天前 | |
【msmodelslim】【UT】补充format存量代码UT,行覆盖率大于90 Co-authored-by: anreywmh<18845895998@163.com> # message auto-generated for no-merge-commit merge: !513 merge w_ut into master 【msmodelslim】【UT】补充format存量代码UT,行覆盖率大于90 Created-by: anreywmh Commit-by: anreywmh Merged-by: ascend-robot Description: 感谢您贡献的Pull Request! 在提交之前,请务必阅读 [CONTRIBUTING.md](https://gitcode.com/Ascend/msmodelslim/blob/master/CONTRIBUTING.md)。 Thanks for sending a pull request! BEFORE SUBMITTING, PLEASE READ [CONTRIBUTING.md](https://gitcode.com/Ascend/msmodelslim/blob/master/CONTRIBUTING.md). ## PR描述 (What this PR does / why we need it?) - 请明确说明您提交PR的变更内容。本部分旨在概述所做的变更,以及此PR是如何解决该问题的。请尽可能地提供有助于评审人员更高效、更快速完成检视审查的实用说明。 补充format下的UT测试用例 :/home/wangminghua/msmodelslim/test# python3 -m coverage report \ --include="*/msmodelslim/format/*" \ --show-missing Name Stmts Miss Cover Missing ----------------------------------------------------------------------------------------------------------------------------------------------------------------- /home/wangminghua/msmodelslim/msmodelslim/format/__init__.py 19 0 100% /home/wangminghua/msmodelslim/msmodelslim/format/ascendV1_format/__init__.py 2 0 100% /home/wangminghua/msmodelslim/msmodelslim/format/ascendV1_format/ascendV1.py 12 0 100% /home/wangminghua/msmodelslim/msmodelslim/format/ascendV1_format/ascendV1_json_writer_factory_infra.py 14 0 100% /home/wangminghua/msmodelslim/msmodelslim/format/ascendV1_format/ascendV1_tensors_writer_factory_infra.py 15 0 100% /home/wangminghua/msmodelslim/msmodelslim/format/base.py 49 2 96% 71, 76 /home/wangminghua/msmodelslim/msmodelslim/format/common/__init__.py 2 0 100% /home/wangminghua/msmodelslim/msmodelslim/format/common/deqscale.py 11 0 100% /home/wangminghua/msmodelslim/msmodelslim/format/common/pack.py 42 0 100% /home/wangminghua/msmodelslim/msmodelslim/format/compressed_tensors_format/__init__.py 3 0 100% /home/wangminghua/msmodelslim/msmodelslim/format/compressed_tensors_format/compressed_tensors.py 125 0 100% /home/wangminghua/msmodelslim/msmodelslim/format/compressed_tensors_format/compressed_tensors_json_reader_factory_infra.py 12 0 100% /home/wangminghua/msmodelslim/msmodelslim/format/compressed_tensors_format/compressed_tensors_json_writer_factory_infra.py 12 0 100% /home/wangminghua/msmodelslim/msmodelslim/format/compressed_tensors_format/compressed_tensors_safetensors_writer_factory_infra.py 15 0 100% /home/wangminghua/msmodelslim/msmodelslim/format/compressed_tensors_format/config/__init__.py 0 0 100% /home/wangminghua/msmodelslim/msmodelslim/format/compressed_tensors_format/config/base.py 22 0 100% /home/wangminghua/msmodelslim/msmodelslim/format/compressed_tensors_format/quantization/__init__.py 0 0 100% /home/wangminghua/msmodelslim/msmodelslim/format/compressed_tensors_format/quantization/quant_args.py 171 9 95% 46, 184, 190, 203, 214, 222, 233, 263, 353 /home/wangminghua/msmodelslim/msmodelslim/format/compressed_tensors_format/quantization/quant_config.py 41 0 100% /home/wangminghua/msmodelslim/msmodelslim/format/compressed_tensors_format/quantization/quant_config_builder.py 147 6 96% 99, 102, 118, 187, 235, 239 /home/wangminghua/msmodelslim/msmodelslim/format/compressed_tensors_format/quantization/quant_scheme.py 57 1 98% 96 /home/wangminghua/msmodelslim/msmodelslim/format/interface.py 21 0 100% /home/wangminghua/msmodelslim/msmodelslim/format/mindie_format/__init__.py 2 0 100% /home/wangminghua/msmodelslim/msmodelslim/format/mindie_format/mindie.py 12 0 100% /home/wangminghua/msmodelslim/msmodelslim/format/mindie_format/mindie_json_writer_factory_infra.py 14 0 100% /home/wangminghua/msmodelslim/msmodelslim/format/mindie_format/mindie_tensors_writer_factory_infra.py 15 0 100% /home/wangminghua/msmodelslim/msmodelslim/format/registry.py 39 0 100% ----------------------------------------------------------------------------------------------------------------------------------------------------------------- TOTAL 874 18 98% - 请说明为何需要这些更改,例如具体的使用场景或bug描述。 - 关联issue号(如果有)。 - Please clarify what changes you are proposing. The purpose of this section is to outline the changes and how this PR fixes the issue. If possible, please consider writing useful notes for better and faster reviews in your PR. - Please clarify why the changes are needed. For instance, the use case and bug description. - Related issue number (if any) ## 面向用户的变更 (Does this PR introduce _any_ user-facing change)? - 请注意,这里指的是**任何**面向用户的变更,包括但不限于API、用户界面或其他使用方式上的变更。 - Note that it means *any* user-facing change including all aspects such as API, interface or other behavior changes. ## 功能验证 (How was this patch tested?) 请确认CI已通过增量及存量的单元测试用例。 如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤(最好提供完整的可复现的操作路径及关键截图),以便Committer能够快速复现验证,也便于后续的维护。 如果未添加测试,请说明未添加的原因,以及为何难添加测试。 - [_] 功能自验  - [_] 本地自验截图(涉及个人标识符等敏感信息请注意脱敏) - [_] 新增/变更内容是否已新增/适配UT测试用例看护 CI passed with new added/existing test. If it was tested in a way different from regular unit tests, please clarify how you tested step by step, ideally copy and paste-able, so that other reviewers can test and check, and descendants can verify in the future. If tests were not added, please describe why they were not added and/or why it was difficult to add. - [_] Self-verification of the feature. - [_] Screenshot of local self-verification (please anonymize any sensitive information such as personal identifiers) - [_] Have new or modified unit test (UT) cases been added or adapted to cover the newly added or changed content? See merge request: Ascend/msmodelslim!513 | 3 个月前 | |
[Feature] msmodelslim 消减 wcmatch/pygtrie 第三方依赖 Co-authored-by: Rigel_Chen<chenruijie9@huawei.com> # message auto-generated for no-merge-commit merge: !835 merge remove-unnecessary-deps into master [Feature] msmodelslim 消减 wcmatch/pygtrie 第三方依赖 Created-by: Rigel_Chen Commit-by: Rigel_Chen Merged-by: ascend-robot Description: # PR 提交说明 提交前请阅读 [贡献指南](https://gitcode.com/Ascend/msmodelslim/blob/master/docs/zh/contributing/contributing_guide.md),开发者文档:[模型接入指南](../docs/zh/knowledge_base/model/integrating_models.md) PR 标题前缀:[Feature]、[Bugfix]、[Doc]、[Test](与 CONTRIBUTING 一致) ## 1. 影响面评估 **接口变更(按需):** 无 > 备注:若无变更请保留「无」;涉及 CLI、API、YAML 等请在此项补充说明。 **输出件变更(按需):** 无 > 备注:若无变更请保留「无」;涉及导出格式、产物路径等请在此项补充说明。 **非兼容变更(按需):** 无 > 备注:若无变更请保留「无」;若有非兼容变更请说明迁移方式。 **SIG 评审结论(按需):** 无 > 提醒:非兼容、安全风险等高危 PR 须经 SIG 评审后合入;无则保留「无」。 ## 2. 修改描述 **修改背景(可选):** 专项要求,对组件主动依赖进行分析,清理无关依赖 **修改目的:** 降低客户安装上手难度 **修改内容:** 从核心 requirements.txt 削减以下 3 项: | 依赖 | 策略 | 替代方案 | 主要触点 | |------|------|----------|----------| | **wcmatch** | 自研轻量替代后删声明 | brace 展开 + 标准库 fnmatch | utils/config_map.py;lab_practice 存在 {1,2,3} 层名写法 | | **pygtrie** | 自研前缀冲突检测后删声明 | dict/字符串前缀集合实现同路径/父子路径冲突 | utils/distributed/.../wave.py | | **requests** | urllib.request 封装后删声明 | timeout / 禁重定向 / SSL / JSON POST;异常映射 | utils/security/request.py;infra/vllm_ascend_server.py;infra/evaluation/precheck | **概念域参考(填写提示):** - cli:命令行 quant / analyze / tune - app:最佳实践量化、量化分析、精度反馈自动调优等 - core:算法、量化服务、调度、张量量化、调优策略、最佳实践、上下文等 - infra:模型适配、调优计划/历史/缓存、测评服务等 - utils:日志、错误处理、插件等 ## 3. 功能验证 冒烟由 CI 门禁检查,无需填写「冒烟是否通过」。 - [x] 功能自验 - [x] 本地自验用例截图(请勿包含个人信息;可附复现命令) **复现步骤(可选):** bash # 在此粘贴可复现命令 ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [x] 是否已校验外部数据 - [x] 是否未采集或打印敏感信息 - [x] 是否已正确设置文件权限 - [ ] 是否充分考虑浮点运算溢出、除零等异常场景 - [x] 是否已对正则表达式做 ReDos 检查 **DT** - [x] 是否具备 UT 测试用例看护(路径:用例路径;未添加请说明原因) - [ ] 是否需要添加冒烟:否(若「是」请说明冒烟场景及对应用途) See merge request: Ascend/msmodelslim!835 | 1 个月前 | |
[bugfix] 版本时间改用服务器时间,帮助按真实终端宽度换行 Co-authored-by: tanxiangyuu<tanxiangyu2@huawei.com> Co-authored-by: Rigel_Chen<chenruijie9@huawei.com> # message auto-generated for no-merge-commit merge: !975 merge cli-bugfix into master [bugfix] 版本时间改用服务器时间,帮助按真实终端宽度换行 Created-by: Rigel_Chen Commit-by: Rigel_Chen;tanxiangyuu Merged-by: ascend-robot Description: # PR 提交说明 提交前请阅读 [贡献指南](https://gitcode.com/Ascend/msmodelslim/blob/master/docs/zh/contributing/contributing_guide.md),开发者文档:[模型接入指南](../docs/zh/knowledge_base/model/integrating_models.md) PR 标题前缀:[Feature]、[Bugfix]、[Doc]、[Test](与 CONTRIBUTING 一致) ## 1. 影响面评估 **接口变更(按需):** 无 > 备注:若无变更请保留「无」;涉及 CLI、API、YAML 等请在此项补充说明。 **输出件变更(按需):** 无 > 备注:若无变更请保留「无」;涉及导出格式、产物路径等请在此项补充说明。 **非兼容变更(按需):** 无 > 备注:若无变更请保留「无」;若有非兼容变更请说明迁移方式。 **SIG 评审结论(按需):** 无 > 提醒:非兼容、安全风险等高危 PR 须经 SIG 评审后合入;无则保留「无」。 ## 2. 修改描述 **修改背景(可选):**(问题现象、使用场景等) **修改目的:** 根据测试要求,将构建时间修正为服务器时间,并将帮助命令行按终端适应 **修改内容:** msmodelslim/cli/__main__.py :修改显示为服务器时间,并将排版改为始终适应终端 setup.py:获取版本信息为分支信息而非大版本信息 **概念域参考(填写提示):** - cli:命令行 quant / analyze / tune - app:最佳实践量化、量化分析、精度反馈自动调优等 - core:算法、量化服务、调度、张量量化、调优策略、最佳实践、上下文等 - infra:模型适配、调优计划/历史/缓存、测评服务等 - utils:日志、错误处理、插件等 ## 3. 功能验证 冒烟由 CI 门禁检查,无需填写「冒烟是否通过」。 - [ ] 功能自验 - [ ] 本地自验用例截图(请勿包含个人信息;可附复现命令) **复现步骤(可选):** bash # 在此粘贴可复现命令 ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [ ] 是否已校验外部数据 - [ ] 是否未采集或打印敏感信息 - [ ] 是否已正确设置文件权限 - [ ] 是否充分考虑浮点运算溢出、除零等异常场景 - [ ] 是否已对正则表达式做 ReDos 检查 **DT** - [ ] 是否具备 UT 测试用例看护(路径:用例路径;未添加请说明原因) - [ ] 是否需要添加冒烟:否(若「是」请说明冒烟场景及对应用途) See merge request: Ascend/msmodelslim!975 | 16 天前 |
MindStudio ModelSlim
简体中文 | English
✨ 最新消息
🔹 [2026.09.03]
- 新增对
Step-3.7-Flash(W8A8 MXFP8)多模态模型的量化支持
🔹 [2026.08.07]
- 多模态理解模型支持多卡分布式逐层量化,提升多模态理解模型量化效率
- 新增对
Kimi-K3(W4A8)模型的量化支持
🔹 [2026.09.02]
- 完善 Gemma4 Dense
gemma-4-31B-it的 MXFP8/MXFP4 混合量化最佳实践 - 完善 Gemma4 MoE
gemma-4-26B-A4B-it的 MXFP8/MXFP4 混合量化最佳实践
🔹 [2026.07.15]
- 新增对 Gemma4 Dense
gemma-4-31B-it(W8A8)、Gemma4 MoEgemma-4-26B-A4B-it(W8A8)模型的量化支持
🗂️ 更多历史更新(点击展开)
🔹 [2026.07.07]
- 新增对腾讯混元
Hy3(W8A8)模型的量化支持
🔹 [2026.06.01]
- 新增对
InternVL3_5-38B(W8A8)、InternVL3_5-241B-A28B(W8A8)模型的量化支持 - 新增对
Kimi-K2.6(W4A8)模型的量化支持
🔹 [2026.04.01]
- 新增对
DeepSeek-V4-Flash(W8A8)模型的量化支持 - 新增对
Kimi-K2.5(W4A8)模型的量化支持
📄 更多历史更新记录,请参见《发行版说明》。
ℹ️ 简介
MindStudio ModelSlim(msModelSlim) 是昇腾生态下的高性能模型压缩工具,支持稠密LLM、MoE及多模态模型的量化与压缩。开发者可通过命令行与配置快速调优并导出适配 MindIE、vLLM-Ascend 等框架的模型,在昇腾AI处理器上高效部署。
它能为你带来什么:
- 🚀 推理加速:量化后显著降低显存占用,提升推理吞吐与部署成本效率(例如 Qwen3.6-27B 模型原始权重50+GB,W8A8量化后30+GB,显存节约40%)。
- 🎯 开箱即用:集成主流大模型量化最佳实践,
msmodelslim quant一条命令完成量化。 - 🔧 精度可控:提供敏感层分析、自动调优与精度反馈闭环,量化精度可量化、可调优。
- 🧩 生态友好:导出的量化权重无缝接入 vLLM-Ascend 等主流推理框架。
🚀 快速开始
手把手教你完成端到端模型量化,请参见《快速入门》。
📦 安装指南
msModelSlim已发布到PyPI,可通过pip直接安装。
# 安装 msModelSlim(最新版本已更新到PyPI源)
pip install msmodelslim
# 验证安装:打印命令行帮助信息即表示安装成功
msmodelslim --help
更多安装方式,请参见《安装指南》。
📘 使用指南
想了解msModelSlim如何使用? 可按需选择入口:
| 业务流程 | 对应工具/功能 |
|---|---|
| 《新模型量化调优流程》 | 权重量化、敏感层分析 |
| 《精度调优方法》 | 敏感层分析、自动调优、调试模式 |
| 《主流模型量化部署》 | 一键量化 |
| 《量化推理精度异常定位》 | 调试模式 |
更多使用指南,请参见《使用指南》。
📚 知识库
不懂 W4A8/W8A8 等量化术语? 请参见《推理加速知识库》。
💡 典型案例
需要模型量化调优的典型场景? 请参见《msModelSlim 典型案例》。
❓ FAQ
遇到了问题? 请参见《FAQ》。
🌌 智能检索
为提升文档查阅效率,我们提供多种高效检索方式:
🔹 AI 智能体(msagent):msModelSlim 量化能力已集成至 msagent 智能体,通过自然语言交互即可自动完成模型量化任务。
🔹 AI 问答(DeepWiki):自然语言问答,快速把握项目架构与模块关系。
🛠️ 贡献指南
想要贡献力量? 具体请参见《贡献指南》。
⚖️ 相关说明
🔹 《版本说明》
🔹 《许可证声明》
🔹 《安全声明》
🔹 《免责声明》
🤝 建议与交流
欢迎大家为社区做贡献。如果有任何疑问或建议,请提交 Issues,我们会尽快回复。感谢您的支持。
| 即时互动(微信群) | 官方资讯(公众号) | 深度支持(助手/论坛) |
|---|---|---|
![]() 扫码加入技术交流群 |
![]() 扫码关注官方公众号 |
扫码入群并关注公众号,直达 MindStudio 用户与开发者最快捷的交流平台: 快速提问: 与社区小伙伴即时探讨技术问题 掌握动态: 第一时间获取版本发布与功能更新通知 经验共享: 与广大开发者交流最佳实践与实战心得 更多支持渠道:👉 昇腾助手: |
🙏 致谢
本工具由华为公司的下列部门联合贡献:
🔹 昇腾计算MindStudio开发部
🔹 昇腾计算生态使能部
🔹 昇腾计算技术开发部
🔹 2012实验室
感谢来自社区的每一个 PR,欢迎贡献!

