| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix: 移除不必要的ml_dtypes依赖(#171) Co-authored-by: QQR<qiuqianru@h-partners.com> # message auto-generated for no-merge-commit merge: !250 merge fix/issue-171-ml-dtypes into master fix: 移除不必要的ml_dtypes依赖(#171) Created-by: annqr Commit-by: QQR Merged-by: cann-robot Description: ## 描述 移除原生 INT4 路径中不必要的 ml_dtypes 依赖。AMCT 的 INT4 数据通过 np.uint8/np.int8 手工完成 nibble pack 和 unpack,实际数据流不需要 ml_dtypes.int4;因此删除源码中的 ml_dtypes 导入及未被真实 INT4 路径使用的 dtype 映射,同时删除仅验证该映射的两条测试。 移除只封装 getattr(np, np_type) 的 resolve_np_dtype 方法,普通类型解析统一直接使用 NumPy 标准接口 np.dtype;INT4 仍走独立的 np.uint8 packed 数据路径。requirements.txt 不再新增 ml_dtypes,现有 INT4 pack、unpack、raw data 和 external data 测试均保留。 关联 Issue:#171 ## 如何测试 已执行修改文件的 Python 语法编译检查、ml_dtypes/resolve_np_dtype 残留引用扫描以及 git diff --check,均通过。相关 unittest 在当前 Python 3.9 本地环境因未安装 requirements.txt 中的 numpy 而未执行;CI 将按项目依赖环境运行保留的 INT4 测试。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 代码重构 - [ ] 其他,请描述: See merge request: cann/amct!250 | 2 天前 | |
add coverage report Co-authored-by: fujun19<fujun19@hisilicon.com> # message auto-generated for no-merge-commit merge: !76 merge master into master add coverage report Created-by: fujun19 Commit-by: fujun19 Merged-by: cann-robot Description: ## 描述 补充bash build.sh -u --cov覆盖率报告输出 ## 如何测试 bash build.sh -u --cov,输出覆盖率报告 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 代码重构 - [ ] 其他,请描述: See merge request: cann/amct!76 | 3 个月前 | |
build: use cann third party protobuf Co-authored-by: fujun19<fujun19@hisilicon.com> # message auto-generated for no-merge-commit merge: !124 merge fix/use-add-cann-third-party into master build: use cann third party protobuf Created-by: fujun19 Commit-by: fujun19 Merged-by: cann-robot Description: 关联 Issue:#121 ## 描述 将本仓 protobuf 三方依赖迁移到 cann-cmake 统一入口: - 使用 add_cann_third_party(protobuf) 替换本地 cmake/third_party/protobuf.cmake。 - 开启 ENABLE_OPEN_SRC,确保统一 protobuf 脚本创建 host_protoc、ascend_protobuf_static 等目标。 - 将 proto 编译路径从旧的 build/protobuf_host/bin/protoc 切换为 $<TARGET_FILE:host_protoc>。 - 删除迁移后不再需要的本地 protobuf 脚本和 patch 文件。 ## 如何测试 - git diff --check - cmake -S . -B build_add_cann_third_party_default_check -DENABLE_TEST=OFF - cmake -S . -B build_add_cann_third_party_test_check -DENABLE_TEST=ON 说明:ENABLE_TEST=ON 配置过程中当前环境会打印已有的 torch_npu 后端符号错误 traceback,但 CMake 退出码为 0 并完成配置生成。 ## 文档更新 不涉及文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 代码重构 - [x] 其他,请描述:构建依赖迁移 See merge request: cann/amct!124 | 2 个月前 | |
[Feature] Added structured pruning (amct_pytorch.pruning) Co-authored-by: leedongkun30-arch<lee.dongkun30@gmail.com> # message auto-generated for no-merge-commit merge: !140 merge feat/pruning into master [Feature] Added structured pruning (amct_pytorch.pruning) Created-by: leedongkun30-arch Commit-by: leedongkun30-arch Merged-by: cann-robot Description: ## 描述 新增 eager 模式**结构化剪枝**子系统 amct_pytorch.pruning,接口风格与 amct.quantize 对齐:对已实例化并加载权重的 torch.nn.Module 原地剪枝。覆盖三个目标域——**dense FFN 中间维 / CNN 通道 / MoE 专家**,仅剪枝“生产者↔消费者接口可验证”的维度,其余保守跳过(注意力投影、残差宽度等自动排除)。 改动为**增量式**:仅在 amct_pytorch/__init__.py 中以 PEP 562 惰性方式暴露剪枝入口,不修改既有量化代码;与 classic/graph_based 剪枝器共存,并复用其精度抽象 AutoCalibrationEvaluatorBase,使 prune→quantize 在同一预算下串联。 公开接口(__all__,与量化 1:1 对齐): - amct.prune(model, config=None, *, data, tolerance, evaluator, size_budget, finetune_fn, report) —— 原地剪枝,返回 None;可选传入 report=PruneReport() 就地收集统计(不保留任何进程级状态)。 - amct.accuracy_based_auto_prune(...) —— 按可接受精度损失自动搜索并应用满足容差的最大剪枝率,返回 AutoTuneResult,对应量化侧 accuracy_based_auto_calibration。 - 预定义配置 *_PRUNE_CFG:CNN_RECONSTRUCT / CNN_VARIANCE / DENSE_LOWVAR / FULL_STRUCTURED / MOE_MASSVAR / MOE_OUTPUT_MERGE / SENSITIVITY_ALLOC。 size_budget_prune / prune_finetune / prune_diagnose 及菜单配置为高级接口,可从 amct_pytorch.pruning 导入,不进入 __all__。剪枝与量化为正交压缩维度:先 prune 改变形状,再 amct.quantize / amct.convert。 ### 实测参考 在 16 个从零训练模型(CNN@MNIST / Dense-LM·MoE-LM@WikiText)与真实预训练 HF 模型上测得,供评审参考: - **CNN 输出保持重建**:训练后 MNIST CNN @0.3,naive variance_channel 0.343 vs reconstruct 0.574(参数量相同)。 - **Dense-LM 1% 预算空间**:无 finetune ≈0%;单遍 finetune(lr 1e-5 + warmup)后中位 27%(最高 61%)。真实 MoE(granite-1b-a400m)同样需要 finetune(≈0% → 17%)。 - **MoE 专家判据依赖路由深度**:全局 variance 劣于 mass,仅深层用 variance(boundary=K)在多专家路由上胜过 mass(OLMoE held-ppl 46.9→35.3);小专家路由(granite,32 专家)下菜单守卫正确回退到 mass。 - **敏感度分配依赖深度**:浅层网络(<10 层)6/6 胜,深层(≥10 层)4/19;guard='calib_nll' 在更差时回退均匀分配。 - **prune→int8 串联**:经恢复菜单剪枝的 SmolLM-135M 走完整 prune→int8→convert 流水线,ppl 1.649 → 剪枝后 1.699 → 叠加 int8 1.704。 ## 如何测试 本地运行单元测试: python -m pytest tests/amct_pytorch/test_pruning_*.py 覆盖核心剪枝、容差自动搜索、跨层敏感度分配、尺寸预算模式、MoE 输出合并、prune→quantize 串联,以及真实 HF 模型(Mixtral / Qwen3Moe / GraniteMoe / DeepseekV3 / Ernie4_5_Moe 等),全部通过。 ## 文档更新 - 新增 docs/zh/api/:prune.md、accuracy_based_auto_prune.md、size_budget_prune.md、prune_finetune.md、prune_diagnose.md、pruning_configs.md,并在 docs/zh/api/README.md 索引中登记。 - 新增示例 examples/algorithms/pruning/(dense / CNN / MoE)。 - amct_pytorch/pruning/README.md / README_en.md 增补“工作原理”走查(打分 → 剪枝 → 恢复 →(可选)量化),并配 5 张流程图(总流程、三个可剪枝的域、容差二分搜索、菜单择优、prune→quantize 串联),图片位于 amct_pytorch/pruning/figures/。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 代码重构 - [ ] 其他,请描述: See merge request: cann/amct!140 | 1 天前 | |
style: 执行 pre-commit 格式化(#161) Co-authored-by: fujun19<fujun19@hisilicon.com> # message auto-generated for no-merge-commit merge: !228 merge chore/precommit-format-161 into master style: 执行 pre-commit 格式化(#161) Created-by: fujun19 Commit-by: fujun19 Merged-by: cann-robot Description: ## 描述 按照 issue #161 提到的 pre-commit 本地格式化方法,对仓内 tracked C/C++ 和 Python 文件执行格式化。本 PR 仅包含 clang-format / ruff-format 自动格式化结果,不包含 ruff 历史例外配置。 ## 如何测试 - pre-commit run clang-format --all-files:Passed - pre-commit run ruff-format --all-files:Passed - 未运行完整 pre-commit run --all-files;ruff-check 的历史例外按要求未纳入本次提交。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 代码重构 - [x] 其他,请描述:pre-commit 格式化 See merge request: cann/amct!228 | 21 天前 | |
fix: 修复 ruff-check F841/E741/F811 违规 (#146) Co-authored-by: fujun19<fujun19@hisilicon.com> # message auto-generated for no-merge-commit merge: !195 merge fix/ruff-check-f841-e741-f811 into master fix: 修复 ruff-check F841/E741/F811 违规 (#146) Created-by: fujun19 Commit-by: fujun19 Merged-by: cann-robot Description: ## 描述 修复 pre-commit ruff-check 报告的 F841/E741/F811 共 262 处违规,使 pre-commit run --all-files 的 ruff-check 钩子通过。 关联 Issue: #146 **修复内容:** - **F841**(未使用的局部变量赋值):删除无效赋值,保留有副作用的调用 - **E741**(歧义变量名):将 l、I 等单字母变量重命名为语义清晰的名称(seq_len、log 等) - **F811**(重复定义):删除重复导入、重复函数/类定义,保留语义更完整的版本 ## 如何测试 执行 pre-commit run ruff-check --all-files,预期输出:ruff-check...........................................................Passed ## 文档更新 无 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 代码重构 - [ ] 其他,请描述: See merge request: cann/amct!195 | 1 个月前 | |
style: 执行 pre-commit 格式化(#161) Co-authored-by: fujun19<fujun19@hisilicon.com> # message auto-generated for no-merge-commit merge: !228 merge chore/precommit-format-161 into master style: 执行 pre-commit 格式化(#161) Created-by: fujun19 Commit-by: fujun19 Merged-by: cann-robot Description: ## 描述 按照 issue #161 提到的 pre-commit 本地格式化方法,对仓内 tracked C/C++ 和 Python 文件执行格式化。本 PR 仅包含 clang-format / ruff-format 自动格式化结果,不包含 ruff 历史例外配置。 ## 如何测试 - pre-commit run clang-format --all-files:Passed - pre-commit run ruff-format --all-files:Passed - 未运行完整 pre-commit run --all-files;ruff-check 的历史例外按要求未纳入本次提交。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 代码重构 - [x] 其他,请描述:pre-commit 格式化 See merge request: cann/amct!228 | 21 天前 | |
style: 执行 pre-commit 格式化(#161) Co-authored-by: fujun19<fujun19@hisilicon.com> # message auto-generated for no-merge-commit merge: !228 merge chore/precommit-format-161 into master style: 执行 pre-commit 格式化(#161) Created-by: fujun19 Commit-by: fujun19 Merged-by: cann-robot Description: ## 描述 按照 issue #161 提到的 pre-commit 本地格式化方法,对仓内 tracked C/C++ 和 Python 文件执行格式化。本 PR 仅包含 clang-format / ruff-format 自动格式化结果,不包含 ruff 历史例外配置。 ## 如何测试 - pre-commit run clang-format --all-files:Passed - pre-commit run ruff-format --all-files:Passed - 未运行完整 pre-commit run --all-files;ruff-check 的历史例外按要求未纳入本次提交。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 代码重构 - [x] 其他,请描述:pre-commit 格式化 See merge request: cann/amct!228 | 21 天前 | |
style: 执行 pre-commit 格式化(#161) Co-authored-by: fujun19<fujun19@hisilicon.com> # message auto-generated for no-merge-commit merge: !228 merge chore/precommit-format-161 into master style: 执行 pre-commit 格式化(#161) Created-by: fujun19 Commit-by: fujun19 Merged-by: cann-robot Description: ## 描述 按照 issue #161 提到的 pre-commit 本地格式化方法,对仓内 tracked C/C++ 和 Python 文件执行格式化。本 PR 仅包含 clang-format / ruff-format 自动格式化结果,不包含 ruff 历史例外配置。 ## 如何测试 - pre-commit run clang-format --all-files:Passed - pre-commit run ruff-format --all-files:Passed - 未运行完整 pre-commit run --all-files;ruff-check 的历史例外按要求未纳入本次提交。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 代码重构 - [x] 其他,请描述:pre-commit 格式化 See merge request: cann/amct!228 | 21 天前 | |
style: 执行 pre-commit 格式化(#161) Co-authored-by: fujun19<fujun19@hisilicon.com> # message auto-generated for no-merge-commit merge: !228 merge chore/precommit-format-161 into master style: 执行 pre-commit 格式化(#161) Created-by: fujun19 Commit-by: fujun19 Merged-by: cann-robot Description: ## 描述 按照 issue #161 提到的 pre-commit 本地格式化方法,对仓内 tracked C/C++ 和 Python 文件执行格式化。本 PR 仅包含 clang-format / ruff-format 自动格式化结果,不包含 ruff 历史例外配置。 ## 如何测试 - pre-commit run clang-format --all-files:Passed - pre-commit run ruff-format --all-files:Passed - 未运行完整 pre-commit run --all-files;ruff-check 的历史例外按要求未纳入本次提交。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 代码重构 - [x] 其他,请描述:pre-commit 格式化 See merge request: cann/amct!228 | 21 天前 | |
fix: 修复pre-commit告警(#161) Co-authored-by: fujun19<fujun19@hisilicon.com> # message auto-generated for no-merge-commit merge: !230 merge chore/restore-ut-coverage-161 into master fix: 修复pre-commit告警(#161) Created-by: fujun19 Commit-by: fujun19 Merged-by: cann-robot Description: ## 描述 基于最新 master 修复剩余 pre-commit 告警,主要包括: - 补齐公共导出 __all__ 或保留注册副作用导入。 - 修复布尔比较、未定义变量、未使用变量、star import、bare except 等 ruff 告警。 本次明确解决的 pre-commit 检查项如下: - clang-format:全量检查通过,本 PR 无需新增 C/C++ 格式化改动。 - ruff check:修复 F401 unused-import、F841 unused-variable、E712 true-false-comparison、F821 undefined-name、E402 module-import-not-at-top-of-file、E722 bare-except、F403 undefined-local-with-import-star、F405 undefined-local-with-import-star-usage。 - ruff check 警告:移除无效的 # noqa: E1111 标记。 - ruff format:对 ruff 格式化发现的文件执行格式化,最终全量检查通过。 ## 如何测试 已执行: bash pre-commit run --all-files python -m pytest tests/unit_test/common/models/llm/common/test_quant_apply.py tests/unit_test/common/models/llm/test_model_adapters_mocked.py tests/unit_test/common/models/llm/test_model_adapters_mocked_qwen.py tests/unit_test/workflows/test_llm_ptq.py -q python -m pytest tests/amct_pytorch/test_deepseekv3_attention.py tests/amct_pytorch/test_fp8linear_to_hif8linear.py tests/amct_pytorch/test_longcat_attention.py tests/amct_pytorch/test_mxquant.py tests/amct_pytorch/test_smoothquant.py -q python -m pytest tests/amct_pytorch/testcase_python/auto_calibration/test_fake_quant_pass.py tests/amct_pytorch/testcase_python/custom_op/test_comp_module_base.py tests/amct_pytorch/testcase_python/custom_op/test_fake_dequant_module.py tests/amct_pytorch/testcase_python/distill/test_distill_helper.py tests/amct_pytorch/testcase_python/optimizer/test_bias_fakequant_pass.py tests/amct_pytorch/testcase_python/optimizer/test_delete_resize_pass.py tests/amct_pytorch/testcase_python/optimizer/test_insert_retrain_pass.py tests/amct_pytorch/testcase_python/optimizer/test_replace_antiquant_pass.py tests/amct_pytorch/testcase_python/single_file/test_quantize_model.py tests/amct_pytorch/testcase_python/single_file/test_rnn_quant_retrain.py tests/amct_pytorch/testcase_python/single_file/test_save.py -q 结果: - pre-commit 全部通过。 - 相关 unit_test:162 passed。 - 相关 tests/amct_pytorch:17 passed。 - 相关 testcase_python:35 passed。 本地环境中 tests/unit_test/common/models/llm/test_model_adapters_mocked_glm5.py 收集阶段存在 transformers 依赖不匹配:apply_rotary_pos_emb 无法从当前本地 transformers.models.glm_moe_dsa.modeling_glm_moe_dsa 导入,未执行到本次改动。 ## 文档更新 无文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 代码重构 - [x] 其他,请描述:pre-commit 告警修复 See merge request: cann/amct!230 | 20 天前 | |
style: 执行 pre-commit 格式化(#161) Co-authored-by: fujun19<fujun19@hisilicon.com> # message auto-generated for no-merge-commit merge: !228 merge chore/precommit-format-161 into master style: 执行 pre-commit 格式化(#161) Created-by: fujun19 Commit-by: fujun19 Merged-by: cann-robot Description: ## 描述 按照 issue #161 提到的 pre-commit 本地格式化方法,对仓内 tracked C/C++ 和 Python 文件执行格式化。本 PR 仅包含 clang-format / ruff-format 自动格式化结果,不包含 ruff 历史例外配置。 ## 如何测试 - pre-commit run clang-format --all-files:Passed - pre-commit run ruff-format --all-files:Passed - 未运行完整 pre-commit run --all-files;ruff-check 的历史例外按要求未纳入本次提交。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 代码重构 - [x] 其他,请描述:pre-commit 格式化 See merge request: cann/amct!228 | 21 天前 | |
style: 执行 pre-commit 格式化(#161) Co-authored-by: fujun19<fujun19@hisilicon.com> # message auto-generated for no-merge-commit merge: !228 merge chore/precommit-format-161 into master style: 执行 pre-commit 格式化(#161) Created-by: fujun19 Commit-by: fujun19 Merged-by: cann-robot Description: ## 描述 按照 issue #161 提到的 pre-commit 本地格式化方法,对仓内 tracked C/C++ 和 Python 文件执行格式化。本 PR 仅包含 clang-format / ruff-format 自动格式化结果,不包含 ruff 历史例外配置。 ## 如何测试 - pre-commit run clang-format --all-files:Passed - pre-commit run ruff-format --all-files:Passed - 未运行完整 pre-commit run --all-files;ruff-check 的历史例外按要求未纳入本次提交。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 代码重构 - [x] 其他,请描述:pre-commit 格式化 See merge request: cann/amct!228 | 21 天前 | |
fix: 修复pre-commit告警(#161) Co-authored-by: fujun19<fujun19@hisilicon.com> # message auto-generated for no-merge-commit merge: !230 merge chore/restore-ut-coverage-161 into master fix: 修复pre-commit告警(#161) Created-by: fujun19 Commit-by: fujun19 Merged-by: cann-robot Description: ## 描述 基于最新 master 修复剩余 pre-commit 告警,主要包括: - 补齐公共导出 __all__ 或保留注册副作用导入。 - 修复布尔比较、未定义变量、未使用变量、star import、bare except 等 ruff 告警。 本次明确解决的 pre-commit 检查项如下: - clang-format:全量检查通过,本 PR 无需新增 C/C++ 格式化改动。 - ruff check:修复 F401 unused-import、F841 unused-variable、E712 true-false-comparison、F821 undefined-name、E402 module-import-not-at-top-of-file、E722 bare-except、F403 undefined-local-with-import-star、F405 undefined-local-with-import-star-usage。 - ruff check 警告:移除无效的 # noqa: E1111 标记。 - ruff format:对 ruff 格式化发现的文件执行格式化,最终全量检查通过。 ## 如何测试 已执行: bash pre-commit run --all-files python -m pytest tests/unit_test/common/models/llm/common/test_quant_apply.py tests/unit_test/common/models/llm/test_model_adapters_mocked.py tests/unit_test/common/models/llm/test_model_adapters_mocked_qwen.py tests/unit_test/workflows/test_llm_ptq.py -q python -m pytest tests/amct_pytorch/test_deepseekv3_attention.py tests/amct_pytorch/test_fp8linear_to_hif8linear.py tests/amct_pytorch/test_longcat_attention.py tests/amct_pytorch/test_mxquant.py tests/amct_pytorch/test_smoothquant.py -q python -m pytest tests/amct_pytorch/testcase_python/auto_calibration/test_fake_quant_pass.py tests/amct_pytorch/testcase_python/custom_op/test_comp_module_base.py tests/amct_pytorch/testcase_python/custom_op/test_fake_dequant_module.py tests/amct_pytorch/testcase_python/distill/test_distill_helper.py tests/amct_pytorch/testcase_python/optimizer/test_bias_fakequant_pass.py tests/amct_pytorch/testcase_python/optimizer/test_delete_resize_pass.py tests/amct_pytorch/testcase_python/optimizer/test_insert_retrain_pass.py tests/amct_pytorch/testcase_python/optimizer/test_replace_antiquant_pass.py tests/amct_pytorch/testcase_python/single_file/test_quantize_model.py tests/amct_pytorch/testcase_python/single_file/test_rnn_quant_retrain.py tests/amct_pytorch/testcase_python/single_file/test_save.py -q 结果: - pre-commit 全部通过。 - 相关 unit_test:162 passed。 - 相关 tests/amct_pytorch:17 passed。 - 相关 testcase_python:35 passed。 本地环境中 tests/unit_test/common/models/llm/test_model_adapters_mocked_glm5.py 收集阶段存在 transformers 依赖不匹配:apply_rotary_pos_emb 无法从当前本地 transformers.models.glm_moe_dsa.modeling_glm_moe_dsa 导入,未执行到本次改动。 ## 文档更新 无文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 代码重构 - [x] 其他,请描述:pre-commit 告警修复 See merge request: cann/amct!230 | 20 天前 | |
style: 执行 pre-commit 格式化(#161) Co-authored-by: fujun19<fujun19@hisilicon.com> # message auto-generated for no-merge-commit merge: !228 merge chore/precommit-format-161 into master style: 执行 pre-commit 格式化(#161) Created-by: fujun19 Commit-by: fujun19 Merged-by: cann-robot Description: ## 描述 按照 issue #161 提到的 pre-commit 本地格式化方法,对仓内 tracked C/C++ 和 Python 文件执行格式化。本 PR 仅包含 clang-format / ruff-format 自动格式化结果,不包含 ruff 历史例外配置。 ## 如何测试 - pre-commit run clang-format --all-files:Passed - pre-commit run ruff-format --all-files:Passed - 未运行完整 pre-commit run --all-files;ruff-check 的历史例外按要求未纳入本次提交。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 代码重构 - [x] 其他,请描述:pre-commit 格式化 See merge request: cann/amct!228 | 21 天前 | |
style: 执行 pre-commit 格式化(#161) Co-authored-by: fujun19<fujun19@hisilicon.com> # message auto-generated for no-merge-commit merge: !228 merge chore/precommit-format-161 into master style: 执行 pre-commit 格式化(#161) Created-by: fujun19 Commit-by: fujun19 Merged-by: cann-robot Description: ## 描述 按照 issue #161 提到的 pre-commit 本地格式化方法,对仓内 tracked C/C++ 和 Python 文件执行格式化。本 PR 仅包含 clang-format / ruff-format 自动格式化结果,不包含 ruff 历史例外配置。 ## 如何测试 - pre-commit run clang-format --all-files:Passed - pre-commit run ruff-format --all-files:Passed - 未运行完整 pre-commit run --all-files;ruff-check 的历史例外按要求未纳入本次提交。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 代码重构 - [x] 其他,请描述:pre-commit 格式化 See merge request: cann/amct!228 | 21 天前 | |
style: 执行 pre-commit 格式化(#161) Co-authored-by: fujun19<fujun19@hisilicon.com> # message auto-generated for no-merge-commit merge: !228 merge chore/precommit-format-161 into master style: 执行 pre-commit 格式化(#161) Created-by: fujun19 Commit-by: fujun19 Merged-by: cann-robot Description: ## 描述 按照 issue #161 提到的 pre-commit 本地格式化方法,对仓内 tracked C/C++ 和 Python 文件执行格式化。本 PR 仅包含 clang-format / ruff-format 自动格式化结果,不包含 ruff 历史例外配置。 ## 如何测试 - pre-commit run clang-format --all-files:Passed - pre-commit run ruff-format --all-files:Passed - 未运行完整 pre-commit run --all-files;ruff-check 的历史例外按要求未纳入本次提交。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 代码重构 - [x] 其他,请描述:pre-commit 格式化 See merge request: cann/amct!228 | 21 天前 | |
fix: 修复pre-commit告警(#161) Co-authored-by: fujun19<fujun19@hisilicon.com> # message auto-generated for no-merge-commit merge: !230 merge chore/restore-ut-coverage-161 into master fix: 修复pre-commit告警(#161) Created-by: fujun19 Commit-by: fujun19 Merged-by: cann-robot Description: ## 描述 基于最新 master 修复剩余 pre-commit 告警,主要包括: - 补齐公共导出 __all__ 或保留注册副作用导入。 - 修复布尔比较、未定义变量、未使用变量、star import、bare except 等 ruff 告警。 本次明确解决的 pre-commit 检查项如下: - clang-format:全量检查通过,本 PR 无需新增 C/C++ 格式化改动。 - ruff check:修复 F401 unused-import、F841 unused-variable、E712 true-false-comparison、F821 undefined-name、E402 module-import-not-at-top-of-file、E722 bare-except、F403 undefined-local-with-import-star、F405 undefined-local-with-import-star-usage。 - ruff check 警告:移除无效的 # noqa: E1111 标记。 - ruff format:对 ruff 格式化发现的文件执行格式化,最终全量检查通过。 ## 如何测试 已执行: bash pre-commit run --all-files python -m pytest tests/unit_test/common/models/llm/common/test_quant_apply.py tests/unit_test/common/models/llm/test_model_adapters_mocked.py tests/unit_test/common/models/llm/test_model_adapters_mocked_qwen.py tests/unit_test/workflows/test_llm_ptq.py -q python -m pytest tests/amct_pytorch/test_deepseekv3_attention.py tests/amct_pytorch/test_fp8linear_to_hif8linear.py tests/amct_pytorch/test_longcat_attention.py tests/amct_pytorch/test_mxquant.py tests/amct_pytorch/test_smoothquant.py -q python -m pytest tests/amct_pytorch/testcase_python/auto_calibration/test_fake_quant_pass.py tests/amct_pytorch/testcase_python/custom_op/test_comp_module_base.py tests/amct_pytorch/testcase_python/custom_op/test_fake_dequant_module.py tests/amct_pytorch/testcase_python/distill/test_distill_helper.py tests/amct_pytorch/testcase_python/optimizer/test_bias_fakequant_pass.py tests/amct_pytorch/testcase_python/optimizer/test_delete_resize_pass.py tests/amct_pytorch/testcase_python/optimizer/test_insert_retrain_pass.py tests/amct_pytorch/testcase_python/optimizer/test_replace_antiquant_pass.py tests/amct_pytorch/testcase_python/single_file/test_quantize_model.py tests/amct_pytorch/testcase_python/single_file/test_rnn_quant_retrain.py tests/amct_pytorch/testcase_python/single_file/test_save.py -q 结果: - pre-commit 全部通过。 - 相关 unit_test:162 passed。 - 相关 tests/amct_pytorch:17 passed。 - 相关 testcase_python:35 passed。 本地环境中 tests/unit_test/common/models/llm/test_model_adapters_mocked_glm5.py 收集阶段存在 transformers 依赖不匹配:apply_rotary_pos_emb 无法从当前本地 transformers.models.glm_moe_dsa.modeling_glm_moe_dsa 导入,未执行到本次改动。 ## 文档更新 无文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 代码重构 - [x] 其他,请描述:pre-commit 告警修复 See merge request: cann/amct!230 | 20 天前 | |
style: 执行 pre-commit 格式化(#161) Co-authored-by: fujun19<fujun19@hisilicon.com> # message auto-generated for no-merge-commit merge: !228 merge chore/precommit-format-161 into master style: 执行 pre-commit 格式化(#161) Created-by: fujun19 Commit-by: fujun19 Merged-by: cann-robot Description: ## 描述 按照 issue #161 提到的 pre-commit 本地格式化方法,对仓内 tracked C/C++ 和 Python 文件执行格式化。本 PR 仅包含 clang-format / ruff-format 自动格式化结果,不包含 ruff 历史例外配置。 ## 如何测试 - pre-commit run clang-format --all-files:Passed - pre-commit run ruff-format --all-files:Passed - 未运行完整 pre-commit run --all-files;ruff-check 的历史例外按要求未纳入本次提交。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 代码重构 - [x] 其他,请描述:pre-commit 格式化 See merge request: cann/amct!228 | 21 天前 | |
fix: 修复pre-commit告警(#161) Co-authored-by: fujun19<fujun19@hisilicon.com> # message auto-generated for no-merge-commit merge: !230 merge chore/restore-ut-coverage-161 into master fix: 修复pre-commit告警(#161) Created-by: fujun19 Commit-by: fujun19 Merged-by: cann-robot Description: ## 描述 基于最新 master 修复剩余 pre-commit 告警,主要包括: - 补齐公共导出 __all__ 或保留注册副作用导入。 - 修复布尔比较、未定义变量、未使用变量、star import、bare except 等 ruff 告警。 本次明确解决的 pre-commit 检查项如下: - clang-format:全量检查通过,本 PR 无需新增 C/C++ 格式化改动。 - ruff check:修复 F401 unused-import、F841 unused-variable、E712 true-false-comparison、F821 undefined-name、E402 module-import-not-at-top-of-file、E722 bare-except、F403 undefined-local-with-import-star、F405 undefined-local-with-import-star-usage。 - ruff check 警告:移除无效的 # noqa: E1111 标记。 - ruff format:对 ruff 格式化发现的文件执行格式化,最终全量检查通过。 ## 如何测试 已执行: bash pre-commit run --all-files python -m pytest tests/unit_test/common/models/llm/common/test_quant_apply.py tests/unit_test/common/models/llm/test_model_adapters_mocked.py tests/unit_test/common/models/llm/test_model_adapters_mocked_qwen.py tests/unit_test/workflows/test_llm_ptq.py -q python -m pytest tests/amct_pytorch/test_deepseekv3_attention.py tests/amct_pytorch/test_fp8linear_to_hif8linear.py tests/amct_pytorch/test_longcat_attention.py tests/amct_pytorch/test_mxquant.py tests/amct_pytorch/test_smoothquant.py -q python -m pytest tests/amct_pytorch/testcase_python/auto_calibration/test_fake_quant_pass.py tests/amct_pytorch/testcase_python/custom_op/test_comp_module_base.py tests/amct_pytorch/testcase_python/custom_op/test_fake_dequant_module.py tests/amct_pytorch/testcase_python/distill/test_distill_helper.py tests/amct_pytorch/testcase_python/optimizer/test_bias_fakequant_pass.py tests/amct_pytorch/testcase_python/optimizer/test_delete_resize_pass.py tests/amct_pytorch/testcase_python/optimizer/test_insert_retrain_pass.py tests/amct_pytorch/testcase_python/optimizer/test_replace_antiquant_pass.py tests/amct_pytorch/testcase_python/single_file/test_quantize_model.py tests/amct_pytorch/testcase_python/single_file/test_rnn_quant_retrain.py tests/amct_pytorch/testcase_python/single_file/test_save.py -q 结果: - pre-commit 全部通过。 - 相关 unit_test:162 passed。 - 相关 tests/amct_pytorch:17 passed。 - 相关 testcase_python:35 passed。 本地环境中 tests/unit_test/common/models/llm/test_model_adapters_mocked_glm5.py 收集阶段存在 transformers 依赖不匹配:apply_rotary_pos_emb 无法从当前本地 transformers.models.glm_moe_dsa.modeling_glm_moe_dsa 导入,未执行到本次改动。 ## 文档更新 无文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 代码重构 - [x] 其他,请描述:pre-commit 告警修复 See merge request: cann/amct!230 | 20 天前 | |
style: 执行 pre-commit 格式化(#161) Co-authored-by: fujun19<fujun19@hisilicon.com> # message auto-generated for no-merge-commit merge: !228 merge chore/precommit-format-161 into master style: 执行 pre-commit 格式化(#161) Created-by: fujun19 Commit-by: fujun19 Merged-by: cann-robot Description: ## 描述 按照 issue #161 提到的 pre-commit 本地格式化方法,对仓内 tracked C/C++ 和 Python 文件执行格式化。本 PR 仅包含 clang-format / ruff-format 自动格式化结果,不包含 ruff 历史例外配置。 ## 如何测试 - pre-commit run clang-format --all-files:Passed - pre-commit run ruff-format --all-files:Passed - 未运行完整 pre-commit run --all-files;ruff-check 的历史例外按要求未纳入本次提交。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 代码重构 - [x] 其他,请描述:pre-commit 格式化 See merge request: cann/amct!228 | 21 天前 | |
style: 执行 pre-commit 格式化(#161) Co-authored-by: fujun19<fujun19@hisilicon.com> # message auto-generated for no-merge-commit merge: !228 merge chore/precommit-format-161 into master style: 执行 pre-commit 格式化(#161) Created-by: fujun19 Commit-by: fujun19 Merged-by: cann-robot Description: ## 描述 按照 issue #161 提到的 pre-commit 本地格式化方法,对仓内 tracked C/C++ 和 Python 文件执行格式化。本 PR 仅包含 clang-format / ruff-format 自动格式化结果,不包含 ruff 历史例外配置。 ## 如何测试 - pre-commit run clang-format --all-files:Passed - pre-commit run ruff-format --all-files:Passed - 未运行完整 pre-commit run --all-files;ruff-check 的历史例外按要求未纳入本次提交。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 代码重构 - [x] 其他,请描述:pre-commit 格式化 See merge request: cann/amct!228 | 21 天前 | |
[Feature] Added structured pruning (amct_pytorch.pruning) Co-authored-by: leedongkun30-arch<lee.dongkun30@gmail.com> # message auto-generated for no-merge-commit merge: !140 merge feat/pruning into master [Feature] Added structured pruning (amct_pytorch.pruning) Created-by: leedongkun30-arch Commit-by: leedongkun30-arch Merged-by: cann-robot Description: ## 描述 新增 eager 模式**结构化剪枝**子系统 amct_pytorch.pruning,接口风格与 amct.quantize 对齐:对已实例化并加载权重的 torch.nn.Module 原地剪枝。覆盖三个目标域——**dense FFN 中间维 / CNN 通道 / MoE 专家**,仅剪枝“生产者↔消费者接口可验证”的维度,其余保守跳过(注意力投影、残差宽度等自动排除)。 改动为**增量式**:仅在 amct_pytorch/__init__.py 中以 PEP 562 惰性方式暴露剪枝入口,不修改既有量化代码;与 classic/graph_based 剪枝器共存,并复用其精度抽象 AutoCalibrationEvaluatorBase,使 prune→quantize 在同一预算下串联。 公开接口(__all__,与量化 1:1 对齐): - amct.prune(model, config=None, *, data, tolerance, evaluator, size_budget, finetune_fn, report) —— 原地剪枝,返回 None;可选传入 report=PruneReport() 就地收集统计(不保留任何进程级状态)。 - amct.accuracy_based_auto_prune(...) —— 按可接受精度损失自动搜索并应用满足容差的最大剪枝率,返回 AutoTuneResult,对应量化侧 accuracy_based_auto_calibration。 - 预定义配置 *_PRUNE_CFG:CNN_RECONSTRUCT / CNN_VARIANCE / DENSE_LOWVAR / FULL_STRUCTURED / MOE_MASSVAR / MOE_OUTPUT_MERGE / SENSITIVITY_ALLOC。 size_budget_prune / prune_finetune / prune_diagnose 及菜单配置为高级接口,可从 amct_pytorch.pruning 导入,不进入 __all__。剪枝与量化为正交压缩维度:先 prune 改变形状,再 amct.quantize / amct.convert。 ### 实测参考 在 16 个从零训练模型(CNN@MNIST / Dense-LM·MoE-LM@WikiText)与真实预训练 HF 模型上测得,供评审参考: - **CNN 输出保持重建**:训练后 MNIST CNN @0.3,naive variance_channel 0.343 vs reconstruct 0.574(参数量相同)。 - **Dense-LM 1% 预算空间**:无 finetune ≈0%;单遍 finetune(lr 1e-5 + warmup)后中位 27%(最高 61%)。真实 MoE(granite-1b-a400m)同样需要 finetune(≈0% → 17%)。 - **MoE 专家判据依赖路由深度**:全局 variance 劣于 mass,仅深层用 variance(boundary=K)在多专家路由上胜过 mass(OLMoE held-ppl 46.9→35.3);小专家路由(granite,32 专家)下菜单守卫正确回退到 mass。 - **敏感度分配依赖深度**:浅层网络(<10 层)6/6 胜,深层(≥10 层)4/19;guard='calib_nll' 在更差时回退均匀分配。 - **prune→int8 串联**:经恢复菜单剪枝的 SmolLM-135M 走完整 prune→int8→convert 流水线,ppl 1.649 → 剪枝后 1.699 → 叠加 int8 1.704。 ## 如何测试 本地运行单元测试: python -m pytest tests/amct_pytorch/test_pruning_*.py 覆盖核心剪枝、容差自动搜索、跨层敏感度分配、尺寸预算模式、MoE 输出合并、prune→quantize 串联,以及真实 HF 模型(Mixtral / Qwen3Moe / GraniteMoe / DeepseekV3 / Ernie4_5_Moe 等),全部通过。 ## 文档更新 - 新增 docs/zh/api/:prune.md、accuracy_based_auto_prune.md、size_budget_prune.md、prune_finetune.md、prune_diagnose.md、pruning_configs.md,并在 docs/zh/api/README.md 索引中登记。 - 新增示例 examples/algorithms/pruning/(dense / CNN / MoE)。 - amct_pytorch/pruning/README.md / README_en.md 增补“工作原理”走查(打分 → 剪枝 → 恢复 →(可选)量化),并配 5 张流程图(总流程、三个可剪枝的域、容差二分搜索、菜单择优、prune→quantize 串联),图片位于 amct_pytorch/pruning/figures/。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 代码重构 - [ ] 其他,请描述: See merge request: cann/amct!140 | 1 天前 | |
[Feature] Added structured pruning (amct_pytorch.pruning) Co-authored-by: leedongkun30-arch<lee.dongkun30@gmail.com> # message auto-generated for no-merge-commit merge: !140 merge feat/pruning into master [Feature] Added structured pruning (amct_pytorch.pruning) Created-by: leedongkun30-arch Commit-by: leedongkun30-arch Merged-by: cann-robot Description: ## 描述 新增 eager 模式**结构化剪枝**子系统 amct_pytorch.pruning,接口风格与 amct.quantize 对齐:对已实例化并加载权重的 torch.nn.Module 原地剪枝。覆盖三个目标域——**dense FFN 中间维 / CNN 通道 / MoE 专家**,仅剪枝“生产者↔消费者接口可验证”的维度,其余保守跳过(注意力投影、残差宽度等自动排除)。 改动为**增量式**:仅在 amct_pytorch/__init__.py 中以 PEP 562 惰性方式暴露剪枝入口,不修改既有量化代码;与 classic/graph_based 剪枝器共存,并复用其精度抽象 AutoCalibrationEvaluatorBase,使 prune→quantize 在同一预算下串联。 公开接口(__all__,与量化 1:1 对齐): - amct.prune(model, config=None, *, data, tolerance, evaluator, size_budget, finetune_fn, report) —— 原地剪枝,返回 None;可选传入 report=PruneReport() 就地收集统计(不保留任何进程级状态)。 - amct.accuracy_based_auto_prune(...) —— 按可接受精度损失自动搜索并应用满足容差的最大剪枝率,返回 AutoTuneResult,对应量化侧 accuracy_based_auto_calibration。 - 预定义配置 *_PRUNE_CFG:CNN_RECONSTRUCT / CNN_VARIANCE / DENSE_LOWVAR / FULL_STRUCTURED / MOE_MASSVAR / MOE_OUTPUT_MERGE / SENSITIVITY_ALLOC。 size_budget_prune / prune_finetune / prune_diagnose 及菜单配置为高级接口,可从 amct_pytorch.pruning 导入,不进入 __all__。剪枝与量化为正交压缩维度:先 prune 改变形状,再 amct.quantize / amct.convert。 ### 实测参考 在 16 个从零训练模型(CNN@MNIST / Dense-LM·MoE-LM@WikiText)与真实预训练 HF 模型上测得,供评审参考: - **CNN 输出保持重建**:训练后 MNIST CNN @0.3,naive variance_channel 0.343 vs reconstruct 0.574(参数量相同)。 - **Dense-LM 1% 预算空间**:无 finetune ≈0%;单遍 finetune(lr 1e-5 + warmup)后中位 27%(最高 61%)。真实 MoE(granite-1b-a400m)同样需要 finetune(≈0% → 17%)。 - **MoE 专家判据依赖路由深度**:全局 variance 劣于 mass,仅深层用 variance(boundary=K)在多专家路由上胜过 mass(OLMoE held-ppl 46.9→35.3);小专家路由(granite,32 专家)下菜单守卫正确回退到 mass。 - **敏感度分配依赖深度**:浅层网络(<10 层)6/6 胜,深层(≥10 层)4/19;guard='calib_nll' 在更差时回退均匀分配。 - **prune→int8 串联**:经恢复菜单剪枝的 SmolLM-135M 走完整 prune→int8→convert 流水线,ppl 1.649 → 剪枝后 1.699 → 叠加 int8 1.704。 ## 如何测试 本地运行单元测试: python -m pytest tests/amct_pytorch/test_pruning_*.py 覆盖核心剪枝、容差自动搜索、跨层敏感度分配、尺寸预算模式、MoE 输出合并、prune→quantize 串联,以及真实 HF 模型(Mixtral / Qwen3Moe / GraniteMoe / DeepseekV3 / Ernie4_5_Moe 等),全部通过。 ## 文档更新 - 新增 docs/zh/api/:prune.md、accuracy_based_auto_prune.md、size_budget_prune.md、prune_finetune.md、prune_diagnose.md、pruning_configs.md,并在 docs/zh/api/README.md 索引中登记。 - 新增示例 examples/algorithms/pruning/(dense / CNN / MoE)。 - amct_pytorch/pruning/README.md / README_en.md 增补“工作原理”走查(打分 → 剪枝 → 恢复 →(可选)量化),并配 5 张流程图(总流程、三个可剪枝的域、容差二分搜索、菜单择优、prune→quantize 串联),图片位于 amct_pytorch/pruning/figures/。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 代码重构 - [ ] 其他,请描述: See merge request: cann/amct!140 | 1 天前 | |
[Feature] Added structured pruning (amct_pytorch.pruning) Co-authored-by: leedongkun30-arch<lee.dongkun30@gmail.com> # message auto-generated for no-merge-commit merge: !140 merge feat/pruning into master [Feature] Added structured pruning (amct_pytorch.pruning) Created-by: leedongkun30-arch Commit-by: leedongkun30-arch Merged-by: cann-robot Description: ## 描述 新增 eager 模式**结构化剪枝**子系统 amct_pytorch.pruning,接口风格与 amct.quantize 对齐:对已实例化并加载权重的 torch.nn.Module 原地剪枝。覆盖三个目标域——**dense FFN 中间维 / CNN 通道 / MoE 专家**,仅剪枝“生产者↔消费者接口可验证”的维度,其余保守跳过(注意力投影、残差宽度等自动排除)。 改动为**增量式**:仅在 amct_pytorch/__init__.py 中以 PEP 562 惰性方式暴露剪枝入口,不修改既有量化代码;与 classic/graph_based 剪枝器共存,并复用其精度抽象 AutoCalibrationEvaluatorBase,使 prune→quantize 在同一预算下串联。 公开接口(__all__,与量化 1:1 对齐): - amct.prune(model, config=None, *, data, tolerance, evaluator, size_budget, finetune_fn, report) —— 原地剪枝,返回 None;可选传入 report=PruneReport() 就地收集统计(不保留任何进程级状态)。 - amct.accuracy_based_auto_prune(...) —— 按可接受精度损失自动搜索并应用满足容差的最大剪枝率,返回 AutoTuneResult,对应量化侧 accuracy_based_auto_calibration。 - 预定义配置 *_PRUNE_CFG:CNN_RECONSTRUCT / CNN_VARIANCE / DENSE_LOWVAR / FULL_STRUCTURED / MOE_MASSVAR / MOE_OUTPUT_MERGE / SENSITIVITY_ALLOC。 size_budget_prune / prune_finetune / prune_diagnose 及菜单配置为高级接口,可从 amct_pytorch.pruning 导入,不进入 __all__。剪枝与量化为正交压缩维度:先 prune 改变形状,再 amct.quantize / amct.convert。 ### 实测参考 在 16 个从零训练模型(CNN@MNIST / Dense-LM·MoE-LM@WikiText)与真实预训练 HF 模型上测得,供评审参考: - **CNN 输出保持重建**:训练后 MNIST CNN @0.3,naive variance_channel 0.343 vs reconstruct 0.574(参数量相同)。 - **Dense-LM 1% 预算空间**:无 finetune ≈0%;单遍 finetune(lr 1e-5 + warmup)后中位 27%(最高 61%)。真实 MoE(granite-1b-a400m)同样需要 finetune(≈0% → 17%)。 - **MoE 专家判据依赖路由深度**:全局 variance 劣于 mass,仅深层用 variance(boundary=K)在多专家路由上胜过 mass(OLMoE held-ppl 46.9→35.3);小专家路由(granite,32 专家)下菜单守卫正确回退到 mass。 - **敏感度分配依赖深度**:浅层网络(<10 层)6/6 胜,深层(≥10 层)4/19;guard='calib_nll' 在更差时回退均匀分配。 - **prune→int8 串联**:经恢复菜单剪枝的 SmolLM-135M 走完整 prune→int8→convert 流水线,ppl 1.649 → 剪枝后 1.699 → 叠加 int8 1.704。 ## 如何测试 本地运行单元测试: python -m pytest tests/amct_pytorch/test_pruning_*.py 覆盖核心剪枝、容差自动搜索、跨层敏感度分配、尺寸预算模式、MoE 输出合并、prune→quantize 串联,以及真实 HF 模型(Mixtral / Qwen3Moe / GraniteMoe / DeepseekV3 / Ernie4_5_Moe 等),全部通过。 ## 文档更新 - 新增 docs/zh/api/:prune.md、accuracy_based_auto_prune.md、size_budget_prune.md、prune_finetune.md、prune_diagnose.md、pruning_configs.md,并在 docs/zh/api/README.md 索引中登记。 - 新增示例 examples/algorithms/pruning/(dense / CNN / MoE)。 - amct_pytorch/pruning/README.md / README_en.md 增补“工作原理”走查(打分 → 剪枝 → 恢复 →(可选)量化),并配 5 张流程图(总流程、三个可剪枝的域、容差二分搜索、菜单择优、prune→quantize 串联),图片位于 amct_pytorch/pruning/figures/。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 代码重构 - [ ] 其他,请描述: See merge request: cann/amct!140 | 1 天前 | |
[Feature] Added structured pruning (amct_pytorch.pruning) Co-authored-by: leedongkun30-arch<lee.dongkun30@gmail.com> # message auto-generated for no-merge-commit merge: !140 merge feat/pruning into master [Feature] Added structured pruning (amct_pytorch.pruning) Created-by: leedongkun30-arch Commit-by: leedongkun30-arch Merged-by: cann-robot Description: ## 描述 新增 eager 模式**结构化剪枝**子系统 amct_pytorch.pruning,接口风格与 amct.quantize 对齐:对已实例化并加载权重的 torch.nn.Module 原地剪枝。覆盖三个目标域——**dense FFN 中间维 / CNN 通道 / MoE 专家**,仅剪枝“生产者↔消费者接口可验证”的维度,其余保守跳过(注意力投影、残差宽度等自动排除)。 改动为**增量式**:仅在 amct_pytorch/__init__.py 中以 PEP 562 惰性方式暴露剪枝入口,不修改既有量化代码;与 classic/graph_based 剪枝器共存,并复用其精度抽象 AutoCalibrationEvaluatorBase,使 prune→quantize 在同一预算下串联。 公开接口(__all__,与量化 1:1 对齐): - amct.prune(model, config=None, *, data, tolerance, evaluator, size_budget, finetune_fn, report) —— 原地剪枝,返回 None;可选传入 report=PruneReport() 就地收集统计(不保留任何进程级状态)。 - amct.accuracy_based_auto_prune(...) —— 按可接受精度损失自动搜索并应用满足容差的最大剪枝率,返回 AutoTuneResult,对应量化侧 accuracy_based_auto_calibration。 - 预定义配置 *_PRUNE_CFG:CNN_RECONSTRUCT / CNN_VARIANCE / DENSE_LOWVAR / FULL_STRUCTURED / MOE_MASSVAR / MOE_OUTPUT_MERGE / SENSITIVITY_ALLOC。 size_budget_prune / prune_finetune / prune_diagnose 及菜单配置为高级接口,可从 amct_pytorch.pruning 导入,不进入 __all__。剪枝与量化为正交压缩维度:先 prune 改变形状,再 amct.quantize / amct.convert。 ### 实测参考 在 16 个从零训练模型(CNN@MNIST / Dense-LM·MoE-LM@WikiText)与真实预训练 HF 模型上测得,供评审参考: - **CNN 输出保持重建**:训练后 MNIST CNN @0.3,naive variance_channel 0.343 vs reconstruct 0.574(参数量相同)。 - **Dense-LM 1% 预算空间**:无 finetune ≈0%;单遍 finetune(lr 1e-5 + warmup)后中位 27%(最高 61%)。真实 MoE(granite-1b-a400m)同样需要 finetune(≈0% → 17%)。 - **MoE 专家判据依赖路由深度**:全局 variance 劣于 mass,仅深层用 variance(boundary=K)在多专家路由上胜过 mass(OLMoE held-ppl 46.9→35.3);小专家路由(granite,32 专家)下菜单守卫正确回退到 mass。 - **敏感度分配依赖深度**:浅层网络(<10 层)6/6 胜,深层(≥10 层)4/19;guard='calib_nll' 在更差时回退均匀分配。 - **prune→int8 串联**:经恢复菜单剪枝的 SmolLM-135M 走完整 prune→int8→convert 流水线,ppl 1.649 → 剪枝后 1.699 → 叠加 int8 1.704。 ## 如何测试 本地运行单元测试: python -m pytest tests/amct_pytorch/test_pruning_*.py 覆盖核心剪枝、容差自动搜索、跨层敏感度分配、尺寸预算模式、MoE 输出合并、prune→quantize 串联,以及真实 HF 模型(Mixtral / Qwen3Moe / GraniteMoe / DeepseekV3 / Ernie4_5_Moe 等),全部通过。 ## 文档更新 - 新增 docs/zh/api/:prune.md、accuracy_based_auto_prune.md、size_budget_prune.md、prune_finetune.md、prune_diagnose.md、pruning_configs.md,并在 docs/zh/api/README.md 索引中登记。 - 新增示例 examples/algorithms/pruning/(dense / CNN / MoE)。 - amct_pytorch/pruning/README.md / README_en.md 增补“工作原理”走查(打分 → 剪枝 → 恢复 →(可选)量化),并配 5 张流程图(总流程、三个可剪枝的域、容差二分搜索、菜单择优、prune→quantize 串联),图片位于 amct_pytorch/pruning/figures/。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 代码重构 - [ ] 其他,请描述: See merge request: cann/amct!140 | 1 天前 | |
[Feature] Added structured pruning (amct_pytorch.pruning) Co-authored-by: leedongkun30-arch<lee.dongkun30@gmail.com> # message auto-generated for no-merge-commit merge: !140 merge feat/pruning into master [Feature] Added structured pruning (amct_pytorch.pruning) Created-by: leedongkun30-arch Commit-by: leedongkun30-arch Merged-by: cann-robot Description: ## 描述 新增 eager 模式**结构化剪枝**子系统 amct_pytorch.pruning,接口风格与 amct.quantize 对齐:对已实例化并加载权重的 torch.nn.Module 原地剪枝。覆盖三个目标域——**dense FFN 中间维 / CNN 通道 / MoE 专家**,仅剪枝“生产者↔消费者接口可验证”的维度,其余保守跳过(注意力投影、残差宽度等自动排除)。 改动为**增量式**:仅在 amct_pytorch/__init__.py 中以 PEP 562 惰性方式暴露剪枝入口,不修改既有量化代码;与 classic/graph_based 剪枝器共存,并复用其精度抽象 AutoCalibrationEvaluatorBase,使 prune→quantize 在同一预算下串联。 公开接口(__all__,与量化 1:1 对齐): - amct.prune(model, config=None, *, data, tolerance, evaluator, size_budget, finetune_fn, report) —— 原地剪枝,返回 None;可选传入 report=PruneReport() 就地收集统计(不保留任何进程级状态)。 - amct.accuracy_based_auto_prune(...) —— 按可接受精度损失自动搜索并应用满足容差的最大剪枝率,返回 AutoTuneResult,对应量化侧 accuracy_based_auto_calibration。 - 预定义配置 *_PRUNE_CFG:CNN_RECONSTRUCT / CNN_VARIANCE / DENSE_LOWVAR / FULL_STRUCTURED / MOE_MASSVAR / MOE_OUTPUT_MERGE / SENSITIVITY_ALLOC。 size_budget_prune / prune_finetune / prune_diagnose 及菜单配置为高级接口,可从 amct_pytorch.pruning 导入,不进入 __all__。剪枝与量化为正交压缩维度:先 prune 改变形状,再 amct.quantize / amct.convert。 ### 实测参考 在 16 个从零训练模型(CNN@MNIST / Dense-LM·MoE-LM@WikiText)与真实预训练 HF 模型上测得,供评审参考: - **CNN 输出保持重建**:训练后 MNIST CNN @0.3,naive variance_channel 0.343 vs reconstruct 0.574(参数量相同)。 - **Dense-LM 1% 预算空间**:无 finetune ≈0%;单遍 finetune(lr 1e-5 + warmup)后中位 27%(最高 61%)。真实 MoE(granite-1b-a400m)同样需要 finetune(≈0% → 17%)。 - **MoE 专家判据依赖路由深度**:全局 variance 劣于 mass,仅深层用 variance(boundary=K)在多专家路由上胜过 mass(OLMoE held-ppl 46.9→35.3);小专家路由(granite,32 专家)下菜单守卫正确回退到 mass。 - **敏感度分配依赖深度**:浅层网络(<10 层)6/6 胜,深层(≥10 层)4/19;guard='calib_nll' 在更差时回退均匀分配。 - **prune→int8 串联**:经恢复菜单剪枝的 SmolLM-135M 走完整 prune→int8→convert 流水线,ppl 1.649 → 剪枝后 1.699 → 叠加 int8 1.704。 ## 如何测试 本地运行单元测试: python -m pytest tests/amct_pytorch/test_pruning_*.py 覆盖核心剪枝、容差自动搜索、跨层敏感度分配、尺寸预算模式、MoE 输出合并、prune→quantize 串联,以及真实 HF 模型(Mixtral / Qwen3Moe / GraniteMoe / DeepseekV3 / Ernie4_5_Moe 等),全部通过。 ## 文档更新 - 新增 docs/zh/api/:prune.md、accuracy_based_auto_prune.md、size_budget_prune.md、prune_finetune.md、prune_diagnose.md、pruning_configs.md,并在 docs/zh/api/README.md 索引中登记。 - 新增示例 examples/algorithms/pruning/(dense / CNN / MoE)。 - amct_pytorch/pruning/README.md / README_en.md 增补“工作原理”走查(打分 → 剪枝 → 恢复 →(可选)量化),并配 5 张流程图(总流程、三个可剪枝的域、容差二分搜索、菜单择优、prune→quantize 串联),图片位于 amct_pytorch/pruning/figures/。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 代码重构 - [ ] 其他,请描述: See merge request: cann/amct!140 | 1 天前 | |
[Feature] Added structured pruning (amct_pytorch.pruning) Co-authored-by: leedongkun30-arch<lee.dongkun30@gmail.com> # message auto-generated for no-merge-commit merge: !140 merge feat/pruning into master [Feature] Added structured pruning (amct_pytorch.pruning) Created-by: leedongkun30-arch Commit-by: leedongkun30-arch Merged-by: cann-robot Description: ## 描述 新增 eager 模式**结构化剪枝**子系统 amct_pytorch.pruning,接口风格与 amct.quantize 对齐:对已实例化并加载权重的 torch.nn.Module 原地剪枝。覆盖三个目标域——**dense FFN 中间维 / CNN 通道 / MoE 专家**,仅剪枝“生产者↔消费者接口可验证”的维度,其余保守跳过(注意力投影、残差宽度等自动排除)。 改动为**增量式**:仅在 amct_pytorch/__init__.py 中以 PEP 562 惰性方式暴露剪枝入口,不修改既有量化代码;与 classic/graph_based 剪枝器共存,并复用其精度抽象 AutoCalibrationEvaluatorBase,使 prune→quantize 在同一预算下串联。 公开接口(__all__,与量化 1:1 对齐): - amct.prune(model, config=None, *, data, tolerance, evaluator, size_budget, finetune_fn, report) —— 原地剪枝,返回 None;可选传入 report=PruneReport() 就地收集统计(不保留任何进程级状态)。 - amct.accuracy_based_auto_prune(...) —— 按可接受精度损失自动搜索并应用满足容差的最大剪枝率,返回 AutoTuneResult,对应量化侧 accuracy_based_auto_calibration。 - 预定义配置 *_PRUNE_CFG:CNN_RECONSTRUCT / CNN_VARIANCE / DENSE_LOWVAR / FULL_STRUCTURED / MOE_MASSVAR / MOE_OUTPUT_MERGE / SENSITIVITY_ALLOC。 size_budget_prune / prune_finetune / prune_diagnose 及菜单配置为高级接口,可从 amct_pytorch.pruning 导入,不进入 __all__。剪枝与量化为正交压缩维度:先 prune 改变形状,再 amct.quantize / amct.convert。 ### 实测参考 在 16 个从零训练模型(CNN@MNIST / Dense-LM·MoE-LM@WikiText)与真实预训练 HF 模型上测得,供评审参考: - **CNN 输出保持重建**:训练后 MNIST CNN @0.3,naive variance_channel 0.343 vs reconstruct 0.574(参数量相同)。 - **Dense-LM 1% 预算空间**:无 finetune ≈0%;单遍 finetune(lr 1e-5 + warmup)后中位 27%(最高 61%)。真实 MoE(granite-1b-a400m)同样需要 finetune(≈0% → 17%)。 - **MoE 专家判据依赖路由深度**:全局 variance 劣于 mass,仅深层用 variance(boundary=K)在多专家路由上胜过 mass(OLMoE held-ppl 46.9→35.3);小专家路由(granite,32 专家)下菜单守卫正确回退到 mass。 - **敏感度分配依赖深度**:浅层网络(<10 层)6/6 胜,深层(≥10 层)4/19;guard='calib_nll' 在更差时回退均匀分配。 - **prune→int8 串联**:经恢复菜单剪枝的 SmolLM-135M 走完整 prune→int8→convert 流水线,ppl 1.649 → 剪枝后 1.699 → 叠加 int8 1.704。 ## 如何测试 本地运行单元测试: python -m pytest tests/amct_pytorch/test_pruning_*.py 覆盖核心剪枝、容差自动搜索、跨层敏感度分配、尺寸预算模式、MoE 输出合并、prune→quantize 串联,以及真实 HF 模型(Mixtral / Qwen3Moe / GraniteMoe / DeepseekV3 / Ernie4_5_Moe 等),全部通过。 ## 文档更新 - 新增 docs/zh/api/:prune.md、accuracy_based_auto_prune.md、size_budget_prune.md、prune_finetune.md、prune_diagnose.md、pruning_configs.md,并在 docs/zh/api/README.md 索引中登记。 - 新增示例 examples/algorithms/pruning/(dense / CNN / MoE)。 - amct_pytorch/pruning/README.md / README_en.md 增补“工作原理”走查(打分 → 剪枝 → 恢复 →(可选)量化),并配 5 张流程图(总流程、三个可剪枝的域、容差二分搜索、菜单择优、prune→quantize 串联),图片位于 amct_pytorch/pruning/figures/。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 代码重构 - [ ] 其他,请描述: See merge request: cann/amct!140 | 1 天前 | |
[Feature] Added structured pruning (amct_pytorch.pruning) Co-authored-by: leedongkun30-arch<lee.dongkun30@gmail.com> # message auto-generated for no-merge-commit merge: !140 merge feat/pruning into master [Feature] Added structured pruning (amct_pytorch.pruning) Created-by: leedongkun30-arch Commit-by: leedongkun30-arch Merged-by: cann-robot Description: ## 描述 新增 eager 模式**结构化剪枝**子系统 amct_pytorch.pruning,接口风格与 amct.quantize 对齐:对已实例化并加载权重的 torch.nn.Module 原地剪枝。覆盖三个目标域——**dense FFN 中间维 / CNN 通道 / MoE 专家**,仅剪枝“生产者↔消费者接口可验证”的维度,其余保守跳过(注意力投影、残差宽度等自动排除)。 改动为**增量式**:仅在 amct_pytorch/__init__.py 中以 PEP 562 惰性方式暴露剪枝入口,不修改既有量化代码;与 classic/graph_based 剪枝器共存,并复用其精度抽象 AutoCalibrationEvaluatorBase,使 prune→quantize 在同一预算下串联。 公开接口(__all__,与量化 1:1 对齐): - amct.prune(model, config=None, *, data, tolerance, evaluator, size_budget, finetune_fn, report) —— 原地剪枝,返回 None;可选传入 report=PruneReport() 就地收集统计(不保留任何进程级状态)。 - amct.accuracy_based_auto_prune(...) —— 按可接受精度损失自动搜索并应用满足容差的最大剪枝率,返回 AutoTuneResult,对应量化侧 accuracy_based_auto_calibration。 - 预定义配置 *_PRUNE_CFG:CNN_RECONSTRUCT / CNN_VARIANCE / DENSE_LOWVAR / FULL_STRUCTURED / MOE_MASSVAR / MOE_OUTPUT_MERGE / SENSITIVITY_ALLOC。 size_budget_prune / prune_finetune / prune_diagnose 及菜单配置为高级接口,可从 amct_pytorch.pruning 导入,不进入 __all__。剪枝与量化为正交压缩维度:先 prune 改变形状,再 amct.quantize / amct.convert。 ### 实测参考 在 16 个从零训练模型(CNN@MNIST / Dense-LM·MoE-LM@WikiText)与真实预训练 HF 模型上测得,供评审参考: - **CNN 输出保持重建**:训练后 MNIST CNN @0.3,naive variance_channel 0.343 vs reconstruct 0.574(参数量相同)。 - **Dense-LM 1% 预算空间**:无 finetune ≈0%;单遍 finetune(lr 1e-5 + warmup)后中位 27%(最高 61%)。真实 MoE(granite-1b-a400m)同样需要 finetune(≈0% → 17%)。 - **MoE 专家判据依赖路由深度**:全局 variance 劣于 mass,仅深层用 variance(boundary=K)在多专家路由上胜过 mass(OLMoE held-ppl 46.9→35.3);小专家路由(granite,32 专家)下菜单守卫正确回退到 mass。 - **敏感度分配依赖深度**:浅层网络(<10 层)6/6 胜,深层(≥10 层)4/19;guard='calib_nll' 在更差时回退均匀分配。 - **prune→int8 串联**:经恢复菜单剪枝的 SmolLM-135M 走完整 prune→int8→convert 流水线,ppl 1.649 → 剪枝后 1.699 → 叠加 int8 1.704。 ## 如何测试 本地运行单元测试: python -m pytest tests/amct_pytorch/test_pruning_*.py 覆盖核心剪枝、容差自动搜索、跨层敏感度分配、尺寸预算模式、MoE 输出合并、prune→quantize 串联,以及真实 HF 模型(Mixtral / Qwen3Moe / GraniteMoe / DeepseekV3 / Ernie4_5_Moe 等),全部通过。 ## 文档更新 - 新增 docs/zh/api/:prune.md、accuracy_based_auto_prune.md、size_budget_prune.md、prune_finetune.md、prune_diagnose.md、pruning_configs.md,并在 docs/zh/api/README.md 索引中登记。 - 新增示例 examples/algorithms/pruning/(dense / CNN / MoE)。 - amct_pytorch/pruning/README.md / README_en.md 增补“工作原理”走查(打分 → 剪枝 → 恢复 →(可选)量化),并配 5 张流程图(总流程、三个可剪枝的域、容差二分搜索、菜单择优、prune→quantize 串联),图片位于 amct_pytorch/pruning/figures/。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 代码重构 - [ ] 其他,请描述: See merge request: cann/amct!140 | 1 天前 | |
[Feature] Added structured pruning (amct_pytorch.pruning) Co-authored-by: leedongkun30-arch<lee.dongkun30@gmail.com> # message auto-generated for no-merge-commit merge: !140 merge feat/pruning into master [Feature] Added structured pruning (amct_pytorch.pruning) Created-by: leedongkun30-arch Commit-by: leedongkun30-arch Merged-by: cann-robot Description: ## 描述 新增 eager 模式**结构化剪枝**子系统 amct_pytorch.pruning,接口风格与 amct.quantize 对齐:对已实例化并加载权重的 torch.nn.Module 原地剪枝。覆盖三个目标域——**dense FFN 中间维 / CNN 通道 / MoE 专家**,仅剪枝“生产者↔消费者接口可验证”的维度,其余保守跳过(注意力投影、残差宽度等自动排除)。 改动为**增量式**:仅在 amct_pytorch/__init__.py 中以 PEP 562 惰性方式暴露剪枝入口,不修改既有量化代码;与 classic/graph_based 剪枝器共存,并复用其精度抽象 AutoCalibrationEvaluatorBase,使 prune→quantize 在同一预算下串联。 公开接口(__all__,与量化 1:1 对齐): - amct.prune(model, config=None, *, data, tolerance, evaluator, size_budget, finetune_fn, report) —— 原地剪枝,返回 None;可选传入 report=PruneReport() 就地收集统计(不保留任何进程级状态)。 - amct.accuracy_based_auto_prune(...) —— 按可接受精度损失自动搜索并应用满足容差的最大剪枝率,返回 AutoTuneResult,对应量化侧 accuracy_based_auto_calibration。 - 预定义配置 *_PRUNE_CFG:CNN_RECONSTRUCT / CNN_VARIANCE / DENSE_LOWVAR / FULL_STRUCTURED / MOE_MASSVAR / MOE_OUTPUT_MERGE / SENSITIVITY_ALLOC。 size_budget_prune / prune_finetune / prune_diagnose 及菜单配置为高级接口,可从 amct_pytorch.pruning 导入,不进入 __all__。剪枝与量化为正交压缩维度:先 prune 改变形状,再 amct.quantize / amct.convert。 ### 实测参考 在 16 个从零训练模型(CNN@MNIST / Dense-LM·MoE-LM@WikiText)与真实预训练 HF 模型上测得,供评审参考: - **CNN 输出保持重建**:训练后 MNIST CNN @0.3,naive variance_channel 0.343 vs reconstruct 0.574(参数量相同)。 - **Dense-LM 1% 预算空间**:无 finetune ≈0%;单遍 finetune(lr 1e-5 + warmup)后中位 27%(最高 61%)。真实 MoE(granite-1b-a400m)同样需要 finetune(≈0% → 17%)。 - **MoE 专家判据依赖路由深度**:全局 variance 劣于 mass,仅深层用 variance(boundary=K)在多专家路由上胜过 mass(OLMoE held-ppl 46.9→35.3);小专家路由(granite,32 专家)下菜单守卫正确回退到 mass。 - **敏感度分配依赖深度**:浅层网络(<10 层)6/6 胜,深层(≥10 层)4/19;guard='calib_nll' 在更差时回退均匀分配。 - **prune→int8 串联**:经恢复菜单剪枝的 SmolLM-135M 走完整 prune→int8→convert 流水线,ppl 1.649 → 剪枝后 1.699 → 叠加 int8 1.704。 ## 如何测试 本地运行单元测试: python -m pytest tests/amct_pytorch/test_pruning_*.py 覆盖核心剪枝、容差自动搜索、跨层敏感度分配、尺寸预算模式、MoE 输出合并、prune→quantize 串联,以及真实 HF 模型(Mixtral / Qwen3Moe / GraniteMoe / DeepseekV3 / Ernie4_5_Moe 等),全部通过。 ## 文档更新 - 新增 docs/zh/api/:prune.md、accuracy_based_auto_prune.md、size_budget_prune.md、prune_finetune.md、prune_diagnose.md、pruning_configs.md,并在 docs/zh/api/README.md 索引中登记。 - 新增示例 examples/algorithms/pruning/(dense / CNN / MoE)。 - amct_pytorch/pruning/README.md / README_en.md 增补“工作原理”走查(打分 → 剪枝 → 恢复 →(可选)量化),并配 5 张流程图(总流程、三个可剪枝的域、容差二分搜索、菜单择优、prune→quantize 串联),图片位于 amct_pytorch/pruning/figures/。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 代码重构 - [ ] 其他,请描述: See merge request: cann/amct!140 | 1 天前 | |
[Feature] Added structured pruning (amct_pytorch.pruning) Co-authored-by: leedongkun30-arch<lee.dongkun30@gmail.com> # message auto-generated for no-merge-commit merge: !140 merge feat/pruning into master [Feature] Added structured pruning (amct_pytorch.pruning) Created-by: leedongkun30-arch Commit-by: leedongkun30-arch Merged-by: cann-robot Description: ## 描述 新增 eager 模式**结构化剪枝**子系统 amct_pytorch.pruning,接口风格与 amct.quantize 对齐:对已实例化并加载权重的 torch.nn.Module 原地剪枝。覆盖三个目标域——**dense FFN 中间维 / CNN 通道 / MoE 专家**,仅剪枝“生产者↔消费者接口可验证”的维度,其余保守跳过(注意力投影、残差宽度等自动排除)。 改动为**增量式**:仅在 amct_pytorch/__init__.py 中以 PEP 562 惰性方式暴露剪枝入口,不修改既有量化代码;与 classic/graph_based 剪枝器共存,并复用其精度抽象 AutoCalibrationEvaluatorBase,使 prune→quantize 在同一预算下串联。 公开接口(__all__,与量化 1:1 对齐): - amct.prune(model, config=None, *, data, tolerance, evaluator, size_budget, finetune_fn, report) —— 原地剪枝,返回 None;可选传入 report=PruneReport() 就地收集统计(不保留任何进程级状态)。 - amct.accuracy_based_auto_prune(...) —— 按可接受精度损失自动搜索并应用满足容差的最大剪枝率,返回 AutoTuneResult,对应量化侧 accuracy_based_auto_calibration。 - 预定义配置 *_PRUNE_CFG:CNN_RECONSTRUCT / CNN_VARIANCE / DENSE_LOWVAR / FULL_STRUCTURED / MOE_MASSVAR / MOE_OUTPUT_MERGE / SENSITIVITY_ALLOC。 size_budget_prune / prune_finetune / prune_diagnose 及菜单配置为高级接口,可从 amct_pytorch.pruning 导入,不进入 __all__。剪枝与量化为正交压缩维度:先 prune 改变形状,再 amct.quantize / amct.convert。 ### 实测参考 在 16 个从零训练模型(CNN@MNIST / Dense-LM·MoE-LM@WikiText)与真实预训练 HF 模型上测得,供评审参考: - **CNN 输出保持重建**:训练后 MNIST CNN @0.3,naive variance_channel 0.343 vs reconstruct 0.574(参数量相同)。 - **Dense-LM 1% 预算空间**:无 finetune ≈0%;单遍 finetune(lr 1e-5 + warmup)后中位 27%(最高 61%)。真实 MoE(granite-1b-a400m)同样需要 finetune(≈0% → 17%)。 - **MoE 专家判据依赖路由深度**:全局 variance 劣于 mass,仅深层用 variance(boundary=K)在多专家路由上胜过 mass(OLMoE held-ppl 46.9→35.3);小专家路由(granite,32 专家)下菜单守卫正确回退到 mass。 - **敏感度分配依赖深度**:浅层网络(<10 层)6/6 胜,深层(≥10 层)4/19;guard='calib_nll' 在更差时回退均匀分配。 - **prune→int8 串联**:经恢复菜单剪枝的 SmolLM-135M 走完整 prune→int8→convert 流水线,ppl 1.649 → 剪枝后 1.699 → 叠加 int8 1.704。 ## 如何测试 本地运行单元测试: python -m pytest tests/amct_pytorch/test_pruning_*.py 覆盖核心剪枝、容差自动搜索、跨层敏感度分配、尺寸预算模式、MoE 输出合并、prune→quantize 串联,以及真实 HF 模型(Mixtral / Qwen3Moe / GraniteMoe / DeepseekV3 / Ernie4_5_Moe 等),全部通过。 ## 文档更新 - 新增 docs/zh/api/:prune.md、accuracy_based_auto_prune.md、size_budget_prune.md、prune_finetune.md、prune_diagnose.md、pruning_configs.md,并在 docs/zh/api/README.md 索引中登记。 - 新增示例 examples/algorithms/pruning/(dense / CNN / MoE)。 - amct_pytorch/pruning/README.md / README_en.md 增补“工作原理”走查(打分 → 剪枝 → 恢复 →(可选)量化),并配 5 张流程图(总流程、三个可剪枝的域、容差二分搜索、菜单择优、prune→quantize 串联),图片位于 amct_pytorch/pruning/figures/。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 代码重构 - [ ] 其他,请描述: See merge request: cann/amct!140 | 1 天前 | |
[Feature] Added structured pruning (amct_pytorch.pruning) Co-authored-by: leedongkun30-arch<lee.dongkun30@gmail.com> # message auto-generated for no-merge-commit merge: !140 merge feat/pruning into master [Feature] Added structured pruning (amct_pytorch.pruning) Created-by: leedongkun30-arch Commit-by: leedongkun30-arch Merged-by: cann-robot Description: ## 描述 新增 eager 模式**结构化剪枝**子系统 amct_pytorch.pruning,接口风格与 amct.quantize 对齐:对已实例化并加载权重的 torch.nn.Module 原地剪枝。覆盖三个目标域——**dense FFN 中间维 / CNN 通道 / MoE 专家**,仅剪枝“生产者↔消费者接口可验证”的维度,其余保守跳过(注意力投影、残差宽度等自动排除)。 改动为**增量式**:仅在 amct_pytorch/__init__.py 中以 PEP 562 惰性方式暴露剪枝入口,不修改既有量化代码;与 classic/graph_based 剪枝器共存,并复用其精度抽象 AutoCalibrationEvaluatorBase,使 prune→quantize 在同一预算下串联。 公开接口(__all__,与量化 1:1 对齐): - amct.prune(model, config=None, *, data, tolerance, evaluator, size_budget, finetune_fn, report) —— 原地剪枝,返回 None;可选传入 report=PruneReport() 就地收集统计(不保留任何进程级状态)。 - amct.accuracy_based_auto_prune(...) —— 按可接受精度损失自动搜索并应用满足容差的最大剪枝率,返回 AutoTuneResult,对应量化侧 accuracy_based_auto_calibration。 - 预定义配置 *_PRUNE_CFG:CNN_RECONSTRUCT / CNN_VARIANCE / DENSE_LOWVAR / FULL_STRUCTURED / MOE_MASSVAR / MOE_OUTPUT_MERGE / SENSITIVITY_ALLOC。 size_budget_prune / prune_finetune / prune_diagnose 及菜单配置为高级接口,可从 amct_pytorch.pruning 导入,不进入 __all__。剪枝与量化为正交压缩维度:先 prune 改变形状,再 amct.quantize / amct.convert。 ### 实测参考 在 16 个从零训练模型(CNN@MNIST / Dense-LM·MoE-LM@WikiText)与真实预训练 HF 模型上测得,供评审参考: - **CNN 输出保持重建**:训练后 MNIST CNN @0.3,naive variance_channel 0.343 vs reconstruct 0.574(参数量相同)。 - **Dense-LM 1% 预算空间**:无 finetune ≈0%;单遍 finetune(lr 1e-5 + warmup)后中位 27%(最高 61%)。真实 MoE(granite-1b-a400m)同样需要 finetune(≈0% → 17%)。 - **MoE 专家判据依赖路由深度**:全局 variance 劣于 mass,仅深层用 variance(boundary=K)在多专家路由上胜过 mass(OLMoE held-ppl 46.9→35.3);小专家路由(granite,32 专家)下菜单守卫正确回退到 mass。 - **敏感度分配依赖深度**:浅层网络(<10 层)6/6 胜,深层(≥10 层)4/19;guard='calib_nll' 在更差时回退均匀分配。 - **prune→int8 串联**:经恢复菜单剪枝的 SmolLM-135M 走完整 prune→int8→convert 流水线,ppl 1.649 → 剪枝后 1.699 → 叠加 int8 1.704。 ## 如何测试 本地运行单元测试: python -m pytest tests/amct_pytorch/test_pruning_*.py 覆盖核心剪枝、容差自动搜索、跨层敏感度分配、尺寸预算模式、MoE 输出合并、prune→quantize 串联,以及真实 HF 模型(Mixtral / Qwen3Moe / GraniteMoe / DeepseekV3 / Ernie4_5_Moe 等),全部通过。 ## 文档更新 - 新增 docs/zh/api/:prune.md、accuracy_based_auto_prune.md、size_budget_prune.md、prune_finetune.md、prune_diagnose.md、pruning_configs.md,并在 docs/zh/api/README.md 索引中登记。 - 新增示例 examples/algorithms/pruning/(dense / CNN / MoE)。 - amct_pytorch/pruning/README.md / README_en.md 增补“工作原理”走查(打分 → 剪枝 → 恢复 →(可选)量化),并配 5 张流程图(总流程、三个可剪枝的域、容差二分搜索、菜单择优、prune→quantize 串联),图片位于 amct_pytorch/pruning/figures/。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 代码重构 - [ ] 其他,请描述: See merge request: cann/amct!140 | 1 天前 | |
style: 执行 pre-commit 格式化(#161) Co-authored-by: fujun19<fujun19@hisilicon.com> # message auto-generated for no-merge-commit merge: !228 merge chore/precommit-format-161 into master style: 执行 pre-commit 格式化(#161) Created-by: fujun19 Commit-by: fujun19 Merged-by: cann-robot Description: ## 描述 按照 issue #161 提到的 pre-commit 本地格式化方法,对仓内 tracked C/C++ 和 Python 文件执行格式化。本 PR 仅包含 clang-format / ruff-format 自动格式化结果,不包含 ruff 历史例外配置。 ## 如何测试 - pre-commit run clang-format --all-files:Passed - pre-commit run ruff-format --all-files:Passed - 未运行完整 pre-commit run --all-files;ruff-check 的历史例外按要求未纳入本次提交。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 代码重构 - [x] 其他,请描述:pre-commit 格式化 See merge request: cann/amct!228 | 21 天前 | |
style: 执行 pre-commit 格式化(#161) Co-authored-by: fujun19<fujun19@hisilicon.com> # message auto-generated for no-merge-commit merge: !228 merge chore/precommit-format-161 into master style: 执行 pre-commit 格式化(#161) Created-by: fujun19 Commit-by: fujun19 Merged-by: cann-robot Description: ## 描述 按照 issue #161 提到的 pre-commit 本地格式化方法,对仓内 tracked C/C++ 和 Python 文件执行格式化。本 PR 仅包含 clang-format / ruff-format 自动格式化结果,不包含 ruff 历史例外配置。 ## 如何测试 - pre-commit run clang-format --all-files:Passed - pre-commit run ruff-format --all-files:Passed - 未运行完整 pre-commit run --all-files;ruff-check 的历史例外按要求未纳入本次提交。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 代码重构 - [x] 其他,请描述:pre-commit 格式化 See merge request: cann/amct!228 | 21 天前 | |
fix: 修复pre-commit告警(#161) Co-authored-by: fujun19<fujun19@hisilicon.com> # message auto-generated for no-merge-commit merge: !230 merge chore/restore-ut-coverage-161 into master fix: 修复pre-commit告警(#161) Created-by: fujun19 Commit-by: fujun19 Merged-by: cann-robot Description: ## 描述 基于最新 master 修复剩余 pre-commit 告警,主要包括: - 补齐公共导出 __all__ 或保留注册副作用导入。 - 修复布尔比较、未定义变量、未使用变量、star import、bare except 等 ruff 告警。 本次明确解决的 pre-commit 检查项如下: - clang-format:全量检查通过,本 PR 无需新增 C/C++ 格式化改动。 - ruff check:修复 F401 unused-import、F841 unused-variable、E712 true-false-comparison、F821 undefined-name、E402 module-import-not-at-top-of-file、E722 bare-except、F403 undefined-local-with-import-star、F405 undefined-local-with-import-star-usage。 - ruff check 警告:移除无效的 # noqa: E1111 标记。 - ruff format:对 ruff 格式化发现的文件执行格式化,最终全量检查通过。 ## 如何测试 已执行: bash pre-commit run --all-files python -m pytest tests/unit_test/common/models/llm/common/test_quant_apply.py tests/unit_test/common/models/llm/test_model_adapters_mocked.py tests/unit_test/common/models/llm/test_model_adapters_mocked_qwen.py tests/unit_test/workflows/test_llm_ptq.py -q python -m pytest tests/amct_pytorch/test_deepseekv3_attention.py tests/amct_pytorch/test_fp8linear_to_hif8linear.py tests/amct_pytorch/test_longcat_attention.py tests/amct_pytorch/test_mxquant.py tests/amct_pytorch/test_smoothquant.py -q python -m pytest tests/amct_pytorch/testcase_python/auto_calibration/test_fake_quant_pass.py tests/amct_pytorch/testcase_python/custom_op/test_comp_module_base.py tests/amct_pytorch/testcase_python/custom_op/test_fake_dequant_module.py tests/amct_pytorch/testcase_python/distill/test_distill_helper.py tests/amct_pytorch/testcase_python/optimizer/test_bias_fakequant_pass.py tests/amct_pytorch/testcase_python/optimizer/test_delete_resize_pass.py tests/amct_pytorch/testcase_python/optimizer/test_insert_retrain_pass.py tests/amct_pytorch/testcase_python/optimizer/test_replace_antiquant_pass.py tests/amct_pytorch/testcase_python/single_file/test_quantize_model.py tests/amct_pytorch/testcase_python/single_file/test_rnn_quant_retrain.py tests/amct_pytorch/testcase_python/single_file/test_save.py -q 结果: - pre-commit 全部通过。 - 相关 unit_test:162 passed。 - 相关 tests/amct_pytorch:17 passed。 - 相关 testcase_python:35 passed。 本地环境中 tests/unit_test/common/models/llm/test_model_adapters_mocked_glm5.py 收集阶段存在 transformers 依赖不匹配:apply_rotary_pos_emb 无法从当前本地 transformers.models.glm_moe_dsa.modeling_glm_moe_dsa 导入,未执行到本次改动。 ## 文档更新 无文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 代码重构 - [x] 其他,请描述:pre-commit 告警修复 See merge request: cann/amct!230 | 20 天前 | |
style: 执行 pre-commit 格式化(#161) Co-authored-by: fujun19<fujun19@hisilicon.com> # message auto-generated for no-merge-commit merge: !228 merge chore/precommit-format-161 into master style: 执行 pre-commit 格式化(#161) Created-by: fujun19 Commit-by: fujun19 Merged-by: cann-robot Description: ## 描述 按照 issue #161 提到的 pre-commit 本地格式化方法,对仓内 tracked C/C++ 和 Python 文件执行格式化。本 PR 仅包含 clang-format / ruff-format 自动格式化结果,不包含 ruff 历史例外配置。 ## 如何测试 - pre-commit run clang-format --all-files:Passed - pre-commit run ruff-format --all-files:Passed - 未运行完整 pre-commit run --all-files;ruff-check 的历史例外按要求未纳入本次提交。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 代码重构 - [x] 其他,请描述:pre-commit 格式化 See merge request: cann/amct!228 | 21 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 天前 | ||
| 3 个月前 | ||
| 2 个月前 | ||
| 1 天前 | ||
| 21 天前 | ||
| 1 个月前 | ||
| 21 天前 | ||
| 21 天前 | ||
| 21 天前 | ||
| 21 天前 | ||
| 20 天前 | ||
| 21 天前 | ||
| 21 天前 | ||
| 20 天前 | ||
| 21 天前 | ||
| 21 天前 | ||
| 21 天前 | ||
| 20 天前 | ||
| 21 天前 | ||
| 20 天前 | ||
| 21 天前 | ||
| 21 天前 | ||
| 1 天前 | ||
| 1 天前 | ||
| 1 天前 | ||
| 1 天前 | ||
| 1 天前 | ||
| 1 天前 | ||
| 1 天前 | ||
| 1 天前 | ||
| 1 天前 | ||
| 1 天前 | ||
| 21 天前 | ||
| 21 天前 | ||
| 20 天前 | ||
| 21 天前 |