| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[Feature][SLA] Add AscendC backend Co-authored-by: yujunyu2<yujunyu3@huawei.com> Co-authored-by: openLiBingCI<openlibing-robot@openlibing.com> # message auto-generated for no-merge-commit merge: !332 merge dev into dev [Feature][SLA] Add AscendC backend Created-by: yjy_ac Commit-by: yujunyu2;openLiBingCI Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20251224 --> # Which issue(s) this PR fixes or accomplishes > Fixes #171 # Purpose 为了得到更高推理性能,补充SLA可选AscendC上Block Sparse Attention算子后端。 # Test Plan ## 运行方式 bash # CPU:参数校验(无需 NPU) export MINDIE_TEST_MODE=CPU python -m unittest tests.layers.flash_attn.test_sparse_linear_attn -v # 全量:含 NPU 实机(需 Ascend + build/build_plugin.sh + pip install -e .) export MINDIE_TEST_MODE=ALL python -m unittest tests.layers.flash_attn.test_sparse_linear_attn -v ## 测试用例 ### 初始化(CPU) - 默认 backend 为 triton - 支持 backend:triton、ascendc - ascendc head_dim 仅 64/128;triton head_dim 仅 16/32/64/128/256 - triton 默认 BLKQ=BLKK=64;triton 块大小仅 64/128;ascendc BLKK 须为 128 倍数 - 非法 backend / head_dim / block size 初始化时抛 ParametersInvalid ### get_block_map(NPU) - head_dim=64、BLK=128:sparse_map 为 int8,shape 正确,real_topk > 0 - head_dim=128、fp16、BLK=128:同上 - BLKQ=BLKK=64:按块 64 划分,shape 正确 ### forward 校验(CPU,mock get_block_map) - ascendc / triton:非 NPU 设备抛错,且不调用 get_block_map - ascendc:forward 输入 head_dim 非 64/128 抛错 - triton:forward 输入 head_dim 非 16/32/64/128/256 抛错 ### 端到端 smoke(NPU,无 mock) - triton:head_dim=64,BLK=128 → 输出 shape (1,2,1024,64),fp16 - triton:BLKQ=BLKK=64 → 输出 shape 正确,fp16 - triton:head_dim=128 → 输出 shape (1,2,1024,128),fp16 - ascendc:head_dim=64/128 → 输出 shape/dtype 正确(950 系 inner_precise=4,其余为 1) # Test Report 测试用例验证,其中包括同输入条件下AscendC和Triton后端精度对比测试一致  相较triton后端,ascendC后端性能提升接近15倍   See merge request: Ascend/MindIE-SD!332 | 4 天前 | |
[Feature][moe]Support W8A8 MXFP8 MoE inference Co-authored-by: betta18<jiangmengyu1@huawei.com> # message auto-generated for no-merge-commit merge: !354 merge support_fused_moe_mxfp8 into dev [Feature][moe]Support W8A8 MXFP8 MoE inference Created-by: betta18 Commit-by: betta18 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20251224 --> # Purpose 本 PR 为 MindIE-SD MoE 接入 W8A8 MXFP8 量化推理能力,用于支持 A5 设备上的 MoE 前向计算。 主要修改包括: - 扩展 MoE 量化上下文,新增 W8A8 MXFP8 量化算法识别、设备约束校验和动态量化入口。 - 在 MoE MLP 阶段新增 W8A8 MXFP8 grouped MLP 计算路径,使用 npu_grouped_matmul_swiglu_quant_v2 和 MXFP scale 完成专家侧计算。 - 调整 static / dynamic dispatcher 的量化处理逻辑: - static MoE 支持 MXFP8 init routing 量化模式; - dynamic MoE 中 MXFP8 延后到 MLP 阶段量化,避免通信阶段处理不适配的 scale layout。 - 补充 A2/A3 INT8 与 A5 MXFP8 的设备区分校验,避免不支持设备误走量化路径。 - 更新 fused_moe 中文特性文档,补充 W8A8 dynamic quant 和 W8A8 MXFP8 quant 的支持范围、参数说明和使用示例。 # Test Plan 测试重点包括: - MoE 量化上下文: - W8A8 dynamic quant / W8A8 MXFP8 quant / 非量化配置解析。 - A2/A3/A5 设备支持范围校验。 - init routing quant mode 选择逻辑。 - MoE MLP: - 非量化 grouped MLP 路径。 - W8A8 dynamic quant grouped MLP 路径。 - W8A8 MXFP8 grouped MLP 路径。 - 内部动态量化输入与外部预量化输入结果一致性。 - Token dispatcher: - static dispatcher 下 INT8 / MXFP8 量化 dispatch 行为。 - dynamic dispatcher 下 INT8 提前量化、MXFP8 延后到 MLP 量化的行为。 - prequantized input 与 internal quant input 的 dispatch 结果一致性。 - 主流程: - W8A8 dynamic quant MoE 输出 shape / dtype。 - W8A8 MXFP8 quant MoE 输出 shape / dtype。 # Test Report 在 MindIE-SD 中新增和更新 MoE 相关单元测试,覆盖量化上下文、MLP 计算、token dispatch 和主流程: - tests/layers/moe/test_moe_context.py - tests/layers/moe/test_moe_mlp.py - tests/layers/moe/test_token_dispatcher.py - tests/layers/moe/test_moe.py - tests/layers/moe/common.py 测试覆盖设备区分: - 非量化路径:CPU / NPU 兼容测试。 - W8A8 dynamic quant:A2 / A3 设备测试。 - W8A8 MXFP8 quant:A5 设备测试。 已补充 docs/zh/features/fused_moe.md,说明当前支持非量化、W8A8 dynamic quant 和 W8A8 MXFP8 quant MoE 路径。 See merge request: Ascend/MindIE-SD!354 | 11 天前 | |
【docs】文档修改-增加API参考&加速API Co-authored-by: xiao-qing123<xiaoqing14@h-partners.com> # message auto-generated for no-merge-commit merge: !263 merge dev into dev 【docs】文档修改-增加API参考&加速API Created-by: xiao-qing123 Commit-by: xiao-qing123 Merged-by: ascend-robot Description: fixes [#86](https://gitcode.com/Ascend/MindIE-SD/issues/86) 1、新增API参考(社区API接口) 2、新增加速API(原社区layer层) 3、删除readme中的快速入门和单多卡并行示例内容(有单独的quick_start承载) 4、算子融合单独拆分出来,在特性章节独立存在 5、删除特性章节目录名称中的“加速特性” 6、黄区大模型检测问题修改 See merge request: Ascend/MindIE-SD!263 | 2 个月前 | |
[Bugfix][Compilation]import mindiesd crashes with std::bad_alloc when triton is not installed Co-authored-by: chy3<843049740@qq.com> # message auto-generated for no-merge-commit merge: !334 merge dev into dev [Bugfix][Compilation]import mindiesd crashes with std::bad_alloc when triton is not installed Created-by: chy3 Commit-by: chy3 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20251224 --> # Which issue(s) this PR fixes or accomplishes > Fixes #ISSUE 168\ # Purpose 当环境中未安装 triton 时,import mindiesd 会因 ModuleNotFoundError 失败,随后破坏 PyTorch C++ 运行时状态,导致任何后续张量操作触发 std::bad_alloc 或 std::length_error: vector::reserve 崩溃。现通过环境中是否有triton包来判断是否使用triton相关融合算子,具体来说: python if _HAS_TRITON and _extension_module is not None : 调用triton融合算子,如SparseLinearAttention else: def ops(*args, **kwargs): raise RuntimeError("ops requires Triton-Ascend >= 3.2.1 but it is not available.") warnings.warn( "Triton-Ascend is not available or is below 3.2.1." "xxx ops is disabled. Install required dependencies to use it.", UserWarning, ) # Test Plan - 1、在不具备要求的triton环境中使用triton融合算子,应出现userwarning,且不影响其他算子使用; - 2、在具备要求的triton环境中使用triton融合算子,可以正常调用。 # Test Report - 1、不具备要求的triton环境:  - 2、具备要求的triton环境:  See merge request: Ascend/MindIE-SD!334 | 21 天前 | |
[Bugfix][SparseEstimate]Fix uninitialized variables on invalid input_layout and align fake op with C++ plugin Co-authored-by: changetheway<guotaoyuan1@h-partners.com> # message auto-generated for no-merge-commit merge: !356 merge sparse_block_estimate into dev [Bugfix][SparseEstimate]Fix uninitialized variables on invalid input_layout and align fake op with C++ plugin Created-by: changetheway Commit-by: changetheway Merged-by: ascend-robot Description: # Which issue(s) this PR fixes or accomplishes > Fixes #186 # Purpose 修复 sparse_block_estimate C++ plugin 中的 input_layout 校验缺陷。 **问题根因:** - csrc/plugin/sparse_block_estimate.cpp 中,当 input_layout 不属于 BNSD/BSND/BSH 时,else 分支仅打印 std::cerr 日志,不 return 也不抛异常,导致 b/nq/s/d 四个局部变量保持未初始化状态,后续用这些随机值计算 tensor shape 并分配 NPU 内存。 - Python fake op (mindiesd/layers/_custom_ops.py) 不支持 BSH layout,与 C++ plugin 支持范围不一致;且非法 layout 的错误语义不一致(fake op 抛异常,C++ 不抛)。 **本次修改内容:** 1. **C++ Plugin (csrc/plugin/sparse_block_estimate.cpp)** - 将 int64_t b/nq/s/d 初始化为 0,消除未初始化变量风险 - 将 else 分支中的 std::cerr 替换为 TORCH_CHECK(false, ...),非法 layout 立即抛出 RuntimeError 2. **Python Fake Op (mindiesd/layers/_custom_ops.py)** - 新增 elif input_layout == "BSH" 分支,与 C++ plugin 的 BSH 支持对齐 - 统一错误消息为 supports 'BNSD', 'BSND', 'BSH' 3. **测试 (tests/plugin/test_sparseblockestimate.py)** - 新增 test_bsh_layout_output_shape:验证 BSH layout 正常工作且输出 shape 正确 - 新增 test_invalid_layout_empty_string:验证空字符串 layout 抛出 RuntimeError - 原有 test_invalid_layout 补充 docstring # Test Plan 1. C++ 编译验证: ```bash cd build && bash build_plugin.sh 预期:libPTAExtensionOPS.so 编译成功,无编译错误或警告。 NPU 功能测试: MINDIE_TEST_MODE=ALL python -m pytest tests/plugin/test_sparseblockestimate.py -v 预期:全部测试通过,包括新增的 test_bsh_layout_output_shape 和 test_invalid_layout_empty_string。 CPU 模式 fake op 测试(无需 NPU 设备): MINDIE_TEST_MODE=CPU python -m pytest tests/plugin/test_sparseblockestimate.py -v -k "test_invalid" 验证非法 layout 在 fake op 路径也能正确抛出异常。 Test Report  See merge request: Ascend/MindIE-SD!356 | 11 天前 | |
【docs】文档修改-增加API参考&加速API Co-authored-by: xiao-qing123<xiaoqing14@h-partners.com> # message auto-generated for no-merge-commit merge: !263 merge dev into dev 【docs】文档修改-增加API参考&加速API Created-by: xiao-qing123 Commit-by: xiao-qing123 Merged-by: ascend-robot Description: fixes [#86](https://gitcode.com/Ascend/MindIE-SD/issues/86) 1、新增API参考(社区API接口) 2、新增加速API(原社区layer层) 3、删除readme中的快速入门和单多卡并行示例内容(有单独的quick_start承载) 4、算子融合单独拆分出来,在特性章节独立存在 5、删除特性章节目录名称中的“加速特性” 6、黄区大模型检测问题修改 See merge request: Ascend/MindIE-SD!263 | 2 个月前 | |
feat(adalayernorm): 支持 [B,S,H] 形状的 scale/shift 以适配 Qwen-Image Co-authored-by: muziyuhui666<lijianfu9@huawei.com> # message auto-generated for no-merge-commit merge: !257 merge feat/qwen-image-adaln-bsh into dev feat(adalayernorm): 支持 [B,S,H] 形状的 scale/shift 以适配 Qwen-Image Created-by: muziyuhui666 Commit-by: muziyuhui666 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20251224 --> # Which issue(s) this PR fixes or accomplishes > 本 PR 未关联已有 issue,如需跟踪可后续补充。 > No related issue yet. # Purpose mindiesd.layers.layernorm_scale_shift(AdaLayerNorm)当前仅支持 scale / shift 为 [B, H] 或 [B, 1, H], 即同一 batch 内所有 token 共享同一组调制参数。 在 Qwen-Image / Qwen-Image-Edit-2511 等模型中,AdaLayerNorm 使用的是 **token-wise modulation**, scale 和 shift 形状为 [B, S, H],每个 token 有独立的调制参数。因此这些模型当前无法直接使用 mindiesd 提供的融合 AdaLayerNorm 接口,只能回退到手写的非融合实现,影响推理性能。 本 PR 对 mindiesd/layers/adalayernorm.py 做纯 Python 层适配,新增对 [B, S, H] 形状 scale / shift 的支持, **不涉及 C++ / AscendC 算子改动**,通过等价 reshape 复用已有 adaln / adaln_v2 NPU 融合算子。 主要改动: 1. check_input_params - 放开 scale / shift 维度校验:允许 [B, H]、[B, 1, H]、[B, S, H] 三种形状。 - 增加 batch 维一致性校验(scale.size(0) == x.size(0)、shift.size(0) == x.size(0))。 - 调整校验顺序:先统一校验 dim,再校验 size,对异常 tensor 给出更友好的报错。 2. 新增两个内部辅助函数 - _is_tokenwise_modulation(x, tensor):判断是否为真正的 token-wise 调制(dim==3 且 S==x.size(1) 且 x.size(1) != 1)。 - _expand_modulation_to_tokenwise(x, tensor):将 [B, H] / [B, 1, H] 按需 expand 到 [B, S, H]。 3. layernorm_scale_shift fused 路径 - 当 scale 或 shift 为 token-wise 时,将 x reshape 为 [B*S, 1, H]、 scale / shift 统一 expand + reshape 到 [B*S, H],复用现有 ops.adaln / ops.adaln_v2,输出再 reshape 回 [B, S, H]。 - 数学上与 layernorm(x) * (1 + scale) + shift 的非融合实现严格等价。 - 原 [B, H] / [B, 1, H] 路径完全保留,不影响现有模型性能与行为。 4. 非融合(fused=False)路径 - 保留原有 scale[:, None]、shift[:, None] 广播逻辑;对已经是 [B, S, H] 的输入天然兼容,无需额外改动。 # Test Plan 单元测试文件:tests/layers/test_adalayernorm.py 新增 / 调整的用例: 1. **非法第二维校验(已有用例调整)** - test_scale_invalid_second_dim / test_shift_invalid_second_dim: 使用 [B, 512, H](S=512,而 x 的 S=1024)构造非法输入,验证 check_input_params 抛出 ParametersInvalid。 2. **[B, S, H] + affine LayerNorm 数值等价** - test_layernorm_scale_shift_bsh_use_affine: scale / shift 均为 [B, S, H],对比 fused=True 与 fused=False 输出一致。 3. **[B, S, H] + non-affine LayerNorm 数值等价** - test_layernorm_scale_shift_bsh_non_affine: elementwise_affine=False,scale / shift 均为 [B, S, H],对比融合 / 非融合输出一致。 4. **混合形状数值等价** - test_layernorm_scale_shift_bsh_mixed_modulation: scale 为 [B, H],shift 为 [B, S, H],对比融合 / 非融合输出一致。 5. 其余原有用例([B, H] / [B, 1, H]、非法 dim、非法 shape、affine / non-affine)全部保留,保证存量行为不回退。 如何复现测试: ```bash # 在装有 MindIE-SD 及 NPU 环境的机器上 cd MindIE-SD pytest tests/layers/test_adalayernorm.py -v See merge request: Ascend/MindIE-SD!257 | 1 个月前 | |
[Feature][moe]Support W8A8 MXFP8 MoE inference Co-authored-by: betta18<jiangmengyu1@huawei.com> # message auto-generated for no-merge-commit merge: !354 merge support_fused_moe_mxfp8 into dev [Feature][moe]Support W8A8 MXFP8 MoE inference Created-by: betta18 Commit-by: betta18 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20251224 --> # Purpose 本 PR 为 MindIE-SD MoE 接入 W8A8 MXFP8 量化推理能力,用于支持 A5 设备上的 MoE 前向计算。 主要修改包括: - 扩展 MoE 量化上下文,新增 W8A8 MXFP8 量化算法识别、设备约束校验和动态量化入口。 - 在 MoE MLP 阶段新增 W8A8 MXFP8 grouped MLP 计算路径,使用 npu_grouped_matmul_swiglu_quant_v2 和 MXFP scale 完成专家侧计算。 - 调整 static / dynamic dispatcher 的量化处理逻辑: - static MoE 支持 MXFP8 init routing 量化模式; - dynamic MoE 中 MXFP8 延后到 MLP 阶段量化,避免通信阶段处理不适配的 scale layout。 - 补充 A2/A3 INT8 与 A5 MXFP8 的设备区分校验,避免不支持设备误走量化路径。 - 更新 fused_moe 中文特性文档,补充 W8A8 dynamic quant 和 W8A8 MXFP8 quant 的支持范围、参数说明和使用示例。 # Test Plan 测试重点包括: - MoE 量化上下文: - W8A8 dynamic quant / W8A8 MXFP8 quant / 非量化配置解析。 - A2/A3/A5 设备支持范围校验。 - init routing quant mode 选择逻辑。 - MoE MLP: - 非量化 grouped MLP 路径。 - W8A8 dynamic quant grouped MLP 路径。 - W8A8 MXFP8 grouped MLP 路径。 - 内部动态量化输入与外部预量化输入结果一致性。 - Token dispatcher: - static dispatcher 下 INT8 / MXFP8 量化 dispatch 行为。 - dynamic dispatcher 下 INT8 提前量化、MXFP8 延后到 MLP 量化的行为。 - prequantized input 与 internal quant input 的 dispatch 结果一致性。 - 主流程: - W8A8 dynamic quant MoE 输出 shape / dtype。 - W8A8 MXFP8 quant MoE 输出 shape / dtype。 # Test Report 在 MindIE-SD 中新增和更新 MoE 相关单元测试,覆盖量化上下文、MLP 计算、token dispatch 和主流程: - tests/layers/moe/test_moe_context.py - tests/layers/moe/test_moe_mlp.py - tests/layers/moe/test_token_dispatcher.py - tests/layers/moe/test_moe.py - tests/layers/moe/common.py 测试覆盖设备区分: - 非量化路径:CPU / NPU 兼容测试。 - W8A8 dynamic quant:A2 / A3 设备测试。 - W8A8 MXFP8 quant:A5 设备测试。 已补充 docs/zh/features/fused_moe.md,说明当前支持非量化、W8A8 dynamic quant 和 W8A8 MXFP8 quant MoE 路径。 See merge request: Ascend/MindIE-SD!354 | 11 天前 | |
[Feature][compilation]Fix timing measurement and add MulAdd fusion pattern Co-authored-by: blian6<bin.lian@outlook.com> Co-authored-by: blian<lianbin@huawei.com> # message auto-generated for no-merge-commit merge: !270 merge dev into dev [Feature][compilation]Add muls_add Triton kernel fusion pattern, benchmark utilities, and framework fixes Created-by: blian Commit-by: blian6;blian Merged-by: ascend-robot Description: # Which issue(s) this PR fixes or accomplishes 修复compilation模块的benchmark方法,并添加triton算子的感知方案 # Purpose 本 PR 包含两部分工作: ## Part A: muls_add Triton kernel 融合 参考 vllm-ascend 的 muls_add 融合方案,将 mul_add_pattern.py 中的代数优化替换为 kernel 级融合: - **新增** mindiesd/layers/triton_utils.py — Triton Ascend 辅助函数,含 _TRITON_ON_ASCEND 运行时检测 - **新增** mindiesd/layers/muls_add.py — muls_add(x, y, scale) 逐元素融合 kernel(Triton 优先 + torch 自动降级),通过 torch.library.custom_op 注册为 torch.ops.mindiesd.muls_add - **重构** mindiesd/compilation/patterns/mul_add_pattern.py — 工厂函数 create(dtype, scale) + PatternBase 静态接口;pattern 从 mul(a,c)+mul(b,c) 改为 x * scale + y;replacement 从 mul(add(a,b),c) 改为 muls_add(x, y, scale) kernel 调用 - **修改** mindiesd/layers/__init__.py — 导出 muls_add - **新增** tests/layers/test_muls_add.py — 13 项 kernel 单元测试(dtype/shape/scale/边界/inplace/device 保真性) - **修改** tests/compilation/patterns/test_mul_add_pattern.py — 适配 2-输入 + scale pattern,仅保留正确性断言(cosine similarity ≥ 2^-7) ## Part B: benchmark 基础设施与框架修复 - **新增** tests/compilation/test_bench_utils.py — 公共 benchmark 函数(warmup + sync + 多迭代 + 后5平均),替代原有不准确的 time.perf_counter() 单次测量 - **修复** 4 个 pattern 测试文件接入新 benchmark,断言改为 compiled_time < original_time: - tests/compilation/patterns/test_adelayernorm_pattern.py - tests/compilation/patterns/test_gelu_pattern.py - tests/compilation/patterns/test_rmsnorm_pattern.py - tests/compilation/patterns/test_rope_pattern.py - **修复** passes/__init__.py 中 threading.Lock 误用(threading.Lock() → Lock 实例) - FusionPatterns 新增 enable_mul_add 开关 - passes/__init__.py 新增末尾换行符 - **移除** tests/compilation/test_backend.py(SamplePass 为数学恒等变换,不支持 CPU 运行) # Test Plan ### Kernel 层测试 tests/layers/test_muls_add.py — 13 项,覆盖 float32/float16/bfloat16 三种 dtype × 5 种 shape × 7 种 scale 组合,边界值(scale=0/1/-1),inplace 安全性,device/dtype 保真性,多次调用一致性。 ### Pattern 集成测试 tests/compilation/patterns/test_mul_add_pattern.py — 4 项(bfloat16, float16, float32, 32×8192),验证 torch.compile + MindieSDBackend 全链路,cosine similarity ≥ 2^-7。 ### Benchmark + 注册测试 - tests/compilation/test_pattern_registration.py — enable_mul_add 开关测试 - tests/compilation/test_bench_utils.py — benchmark 工具函数 - tests/compilation/patterns/test_adelayernorm_pattern.py - tests/compilation/patterns/test_gelu_pattern.py - tests/compilation/patterns/test_rmsnorm_pattern.py - tests/compilation/patterns/test_rope_pattern.py ### 远端验证命令 bash python -m pytest tests/layers/test_muls_add.py -v python -m pytest tests/compilation/patterns/ -v python -m pytest tests/compilation/test_pattern_registration.py -v Test Report 环境 Ascend 910B (175.99.1.3), torch 2.8.0, torch_npu 2.8.0, triton_ascend 3.2.0 Kernel 单元测试 13/13 passed, 15 subtests Pattern 集成测试 4/4 passed Benchmark + 注册测试 9/9 passed Triton 硬件 40 vector cores, 20 AI cores See merge request: Ascend/MindIE-SD!270 | 1 个月前 | |
[Bugfix][ops]Add dimension validation to prevent size_t underflow in layernorm Co-authored-by: changetheway<guotaoyuan1@h-partners.com> # message auto-generated for no-merge-commit merge: !305 merge layernorm into dev [Bugfix][ops]Add dimension validation to prevent size_t underflow in layernorm Created-by: changetheway Commit-by: changetheway Merged-by: ascend-robot Description: # Which issue(s) this PR fixes or accomplishes > Fix #<141> # Purpose 修复 csrc/plugin/layernorm.cpp 中 size_t 下溢导致越界迭代与潜在内存破坏的安全漏洞。 具体修复: 1. **C++ 算子层**:在 beginAxis = inputNdim - normNdim 计算前增加 TORCH_CHECK(normNdim <= inputNdim),当 normalized_shape 维数大于输入张量维数时直接抛出 RuntimeError,阻断无符号下溢路径。 2. **Python 入口层**:在 mindiesd/layers/norm.py::check_input_params() 中增加 len(layernorm.normalized_shape) > x.dim() 前置校验,使公开 API 路径在调用 C++ 算子前即被拒绝。 3. **Fake Op 层**:在 mindiesd/layers/_custom_ops.py::layernorm_fake() 中同步增加相同维数校验,保持测试 fake 模式与真实算子行为一致。 4. **边界用例测试**:在 tests/layers/test_layernorm.py 和 tests/plugin/test_layernorm.py 中补充 normalized_shape 过大、等于、小于输入维数三类边界测试。 # Test Plan 1. 编译验证:cd build && bash build.sh 2. 运行 layers 层测试:pytest tests/layers/test_layernorm.py -v 3. 运行 plugin 层测试:pytest tests/plugin/test_layernorm.py -v # Test Report - 编译:build.sh 成功 - tests/layers/test_layernorm.py:6 passed(含新增 3 个边界用例)  - tests/plugin/test_layernorm.py:4 passed(含新增 2 个边界用例)  See merge request: Ascend/MindIE-SD!305 | 30 天前 | |
[Feature][build]支持多 torch 版本 wheel 打包 Co-authored-by: guowenna1<guowenna1@huawei.com> # message auto-generated for no-merge-commit merge: !342 merge pypi into dev [Feature][build]支持多 torch 版本 wheel 打包 Created-by: guowenna1 Commit-by: guowenna1 Merged-by: ascend-robot Description: # Which issue(s) this PR fixes or accomplishes https://gitcode.com/Ascend/MindIE-SD/issues/180 # Purpose 本 PR 支持构建一个可适配多个 torch 版本的 MindIE-SD wheel 包,同时保留原有固定 torch 版本构建方式。 主要变更: - 新增 MINDIESD_WHEEL_MODE=multi_torch 打包模式。 - 默认仍保持原有固定 torch 版本构建方式不变。 - 运行时根据当前 torch.__version__ 自动选择对应的 libPTAExtensionOPS.so。 - 支持在同一个 wheel 中包含 torch 2.6、2.7、2.8、2.9、2.10 对应的 plugin 动态库。 - 新增 build/build_multi_torch_wheel.sh,用于从已准备好的 torch 容器中编译并收集多版本 plugin。 - 更新 package data 规则,支持打包 plugin/torchXX/*.so。 - 将 distribution 标记为二进制包,便于后续通过 auditwheel 修复为 PyPI 可接受的 manylinux wheel。 - 支持通过 ASCEND_OP_NAME 和 ASCEND_COMPUTE_UNIT 配置 Ascend ops 构建范围。 # Test Plan 可按以下方式验证: 1. 检查 Python 和 shell 语法: ``bash python3 -m py_compile setup.py mindiesd/layers/register_ops.py bash -n build/build_ops.sh bash -n build/build_multi_torch_wheel.sh 构建多 torch 版本 wheel: bash bash build/build_multi_torch_wheel.sh 检查 wheel 中是否包含多版本 plugin: bash python3 - <<'PY' import zipfile from pathlib import Path wheel = Path("dist/mindiesd-3.0.0-cp311-cp311-linux_aarch64.whl") with zipfile.ZipFile(wheel) as zf: libs = sorted(name for name in zf.namelist() if name.endswith("libPTAExtensionOPS.so")) print("\n".join(libs)) PY 修复为 PyPI 可接受的 manylinux wheel: bash python3 -m auditwheel repair \ --plat manylinux_2_34_aarch64 \ -w dist/repaired \ dist/mindiesd-3.0.0-cp311-cp311-linux_aarch64.whl 检查上传包元数据: bash python3 -m twine check dist/repaired/*.whl Test Report 已执行以下检查: bash python3 -m py_compile setup.py mindiesd/layers/register_ops.py bash -n build/build_ops.sh bash -n build/build_multi_torch_wheel.sh 结果:通过。 已在以下容器中验证 multi-torch wheel 构建流程: lala_torch26 lala_torch27 lala_torch28 lala_torch29 lala_torch210 生成的 wheel 包含以下 plugin: mindiesd/plugin/torch26/libPTAExtensionOPS.so mindiesd/plugin/torch27/libPTAExtensionOPS.so mindiesd/plugin/torch28/libPTAExtensionOPS.so mindiesd/plugin/torch29/libPTAExtensionOPS.so mindiesd/plugin/torch210/libPTAExtensionOPS.so PyPI 上传包检查: bash python3 -m twine check dist/repaired/mindiesd-3.0.0-cp311-cp311-manylinux_2_34_aarch64.whl 结果:通过。 补充说明: 1. **变更类别** 功能增强 / 构建与发布 2. **影响文件** setup.py、pyproject.toml、mindiesd/layers/register_ops.py、build/build_ops.sh、build/build_multi_torch_wheel.sh`、quant flash attention 相关 opdef 文件。 See merge request: Ascend/MindIE-SD!342 | 16 天前 | |
【docs】文档修改-增加API参考&加速API Co-authored-by: xiao-qing123<xiaoqing14@h-partners.com> # message auto-generated for no-merge-commit merge: !263 merge dev into dev 【docs】文档修改-增加API参考&加速API Created-by: xiao-qing123 Commit-by: xiao-qing123 Merged-by: ascend-robot Description: fixes [#86](https://gitcode.com/Ascend/MindIE-SD/issues/86) 1、新增API参考(社区API接口) 2、新增加速API(原社区layer层) 3、删除readme中的快速入门和单多卡并行示例内容(有单独的quick_start承载) 4、算子融合单独拆分出来,在特性章节独立存在 5、删除特性章节目录名称中的“加速特性” 6、黄区大模型检测问题修改 See merge request: Ascend/MindIE-SD!263 | 2 个月前 | |
[Feature][compilation]Fix timing measurement and add MulAdd fusion pattern Co-authored-by: blian6<bin.lian@outlook.com> Co-authored-by: blian<lianbin@huawei.com> # message auto-generated for no-merge-commit merge: !270 merge dev into dev [Feature][compilation]Add muls_add Triton kernel fusion pattern, benchmark utilities, and framework fixes Created-by: blian Commit-by: blian6;blian Merged-by: ascend-robot Description: # Which issue(s) this PR fixes or accomplishes 修复compilation模块的benchmark方法,并添加triton算子的感知方案 # Purpose 本 PR 包含两部分工作: ## Part A: muls_add Triton kernel 融合 参考 vllm-ascend 的 muls_add 融合方案,将 mul_add_pattern.py 中的代数优化替换为 kernel 级融合: - **新增** mindiesd/layers/triton_utils.py — Triton Ascend 辅助函数,含 _TRITON_ON_ASCEND 运行时检测 - **新增** mindiesd/layers/muls_add.py — muls_add(x, y, scale) 逐元素融合 kernel(Triton 优先 + torch 自动降级),通过 torch.library.custom_op 注册为 torch.ops.mindiesd.muls_add - **重构** mindiesd/compilation/patterns/mul_add_pattern.py — 工厂函数 create(dtype, scale) + PatternBase 静态接口;pattern 从 mul(a,c)+mul(b,c) 改为 x * scale + y;replacement 从 mul(add(a,b),c) 改为 muls_add(x, y, scale) kernel 调用 - **修改** mindiesd/layers/__init__.py — 导出 muls_add - **新增** tests/layers/test_muls_add.py — 13 项 kernel 单元测试(dtype/shape/scale/边界/inplace/device 保真性) - **修改** tests/compilation/patterns/test_mul_add_pattern.py — 适配 2-输入 + scale pattern,仅保留正确性断言(cosine similarity ≥ 2^-7) ## Part B: benchmark 基础设施与框架修复 - **新增** tests/compilation/test_bench_utils.py — 公共 benchmark 函数(warmup + sync + 多迭代 + 后5平均),替代原有不准确的 time.perf_counter() 单次测量 - **修复** 4 个 pattern 测试文件接入新 benchmark,断言改为 compiled_time < original_time: - tests/compilation/patterns/test_adelayernorm_pattern.py - tests/compilation/patterns/test_gelu_pattern.py - tests/compilation/patterns/test_rmsnorm_pattern.py - tests/compilation/patterns/test_rope_pattern.py - **修复** passes/__init__.py 中 threading.Lock 误用(threading.Lock() → Lock 实例) - FusionPatterns 新增 enable_mul_add 开关 - passes/__init__.py 新增末尾换行符 - **移除** tests/compilation/test_backend.py(SamplePass 为数学恒等变换,不支持 CPU 运行) # Test Plan ### Kernel 层测试 tests/layers/test_muls_add.py — 13 项,覆盖 float32/float16/bfloat16 三种 dtype × 5 种 shape × 7 种 scale 组合,边界值(scale=0/1/-1),inplace 安全性,device/dtype 保真性,多次调用一致性。 ### Pattern 集成测试 tests/compilation/patterns/test_mul_add_pattern.py — 4 项(bfloat16, float16, float32, 32×8192),验证 torch.compile + MindieSDBackend 全链路,cosine similarity ≥ 2^-7。 ### Benchmark + 注册测试 - tests/compilation/test_pattern_registration.py — enable_mul_add 开关测试 - tests/compilation/test_bench_utils.py — benchmark 工具函数 - tests/compilation/patterns/test_adelayernorm_pattern.py - tests/compilation/patterns/test_gelu_pattern.py - tests/compilation/patterns/test_rmsnorm_pattern.py - tests/compilation/patterns/test_rope_pattern.py ### 远端验证命令 bash python -m pytest tests/layers/test_muls_add.py -v python -m pytest tests/compilation/patterns/ -v python -m pytest tests/compilation/test_pattern_registration.py -v Test Report 环境 Ascend 910B (175.99.1.3), torch 2.8.0, torch_npu 2.8.0, triton_ascend 3.2.0 Kernel 单元测试 13/13 passed, 15 subtests Pattern 集成测试 4/4 passed Benchmark + 注册测试 9/9 passed Triton 硬件 40 vector cores, 20 AI cores See merge request: Ascend/MindIE-SD!270 | 1 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 4 天前 | ||
| 11 天前 | ||
| 2 个月前 | ||
| 21 天前 | ||
| 11 天前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 11 天前 | ||
| 1 个月前 | ||
| 30 天前 | ||
| 16 天前 | ||
| 2 个月前 | ||
| 1 个月前 |