文件最后提交记录最后更新时间
[Bugfix][log]Unify MindIE SD logging and improve diagnostics Co-authored-by: guowenna1<guowenna1@huawei.com> # message auto-generated for no-merge-commit merge: !328 merge 0603_log into dev [Bugfix][log]Unify MindIE SD logging and improve diagnostics Created-by: guowenna1 Commit-by: guowenna1 Merged-by: ascend-robot Description: # Which issue(s) this PR fixes or accomplishes Fix part of https://gitcode.com/Ascend/MindIE-SD/issues/158 # Purpose 本 PR 修复 MindIE SD 日志问题,主要包括: 1. 统一 MindIE SD Python 模块日志出口,避免 compilation、share_memory 等模块直接使用标准库 logging.getLogger(__name__),导致日志格式、落盘路径、过滤级别和开关行为不一致。 2. 优化日志模块默认输出格式,确保默认与 verbose 模式均包含 MindIE SD 组件标识。 3. 精简默认 INFO 场景日志,将正常流程、调试态信息降级为 DEBUG,避免默认运行场景产生不必要日志。 4. 增强 WARNING/ERROR 日志内容,补充问题描述、可能根因、参数期望值/实际值和进一步排查建议。 5. 修复 pre-commit 暴露的日志格式、pylint、bandit、typos 等问题,包括日志参数数量不匹配、拼写错误、动态 API 静态检查误报标注和 EPLB scheduler 嵌套层级过深问题。eplb_scheduler、greedy_algorithm中此类改动较多,多是形式改动,无实际影响。 # Test Plan 1. 执行 pre-commit 全量检查,覆盖 ruff、pylint、bandit、typos 等静态质量门禁。 2. 执行 Python 编译检查,确认本次修改未引入语法错误。 3. 执行 git diff 空白检查,确认无行尾空白、格式污染。 4. 白盒检查 mindiesd 正式代码中默认 INFO 日志是否清理完成。 5. 白盒检查除日志模块本体外,是否仍存在直接使用标准库 logging.getLogger(__name__) 的模块。 # Test Report 已执行并通过: ![image.png](https://raw.gitcode.com/user-images/assets/8476587/ff59361f-df29-445c-b41f-a0de7bc44ff2/image.png 'image.png') See merge request: Ascend/MindIE-SD!32820 天前
[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.pymuls_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__.pythreading.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.pyenable_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!2701 个月前
[Feature][compilation]Add ACLGraph backend with NPUGraph capture and replay support Co-authored-by: blian<lianbin@huawei.com> # message auto-generated for no-merge-commit merge: !269 merge dev into dev [Feature][compilation]Add ACLGraph backend with NPUGraph capture and replay support Created-by: blian Commit-by: blian Merged-by: ascend-robot Description: ## Which issue(s) this PR fixes or accomplishes 新增 ACLGraph 加速能力,将 torch.compile 编译后的 FX 图通过 NPUGraph 捕获为静态执行图,replay 时消除动态调度开销。 ## Purpose 基于 MindIE-LLM 与 vllm-ascend 的参考实现,为 MindIE-SD 的 torch.compile 编译流程补充 ACLGraph 加速栈: - 提供两种模式:aclgraph_only(仅图捕获)和 aclgraph_with_compile(算子融合 + 图捕获) - 集成多项可靠性/性能优化(全局内存池、异步 copy stream、数据搬运冗余检测、输入校验、GC 抑制等) - 将 ACLGraph 逻辑从 mindie_sd_backend.py 剥离为独立模块 aclgraph_backend.py - 提供完整的中文用户文档和测试覆盖 ## Test Plan - UT 层:35 个 CPU 单测(配置默认值、路由矩阵、dataclass、工具函数),通过 tests/UT/run.py 执行 - NPU 层:11 个集成测试(输出一致性、图缓存、多输出、混合输入、变长输入 padding),通过 pytest tests/compilation/test_aclgraph_backend.py -v 执行 ## Test Report - UT: 35/35 PASSED (local) - NPU integration: 11/11 PASSED (Ascend 910B, aarch64, CANN 8.0.0, PyTorch 2.8.0) See merge request: Ascend/MindIE-SD!2691 个月前
[Feature][compilation] 支持自定义decomposition,使得compile时可控的算子拆分 Co-authored-by: blian6<bin.lian@outlook.com> # message auto-generated for no-merge-commit merge: !82 merge dev-compilation-decomposition into dev [Feature][compilation] 支持自定义decomposition,使得compile时可控的算子拆分 Created-by: blian Commit-by: blian6 Merged-by: ascend-robot Description: 背景 当使能compile时,默认的decomposition会将算子进行拆分,但现昇腾无法对拆分的算子进行融合,导致整体性能劣化。 方案 通过自定义decomposition,在aot和patternmatcher阶段使能,使得不符合预期的算子拆分行为不再发生。 See merge request: Ascend/MindIE-SD!825 个月前
[bugfix]aclgraph fix:clone static inputs in ACLGraph capture to prevent stale data_ptr precision issue Co-authored-by: hyh_hh<huyinghong1@huawei.com> # message auto-generated for no-merge-commit merge: !326 merge aclgraph into dev [bugfix]aclgraph fix:clone static inputs in ACLGraph capture to prevent stale data_ptr precision issue Created-by: hyh_hh Commit-by: hyh_hh Merged-by: ascend-robot Description: # Purpose ACLGraph 后端精度修复与内存优化: - 修复 ACLGraph capture 阶段静态缓冲区引用 Dynamo example inputs 导致的 stale data_ptr 精度问题 - 新增 aclgraph_lazy_capture 模式,延迟 capture 至首次推理并使用 detach() 替代 clone(),解决多子图模型(60+ blocks)的 OOM 问题 - 新增 aclgraph_max_entries 配置,限制每个闭包的 entry 数量,防止动态输入形状下的显存无限增长 # Test Plan 1. TI2V-5B + aclgraph_lazy_capture=False(默认):验证输出视频精度正确 2. qwen-image-edit2509 + aclgraph_lazy_capture=True:验证无 OOM 且精度正确 # Test Report - TI2V-5B 默认配置:精度正确 ✅ - qwen-image-edit2509 lazy 模式:无 OOM,精度正确 ✅ See merge request: Ascend/MindIE-SD!32619 天前
[bugfix]aclgraph fix:clone static inputs in ACLGraph capture to prevent stale data_ptr precision issue Co-authored-by: hyh_hh<huyinghong1@huawei.com> # message auto-generated for no-merge-commit merge: !326 merge aclgraph into dev [bugfix]aclgraph fix:clone static inputs in ACLGraph capture to prevent stale data_ptr precision issue Created-by: hyh_hh Commit-by: hyh_hh Merged-by: ascend-robot Description: # Purpose ACLGraph 后端精度修复与内存优化: - 修复 ACLGraph capture 阶段静态缓冲区引用 Dynamo example inputs 导致的 stale data_ptr 精度问题 - 新增 aclgraph_lazy_capture 模式,延迟 capture 至首次推理并使用 detach() 替代 clone(),解决多子图模型(60+ blocks)的 OOM 问题 - 新增 aclgraph_max_entries 配置,限制每个闭包的 entry 数量,防止动态输入形状下的显存无限增长 # Test Plan 1. TI2V-5B + aclgraph_lazy_capture=False(默认):验证输出视频精度正确 2. qwen-image-edit2509 + aclgraph_lazy_capture=True:验证无 OOM 且精度正确 # Test Report - TI2V-5B 默认配置:精度正确 ✅ - qwen-image-edit2509 lazy 模式:无 OOM,精度正确 ✅ See merge request: Ascend/MindIE-SD!32619 天前
[Bugfix][log]Unify MindIE SD logging and improve diagnostics Co-authored-by: guowenna1<guowenna1@huawei.com> # message auto-generated for no-merge-commit merge: !328 merge 0603_log into dev [Bugfix][log]Unify MindIE SD logging and improve diagnostics Created-by: guowenna1 Commit-by: guowenna1 Merged-by: ascend-robot Description: # Which issue(s) this PR fixes or accomplishes Fix part of https://gitcode.com/Ascend/MindIE-SD/issues/158 # Purpose 本 PR 修复 MindIE SD 日志问题,主要包括: 1. 统一 MindIE SD Python 模块日志出口,避免 compilation、share_memory 等模块直接使用标准库 logging.getLogger(__name__),导致日志格式、落盘路径、过滤级别和开关行为不一致。 2. 优化日志模块默认输出格式,确保默认与 verbose 模式均包含 MindIE SD 组件标识。 3. 精简默认 INFO 场景日志,将正常流程、调试态信息降级为 DEBUG,避免默认运行场景产生不必要日志。 4. 增强 WARNING/ERROR 日志内容,补充问题描述、可能根因、参数期望值/实际值和进一步排查建议。 5. 修复 pre-commit 暴露的日志格式、pylint、bandit、typos 等问题,包括日志参数数量不匹配、拼写错误、动态 API 静态检查误报标注和 EPLB scheduler 嵌套层级过深问题。eplb_scheduler、greedy_algorithm中此类改动较多,多是形式改动,无实际影响。 # Test Plan 1. 执行 pre-commit 全量检查,覆盖 ruff、pylint、bandit、typos 等静态质量门禁。 2. 执行 Python 编译检查,确认本次修改未引入语法错误。 3. 执行 git diff 空白检查,确认无行尾空白、格式污染。 4. 白盒检查 mindiesd 正式代码中默认 INFO 日志是否清理完成。 5. 白盒检查除日志模块本体外,是否仍存在直接使用标准库 logging.getLogger(__name__) 的模块。 # Test Report 已执行并通过: ![image.png](https://raw.gitcode.com/user-images/assets/8476587/ff59361f-df29-445c-b41f-a0de7bc44ff2/image.png 'image.png') See merge request: Ascend/MindIE-SD!32820 天前