文件最后提交记录最后更新时间
[bugfix][v2.7.1]fix make_graphed_callables bug Co-authored-by: y30062407<handsome0324@163.com> # message auto-generated for no-merge-commit merge: !35123 merge v2.7.1_error into v2.7.1 [bugfix][v2.7.1]fix make_graphed_callables bug Created-by: yangch0324 Commit-by: y30062407 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 1. npugraph的日志其中cannable属性没len,所以报错,特此修改 2. fav3算子入图npugraph考虑bnsd情况下不走update # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 ![image.png](https://raw.gitcode.com/user-images/assets/7404318/70d3a05e-75ee-4254-a927-8168813543ea/image.png 'image.png') # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [ ] 代码注释完备,正确记录错误日志 - [ ] 代码实现进行了返回值、空指针等校验 - [ ] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [ ] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!3512323 天前
!24054 Support static kernel in inductor Merge pull request !24054 from 姜怡文/v2.7.1_idc 9 个月前
ShardedGradScale achieves alignment with GPU Co-authored-by: dinghongzou<zoudinghong3@huawei.com> # message auto-generated for no-merge-commit merge: !35653 merge fix-fsdp-fallback-cpu into v2.7.1 ShardedGradScale achieves alignment with GPU Created-by: Windwindzzz Commit-by: dinghongzou Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) **原现象:** CPUOffload 场景下,found_inf_per_device 中存在 CPU 上的 found_inf。修复前 torch_npu 使用: ```python found_inf_npu = found_inf.to(self._scale.device) ``` 但 self._scale.device 在 CPUOffload 路径也是 CPU,导致后续对 CPU tensor 执行 HCCL all_reduce,触发: ```text RuntimeError: No backend type associated with device type cpu ``` **修改方案:** _ShardedGradScaler 增加原生torch同构的目标设备语义,默认目标设备为 NPU,将found_inf显式移动到npu found_inf_on_device = found_inf.to(self._device) # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” 不涉及 # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” 不涉及 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 ![image.png](https://raw.gitcode.com/user-images/assets/7404318/ecb09a29-ed73-4f53-bb0b-e1d1f2e5232c/image.png 'image.png') # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!3565310 天前
npugraphex config update Co-authored-by: guanlongfeng<guanlongfeng1@huawei.com> # message auto-generated for no-merge-commit merge: !33230 merge npugraphex_config into v2.7.1 npugraphex config update Created-by: glf2016 Commit-by: guanlongfeng Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [ ] 代码注释完备,正确记录错误日志 - [ ] 代码实现进行了返回值、空指针等校验 - [ ] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [ ] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!332301 个月前
refactor for torch_npu init module v2. Co-authored-by: bellatan<tanmei2@huawei.com> # message auto-generated for no-merge-commit merge: !34638 merge v2.7.1_torch_npu_init_refactor into v2.7.1 refactor for torch_npu init module v2. Created-by: bellatan Commit-by: bellatan Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [ ] issue/工单 - [x] 重构优化 - [ ] 资料更新 # 【修改方案】 本 PR 对 torch_npu 初始化链路进行重构,将原先集中在 torch_npu/__init__.py 中的初始化逻辑拆分到 _init 目录下的多个职责模块中,形成“**顶层编排 + 子模块分阶段执行 + 内部能力统一收口**”的结构。重构后,torch_npu/__init__.py 不再承载大量具体业务初始化细节,只负责固定初始化时序。各类具体能力分别由 _check_device_conflict_load_core_modules_register_components_apply_patches_enable_optional_features_initialize_runtime_lifecycle 等内部函数承接。 ## 一、核心修改 ### 1. 重构 torch_npu/__init__.py 顶层初始化入口 重构后的初始化流程如下: ```python def _initialize(): _check_device_conflict() _load_core_modules() _register_components() _apply_patches() _enable_optional_features() _initialize_runtime_lifecycle() ``` 顶层入口主要负责: 1. 维护 __all__; 2. 在 import torch 前关闭 TORCH_DEVICE_BACKEND_AUTOLOAD,避免 PyTorch 后端自动加载导致循环依赖; 3. 提前导入 torch_npu.utils.patch_getenv,用于捕获初始化阶段的环境变量访问; 4. 按固定顺序调用各初始化阶段入口; 5. 保留 _autoload() 作为 PyTorch 后端自动加载入口,用于恢复 TORCH_DEVICE_BACKEND_AUTOLOAD。 --- ### 2. 新增 _init 目录: 目录结构如下: ```text torch_npu/_init/ __init__.py common/ warning_utils.py core/ _exports.py module_loader.py optional_features.py runtime_lifecycle.py patches/ __init__.py api_patches.py asd_patches.py distributed_patches.py dynamo_patches.py monkey_patches.py npu_patches.py patch_manager.py profiler_patches.py warning_patches.py registry/ __init__.py backend.py distributed.py dynamo.py registry_manager.py ``` --- ### 3. 通过 _check_device_conflict() 处理前置设备冲突检查 **_check_device_conflict()**:负责最早期的设备冲突检查,避免 NPU 与其他 accelerator 同时启用。该接口属于初始化内部逻辑,不作为 public API 暴露。 --- ### 4. 通过 _load_core_modules() 统一管理核心模块加载、注册副作用和顶层 API 导出 _load_core_modules() 将原先散落在 torch_npu/__init__.py 中的模块导入、底层 _C 子模块准备、基础 runtime 支撑模块初始化、导入即注册副作用以及顶层 API 导出统一收口。该阶段主要负责: 1. 加载 torch_npu 初始化所需的核心模块; 2. 统一准备 _C child submodules; 3. 初始化 logging、profiler、distributed 等基础组件; 4. 在 _C 准备完成后进行 torch_npu.npu 导入检查; 5. 加载需要通过 import 触发注册副作用的 Python 模块; 6. 导出 torch_npu 顶层 public API。 具体包括: * _C 子模块初始化:统一创建并注册 _profiler_distributed_c10d_cd_logging_flops_count_C child submodules,保证业务 Python 模块只消费这些子模块,不再各自创建。 * torch_npu.npu 导入检查:在 _C 子模块完成准备后再检查 torch_npu.npu 导入状态,既保留对底层依赖缺失的友好报错,又避免 _C 未就绪时提前 import torch_npu.npu 导致循环导入。 * 导入副作用模块加载:统一加载需要通过 import 触发注册副作用的模块,例如 aclnn、optim、afd、custom ops、op_plugin、meta registrations 等,避免注册类副作用散落在初始化流程中。 * 顶层 API 导出:通过 export_alltorch_npu 顶层公开 API 统一导出到 globals()__all__ 中,保证 public API 行为与旧版兼容。 * lazy Python API:对 HiFloat8Tensorerase_streammatmul_checksum 等接口采用 lazy export,保证接口可见但不在 import 阶段立即加载对应模块,减少循环导入风险。 * NPU custom ops:将 torch.ops.npu 下的公开算子导出到 torch_npu 顶层,并保留 torch.<op> deprecated wrapper。 * dtype symbols:将 _C._cd.DType 中的 dtype 符号导出到 torch_npu 顶层。 --- ### 5. 通过 _register_components() 统一管理框架集成注册 _register_components() 负责 backend 和 framework integration 注册,将原先散落在顶层入口中的 NPU backend、distributed、Dynamo、RPC、Inductor 等注册逻辑统一收口。通过该阶段统一收口后,框架集成注册逻辑不再散落在顶层 __init__.py 中,后续新增集成能力时可直接在 registry 目录下维护。该阶段主要负责: * NPU backend 注册:将 PyTorch PrivateUse1 backend 映射为 NPU,并注册 torch.npu 设备模块和相关方法。 * distributed backend 注册:注册 HCCL、LCCL backend,保证 NPU distributed 能力可用。 * Dynamo 注册:注册 Dynamo backend、NPU device interface 和 trace rules,保证 NPU 能接入 Dynamo 编译链路。 * RPC 注册:注册 NPU RPC backend,保证 RPC 场景下 NPU backend 可用。 * Inductor lightweight override 注册:只注册轻量级 NPU device op override,避免 import 阶段提前加载 heavy module。 * 默认 gradient device type 配置:保持 checkpoint 等场景下默认设备类型与旧行为兼容。 --- ### 6. 通过 _apply_patches() 统一管理 patch 注册与执行 引入集中式 patch 管理机制,统一收口原先散落在初始化入口中的 patch 逻辑。顶层入口 _apply_patches() 负责触发 patch 发现、注册和执行,具体由 PatchManager 承接。_apply_patches() 主要完成以下工作: 1. **patch 分组注册**:各组件 patch 按 group 注册,例如 monkey、api、distributed、dynamo、profiler、npu、warning、asd 等。 2. **内置 patch 自动发现**:PatchManager 会自动扫描 _init/patches 下符合命名规则的 patch 模块。模块被导入后,内部 patch 会完成注册。 3. **固定 patch 执行顺序**:patch group 按默认顺序执行,避免 import 顺序变化导致 patch 行为漂移。 4. **支持自定义 patch 顺序**:PatchManager 支持调整 patch group 执行顺序,便于测试或特殊场景扩展。 5. **异常钩子统一处理**:全局异常钩子由 PatchManager.run() 统一处理,便于初始化失败和运行时异常场景的集中管理。 --- ### 7. 通过 _enable_optional_features() 统一管理可选运行时能力 将 sanitizer、交互式模式配置、transfer_to_npu 等可选能力统一收口到 _enable_optional_features(),避免可选逻辑散落在顶层初始化入口。该阶段主要包括: ```python _enable_sanitizer_if_needed() _configure_interactive_mode() _enable_transfer_to_npu_if_needed() ``` 具体说明: * sanitizer:仅在用户显式配置 TORCH_NPU_SANITIZER 时启用; * interactive mode:在交互式命令行环境中自动设置相关运行配置,并给出 warning 提示; * transfer_to_npu:通过 TORCH_TRANSFER_TO_NPU 控制是否启用,对非法配置进行显式报错。 --- ### 8. 通过 _initialize_runtime_lifecycle() 统一管理 runtime 生命周期 _initialize_runtime_lifecycle() 专门负责最终 C++ extension 初始化屏障和进程退出阶段的 shutdown hook 注册。该阶段主要包括: * extension finalize:调用 torch_npu._C._initExtension() 完成最终 C++ extension 绑定。该阶段放在核心模块加载、框架注册、API 导出和 patch 执行之后,保证 Python 侧初始化准备完成后再进入最终 extension barrier。 * shutdown hook 注册:负责注册进程退出阶段的 NPU 资源清理逻辑,包括设备同步、distributed 资源析构、异常处理和其他 runtime 清理流程。 --- ## 三、重构目的和收益 本次重构的目标是把 torch_npu 初始化从“单文件集中式副作用堆叠”调整为“阶段化、组件化、可维护”的初始化框架。主要收益包括: 1. **顶层入口更清晰** torch_npu/__init__.py 只保留初始化编排,不再堆叠大量具体 import、注册、patch 和 shutdown 逻辑。 2. **初始化顺序更稳定** _C 子模块和基础 runtime 支撑能力统一由 _load_core_modules 准备,降低循环导入和 _C 未就绪时提前访问的风险。 3. **组件职责更清楚** 模块加载、框架注册、API 导出、patch、可选功能、runtime 生命周期分别由不同接口承接。 4. **patch 更易维护** 各组件 patch 可以在自己的文件中维护,由 PatchManager 自动发现和统一执行,减少顶层冲突。 5. **支持后续扩展** 新增初始化能力时,只需放到对应处理的接口 或 patch group 中,不需要继续膨胀 __init__.py。 6. **便于问题定位** 初始化链路被拆成明确阶段,出现问题时可以快速判断是模块加载、注册、导出、patch、optional feature 还是 runtime lifecycle 阶段异常。 --- ## 四、兼容性说明 本次重构保持以下兼容性: 1. import torch_npu 行为保持兼容; 2. 顶层公开 API 保持兼容; 3. __version__ 仍从 torch_npu.version 导出。 --- ## 五、PatchManager 机制说明 本 PR 引入 PatchManager,用于统一管理 torch_npu 初始化阶段的 patch 注册与执行。原先 patch 逻辑集中在 torch_npu/__init__.py 中,和初始化流程、模块导入、框架注册逻辑混在一起,导致顶层文件过重,也不利于各组件独立维护。本次重构后,patch 逻辑从顶层入口中解耦,由 _apply_patches() 作为顶层入口触发执行,具体注册、发现、排序、幂等保护由 PatchManager 管理。 PatchManager 主要支持以下能力: 1. patch 按 group 分组注册; 2. 内置 patch 模块自动发现; 3. patch 按固定顺序执行; 4. patch 执行具备幂等保护; 5. 支持组件自行维护 patch module; 6. 支持按 group 执行,为后续按需使能 patch 打基础; 7. 支持自定义 patch 顺序,便于测试和问题定位。 整体机制如下: ```text 组件 patch 文件自注册 ↓ PatchManager 自动发现/加载 ↓ 按 group 统一管理 ↓ 按固定顺序执行 ↓ 幂等保护,避免重复 patch ``` --- ### 场景一:新增 torch_npu 内置 patch 如果新增的是 torch_npu 内置 patch,例如 distributed patch、profiler patch、NPU API patch、warning patch、ASD patch 等,可以直接放到:torch_npu/_init/patches/ 目录下,并按 group 注册。 示例: ```python from torch_npu._init.patches.patch_manager import PatchManager @PatchManager.register_patch("profiler") def apply_profiler_patch(): ... ``` 使用方式: ```text 1. 在 _init/patches 下新增或修改对应 *_patches.py 文件; 2. 在文件中通过 @PatchManager.register_patch(group) 注册 patch; 3. import torch_npu 时,由 _apply_patches() 统一触发; 4. PatchManager 自动发现并按 group 顺序执行。 ``` --- ### 场景二:组件自行维护 patch module 如果某个组件自己的目录下新加了patch 文件,通过 patch module 注册机制接入。 示例: ```python PatchManager.register_patch_module("torch_npu.some_component.some_patches") ``` 组件自己的 patch 文件中仍然使用 group 注册: ```python from torch_npu._init.patches.patch_manager import PatchManager @PatchManager.register_patch("some_component") def apply_some_component_patch(): ... ``` 使用方式: ```text 1. 组件在自己的目录中维护 patch 文件; 2. 通过 register_patch_module 注册该 patch module; 3. module 被导入后,内部 patch 自动注册到 PatchManager; 4. 后续仍由 PatchManager 统一排序和执行。 ``` 适用场景: ```text 组件有独立维护边界; patch 逻辑不适合放到中心化 patches 目录; 后续组件可能独立演进、迁移或删除。 ``` --- ### 场景三:按 group 执行 patch,用于测试或后续按需使能 PatchManager 支持按 group 执行 patch。当前默认初始化路径仍执行全部注册 patch,后续也可按需使能。 示例: ```python PatchManager.apply_registered_patches("distributed") ``` 使用方式: ```text 1. 指定需要执行的 patch group; 2. PatchManager 只执行该 group 下已注册的 patch; 3. 已执行过的 patch 不会重复执行; 4. 可用于单独验证某一类 patch 的行为。 ``` 适用场景: ```text 只验证 distributed patch; 只执行 profiler patch; 排查某一类 patch 对初始化流程的影响; 后续通过环境变量控制某个 patch group 是否启用。 ``` 如果需要调整 patch group 顺序,也可以使用: ```python PatchManager.set_patch_order([ "monkey", "api", "distributed", ]) ``` 适用场景: ```text 测试 patch 顺序; 排查 patch 依赖问题; 特殊构建或实验场景调整 patch 执行顺序。 ``` # 【资料变更】 > 不涉及 # 【接口变更】 > 不涉及 # 【功能验证】 新增 TestTorchNpuBootstrap 初始化专项测试,覆盖以下场景: 1. test_01_import_order_compatibility 验证 import torch_npuimport torch; import torch_npuimport torch_npu; import torch、重复 import torch_npu 等不同导入顺序保持兼容。 2. test_02_import_state_snapshot 验证 import torch_npu 后的初始化状态,包括 torch.npu 注册、Tensor/Module.npu 方法生成、_C child submodules 准备、旧版初始化副作用模块加载、非预期模块不 eager import、顶层关键属性可访问等。 3. test_03_public_exports_snapshot 验证顶层 public API 导出行为,包括 lazy Python APIs、torch.ops.npu public ops、deprecated torch.<op> alias、dtype symbols 等导出保持兼容。 4. test_04_framework_registration_snapshot 验证框架集成注册行为,包括 Dynamo NPU device interface、Dynamo backend、Inductor lightweight device op override、distributed backend、RPC backend 等注册保持生效。 5. test_05_runtime_lazy_init_semantics 验证 import 阶段不触发 NPU runtime lazy init,查询类 API 不触发完整 runtime 初始化,真实 runtime API 和显式 torch_npu.npu.init() 能正常触发 lazy init。 6. test_06_component_behavior_snapshot 验证关键组件行为保持兼容,包括 patch_getenv 生效、ASD detector 兼容 API、AFD 通过 torch_npu._afd 暴露、torch_npu._C._afd 不暴露、AFD ops 可访问等。 7. test_07_distributed_patch_behavior 验证 distributed patch 行为保持兼容,包括 distributed 内部函数替换、public API alias、rendezvous/launcher patch、FSDP 相关 patch 等。 新增测试用例本地验证通过。 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!3463820 天前
!16579 clean sdp and soc_version api Merge pull request !16579 from 关龙锋/cherry-pick-1733194542 1 年前
!17747 支持配置FFT PLAN Merge pull request !17747 from zhanglei/master 1 年前
sync acl_format_2/4/8 Co-authored-by: 张泉新<zhangquanxin7@h-partners.com> # message auto-generated for no-merge-commit merge: !26699 merge merge_public_2.7.1 into v2.7.1 sync acl_format_2/4/8 Created-by: zhangquanxin Commit-by: 张泉新 Merged-by: ascend-robot Description: <!-- Thanks for sending a pull request! --> **What type of PR is this?** > Uncomment only one /kind <> line, hit enter to put that in a new line, and remove leading whitespaces from that line: > > /kind bug > /kind task > /kind feature **What does this PR do / why do we need it**: **Which issue(s) this PR fixes**: <!-- *Automatically closes linked issue when PR is merged. Usage: Fixes #<issue number>, or Fixes (paste link of issue). --> Fixes # **Special notes for your reviewers**: See merge request: Ascend/pytorch!266996 个月前
[bugfix][v2.7.1_logs] improve npugraph logs Co-authored-by: y30062407<handsome0324@163.com> # message auto-generated for no-merge-commit merge: !37130 merge v2.7.1_logs into v2.7.1 [bugfix][v2.7.1_logs] improve npugraph logs Created-by: yangch0324 Commit-by: y30062407 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [ ] issue/工单 - [x] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) 补全 NPUGraph 框架全链路日志,覆盖 C++ 核心层、Python 图树管理层、Python 单图层以及内存池层,共 12 个修改点: **1. C++ capture_begin 补全录制完成状态日志(NPUGraph.cpp)** 在 capture_begin() 返回前输出 model_ri_ 句柄、capture 设备、内存池 ID、stream 地址、capture mode,用于排查录制阶段的内存池冲突和 stream 配置错误。 **2. C++ capture_end 补全录制结束状态日志(NPUGraph.cpp)** 在 capture_end() 返回前输出 model_ri_ 句柄和 has_graph_exec 标志,用于确认录制是否成功完成。 **3. C++ reset 添加图销毁日志(NPUGraph.cpp)** 在 reset() 函数的图资源释放路径中输出 model_ri_、capture_dev、mempool_id,用于追踪图对象生命周期和排查内存泄漏。 **4. C++ super_kernel_scope_begin/end 添加日志(Graph.cpp)** 在 pybind11 绑定层 _super_kernel_scope_begin / _super_kernel_scope_end 调用前后输出 scope_name,用于排查超核优化的 scope 配对问题。 **5. Python NPUGraph 对象生命周期日志(graphs.py)** 在 NPUGraph.__init__()NPUGraph.reset() 中添加日志,输出 graph_id 和 auto_dispatch 状态,与 C++ 层日志联动形成完整的图生命周期视图。 **6. Python NPUGraphTreeManager 初始化与 shutdown 日志(_graph_tree.py)** 在管理器构造函数完成和 shutdown() 入口/出口添加日志,输出 device、pool ID、stream 信息,追踪设备级图树生命周期。 **7. Python NPUGraphNode 录制完成日志(_graph_tree.py)** 在 _record() 返回前输出图节点录制结果(输出数量、非静态输入数量、静态输入索引数量),用于排查录制异常。 **8. Python check_invariants 失败日志(_graph_tree.py)** 在三种 invariant check 失败分支(CudagraphManagedIdxMismatch / ExpectedDeadIndicesBeforeGraph / StaticInputIdxMismatch)添加日志,输出不匹配的具体信息,用于排查频繁 re-record 的根因。 **9. Python checkpoint 细节日志(_graph_tree.py)** 在 apply_checkpoint_execution_state_in_allocator() 中添加 live_storages 数量和待释放内存指针数量的日志,用于排查 checkpoint/restore 流程中的内存一致性问题。 **10. C++ NPUCachingAllocator 图池操作日志(NPUCachingAllocator.cpp)** 在 5 个图内存池接口添加日志: - beginAllocateToPool:输出新建/复用池的 mempool_id 和 use_count - endAllocateToPool:输出结束录制的 mempool_id - releasePool:输出 use_count 降为 0 时的 mempool_id - getCheckpointState:输出 checkpoint 时的 head_blocks 数量 - setCheckpointPoolState:输出恢复的 segments 数量和释放的 allocations 数量 **11. Python graph context manager 异常日志增强(graphs.py)** 在 graph.__exit__() 的异常分支中补充输出 graph_id、stream、pool、device 信息,帮助快速定位 capture 失败上下文。 **12. Python 图树状态机转换日志(_graph_tree.py)** 在 record_function / execute_node / run_eager 中设置 ExecutionState 后添加状态转换日志,输出新状态、节点 ID 和 generation,完整追踪状态机转换历史。 **日志级别原则:** - 所有新增日志均为 DEBUG 级别,不影响生产环境性能 - 已有 ERROR/WARNING 级别日志仅在内容上增强(修改点 11),不新增 INFO/WARNING/ERROR 日志 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” 不涉及 # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” 不涉及 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 ![image.png](https://raw.gitcode.com/user-images/assets/7404318/3b9a664e-4b0a-4675-a84e-6d9acef6cd2d/image.png 'image.png') **验证场景:** 1. 在 NPU 设备上使用 torch.compile 以 "npugraphs" backend 运行模型训练/推理 2. 设置环境变量 TORCH_CPP_LOG_LEVEL=0 TORCH_NPU_NPUGRAPH=DEBUG 启用 NPUGraph C++ 日志 3. 设置 Python logging 级别为 DEBUG:torch._logging.set_logs(npugraph=logging.DEBUG) **验证方法:** 1. 检查 capture 阶段日志:确认 [NPUGRAPH][Capture] begin / begin done / end / end done 完整输出,model_ri、mempool_id、capture_dev 正确 2. 检查 replay 阶段日志:确认 [NPUGRAPH][Replay] 输出 model_ri 和 device 3. 检查图树日志:确认 [NPUGRAPH-TREE][Manager] / [Node] / [State] 系列日志按预期输出 4. 检查 checkpoint 日志:在 warmup → recording 切换时确认 [NPUGRAPH-TREE][Checkpoint] 日志输出 live_storages 和 dead_ptrs 数量 5. 检查 invariant 日志:确认仅在 re-record 触发时有 [NPUGRAPH-TREE][Invariant] 输出 6. 检查图对象生命周期:确认 [NPUGRAPH][Lifecycle] 日志在 graph 创建和 reset 时输出 7. 检查图池日志:确认 NPUCachingAllocator beginAllocateToPool / endAllocateToPool / releasePool 配对输出 8. 检查 capture 失败场景:确认 [NPUGRAPH] ERROR — capture failed 日志包含 graph_id / stream / pool / device 信息 **测试用例:** 本修改仅在已有日志路径中添加 DEBUG 级别日志,不改变任何业务逻辑。使用现有 CI 全量测试用例验证无回归即可。 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!371301 小时前
!16651 Rectify the common interface about sanitizer Merge pull request !16651 from hanqing/master 1 年前
!24713 Remove unused import of subprocess Merge pull request !24713 from kuhn/v2.7.1_910 8 个月前
[feat] Add disable_tensor_unsafe_check option to restart_device Co-authored-by: LiNuohang<linuohang@huawei.com> # message auto-generated for no-merge-commit merge: !36163 merge bz-7 into v2.7.1 [feat] Add disable_tensor_unsafe_check option to restart_device Created-by: LiNuohang Commit-by: LiNuohang Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [x] 需求 - [ ] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 需求背景: 推理场景,不需要更新权重数据,因此发生uce故障时,存在只做流恢复,不需要做数据标脏和恢复的场景。当前快恢流恢复和数据标脏通过同一个配置项rebuild_all_resources控制,导致该场景无法使用,需要为数据标脏单独增加配置项。 当前现状: 当前快恢流恢复和数据标脏通过同一个配置项rebuild_all_resources控制 具体设计方案: 描述:restart_device接口增加disable_tensor_unsafe_check开关,用于单独控制是否对数据做标脏处理 为保证兼容性,默认为False,且仅在rebuild_all_resource为True时生效,即: rebuild_all_resources = True, disable_tensor_unsafe_check = True, 不做数据标脏 rebuild_all_resources = True, disable_tensor_unsafe_check= False, 做数据标脏 rebuild_all_resources = False, disable_tensor_unsafe_check= True, 不做数据标脏 rebuild_all_resources = False, disable_tensor_unsafe_check= False, 不做数据标脏 # 【资料变更】 restart_device接口增加disable_tensor_unsafe_check开关 # 【接口变更】 restart_device接口增加disable_tensor_unsafe_check开关 # 【功能验证】 已新增UT # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!3616313 天前
add record_stream sanitizer Co-authored-by: bellatan<tanmei2@huawei.com> Co-authored-by: hb_hubin<hubin79@huawei.com> # message auto-generated for no-merge-commit merge: !35835 merge v2.7.1_record_stream_sanitizer into v2.7.1 add record_stream sanitizer Created-by: bellatan Commit-by: bellatan;hb_hubin Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [x] 需求 - [ ] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 本地验证 1. test/npu/test_sanitizer.py ![image.png](https://raw.gitcode.com/user-images/assets/7404318/db51597e-f6bf-4b34-8ba1-170ba8bb5bde/image.png 'image.png') 2. test/npu/test_sanitizer_record_stream.py ![image.png](https://raw.gitcode.com/user-images/assets/7404318/630b87e8-dc9c-4c9a-a2d4-932b9ad18dca/image.png 'image.png') 3. test/test_npu_sanitizer.py ![image.png](https://raw.gitcode.com/user-images/assets/7404318/ecb4d1f1-aef9-4b9b-a082-75ff16991064/image.png 'image.png') 4. test/test_sanitizer_pluggable_allocator.py ![image.png](https://raw.gitcode.com/user-images/assets/7404318/ffa87f39-c755-41fe-8176-9cb38cd73a09/image.png 'image.png') 5. ci结果 ·UT_ARM_A2_Part_01:test/test_npu_sanitizer.py,pass ![image.png](https://raw.gitcode.com/user-images/assets/7404318/d5fb5242-cb11-435d-ae2b-36960a9522f8/image.png 'image.png') ·UT_ARM_A2_Part_02:test/npu/test_sanitizer.py,pass;test/test_sanitizer_pluggable_allocator.py pass ![1778915605465.png](https://raw.gitcode.com/user-images/assets/7404318/243673b4-b5b0-4c5d-8c21-3d22f84cce82/1778915605465.png '1778915605465.png') ·UT_ARM_A2_Part_03:test/npu/test_sanitizer_record_stream.py,pass ![1778915660126.png](https://raw.gitcode.com/user-images/assets/7404318/b1e2f979-f4f7-4f24-b4b9-b1987de33677/1778915660126.png '1778915660126.png') # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!3583513 天前
add record_stream sanitizer Co-authored-by: bellatan<tanmei2@huawei.com> Co-authored-by: hb_hubin<hubin79@huawei.com> # message auto-generated for no-merge-commit merge: !35835 merge v2.7.1_record_stream_sanitizer into v2.7.1 add record_stream sanitizer Created-by: bellatan Commit-by: bellatan;hb_hubin Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [x] 需求 - [ ] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 本地验证 1. test/npu/test_sanitizer.py ![image.png](https://raw.gitcode.com/user-images/assets/7404318/db51597e-f6bf-4b34-8ba1-170ba8bb5bde/image.png 'image.png') 2. test/npu/test_sanitizer_record_stream.py ![image.png](https://raw.gitcode.com/user-images/assets/7404318/630b87e8-dc9c-4c9a-a2d4-932b9ad18dca/image.png 'image.png') 3. test/test_npu_sanitizer.py ![image.png](https://raw.gitcode.com/user-images/assets/7404318/ecb4d1f1-aef9-4b9b-a082-75ff16991064/image.png 'image.png') 4. test/test_sanitizer_pluggable_allocator.py ![image.png](https://raw.gitcode.com/user-images/assets/7404318/ffa87f39-c755-41fe-8176-9cb38cd73a09/image.png 'image.png') 5. ci结果 ·UT_ARM_A2_Part_01:test/test_npu_sanitizer.py,pass ![image.png](https://raw.gitcode.com/user-images/assets/7404318/d5fb5242-cb11-435d-ae2b-36960a9522f8/image.png 'image.png') ·UT_ARM_A2_Part_02:test/npu/test_sanitizer.py,pass;test/test_sanitizer_pluggable_allocator.py pass ![1778915605465.png](https://raw.gitcode.com/user-images/assets/7404318/243673b4-b5b0-4c5d-8c21-3d22f84cce82/1778915605465.png '1778915605465.png') ·UT_ARM_A2_Part_03:test/npu/test_sanitizer_record_stream.py,pass ![1778915660126.png](https://raw.gitcode.com/user-images/assets/7404318/b1e2f979-f4f7-4f24-b4b9-b1987de33677/1778915660126.png '1778915660126.png') # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!3583513 天前
feat(autocast): 支持float32作为自动混合精度计算的数据类型 Co-authored-by: leland17<lileliao@foxmail.com> # message auto-generated for no-merge-commit merge: !30561 merge v2.7.1 into v2.7.1 feat(autocast): 支持float32作为自动混合精度计算的数据类型 Created-by: leland17 Commit-by: leland17 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > (如有)请关联需求文档/issue链接 issue:[支持float32作为自动混合精度计算的数据类型](https://gitcode.com/Ascend/pytorch/issues/1537) - [x] 需求 - [ ] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 当前现状with autocast(device="npu", dtype=torch.float32)暂时不支持按照float32的精度获取结果。同liwei有过详细的讨论方案,并且确定了如下的支持思路 在autocast_utils.py中支持float32的数据类型支持。 # 【资料变更】 > 不涉及 # 【接口变更】 > 不涉及 # 【功能验证】 ```bash cd ${pytorch}/test && python -m unittest test_autocast.TestAutocastNPUfp32 ``` 新增4个用例场景,验证暂无问题 ![image.png](https://raw.gitcode.com/user-images/assets/7404318/ae524921-b8cd-4790-b2c2-6ef636ca7229/image.png 'image.png') 整体test_autocast.py的用例执行结果 ![image.png](https://raw.gitcode.com/user-images/assets/7404318/c4ba297d-8d9d-446a-93d7-f6031525dde3/image.png 'image.png') # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!305613 个月前
!17747 支持配置FFT PLAN Merge pull request !17747 from zhanglei/master 1 年前
!13006 Fixed for the public APIs. Merge pull request !13006 from yuhaiyan/master-dev2 1 年前
[bugfix][v2.7.1_logs] improve npugraph logs Co-authored-by: y30062407<handsome0324@163.com> # message auto-generated for no-merge-commit merge: !37130 merge v2.7.1_logs into v2.7.1 [bugfix][v2.7.1_logs] improve npugraph logs Created-by: yangch0324 Commit-by: y30062407 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [ ] issue/工单 - [x] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) 补全 NPUGraph 框架全链路日志,覆盖 C++ 核心层、Python 图树管理层、Python 单图层以及内存池层,共 12 个修改点: **1. C++ capture_begin 补全录制完成状态日志(NPUGraph.cpp)** 在 capture_begin() 返回前输出 model_ri_ 句柄、capture 设备、内存池 ID、stream 地址、capture mode,用于排查录制阶段的内存池冲突和 stream 配置错误。 **2. C++ capture_end 补全录制结束状态日志(NPUGraph.cpp)** 在 capture_end() 返回前输出 model_ri_ 句柄和 has_graph_exec 标志,用于确认录制是否成功完成。 **3. C++ reset 添加图销毁日志(NPUGraph.cpp)** 在 reset() 函数的图资源释放路径中输出 model_ri_、capture_dev、mempool_id,用于追踪图对象生命周期和排查内存泄漏。 **4. C++ super_kernel_scope_begin/end 添加日志(Graph.cpp)** 在 pybind11 绑定层 _super_kernel_scope_begin / _super_kernel_scope_end 调用前后输出 scope_name,用于排查超核优化的 scope 配对问题。 **5. Python NPUGraph 对象生命周期日志(graphs.py)** 在 NPUGraph.__init__()NPUGraph.reset() 中添加日志,输出 graph_id 和 auto_dispatch 状态,与 C++ 层日志联动形成完整的图生命周期视图。 **6. Python NPUGraphTreeManager 初始化与 shutdown 日志(_graph_tree.py)** 在管理器构造函数完成和 shutdown() 入口/出口添加日志,输出 device、pool ID、stream 信息,追踪设备级图树生命周期。 **7. Python NPUGraphNode 录制完成日志(_graph_tree.py)** 在 _record() 返回前输出图节点录制结果(输出数量、非静态输入数量、静态输入索引数量),用于排查录制异常。 **8. Python check_invariants 失败日志(_graph_tree.py)** 在三种 invariant check 失败分支(CudagraphManagedIdxMismatch / ExpectedDeadIndicesBeforeGraph / StaticInputIdxMismatch)添加日志,输出不匹配的具体信息,用于排查频繁 re-record 的根因。 **9. Python checkpoint 细节日志(_graph_tree.py)** 在 apply_checkpoint_execution_state_in_allocator() 中添加 live_storages 数量和待释放内存指针数量的日志,用于排查 checkpoint/restore 流程中的内存一致性问题。 **10. C++ NPUCachingAllocator 图池操作日志(NPUCachingAllocator.cpp)** 在 5 个图内存池接口添加日志: - beginAllocateToPool:输出新建/复用池的 mempool_id 和 use_count - endAllocateToPool:输出结束录制的 mempool_id - releasePool:输出 use_count 降为 0 时的 mempool_id - getCheckpointState:输出 checkpoint 时的 head_blocks 数量 - setCheckpointPoolState:输出恢复的 segments 数量和释放的 allocations 数量 **11. Python graph context manager 异常日志增强(graphs.py)** 在 graph.__exit__() 的异常分支中补充输出 graph_id、stream、pool、device 信息,帮助快速定位 capture 失败上下文。 **12. Python 图树状态机转换日志(_graph_tree.py)** 在 record_function / execute_node / run_eager 中设置 ExecutionState 后添加状态转换日志,输出新状态、节点 ID 和 generation,完整追踪状态机转换历史。 **日志级别原则:** - 所有新增日志均为 DEBUG 级别,不影响生产环境性能 - 已有 ERROR/WARNING 级别日志仅在内容上增强(修改点 11),不新增 INFO/WARNING/ERROR 日志 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” 不涉及 # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” 不涉及 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 ![image.png](https://raw.gitcode.com/user-images/assets/7404318/3b9a664e-4b0a-4675-a84e-6d9acef6cd2d/image.png 'image.png') **验证场景:** 1. 在 NPU 设备上使用 torch.compile 以 "npugraphs" backend 运行模型训练/推理 2. 设置环境变量 TORCH_CPP_LOG_LEVEL=0 TORCH_NPU_NPUGRAPH=DEBUG 启用 NPUGraph C++ 日志 3. 设置 Python logging 级别为 DEBUG:torch._logging.set_logs(npugraph=logging.DEBUG) **验证方法:** 1. 检查 capture 阶段日志:确认 [NPUGRAPH][Capture] begin / begin done / end / end done 完整输出,model_ri、mempool_id、capture_dev 正确 2. 检查 replay 阶段日志:确认 [NPUGRAPH][Replay] 输出 model_ri 和 device 3. 检查图树日志:确认 [NPUGRAPH-TREE][Manager] / [Node] / [State] 系列日志按预期输出 4. 检查 checkpoint 日志:在 warmup → recording 切换时确认 [NPUGRAPH-TREE][Checkpoint] 日志输出 live_storages 和 dead_ptrs 数量 5. 检查 invariant 日志:确认仅在 re-record 触发时有 [NPUGRAPH-TREE][Invariant] 输出 6. 检查图对象生命周期:确认 [NPUGRAPH][Lifecycle] 日志在 graph 创建和 reset 时输出 7. 检查图池日志:确认 NPUCachingAllocator beginAllocateToPool / endAllocateToPool / releasePool 配对输出 8. 检查 capture 失败场景:确认 [NPUGRAPH] ERROR — capture failed 日志包含 graph_id / stream / pool / device 信息 **测试用例:** 本修改仅在已有日志路径中添加 DEBUG 级别日志,不改变任何业务逻辑。使用现有 CI 全量测试用例验证无回归即可。 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!371301 小时前
[fix][2.7.1]add getMemoryFraction attribute for torch._C Co-authored-by: weixin_47897441<wuyouqi1@h-partners.com> # message auto-generated for no-merge-commit merge: !31101 merge v2.7.1 into v2.7.1 [fix][2.7.1]add getMemoryFraction attribute for torch._C Created-by: weixin_47897441 Commit-by: weixin_47897441 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > (如有)请关联需求文档/issue链接 - [ ] 需求 - [ ] 问题单 - [x] issue/工单 : torch._C不支持_npu_getMemoryFraction - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 1、NPUCachingAllocator中新增getMemoryFraction方法及虚函数声明,Module中注册_npu_getMemoryFraction绑定; 2、在torch_npu.npu和torch_npu.npu.memory中实现并暴露get_per_process_memory_fraction接口,支持指定设备,调用底层 C++ 接口; 3、新增该接口的测试用例; 4、将该接口及底层Cpp绑定加入Dynamo追踪规则,完成适配。 # 【资料变更】 > 不涉及 # 【接口变更】 > 否 # 【功能验证】 > UT用例测试通过:python test_npu.py -v -k test_get_per_process_memory_fraction ![image.png](https://raw.gitcode.com/user-images/assets/7404318/dd7cc124-b3b1-47d1-ab15-ad3798b33115/image.png 'image.png') # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!311012 个月前
【feat】mstx support push and pop Co-authored-by: mei-feiyao<meifeiyao@h-partners.com> # message auto-generated for no-merge-commit merge: !36207 merge range7 into v2.7.1 【feat】mstx support push and pop Created-by: mei-feiyao Commit-by: mei-feiyao Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\https://gitcode.com/Ascend/pytorch/issues/2033 > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [x] 需求 - [ ] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) 对齐社区nvtx模块,补全接口,包括如下: 1、range_push、range_pop:线程粒度的打range点接口,内部走mstx库实现打点,用户可通过torch_npu.profiler接口配置mstx=True或者msproftx=True(待废弃)的方式采集tx打点数据; 2、annotate类:用户可通过with torch_npu.npu.mstx.annotate(message="xxxx", stream=xxxx, domain="tttt")的方式或者@torch_npu.npu.mstx.annotate(message="xxxx", stream=xxxx, domain="tttt")装饰器的方式对目标代码段或者目标函数进行打点,内部会在开始和结束的阶段分别调用range_push和range_pop # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” 是。涉及新增接口,已联系资料同学补充资料 # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” 本需求只涉及新增接口,不涉及已有接口变更 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 1、UT测试验证新增接口; 2、模型代码增加调用新增的打点接口,并通过profiler采集打点数据,观察打点数据正常 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!3620712 天前
修复API入参校验和用例适配 Co-authored-by: bellatan<tanmei2@huawei.com> # message auto-generated for no-merge-commit merge: !36709 merge v2.7.1_fix_api_validation into v2.7.1 修复API入参校验和用例适配 Created-by: bellatan Commit-by: bellatan Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 ### 1. device 入参类型缺少校验,导致非法 device 未按预期报错 **API:** set_device_limit(device, cube_num, vector_num)get_device_limit(device) **API 原始约束:** set_device_limitget_device_limitdevice 参数语义是指定 NPU 设备卡号,应传入明确的 NPU 设备 ID。 **当前问题:** 传入 Nonefloat 等非 int 类型时未报错,不符合 API 参数约束。 **根因分析:** 原实现中对入参 device 使用了 _get_device_index(device, optional=True) 对入参 device 进行兼容性处理,导致约束之外的非法入参没有被及时拒绝。 **解决方案:** 针对 set_device_limit/get_device_limit 这两个 API,不再使用 _get_device_index(device, optional=True) 做宽松解析,而是直接按照 API 约束对原始 device 参数做严格校验。 新加校验规则: 1. device 必须是 int; 2. device 不能是 bool; ```python if isinstance(device, bool) or not isinstance(device, int): raise TypeError( "device must be an int, but got {}{}".format( type(device).__name__, pta_error(ErrCode.TYPE) ) ) ``` **涉及的修改文件**:torch_npu/npu/npu_config.py ### 2. allow_hf32 入参类型缺少校验,导致非 bool 入参被错误接受 **API:** matmul.allow_hf32conv.allow_hf32 **API 原始约束:** torch_npu.npu.matmul.allow_hf32 的语义是控制 MatMul 类算子是否允许使用 HF32 计算,应作为布尔型配置开关使用。 torch_npu.npu.conv.allow_hf32 的语义是控制 Conv 类算子是否允许使用 HF32 计算,应作为布尔型配置开关使用。 **当前问题:** allow_hf32 缺少 bool 类型校验,传入非 bool 类型没有报错,不符合 API 参数约束。 **根因分析:** 原实现直接"enable" if value else "disable",根据 Python 对象的真假值进行判断,未判断 value 是否为 bool 类型,导致非法类型未被拒绝。 **解决方案:** 新增 isinstance(value, bool) 校验,非 bool 类型直接抛出 TypeError,避免非法入参被隐式转换为开关配置。在 _allowHF32Matmul.__setattr___allowHF32Conv.__setattr__allow_hf32 分支中增加 bool 类型校验。 新加校验规则: 1. allow_hf32 必须是 bool; 2. 只允许 TrueFalse; 3. intstrNonelistdict 等非 bool 类型均抛出 TypeError。 ```python if name == "allow_hf32": if not isinstance(value, bool): raise TypeError( "allow_hf32 must be a bool, but got {}{}".format( type(value).__name__, pta_error(ErrCode.TYPE) ) ) ``` **涉及的修改文件**:torch_npu/npu/npu_config.py ### 3. 用例适配 用例:test\nn\test_module_hooks.py,用例名:test_hook_inplace 问题:用例ci失败,报错正则匹配失败 根因:改用例预期报错的接口有变更,torch==2.12预期报错接口名为**BackwardHookFunctionBackward**,torch==2.13预期报错接口名变更为**BackwardHookFunction**。 解决:开放用例,用例报错提示适配,兼容两个版本的torch: with self.assertRaisesRegex(RuntimeError, "Output 0 of BackwardHookFunctionBackward is "修改为with self.assertRaisesRegex(RuntimeError, "Output 0 of BackwardHookFunction(Backward)? is " with self.assertRaisesRegex(RuntimeError, "BackwardHookFunction(Backward)? is a view "修改为with self.assertRaisesRegex(RuntimeError, "Output 0 of BackwardHookFunction(Backward)? is " # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 已有用例本地验证pass,CI pass 1. 新加用例:test/npu/test_torch_npu.py ![image.png](https://raw.gitcode.com/user-images/assets/7404318/a041fbeb-16cd-4654-9865-a4a02d96df17/image.png 'image.png') ![image.png](https://raw.gitcode.com/user-images/assets/7404318/c353f1d5-03d3-4300-9277-f8ce71e641ae/image.png 'image.png') 2. 已有用例:test/npu/test_torch_backends.py ![image.png](https://raw.gitcode.com/user-images/assets/7404318/1116053c-a3ab-4b93-b3da-99e1f864d63d/image.png 'image.png') 3. 已有用例:test/nn/test_module_hooks.py ![image.png](https://raw.gitcode.com/user-images/assets/7404318/90e9cb29-e0f0-4bdb-a744-a23be66a92a5/image.png 'image.png') # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!367097 天前
API_trace_relu changes Co-authored-by: cuiduo<cuiduo1@huawei.com> # message auto-generated for no-merge-commit merge: !30393 merge v2.7.1 into v2.7.1 API_trace_relu changes Created-by: cuiduo Commit-by: cuiduo Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > (如有)请关联需求文档/issue链接 - [x] 需求 - [ ] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 修改trace_rule.py文件,确保NPU部分API在图模式下,入图行为与标杆一致。修改set-rng_state函数处理多余算子以及torch.npu.current_device白名单处理以确保算子生成fx图与标杆一致。 # 【资料变更】 > 不涉及 # 【接口变更】 > 不涉及 # 【功能验证】 > 新增测试文件test/_inductor/test_npu_current_device.py,参与ut看护 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!303933 个月前
Event supports cross-process and cross-device (IPC event) Co-authored-by: liujunzhu<liujunzhu@huawei.com> # message auto-generated for no-merge-commit merge: !28520 merge v2.7.1 into v2.7.1 Event supports cross-process and cross-device (IPC event) Created-by: liujunzhu Commit-by: liujunzhu Merged-by: ascend-robot Description: <!-- Thanks for sending a pull request! --> **What type of PR is this?** > Uncomment only one /kind <> line, hit enter to put that in a new line, and remove leading whitespaces from that line: > > /kind bug > /kind task /kind feature **What does this PR do / why do we need it**: event能力对齐cuda,支持跨进程与跨设备使用。 CUDA跨进程共享内存和跨设备拷贝内存时使用Event进行同步,而torch npu使用SynchronizeStream进行同步,希望torch_npu支持在跨设备和跨内存的场景也使用Event进行同步,提升整体性能。另外,需支持通过Python接口在进程间传递Event对象或Event handle并使用该Event进行进程间的同步。 相关场景如下: 1、跨进程使用Event:进程间传递interprocess=True的Event对象、Event的IPC Handle或torch.multiprocessing.reductions.reduce_event(event)的结果。 2、跨进程共享NPU内存:包括进程间通过参数或队列传递Tensor、进程间通过torch.multiprocessing.reductions.reduce_tensor()传递Tensor、进程间通过_share_npu_传递Tensor。 3、跨设备拷贝NPU内存:调用Tensor.to()或Tensor.copy_()接口。 不支持跨设备或跨进程使用interprocess=False的Event。 **Which issue(s) this PR fixes**: <!-- *Automatically closes linked issue when PR is merged. Usage: Fixes #<issue number>, or Fixes (paste link of issue). --> Fixes # **Special notes for your reviewers**: See merge request: Ascend/pytorch!285205 个月前
[feat] Add set_op_timeout graph support Co-authored-by: GJQ<gaojiaqin@hisilicon.com> # message auto-generated for no-merge-commit merge: !35644 merge v2.7.1 into v2.7.1 [feat] Add set_op_timeout graph support Created-by: Jiaqin Commit-by: GJQ Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [x] 需求 - [ ] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) 增加set_op_timeout_ms接口注册 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” 不涉及 # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” 不涉及 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 整网用例执行。UT看护已存在。 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!3564411 天前