| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
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 | 1 个月前 | |
fix: 接通文档承诺的公开导入路径,保证文档示例可直接运行 Co-authored-by: fujun19<fujun19@hisilicon.com> # message auto-generated for no-merge-commit merge: !162 merge fix/doc-auto-calibration-import into master fix: 接通文档承诺的公开导入路径,保证文档示例可直接运行 Created-by: fujun19 Commit-by: fujun19 Merged-by: cann-robot Description: ## 描述 文档(README + 各 API 页)给出的多条公开导入路径在代码中并未接通:真实实现深埋在 amct_pytorch/classic/graph_based/amct_pytorch/... 下,而文档给的是简短公开路径,用户照文档 import 即报 ModuleNotFoundError。 以**文档用法为准**补建公开转发模块(均指向健康实现,不改动任何在用逻辑)。每条修复对应的文档出处如下: ### 1. amct_pytorch.common.auto_calibration(AutoCalibrationEvaluatorBase 等 6 个基类) 新建 amct_pytorch/common/auto_calibration/,接通以下文档用法: - docs/README.md:114 —— from amct_pytorch.common.auto_calibration import AutoCalibrationEvaluatorBase - docs/zh/api/accuracy_based_auto_calibration.md:140 —— 同上(自定义 evaluator 继承基类做基于精度的自动量化) ### 2. amct_pytorch.nn.module.quantization.*(5 个 QAT 类) 新建 amct_pytorch/nn/module/quantization/ 三层包 + 5 个转发子模块,接通: - docs/README.md:641-642, 695 —— Conv2dQAT / LinearQAT - docs/zh/api/Conv2dQAT.md:23,29,223,235 —— Conv2dQAT - docs/zh/api/Conv3dQAT.md:25,31,227 —— Conv3dQAT - docs/zh/api/ConvTranspose2dQAT.md —— ConvTranspose2dQAT - docs/zh/api/LinearQAT.md —— LinearQAT - docs/zh/api/QuantCalibrationOp.md —— QuantCalibrationOp ### 3. amct_pytorch.tensor_decompose(auto_decomposition / decompose_network) 新建 amct_pytorch/tensor_decompose/,接通: - docs/README.md:1912,1924,1937 —— auto_decomposition / decompose_network - docs/zh/api/auto_decomposition.md:71 —— from amct_pytorch.tensor_decompose import auto_decomposition - docs/zh/api/decompose_network.md:68 —— from amct_pytorch.tensor_decompose import decompose_network ### 4. amct_pytorch.common.auto_channel_prune(SensitivityBase / SearchChannelBase) 新建 amct_pytorch/common/auto_channel_prune/ 指向健康实现,并修正 README 笔误: - docs/README.md:1023 —— amct.common.auto_channel_prune.sensitivity_base → amct_pytorch.common.auto_channel_prune.sensitivity_base(包名 amct→amct_pytorch) - docs/README.md:1040 —— amct.common.auto_prune.search_channel_base → amct_pytorch.common.auto_channel_prune.search_channel_base(包名修正 + 目录名 auto_prune→auto_channel_prune) - docs/README.md:1037 —— prose 中默认实现路径 auto_prune → auto_channel_prune 同步修正 ## 如何测试 隔离环境(torch 2.7.1 + NPU)实测: - 文档全部 10 条 amct_pytorch 导入语句逐条按原文执行通过 - 顶层 25 个 amct.* API 仍全部可达(新增包未破坏现有导入) - setuptools.find_packages() 可发现 6 个新建转发包,打包进 wheel 不会遗漏 ## 文档更新 修正 docs/README.md:amct→amct_pytorch、auto_prune→auto_channel_prune(共 3 处,含 1 处 prose 路径)。其余 API 页(accuracy_based_auto_calibration / Conv2dQAT / Conv3dQAT / ConvTranspose2dQAT / LinearQAT / QuantCalibrationOp / auto_decomposition / decompose_network)一字未改,靠新增转发模块接通。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 代码重构 - [ ] 其他,请描述: See merge request: cann/amct!162 | 2 个月前 | |
fix: 完成日志易用性整改(#191) Co-authored-by: zhengpeiyang<zhengpeiyang@huawei.com> # message auto-generated for no-merge-commit merge: !284 merge fix/amct-log-usability-all into master fix: 完成日志易用性整改(#191) Created-by: zhengpeiyang Commit-by: zhengpeiyang Merged-by: cann-robot Description: ## 描述 本 PR 汇总统一修复日志文案英文规范、拼写错误、英文语法问题及日志级别错配问题。 关联 Issue:#191 ## 如何测试 已通过本地 pre-commit 检查。代码变更为日志文案、拼写、语法和日志级别调整,不改变业务逻辑。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 代码重构 - [ ] 其他,请描述 See merge request: cann/amct!284 | 10 天前 | |
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 | 1 个月前 | |
feat: 优化ppl测评,解决多卡并行测评性能劣化问题 Co-authored-by: zchenbm97<chenzhuo63@hisilicon.com> # message auto-generated for no-merge-commit merge: !248 merge evaluation_opt into master feat: 优化ppl测评,解决多卡并行测评性能劣化问题 Created-by: zchenbm97 Commit-by: zchenbm97 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 将ppl的精度测评改为streaming形式,head每推理完成一个chunk,就进行CrossEntroy loss计算,优化点如下: 1. CrossEntropy计算加速:CrossEntropy计算device 从 CPU迁移到 Head 所在 NPU,避免 CPU 大规模 softmax/CrossEntropy 计算。 2. 避免每个chunk在head计算完后把完整 logits 搬回 Host,防止多卡并行ppl测评时带宽抢占。 3. 节省CPU内存占用:消除了完整 CPU logits list,Host 不再同时持有所有样本的大词表 logits, 。 4. 降低H2D/D2H的数据搬运:logits始终留在 args.device,仅增加labels从 CPU搬到设备,但其数据量只有 token ID规模,远小于 vocab logits。 * PPL 性能优化精度回归验证情况如下,耗时单位为秒 | | cpu | 耗时 | npu | 耗时 | peak_reserved_gib | | ---------------------- | ------ | ---- | ------ | ---- | ----------------- | | Qwen3.5-4B | 8.8503 | / | 8.8936 | / | / | | Qwen3.5-9B | 8.1700 | / | 8.2092 | / | / | | Qwen3.6-35B-A3B | 6.2921 | 2527 | 6.3085 | 1750 | 6.78 | | DeepSeek V4 Flash (4卡) | 4.1461 | 4122 | 4.1461 | 3097 | 13.0 | | Qwen3-235B-A22B | 5.0912 | 3509 | 5.1089 | 3055 | 4.42 | * 并行ppl测评回归验证,耗时单位为秒,4个任务并发的总耗时为269s,与最长的autoround耗时相同,说明实际产生了并行行为。 | model | algorithm | device | ppl cpu | ppl npu | 单独执行端到端耗时 | 并行执行端到端耗时 | | ----- | --------- | ------ | ------- | ------- | --------- | --------- | | Qwen3.5-4B | lac+lwc | npu:4 | 9.564 | 9.606 | 232 | 248 | | Qwen3.5-4B | autoround | npu:5 | 9.830 | 9.893 | 236 | 269 | | Qwen3.5-4B | omniquant | npu:6 | 9.912 | 9.968 | 237 | 236 | | Qwen3.5-4B | flatquant | npu:7 | 9.234 | 9.286 | 236 | 243 | ## 如何测试 <!--描述测试此改动的步骤和前提条件。--> python -m pytest tests/unit_test/workflows/ python -m pytest tests/unit_test/common/models/llm python -m pytest tests/unit_test/common/evaluate/ ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及文档更新 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [x] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 代码重构 - [ ] 其他,请描述: See merge request: cann/amct!248 | 19 天前 | |
对既有MXFP8格式的模型权重转为BF16格式工具的功能补充 Co-authored-by: zhangj1an<jianmusings@gmail.com> Co-authored-by: Wujie_Fu<wujie_fu@u.nus.edu> # message auto-generated for no-merge-commit merge: !287 merge mxfp8_to_hif4 into master 对既有MXFP8格式的模型权重转为BF16格式工具的功能补充 Created-by: Wujie_Fu Commit-by: zhangj1an;Wujie_Fu Merged-by: cann-robot Description: ## 描述 主分支上目前暂不支持对于OCP格式的MXFP8解码到BF16功能。原因是代码会把uint8/int8的scale当浮点来还原(就是把scale直接转为bf16),但其实里面存储的是指数幂,需要用2^scale来还原。(参见 https://gitcode.com/cann/amct/issues/190) 这份PR按照OCP MXFP8( https://www.opencompute.org/documents/ocp-8-bit-floating-point-specification-ofp8-revision-1-0-2023-12-01-pdf-1 )的标准支持了解码功能。当输入的模型scale dtype是uint8/int8,而且weight dtype是float8_e4m3fn或者float8_e5m2时,就会检测为MXFP8格式,并路由到mxfp_impl.py做对应解码。经过调研,目前社区中没有其他的MXFP8格式需要支持。 ## 如何测试 首先去HF下载一份qwen3.5-9b的mxfp8模型权重, Lexter3000/Qwen3.5_9b_mxfp8。另外也下载好原版的BF16模型, Qwen/Qwen3.5-9B。 然后测试以下四种格式的精度: mxfp8 bf16 mxfp8反量化为bf16 mxfp8伪量化为hif4。在lm_eval框架上,测试结果显示mxfp8版本与mxfp8转bf16精度一致,符合预期。 | 任务 | bf16 | mxfp8 | mxfp8tobf16 | mxfp8tohif4 | |---|---|---|---|---| | boolq (acc) | 89.08 | 74.40 | 74.40 | 78.04 | | arc_easy (acc_norm) | 74.20 | 71.68 | 71.68 | 73.70 | | copa (acc) | 89.00 | 87.00 | 87.00 | 90.00 | | arc_challenge (acc_norm) | 55.89 | 53.92 | 53.92 | 54.78 | | piqa (acc_norm) | 80.09 | 80.20 | 80.20 | 78.62 | | sciq (acc_norm) | 96.00 | 93.90 | 93.90 | 94.10 | 可以用以下命令进行格式转换, ### 4.2 MXFP8 → bf16(tensorwise deploy) bash cd amct python -m amct_pytorch.cli.llm.deploy \ --granularity tensor --model_name qwen3_5 \ --model /<model_dir>/Qwen3.5-9B-MXFP8 \ --output_dir /<model_dir>/Qwen3.5-9B-mxfp8_to_bf16 ### 4.3 MXFP8 → HiF4 W4A4(两步 deploy) bash # step 1: mxfp8 -> bf16(和上一步相同) # step 2: blockwise bf16 -> hif4 python -m amct_pytorch.cli.llm.deploy \ --granularity block --model_name qwen3_5 \ --model /<model_dir>/Qwen3.5-9B-mxfp8_to_bf16 \ --output_dir /<model_dir>/Qwen3.5-9B-mxfp8_to_hif4 \ --eval_mode quant --quant_dtype hifp \ --quant_target mlp attn-linear \ --bit_config amct_pytorch/configs/w4a4.yaml ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 代码重构 - [ ] 其他,请描述: See merge request: cann/amct!287 | 6 天前 | |
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 | 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 | 1 个月前 | |
feat: 为 convert_state_dict 补充 NVFP4 反量化接口 Co-authored-by: Zhang Jian<jianmusings@gmail.com> Co-authored-by: 尹航<yinhang128@gmail.com> # message auto-generated for no-merge-commit merge: !254 merge feat--nvfp4-to-bf16 into master feat: 为 convert_state_dict 补充 NVFP4 反量化接口 Created-by: yinhang-jpg Commit-by: Zhang Jian;尹航 Merged-by: cann-robot Description: ## 描述 补上 NVFP4 识别和反量化接口,接到现有 convert_state_dict() | 步骤 | 检查什么 | 通过条件 | | --- | --- | --- | | 1. 名字 | checkpoint 里有没有这对 scale | {weight_name}_scale **且** {weight_name}_scale_2 都在 original_weight_map | | 2. scale 布局 | 这份 weight_scale 像不像 NVFP4 的 E4M3 block scale | is_nvfp4_scale:weight 是 packed 2D;scale dtype ∈ {uint8,int8,float8_e4m3fn};2D 时约 [M, N//16],1D 时长度等于 M*(N//16) 或 pad(M,128)*pad(N//16,4) | 其余情形,正常走mxfp的数据处理流程。原先数据处理流程均未改动。 ## 如何测试 test_nvfp4_format.py:解码、反量化、padded scale、格式识别 test_deploy_export.py:convert_state_dict 的 NVFP4 分支,以及不被 FP8 误判 ## 文档更新 文档无更新。现有 deploy / tensorwise 用法不变,只是 convert_state_dict 多识别一种输入格式。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 代码重构 - [ ] 其他 See merge request: cann/amct!254 | 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 | 1 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 2 个月前 | ||
| 10 天前 | ||
| 1 个月前 | ||
| 19 天前 | ||
| 6 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 20 天前 | ||
| 1 个月前 |