MindStudio-ModelSlim(msModelSlim)是MindStudio全流程工具链推出的模型量化压缩工具。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[Doc] 重组中文资料目录并同步导航与链接 Co-authored-by: joejoezhou<zhourongchen1@huawei.com> # message auto-generated for no-merge-commit merge: !761 merge feature/docs-dirs into master [Doc] 重组中文资料目录并同步导航与链接 Created-by: joejoezhou Commit-by: joejoezhou 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. 影响面评估 **接口变更(按需):** 无 **输出件变更(按需):** 无 **非兼容变更(按需):** 无 **SIG 评审结论(按需):** 无 ## 2. 修改描述 **修改背景(可选):** 中文资料目录层级混乱,流程与概念混杂,导航与相对链接随历史迁移积累了失效路径。 **修改目的:** 重组 docs/zh 目录结构,统一以流程指南/知识库/案例参考三类文档分层,并同步导航、索引与全库相关链接。 **修改内容:** - docs:新增推理加速知识库 knowledge_base,按 knowledge_base / user_guide / contributing / api_reference / best_practices / legal 重组中文资料 - docs:每个算法单独子目录、每个调优策略单独子目录、每个量化格式单独子目录 - docs:更新流程指南,区分业务流程和工具使用流程;算法总览补齐子算法 - docs:修复迁移后失效/过时链接,同步 mkdocs 导航(仅改路径,顶层序号与 master 一致) - docs:按评审意见修正相对路径、书名号外层、文档链接书名号与完整句句号 - docs:PR 模板中模型接入路径对齐新目录;清除 V0 案例残留 ## 3. 功能验证 冒烟由 CI 门禁检查,无需填写「冒烟是否通过」。 - [x] 功能自验 - [ ] 本地自验用例截图(请勿包含个人信息;可附复现命令) ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [x] 是否已校验外部数据(N/A) - [x] 是否未采集或打印敏感信息(N/A) - [x] 是否已正确设置文件权限(N/A) - [x] 是否充分考虑浮点运算溢出、除零等异常场景(N/A) - [x] 是否已对正则表达式做 ReDos 检查(N/A) **DT** - [x] 是否具备 UT 测试用例看护(路径:用例路径;未添加请说明原因):文档重组,无代码逻辑变更,不新增 UT - [x] 是否需要添加冒烟:否 See merge request: Ascend/msmodelslim!761 | 1 个月前 | |
【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 | 7 个月前 | |
[Feature] 量化配置预校验 Co-authored-by: tanxiangyuu<tanxiangyu2@huawei.com> # message auto-generated for no-merge-commit merge: !863 merge feat/quant-config-precheck into master [Feature] 量化配置预校验 Created-by: tanxiangyuu Commit-by: tanxiangyuu Merged-by: ascend-robot Description: # PR 提交说明 PR 标题前缀:[Feature] 量化配置预校验 ## 1. 影响面评估 **接口变更(按需):** 无 > PracticeConfig 纯增 precheck() / precheck_spec() / load() 三个方法;apiversion / spec 改为 property 委托到 self.task,调用方无感知;CLI 不变;IQuantService.quantize 及 proxy 不变。 **输出件变更(按需):** 无 > _flatten 序列化器保证 model_dump() 输出与旧格式逐字一致({metadata, apiversion, spec, ...});yaml 导出、iter_config 语义、错误路径格式全部零变化。 **非兼容变更(按需):** 无 > PracticeConfig 构造函数从 PracticeConfig(apiversion=..., spec=..., metadata=...) 变为 PracticeConfig(task=..., metadata=...),但 _normalize 对旧格式做了透明转换,旧调用方式仍然有效。from_base 从手工字段拷贝改为 model_validate 嵌套校验,输出路径不变。 **SIG 评审结论(按需):** 无 ## 2. 修改描述 **修改目的:** 将量化配置校验从"运行时分散报错"前移到"模型加载前一次报全";将 practice = metadata + task 的概念模型落地为 schema 结构,task 经 BaseQuantConfig 插件判别按 apiversion 分派到后端强 schema,metadata 与 task 两层错误由 pydantic 原生聚合为单一报告。 **修改内容:** - core/practice:PracticeConfig 重构——不再继承 BaseQuantConfig,改为独立 BaseModel,字段为 metadata: Metadata + task: BaseQuantConfig;新增 _normalize(旧格式透明转换)、_strip_task_prefix(错误路径剥除 task. 前缀)、_flatten(序列化展平,保持导出兼容);新增 precheck()(全量前校验)、precheck_spec()(spec 层补查)、load()(弱校验通道,iter_config 专用);apiversion/spec 改为 property 委托 - core/quant_service:BaseQuantConfig 升级为 TypedConfig 判别基类,新增 QUANT_TASK_PLUGIN_GROUP 插件组,基类 model_validate 时按 apiversion 懒加载后端子类并强校验 spec - core/quant_service(四后端):modelslim_v1、modelslim_convert、multimodal_sd_v1/vlm_v1 各约 6 行——apiversion 改为 Literal + get_plugin() + from_base 嵌套化(model_validate({'apiversion', 'spec'}) 替代手工字段拷贝) - processor:path_prefix="spec." → ""(1 行),嵌套校验下 pydantic 自然 loc 已含完整路径 - infra:yaml_practice_manager.iter_config 改用 PracticeConfig.load() 维持弱校验语义(坏 spec 不中止迭代);部分格式化修正 - app:_quant 顶部插入 precheck(config_path 场景);get_best_practice 尾部插入 precheck_spec(自动匹配场景),校验均完成于权重加载前 - config:[Plugin:quant_task] 新增 4 行(v1/convert/sd_v1/vlm_v1,v0 不在判别范围内) - test:新增 test_precheck.py(260 行,6 个 TestClass);test_interface.py 适配 load() 调用 ## 3. 功能验证 - [ ] 功能自验 - [ ] 本地自验用例截图(请勿包含个人信息;可附复现命令) **复现步骤:** bash # 单测 pytest test/cases/core/practice/test_precheck.py test/cases/core/practice/test_interface.py -v # config_path 场景:metadata + spec 双错一次报全 # 构造 score=-1 且 spec.process 含非法 type 的 yaml,执行: msmodelslim quant --config_path bad_config.yaml # 预期:模型加载前报错退出,错误同时含 metadata.score 与 spec.process.0.type # 自动匹配场景:选中后 spec 强校验先于权重加载 msmodelslim quant --model_type Qwen3-32B --quant_type w8a8 # 预期:选中 practice 后立即校验 spec,不合法则报错退出 # 兼容性验证:旧格式 yaml 仍可正常加载 msmodelslim quant --config_path <任意旧 yaml> # 预期:_normalize 透明转换,行为与改造前一致 ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [ ] 是否已校验外部数据 - [ ] 是否未采集或打印敏感信息 - [ ] 是否已正确设置文件权限 - [ ] 是否充分考虑浮点运算溢出、除零等异常场景 - [ ] 是否已对正则表达式做 ReDos 检查 **DT** - [ ] 是否具备 UT 测试用例看护(路径:用例路径;未添加请说明原因) - [ ] 是否需要添加冒烟:否(若「是」请说明冒烟场景及对应用途) See merge request: Ascend/msmodelslim!863 | 9 天前 | |
[Doc] 修复新模型量化调优指南、权重量化使用指南、敏感层分析使用指南资料问题 Co-authored-by: xyxin_006<xiayingxin1@huawei.com> # message auto-generated for no-merge-commit merge: !881 merge doc/process_usage_issue into master [Doc] 修复新模型量化调优指南、权重量化使用指南、敏感层分析使用指南资料问题 Created-by: xyxin_006 Commit-by: xyxin_006 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 协议变更。 **输出件变更(按需):** 无 **非兼容变更(按需):** 无 > 备注:用户指南文件重命名 usage_sensitive_layer_wise_analysis.md → usage_sensitive_layer_analysis.md,已同步更新站内链接与 mkdocs.yml;对外书签若指向旧路径需改用新路径。 **SIG 评审结论(按需):** 无 ## 2. 修改描述 **修改背景(可选):** 新模型量化调优流程、权重量化使用指南、敏感层分析(linear / layer / attn)使用指南在资料评审中存在表述不清、标点与并列关系不规范、流程节点缺失、指标推荐未说明选取方式、接口文档仍指向章节锚点或旧文件名等问题,影响按指南落地执行。 **修改目的:** 按评审意见整改上述中文用户指南与关联引用,使流程步骤、命令行表述、校准集约定、指标选取与接口文档链接可直接指导实践,并与 CLI scope 命名对齐。 **修改内容:** - docs/流程:优化《新模型量化调优流程》前置条件、步骤表述、异常处置与术语(模型适配按 LLM / VLM / SD 分列),统一「精度与性能」等并列用语,修正 vLLM Ascend 量化适配中文文档链接。 - docs/流程:优化《权重量化使用指南》路径说明、配置协议权威链接(改挂 api_reference/config/task/*)、格式选型与验收/安全等表述。 - docs/流程:优化 linear / layer / attn 敏感层分析使用指南(补充「命令行」、校准集进流程图、与量化所用校准集一致、审计记录变量统一、后续操作用完整 quant 命令行表述、异常处置写清再执行分析命令等);指标「推荐」列改为如何选取;修正 QKV 成组策略表述。 - docs/导航:将层级敏感层分析指南重命名为 usage_sensitive_layer_analysis.md(对齐 analyze layer),并更新 mkdocs.yml、用户指南索引、API 与知识库交叉引用。 - docs/知识库:在量化算法 README 与相关 usage 中同步层级指南新路径(变基吸收 upstream 算法文档整改后保留新文件名)。 **概念域参考(填写提示):** - cli:命令行 quant / analyze / tune - app:最佳实践量化、量化分析、精度反馈自动调优等 - core:算法、量化服务、调度、张量量化、调优策略、最佳实践、上下文等 - infra:模型适配、调优计划/历史/缓存、测评服务等 - utils:日志、错误处理、插件等 ## 3. 功能验证 冒烟由 CI 门禁检查,无需填写「冒烟是否通过」。 - [x] 功能自验 - [ ] 本地自验用例截图(请勿包含个人信息;可附复现命令) **复现步骤(可选):** ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [x] 是否已校验外部数据(N/A:纯文档) - [x] 是否未采集或打印敏感信息(N/A:纯文档) - [x] 是否已正确设置文件权限(N/A:纯文档) - [x] 是否充分考虑浮点运算溢出、除零等异常场景(N/A:纯文档) - [x] 是否已对正则表达式做 ReDos 检查(N/A:纯文档) **DT** - [x] 是否具备 UT 测试用例看护(N/A:纯文档变更,无代码逻辑改动) - [x] 是否需要添加冒烟:否 See merge request: Ascend/msmodelslim!881 | 7 天前 | |
【bugfix】【docs】增加V3.1多卡场景的报错FAQ Co-authored-by: zhangz200102<zhangzheng183@huawei.com> # message auto-generated for no-merge-commit merge: !871 merge bugfix/issue460 into master 【bugfix】【docs】增加V3.1多卡场景的报错FAQ Created-by: zhangz200102 Commit-by: zhangz200102 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. 修改描述 **修改背景(可选):**(问题现象、使用场景等) 问题现象见https://gitcode.com/Ascend/msmodelslim/issues/460 **修改目的:**(本 PR 要达成什么目标) 由于由于目录下自定义代码被缓存为 transformers_modules.<目录名> ,子进程mp.spawn时对特殊字符反序列化失败。该报错无法在模型适配器内完成闭环 (1)如果在模型适配器初始化时拦截,父进程执行模型适配器初始化时,dist还没初始化,不具备判断多卡的条件。 (2)如果在init_model里面拦截,子进程mp.spawn发生在前已经报错。 因而对完善资料补充该报错的FAQ **修改内容:**(按「概念 - 变化」分条,示例:core/算法:新增 SmoothQuant 离群值抑制) example:DeepSeek的资料补充FAQ (在此填写) **概念域参考(填写提示):** - cli:命令行 quant / analyze / tune - app:最佳实践量化、量化分析、精度反馈自动调优等 - core:算法、量化服务、调度、张量量化、调优策略、最佳实践、上下文等 - infra:模型适配、调优计划/历史/缓存、测评服务等 - utils:日志、错误处理、插件等 ## 3. 功能验证 冒烟由 CI 门禁检查,无需填写「冒烟是否通过」。 - [ ] 功能自验 - [ ] 本地自验用例截图(请勿包含个人信息;可附复现命令) **复现步骤(可选):** bash # 在此粘贴可复现命令 ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [ ] 是否已校验外部数据 N/A - [ ] 是否未采集或打印敏感信息 N/A - [ ] 是否已正确设置文件权限 N/A - [ ] 是否充分考虑浮点运算溢出、除零等异常场景 N/A - [ ] 是否已对正则表达式做 ReDos 检查 N/A **DT** - [ ] 是否具备 UT 测试用例看护(路径:用例路径;未添加请说明原因) 仅资料修改,不涉及 - [ ] 是否需要添加冒烟:否(若「是」请说明冒烟场景及对应用途) 仅资料修改,不涉及 See merge request: Ascend/msmodelslim!871 | 10 天前 | |
[Feature] introduce ra_compress long-sequence compression algorithm Co-authored-by: zwling<906711886@qq.com> # message auto-generated for no-merge-commit merge: !875 merge feature/ra-compress-reintroduce into master [Feature] introduce ra_compress long-sequence compression algorithm Created-by: zwling Commit-by: zwling Merged-by: ascend-robot Description: ## 背景 上游 master 中 ra_compress(长序列压缩算法)在 9441c0a 被 revert 删除。本 PR 在最新 master 基础上重新引入该算法(含 package layout 调整),并修复 attn_head CLI 的两个问题。 ## 内容 1. 重新引入 ra_compress 长序列压缩算法(attn_head 分析指标) - 代码:msmodelslim/processor/analysis/unary_operator/metrics/ra_compress/ - CLI:analyze attn_head 子命令 - 文档:ra_compress 词条/使用指南、attn_head 分析使用指南 - 配置/测试/校准数据同步引入 2. package layout 与 attention_mse 对齐(impl.py + __init__.py re-export) 3. bugfix: - _normalize_analyze_argv 的 scope 列表加入 attn_head,避免 msmodelslim analyze attn_head ... 被误注入默认 linear scope - 移除 attn_head 的 set_defaults(calib_dataset='calib_dummy.jsonl'), 避免静默回退到不满足 ≥10000 token 要求的 mix_calib.jsonl - 文档所有 attn_head CLI 示例显式指定 --calib_dataset calib_dummy.jsonl ## 测试 - 基于 upstream/master,cherry-pick 全程无冲突 - msmodelslim analyze attn_head -h 正常 See merge request: Ascend/msmodelslim!875 | 10 天前 | |
【feature】新增GLM-5.2 W8A8/W8A8C8量化 Co-authored-by: qq_46439621<wanlongze1@huawei.com> # message auto-generated for no-merge-commit merge: !852 merge glm52_w8a8c8_0819 into master 【feature】新增GLM-5.2 W8A8/W8A8C8量化 Created-by: qq_46439621 Commit-by: qq_46439621 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 等请在此项补充说明。 **输出件变更(按需):** - 新增 GLM-5.2 模型量化适配能力,可导出 GLM-5.2 的量化权重(quant_model_description.json 等),属新增能力,对存量模型无影响。 > 备注:若无变更请保留「无」;涉及导出格式、产物路径等请在此项补充说明。 **非兼容变更(按需):** 无 > 备注:若无变更请保留「无」;若有非兼容变更请说明迁移方式。 **SIG 评审结论(按需):** 无 > 提醒:非兼容、安全风险等高危 PR 须经 SIG 评审后合入;无则保留「无」。 ## 2. 修改描述 **修改背景(可选):** GLM-5.2 是 GLM 系列新版本模型,采用 MLA(Multi-head Latent Attention)架构,并集成 Indexer 模块与 knope 机制。当前 msmodelslim 尚未适配该模型的量化能力,需要新增模型定义、量化配置及相应资料说明。 **修改目的:** 为 GLM-5.2 提供 W8A8 / W8A8C8 两种持有已验证的量化方案,并同步补充中文资料,使开发者可通过一键量化命令完成 GLM-5.2 量化。 **修改内容:** - infra/模型适配:新增 msmodelslim/model/glm_5_2/ 的模型定义与适配器(model.py、model_adapter.py 等),实现 GLM-5.2 的 W8A8/W8A8C8 量化支持;并在 config/config.ini 注册模型类型与依赖。 - app/最佳实践量化:新增 lab_practice/glm_5_2/glm_5_2_w8a8.yaml 与 glm_5_2_w8a8c8.yaml 量化配置。 ## 3. 功能验证 冒烟由 CI 门禁检查,无需填写「冒烟是否通过」。 - [ ] 功能自验 - [ ] 本地自验用例截图(请勿包含个人信息;可附复现命令) **复现步骤(可选):** W8A8/W8A8C8一键量化命令可以参考 bash # W8A8 一键量化命令 msmodelslim quant \ --model_path ${MODEL_PATH} \ --save_path ${SAVE_PATH} \ --device npu \ --model_type GLM-5.2 \ --quant_type w8a8 \ --trust_remote_code True bash # W8A8C8 一键量化命令 msmodelslim quant \ --model_path ${MODEL_PATH} \ --save_path ${SAVE_PATH} \ --device npu \ --model_type GLM-5.2 \ --quant_type w8a8c8 \ --trust_remote_code True ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [ ] N/A 是否已校验外部数据 - [ ] N/A 是否未采集或打印敏感信息 - [ ] N/A 是否已正确设置文件权限 - [ ] N/A 是否充分考虑浮点运算溢出、除零等异常场景 - [ ] N/A 是否已对正则表达式做 ReDos 检查 **DT** - [x] 是否具备 UT 测试用例看护(路径:用例路径;未添加请说明原因):当前因为需求交付,优先更新模型适配器代码,后续会添加全量的UT测试用例看护模型适配器 - [ ] N/A 是否需要添加冒烟:否(若「是」请说明冒烟场景及对应用途):冒烟用例应该无需看护 See merge request: Ascend/msmodelslim!852 | 16 天前 | |
【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 | 7 个月前 | |
[Bugfix] 修复多卡分布式保存时 optional 字段被合并逻辑清空 #492 Co-authored-by: rookie_hongchuan<hongchuan6@h-partners.com> # message auto-generated for no-merge-commit merge: !879 merge fix/distributed-saver-optional-merge into master [Bugfix] 修复多卡分布式保存时 optional 字段被合并逻辑清空 #492 Created-by: rookie_hongchuan Commit-by: rookie_hongchuan Merged-by: ascend-robot Description: # PR 提交说明 > **关联 Issue:#492**(Related to #492) ## 1. 影响面评估 **接口变更(按需):** 无 **输出件变更(按需):** 修复多卡分布式保存后 quant_model_description.json 顶层 optional 字段为空的问题,并修正 optional.quarot.global_rotation 的相对路径(统一相对最终保存目录);不影响单卡导出。 **非兼容变更(按需):** 无 **SIG 评审结论(按需):** 无(bugfix,仅限分布式保存合并内部逻辑,非兼容/安全风险) ## 2. 修改描述 **修改背景:** 多卡分布式量化(--device npu:0,1,...,world_size ≥ 2)导出 AscendV1 权重时,quant_model_description.json 顶层 optional 字段为空 {},但 optional/quarot.safetensors 实际已导出;下游无法通过描述文件定位 QuaRot 全局旋转矩阵。 **修改目的:** 修复 DistributedAscendV1Saver 合并各 rank 描述文件时 optional 信息丢失的问题。 **修改内容:** - core/保存:_merge_json_files 对 optional 按 scope 取**并集**后写入合并结果,避免最后一个 rank 的空 optional 覆盖其他 rank 的非空内容(ascendv1_distributed.py)。 - core/保存:on_quarot_extra_info_wrapper 导出路径统一相对**最终保存目录**计算,修复分布式下 ../optional/quarot.safetensors 相对错位(ascendv1.py)。 - test:新增 merge optional 并集 UT(test_ascendv1_distributed.py)。 ## 3. 功能验证 复现命令(Kimi-K3 4 层减层,多卡分布式): bash msmodelslim quant \ --model_path /data/models/kimi-k3-4layers \ --save_path /tmp/out_quarot_4L \ --device npu:0,1,2,3 \ --model_type Kimi-K3 \ --config_path kimi_k3_w4a8_flex_quarot.yaml # process 含 quarot,save 为 ascendv1_saver --trust_remote_code True - 修复前:量化 SUCCESS 后最终 quant_model_description.json 的 optional 为 {},而 optional/quarot.safetensors(约 205MB)已导出。 - 修复后:optional 恢复为 {"quarot": {"rotation_map": {"global_rotation": "optional/quarot.safetensors"}}},且该相对路径与最终产物一致。 - UT:test/cases/core/quant_service/modelslim_v1/save/test_ascendv1_distributed.py 本地 17 passed(另有 1 个多进程队列用例在本机环境不通过,与本次改动无关;CI 环境验证为准)。 ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [x] 是否已校验外部数据:N/A(无新外部输入) - [x] 是否未采集或打印敏感信息:是 - [x] 是否已正确设置文件权限:是(沿用现有 JsonWriter/文件写入逻辑) - [x] 是否充分考虑浮点运算溢出、除零等异常场景:N/A(逻辑为 JSON 键合并) - [x] 是否已对正则表达式做 ReDos 检查:N/A(无新增正则) **DT** - [x] 是否具备 UT 测试用例看护:是,test/cases/core/quant_service/modelslim_v1/save/test_ascendv1_distributed.py(新增 test_merge_json_files_keeps_optional_union_when_partial_ranks_empty) - [x] 是否需要添加冒烟:否(CI 冒烟覆盖) See merge request: Ascend/msmodelslim!879 | 5 天前 | |
[Feature] introduce ra_compress long-sequence compression algorithm Co-authored-by: zwling<906711886@qq.com> # message auto-generated for no-merge-commit merge: !875 merge feature/ra-compress-reintroduce into master [Feature] introduce ra_compress long-sequence compression algorithm Created-by: zwling Commit-by: zwling Merged-by: ascend-robot Description: ## 背景 上游 master 中 ra_compress(长序列压缩算法)在 9441c0a 被 revert 删除。本 PR 在最新 master 基础上重新引入该算法(含 package layout 调整),并修复 attn_head CLI 的两个问题。 ## 内容 1. 重新引入 ra_compress 长序列压缩算法(attn_head 分析指标) - 代码:msmodelslim/processor/analysis/unary_operator/metrics/ra_compress/ - CLI:analyze attn_head 子命令 - 文档:ra_compress 词条/使用指南、attn_head 分析使用指南 - 配置/测试/校准数据同步引入 2. package layout 与 attention_mse 对齐(impl.py + __init__.py re-export) 3. bugfix: - _normalize_analyze_argv 的 scope 列表加入 attn_head,避免 msmodelslim analyze attn_head ... 被误注入默认 linear scope - 移除 attn_head 的 set_defaults(calib_dataset='calib_dummy.jsonl'), 避免静默回退到不满足 ≥10000 token 要求的 mix_calib.jsonl - 文档所有 attn_head CLI 示例显式指定 --calib_dataset calib_dummy.jsonl ## 测试 - 基于 upstream/master,cherry-pick 全程无冲突 - msmodelslim analyze attn_head -h 正常 See merge request: Ascend/msmodelslim!875 | 10 天前 | |
【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 | 7 个月前 | |
【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 | 7 个月前 | |
[Doc] API 参考文档对齐当前 CLI:参数改用规范名并对齐配置文档与文档规范 #483 Co-authored-by: rookie_hongchuan<hongchuan6@h-partners.com> # message auto-generated for no-merge-commit merge: !860 merge docs/fix-api-reference into master [Doc] API 参考文档对齐当前 CLI:参数改用规范名并对齐配置文档与文档规范 #483 Created-by: rookie_hongchuan Commit-by: rookie_hongchuan Merged-by: ascend-robot Description: 关联 issue:#483 ## 1. 影响面评估 **接口变更(按需):** 无 > 仅文档表述,不涉及代码接口。 **输出件变更(按需):** 无 **非兼容变更(按需):** 无 **SIG 评审结论(按需):** 无 > 纯文档改动,无接口/安全/架构变更,无需 SIG 评审。 ## 2. 修改描述 **修改背景(可选):** CLI 已把参数改用规范名( --config_path→--config、 --tag→--tags、--pattern→--patterns、--topk→--top_k),但已合入的 API 参考 文档仍沿用旧名称,且部分配置文档/docstring 与文档规范(数字单位间距、术语、标题标号)未对齐。 **修改目的:** 让 API 参考与配置文档对齐当前 CLI 契约与文档规范,消除文档与实现漂移。 **修改内容:**(按「概念 - 变化」分条) - cli:quant/analyze/tune 命令行 API 文档改用规范名 --config/--tags/--patterns/--top_k, 补充 --device_id/--log_level/-v/-q,修正 --trust_remote_code 与设备语义 - config:api_reference/config/** 相关配置文档按文档规范统一描述与术语 - docs:docs_standards 的 01/03 checklist 与模板按标题标号与规范修订 ## 3. 功能验证 冒烟由 CI 门禁检查,无需填写「冒烟是否通过」。 - [x] 功能自验 - [ ] 本地自验用例截图(文档改动,未涉及) **复现步骤(可选):** N/A(纯文档改动) ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [x] 是否已校验外部数据:N/A(纯文档) - [x] 是否未采集或打印敏感信息 - [x] 是否已正确设置文件权限:N/A(纯文档) - [x] 是否充分考虑浮点运算溢出、除零等异常场景:N/A(纯文档) - [x] 是否已对正则表达式做 ReDos 检查:N/A(纯文档) **DT** - [x] 是否具备 UT 测试用例看护:N/A(纯文档改动,不涉及代码逻辑) - [x] 是否需要添加冒烟:否(文档改动) See merge request: Ascend/msmodelslim!860 | 11 天前 | |
[Bugfix] 修复多卡分布式保存时 optional 字段被合并逻辑清空 #492 Co-authored-by: rookie_hongchuan<hongchuan6@h-partners.com> # message auto-generated for no-merge-commit merge: !879 merge fix/distributed-saver-optional-merge into master [Bugfix] 修复多卡分布式保存时 optional 字段被合并逻辑清空 #492 Created-by: rookie_hongchuan Commit-by: rookie_hongchuan Merged-by: ascend-robot Description: # PR 提交说明 > **关联 Issue:#492**(Related to #492) ## 1. 影响面评估 **接口变更(按需):** 无 **输出件变更(按需):** 修复多卡分布式保存后 quant_model_description.json 顶层 optional 字段为空的问题,并修正 optional.quarot.global_rotation 的相对路径(统一相对最终保存目录);不影响单卡导出。 **非兼容变更(按需):** 无 **SIG 评审结论(按需):** 无(bugfix,仅限分布式保存合并内部逻辑,非兼容/安全风险) ## 2. 修改描述 **修改背景:** 多卡分布式量化(--device npu:0,1,...,world_size ≥ 2)导出 AscendV1 权重时,quant_model_description.json 顶层 optional 字段为空 {},但 optional/quarot.safetensors 实际已导出;下游无法通过描述文件定位 QuaRot 全局旋转矩阵。 **修改目的:** 修复 DistributedAscendV1Saver 合并各 rank 描述文件时 optional 信息丢失的问题。 **修改内容:** - core/保存:_merge_json_files 对 optional 按 scope 取**并集**后写入合并结果,避免最后一个 rank 的空 optional 覆盖其他 rank 的非空内容(ascendv1_distributed.py)。 - core/保存:on_quarot_extra_info_wrapper 导出路径统一相对**最终保存目录**计算,修复分布式下 ../optional/quarot.safetensors 相对错位(ascendv1.py)。 - test:新增 merge optional 并集 UT(test_ascendv1_distributed.py)。 ## 3. 功能验证 复现命令(Kimi-K3 4 层减层,多卡分布式): bash msmodelslim quant \ --model_path /data/models/kimi-k3-4layers \ --save_path /tmp/out_quarot_4L \ --device npu:0,1,2,3 \ --model_type Kimi-K3 \ --config_path kimi_k3_w4a8_flex_quarot.yaml # process 含 quarot,save 为 ascendv1_saver --trust_remote_code True - 修复前:量化 SUCCESS 后最终 quant_model_description.json 的 optional 为 {},而 optional/quarot.safetensors(约 205MB)已导出。 - 修复后:optional 恢复为 {"quarot": {"rotation_map": {"global_rotation": "optional/quarot.safetensors"}}},且该相对路径与最终产物一致。 - UT:test/cases/core/quant_service/modelslim_v1/save/test_ascendv1_distributed.py 本地 17 passed(另有 1 个多进程队列用例在本机环境不通过,与本次改动无关;CI 环境验证为准)。 ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [x] 是否已校验外部数据:N/A(无新外部输入) - [x] 是否未采集或打印敏感信息:是 - [x] 是否已正确设置文件权限:是(沿用现有 JsonWriter/文件写入逻辑) - [x] 是否充分考虑浮点运算溢出、除零等异常场景:N/A(逻辑为 JSON 键合并) - [x] 是否已对正则表达式做 ReDos 检查:N/A(无新增正则) **DT** - [x] 是否具备 UT 测试用例看护:是,test/cases/core/quant_service/modelslim_v1/save/test_ascendv1_distributed.py(新增 test_merge_json_files_keeps_optional_union_when_partial_ranks_empty) - [x] 是否需要添加冒烟:否(CI 冒烟覆盖) See merge request: Ascend/msmodelslim!879 | 5 天前 | |
[Bugfix] fix: support pip install -e with single-source data directories Co-authored-by: rookie_hongchuan<hongchuan6@h-partners.com> # message auto-generated for no-merge-commit merge: !379 merge fix/pip-editable-single-datasource into master [Bugfix] fix: support pip install -e with single-source data directories Created-by: rookie_hongchuan Commit-by: rookie_hongchuan Merged-by: ascend-robot Description: ## 1. 影响面评估 **接口变更(按需):** 无 **输出件变更(按需):** 无 **非兼容变更(按需):** 无 **SIG 评审结论(按需):** 无 ## 2. 修改描述 **修改背景:** pip install -e . 可编辑安装后,CLI 入口通过 __file__ + ../../lab_practice 查找数据目录,但 msmodelslim/lab_practice 在源码树内不存在(数据实际在 repo 根 ./lab_practice),导致路径找不到。 **修改目的:** pip install -e . 开箱可用,支持源码调试工作流。 **修改内容:** - setup.py:develop 命令时创建符号链接 msmodelslim/{config,lab_practice,lab_calib} → ./{config,lab_practice,lab_calib},消除双份副本问题。所有平台优先尝试 os.symlink(),失败时降级 shutil.copytree() 并提示用户同步修改。安全性方面,安全模块 get_valid_read_path 内部已调 os.path.realpath() 解析符号链接,不阻塞运行 - setup.py:_ensure_data_symlinks() 内已有 copytree 残留时 shutil.rmtree 清理后重建 symlink,避免 stale 副本 ## 3. 功能验证 环境:8× Ascend 910B2,模型 Qwen3-32B(62GB, 64层) ### 3.1 pip install -e . 可编辑安装 bash $ source .venv/bin/activate $ pip install -e . --no-deps $ ls -la msmodelslim/config msmodelslim/lab_practice msmodelslim/lab_calib lrwxrwxrwx. msmodelslim/config -> ../config lrwxrwxrwx. msmodelslim/lab_practice -> ../lab_practice lrwxrwxrwx. msmodelslim/lab_calib -> ../lab_calib $ python3 -c "import msmodelslim; print(msmodelslim.__file__)" <workspace>/msmodelslim/__init__.py # 指向源码树 $ msmodelslim --help usage: msmodelslim [-h] {quant,analyze,tune} ... 结论:develop 模式正常,符号链接自动创建,__file__ 指向源码树。 ### 3.2 一键量化(Qwen3-32B W8A16, 全量 64 层) bash $ source .venv/bin/activate $ source tools/quant-env.sh $ echo y | msmodelslim quant \ --model_type Qwen3-32B \ --model_path /data/models/Qwen3_32B \ --save_path /tmp/qwen3-w8a16-test \ --device npu:0,1,2,3,4,5,6,7 \ --quant_type w8a16 # 关键日志: # Using model adapter Qwen3ModelAdapter. # Init model success # Run processor LinearQuantProcessor for "model.layers.0" ... "model.layers.63" # Save safetensors files to /tmp/qwen3-w8a16-test successfully # ===========SUCCESS=========== 结论:develop 模式下 msmodelslim 全流程正常(模型加载 → best practice → 逐层量化 → safetensors 保存均通过)。 ### 3.3 bash install.sh 常规安装 bash $ bash install.sh $ pip show msmodelslim Location: .../site-packages $ msmodelslim --help usage: msmodelslim [-h] {quant,analyze,tune} ... 结论:常规安装不受影响,包正确安装到 site-packages。 ### 3.4 交替安装(develop ↔ regular 互切) bash $ pip install -e . && pip show msmodelslim # → 源码树 $ bash install.sh && pip show msmodelslim # → site-packages 结论:可反复切换,无残留冲突。 ### 3.5 安全模块兼容性 get_valid_read_path 内部调用 os.path.realpath() 解析符号链接,仅打印 warning 不阻断,CLI 入口无需额外处理。 ## 4. 自检 **典型安全编码问题** - [x] 是否已校验外部数据:N/A,未涉及外部输入 - [x] 是否未采集或打印敏感信息:是 - [x] 是否已正确设置文件权限:N/A,符号链接继承源文件权限 - [x] 是否充分考虑浮点运算溢出、除零等异常场景:N/A,不涉及数值计算 - [x] 是否已对正则表达式做 ReDos 检查:N/A,不涉及正则 **DT** - [x] 是否具备 UT 测试用例看护:已有 tests/test_setup.py 相关用例 - [x] 是否需要添加冒烟:否 See merge request: Ascend/msmodelslim!379 | 2 个月前 | |
[Feature] introduce ra_compress long-sequence compression algorithm Co-authored-by: zwling<906711886@qq.com> # message auto-generated for no-merge-commit merge: !875 merge feature/ra-compress-reintroduce into master [Feature] introduce ra_compress long-sequence compression algorithm Created-by: zwling Commit-by: zwling Merged-by: ascend-robot Description: ## 背景 上游 master 中 ra_compress(长序列压缩算法)在 9441c0a 被 revert 删除。本 PR 在最新 master 基础上重新引入该算法(含 package layout 调整),并修复 attn_head CLI 的两个问题。 ## 内容 1. 重新引入 ra_compress 长序列压缩算法(attn_head 分析指标) - 代码:msmodelslim/processor/analysis/unary_operator/metrics/ra_compress/ - CLI:analyze attn_head 子命令 - 文档:ra_compress 词条/使用指南、attn_head 分析使用指南 - 配置/测试/校准数据同步引入 2. package layout 与 attention_mse 对齐(impl.py + __init__.py re-export) 3. bugfix: - _normalize_analyze_argv 的 scope 列表加入 attn_head,避免 msmodelslim analyze attn_head ... 被误注入默认 linear scope - 移除 attn_head 的 set_defaults(calib_dataset='calib_dummy.jsonl'), 避免静默回退到不满足 ≥10000 token 要求的 mix_calib.jsonl - 文档所有 attn_head CLI 示例显式指定 --calib_dataset calib_dummy.jsonl ## 测试 - 基于 upstream/master,cherry-pick 全程无冲突 - msmodelslim analyze attn_head -h 正常 See merge request: Ascend/msmodelslim!875 | 10 天前 | |
【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 | 6 个月前 | |
【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 | 8 个月前 | |
【msmodelslim】cleancode Co-authored-by: caishengcheng<caishengcheng@huawei.com> | 8 个月前 | |
[Doc]优化资料文档:FAQ分类索引重构与README易用性提升 Co-authored-by: LeeQT<liqitong@huawei.com> # message auto-generated for no-merge-commit merge: !851 merge docs0817 into master [Doc]优化资料文档:FAQ分类索引重构与README易用性提升 Created-by: LeeQT Commit-by: LeeQT Merged-by: ascend-robot Description: # PR 提交说明 ## 1. 影响面评估 **接口变更(按需):** 无 > 备注:涉及 CLI、API、YAML 等请在此项补充说明。 **输出件变更(按需):** 无 > 备注:涉及导出格式、产物路径等请在此项补充说明。 **非兼容变更(按需):** 无 > 备注:若有非兼容变更请说明迁移方式。 **SIG 评审结论(按需):** 无 > 提醒:非兼容、安全风险等高危 PR 须经 SIG 评审后合入;无则保留「无」。 ## 2. 修改描述 **修改背景(可选):** msModelSlim 资料文档存在 FAQ 单篇过长、README 功能章节与业务流程对应关系不直观、部分文档链接失效等问题,新手用户检索与上手成本较高。 **修改目的:** 提升资料文档的易用性与可维护性:将 FAQ 重构为「统一索引 + 分类子文档」结构并补充 AI 可读元数据,优化 README 业务流程引导,统一文档模板与提示样式,便于用户检索与后续维护。 **修改内容:**(按「概念 - 变化」分条) - docs/support:FAQ 重构为统一分类索引(faq.md),新增 5 篇分类子文档(安装依赖/运行资源/硬件兼容/精度调优·预留/部署推理·预留/告警提示),各子文档头部新增 AI 可读元数据(title/description/keywords),便于 AI 检索并降低 token 开销 - docs:README.md 补充 pip 安装示例;"功能介绍"重构为"使用指南",按业务流程对应工具/功能并给出文档链接;各章节改为引导式描述 + 直达链接 - docs:index.md 核心优势章节改为结构化列表 - docs:docs_standards/02_process_guide_template.md 流程指南模板重排 - docs:knowledge_base/model/README.md 提示样式统一为引用块 - infra:.pre-commit-config.yaml 优化 gitleaks hook 的二进制查找逻辑并增加 --staged 参数 ## 3. 功能验证 冒烟由 CI 门禁检查,无需填写「冒烟是否通过」。 - [x] 功能自验(N/A:纯文档/配置变更,无功能逻辑改动) - [ ] 本地自验用例截图(N/A:无代码变更,无需截图) **复现步骤(可选):** bash # 纯资料变更,无复现命令;已本地核对文档相对链接与目录结构一致性 ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [x] 是否已校验外部数据(N/A:无代码变更) - [x] 是否未采集或打印敏感信息(是) - [x] 是否已正确设置文件权限(N/A) - [x] 是否充分考虑浮点运算溢出、除零等异常场景(N/A) - [x] 是否已对正则表达式做 ReDos 检查(N/A) **DT** - [x] 是否具备 UT 测试用例看护(否:纯文档/配置变更,无需 UT) - [x] 是否需要添加冒烟:否 See merge request: Ascend/msmodelslim!851 | 16 天前 | |
【master】【docs】:链接有效性修改;doctools检查问题修改 Co-authored-by: zzm30<zhengzhimin1@h-partners.com> # message auto-generated for no-merge-commit merge: !690 merge master into master 【master】【docs】:链接有效性修改;doctools检查问题修改 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),开发者文档:[模型接入指南](https://msmodelslim.readthedocs.io/zh-cn/latest/zh/development_guide/integrating_models) PR 标题前缀:[Feature]、[Bugfix]、[Doc]、[Test](与 CONTRIBUTING 一致) ## 1. 影响面评估 **接口变更(按需):** 无 > 备注:若无变更请保留「无」;涉及 CLI、API、YAML 等请在此项补充说明。 **输出件变更(按需):** 无 > 备注:若无变更请保留「无」;涉及导出格式、产物路径等请在此项补充说明。 **非兼容变更(按需):** 无 > 备注:若无变更请保留「无」;若有非兼容变更请说明迁移方式。 **SIG 评审结论(按需):** 无 > 提醒:非兼容、安全风险等高危 PR 须经 SIG 评审后合入;无则保留「无」。 ## 2. 修改描述 **修改背景(可选):**(问题现象、使用场景等) **修改目的:**(本 PR 要达成什么目标) **修改内容:**(按「概念 - 变化」分条,示例:core/算法:新增 SmoothQuant 离群值抑制) 1. 链接有效性修改; 2. doctools检查问题修改。 **概念域参考(填写提示):** - cli:命令行 quant / analyze / tune - app:最佳实践量化、量化分析、精度反馈自动调优等 - core:算法、量化服务、调度、张量量化、调优策略、最佳实践、上下文等 - infra:模型适配、调优计划/历史/缓存、测评服务等 - utils:日志、错误处理、插件等 ## 3. 功能验证 - [x] 功能自验 - [ ] 本地自验用例截图(请勿包含个人信息;可附复现命令) ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [x] 是否已校验外部数据 - [x] 是否未采集或打印敏感信息 - [x] 是否已正确设置文件权限 - [x] 是否充分考虑浮点运算溢出、除零等异常场景 - [x] 是否已对正则表达式做 ReDos 检查 **DT** - [x] 是否具备 UT 测试用例看护 资料修改 - [ ] 是否需要添加冒烟:否 - [ ] 是否具备 UT 测试用例看护(路径:用例路径;未添加请说明原因) - [ ] 是否需要添加冒烟:否(若「是」请说明冒烟场景及对应用途) See merge request: Ascend/msmodelslim!690 | 2 个月前 | |
[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 | 1 个月前 | |
【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 | 7 个月前 | |
[Doc] 修复新模型量化调优指南、权重量化使用指南、敏感层分析使用指南资料问题 Co-authored-by: xyxin_006<xiayingxin1@huawei.com> # message auto-generated for no-merge-commit merge: !881 merge doc/process_usage_issue into master [Doc] 修复新模型量化调优指南、权重量化使用指南、敏感层分析使用指南资料问题 Created-by: xyxin_006 Commit-by: xyxin_006 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 协议变更。 **输出件变更(按需):** 无 **非兼容变更(按需):** 无 > 备注:用户指南文件重命名 usage_sensitive_layer_wise_analysis.md → usage_sensitive_layer_analysis.md,已同步更新站内链接与 mkdocs.yml;对外书签若指向旧路径需改用新路径。 **SIG 评审结论(按需):** 无 ## 2. 修改描述 **修改背景(可选):** 新模型量化调优流程、权重量化使用指南、敏感层分析(linear / layer / attn)使用指南在资料评审中存在表述不清、标点与并列关系不规范、流程节点缺失、指标推荐未说明选取方式、接口文档仍指向章节锚点或旧文件名等问题,影响按指南落地执行。 **修改目的:** 按评审意见整改上述中文用户指南与关联引用,使流程步骤、命令行表述、校准集约定、指标选取与接口文档链接可直接指导实践,并与 CLI scope 命名对齐。 **修改内容:** - docs/流程:优化《新模型量化调优流程》前置条件、步骤表述、异常处置与术语(模型适配按 LLM / VLM / SD 分列),统一「精度与性能」等并列用语,修正 vLLM Ascend 量化适配中文文档链接。 - docs/流程:优化《权重量化使用指南》路径说明、配置协议权威链接(改挂 api_reference/config/task/*)、格式选型与验收/安全等表述。 - docs/流程:优化 linear / layer / attn 敏感层分析使用指南(补充「命令行」、校准集进流程图、与量化所用校准集一致、审计记录变量统一、后续操作用完整 quant 命令行表述、异常处置写清再执行分析命令等);指标「推荐」列改为如何选取;修正 QKV 成组策略表述。 - docs/导航:将层级敏感层分析指南重命名为 usage_sensitive_layer_analysis.md(对齐 analyze layer),并更新 mkdocs.yml、用户指南索引、API 与知识库交叉引用。 - docs/知识库:在量化算法 README 与相关 usage 中同步层级指南新路径(变基吸收 upstream 算法文档整改后保留新文件名)。 **概念域参考(填写提示):** - cli:命令行 quant / analyze / tune - app:最佳实践量化、量化分析、精度反馈自动调优等 - core:算法、量化服务、调度、张量量化、调优策略、最佳实践、上下文等 - infra:模型适配、调优计划/历史/缓存、测评服务等 - utils:日志、错误处理、插件等 ## 3. 功能验证 冒烟由 CI 门禁检查,无需填写「冒烟是否通过」。 - [x] 功能自验 - [ ] 本地自验用例截图(请勿包含个人信息;可附复现命令) **复现步骤(可选):** ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [x] 是否已校验外部数据(N/A:纯文档) - [x] 是否未采集或打印敏感信息(N/A:纯文档) - [x] 是否已正确设置文件权限(N/A:纯文档) - [x] 是否充分考虑浮点运算溢出、除零等异常场景(N/A:纯文档) - [x] 是否已对正则表达式做 ReDos 检查(N/A:纯文档) **DT** - [x] 是否具备 UT 测试用例看护(N/A:纯文档变更,无代码逻辑改动) - [x] 是否需要添加冒烟:否 See merge request: Ascend/msmodelslim!881 | 7 天前 | |
【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 | 2 个月前 | |
[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 | 17 天前 | |
[Feature] 版本号修改为26.1.0 Co-authored-by: 李明宇<limingyu35@h-partners.com> # message auto-generated for no-merge-commit merge: !678 merge master-version-0701 into master [Feature] 版本号修改为26.1.0 Created-by: code_mingming Commit-by: 李明宇 Merged-by: ascend-robot Description: # PR 提交说明 ## 1. 影响面评估 **接口变更(按需):** 无 > 备注:若无变更请保留「无」;涉及 CLI、API、YAML 等请在此项补充说明。 **输出件变更(按需):** 无 > 备注:若无变更请保留「无」;涉及导出格式、产物路径等请在此项补充说明。 **非兼容变更(按需):** 无 > 备注:若无变更请保留「无」;若有非兼容变更请说明迁移方式。 **SIG 评审结论(按需):** 无 > 提醒:非兼容、安全风险等高危 PR 须经 SIG 评审后合入;无则保留「无」。 ## 2. 修改描述 **修改背景(可选):**(问题现象、使用场景等) **修改目的:**(本 PR 要达成什么目标) 版本号修改为26.1.0 **修改内容:**(按「概念 - 变化」分条,示例:core/算法:新增 SmoothQuant 离群值抑制) 版本号修改为26.1.0 ## 3. 功能验证 冒烟由 CI 门禁检查,无需填写「冒烟是否通过」。 - [x] 功能自验 - [x] 本地自验用例截图(请勿包含个人信息;可附复现命令)  **复现步骤(可选):** bash python3 setup.py bdist_wheel ## 4. 自检(请逐项确认,不适用标 N/A) **典型安全编码问题** - [x] 是否已校验外部数据 N/A - [x] 是否未采集或打印敏感信息 N/A - [x] 是否已正确设置文件权限 N/A - [x] 是否充分考虑浮点运算溢出、除零等异常场景 N/A - [x] 是否已对正则表达式做 ReDos 检查 N/A **DT** - [ ] 是否具备 UT 测试用例看护(路径:用例路径;未添加请说明原因)N/A - [ ] 是否需要添加冒烟:否(若「是」请说明冒烟场景及对应用途)N/A See merge request: Ascend/msmodelslim!678 | 2 个月前 |
MindStudio ModelSlim
✨ 最新消息
🔹 [2026.08.07]
- 多模态理解模型支持多卡分布式逐层量化,提升多模态理解模型量化效率
- 新增对
Kimi-K3(W4A8)模型的量化支持
🔹 [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,量化后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,欢迎贡献!

