| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
【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 | 10 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 7 个月前 | ||
| 10 天前 |