| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
delete-skip Co-authored-by: l00881990<lixinyu68@huawei.com> # message auto-generated for no-merge-commit merge: !37317 merge delete-skip into master delete-skip Created-by: l1919_snow Commit-by: l00881990 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 https://gitcode.com/Ascend/pytorch/issues/2177 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!37317 | 4 个月前 | |
| 2 年前 | ||
| 2 年前 | ||
[master] Add NPU tests for global full backward module hook APIs Co-authored-by: coconut77<2416273142@qq.com> # message auto-generated for no-merge-commit merge: !37884 merge api-completion-module-hooks-new2-master into master [master] Add NPU tests for global full backward module hook APIs Created-by: coconut77 Commit-by: coconut77 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 关联issue:https://gitcode.com/Ascend/pytorch/issues/2318 # 【修改方案】 ## 一、2 个 API 功能如下 1. torch.nn.modules.module.register_module_full_backward_hook - 为所有 nn.Module 注册全局 full backward hook,在完整反向传播阶段触发回调。 2. torch.nn.modules.module.register_module_full_backward_pre_hook - 为所有 nn.Module 注册全局 full backward pre hook,在完整反向传播前触发回调。 ## 二、社区用例对这 2 个 API 的验证完整性分析 1. 未检索到这 2 个“全局 API”的直接官方用例; 2. 上游仅覆盖了实例级 API: - register_full_backward_hook - register_full_backward_pre_hook 3. 因此社区现有用例对这 2 个全局 API 的直接验证不完整,需要新增测试文件补齐。 ## 三、NPU 适配 1. 新增 test/nn/test_global_module_full_backward_hooks.py; 2. 直接验证 torch.nn.modules.module.register_module_full_backward_hook; 3. 直接验证 torch.nn.modules.module.register_module_full_backward_pre_hook; 4. 核心检查点为 hook 是否触发、梯度是否按预期改写; 5. 相关张量均在 NPU 上执行。 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 ## 1. 测试环境 text - 操作系统:Ubuntu - 昇腾硬件信息:NPU - CANN软件版本:8.5.0 - 安装的对应软件版本:torch 2.11.0+cu130、torch_npu 2.11.0rc1 ## 2. 测试命令 bash python -u /workspace/coconut77_pytorch7326_master_new2/test/nn/test_global_module_full_backward_hooks.py > /workspace/version_logs/module_hooks_new2_master.log 2>&1 ## 3. patch 格式检查真实输出 text EXIT_CODE:0 ## 4. 测试真实输出 text .. ---------------------------------------------------------------------- Ran 2 tests in 1.243s OK # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!37884 | 4 个月前 | |
test update ut Co-authored-by: huangyunlong2022<huangyunlong4@h-partners.com> # message auto-generated for no-merge-commit merge: !37776 merge 2.13ut1 into master test update ut Created-by: huangyunlong2022 Commit-by: huangyunlong2022 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能力等内容) test_deprecation test_cycle_lr_cycle_momentum_fail_with_momentumless_optimizer test_hook_registration 同步社区用例更新 test_float_status A2/A3需要开启饱和模式 test_select_at_first_axis_to_single_element_tensor_copy 转连续优化是aclop路径,alcnn路径添加aclnnAdds通过用例 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!37776 | 4 个月前 | |
test(nn): add test for torch.jit.Attribute.count Co-authored-by: zyjoschina234<18344327769@163.com> # message auto-generated for no-merge-commit merge: !43381 merge test-jit-Attribute-count into master test(nn): add test for torch.jit.Attribute.count Created-by: chenh91 Commit-by: zyjoschina234 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**https://gitcode.com/Ascend/pytorch/issues/3923**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 问题单 pytorch社区用例没有验证torch.jit.Attribute.count,故新增该测试用例文件,用于验证api的正确性 # 【修改方案】 一、API 功能说明 在 PyTorch 的 TorchScript 机制中,torch.jit.Attribute 用于在模块中声明持久化的类属性。当这些属性被定义为 Python 原生容器类型(如 List、Dict、Str)时,TorchScript 支持直接调用这些容器对象的原生方法。torch.jit.Attribute.count(即 Attribute 对象作为列表时的 .count 方法)的核心功能是:在 TorchScript 编译后的图执行过程中,统计列表属性中特定元素出现的次数。它的设计初衷是保持与 Python 原生列表行为的一致性,允许开发者在对模型结构属性进行逻辑判断时,使用 Python 风格的接口,而无需手动编写循环逻辑,从而简化代码并保证语义的清晰。 二、测试文件 test_jit_Attribute_count.py 完整验证该 API 的原因 以上代码的核心验证功能是:验证在 TorchScript 编译模式下,通过 torch.jit.Attribute 声明的列表属性,是否能够正确映射并调用 Python 列表的 .count() 方法来统计元素频率,同时确保类型系统能够正确处理参数传递。 具体包含以下三个维度的验证: 类型声明与参数推导验证: 验证了 torch.jit.Attribute 能够正确持有并推断复杂类型(list[int])的数据结构。 验证了在 forward 函数中显式声明参数类型(val: int)后,Python int 类型能够正确传入 TorchScript 脚本函数,确保 .count() 方法接收的参数类型与列表元素类型匹配,避免了因默认推断为 Tensor 而导致的类型冲突。 接口功能与逻辑正确性验证(核心逻辑): 统计存在元素:验证当传入一个在列表中存在的值(如 2)时,.count() 方法能返回正确的出现次数(3次)。这确认了 JIT 图正确地包含了列表遍历和比较计数的计算逻辑。 统计不存在元素:验证当传入一个列表中不存在的值(如 5)时,.count() 方法能正确返回 0。这确认了边界情况下的逻辑正确性和鲁棒性。 数据一致性验证: 使用 self.assertEqual 将脚本模块的运行结果与预期的 Python 整数值进行比对,确保在 JIT 编译优化后,计算结果在数值和逻辑上与 Python 原生行为完全一致。 三、NPU适配 torch.jit.Attribute.count 具备硬件无关性、纯 Python 层实现、无底层算子依赖三大核心特征,决定了其无需针对昇腾 NPU 做修改,具体分析: 1. 纯 Python 层抽象,无硬件相关逻辑 Attribute.count API:本质上是 TorchScript 对 Python 列表内置方法 .count() 的语义映射。在 TorchScript 的中间表示(IR)中,这通常被解析为针对列表对象的纯逻辑控制流(循环与比较),是「数据结构操作」的纯 Python 抽象接口,不涉及任何硬件相关的计算、内存布局调整或通信逻辑。 核心机制:其行为完全遵循 Python 列表的标准语义,即线性遍历列表并进行值相等性比较。该逻辑仅依赖于 CPU 指令集中的基础比较和跳转指令,与底层硬件架构(如 GPU/NPU 的 SIMT/SIMD 模型)无直接绑定。 2. 无底层算子 / 内核依赖 该 API 在执行过程中仅涉及对 PyTorch 自定义列表容器(或经过 Script 处理的 Python List)的内存访问和基础整数比较,未依赖 CUDA/NPU 等硬件相关的扩展库、内核函数或底层驱动。 其逻辑流转不涉及任何张量计算、显存分配或设备间数据传输(NCCL/HCCL 等),仅是对宿主机内存中 Python 整型列表的操作,因此无需调用任何硬件相关接口(如 torch_npu.npu_create_list 等)。 3. 核心逻辑与硬件解耦 数据存储解耦:通过 torch.jit.Attribute 声明的列表属性通常作为模型参数或缓冲区的一部分存储在宿主机内存(CPU)中,或是作为辅助结构存在,并非必须在 NPU 设备内存中。即使模型运行在 NPU 上,这种辅助性的列表计数逻辑依然在 CPU 侧或通过图中的通用算子执行,无需针对 NPU 调整。 算法逻辑解耦:列表计数算法(遍历、比较、累加)是通用的软件算法,不包含任何硬件特定的加速策略(如 CUDA Core 下的并行规约)。无论在 CPU 还是 NPU 环境下,TorchScript 生成的图对于该逻辑的描述是通用的,NPU 后端无需对其做特殊算子映射。 执行路径解耦:当 forward 方法包含 NPU 算子时,Attribute.count 作为一个控制流或辅助计算节点,独立于主计算图中的 NPU Kernel 调用。该 API 仅处理轻量级的逻辑判断,不干扰 NPU 算子的调度和执行,因此 NPU 环境下其“遍历-计数”的流转规则无需调整。 总结:Attribute.count 是「硬件无关的纯 Python 数据结构操作抽象」,核心逻辑不耦合任何特定硬件(包括 GPU/NPU/CPU),因此适配昇腾 NPU 时无需修改该 API 本身,可直接复用。 # 【资料变更】 > 不涉及 已检查文档,https://gitcode.com/Ascend/pytorch/tree/v2.7.1/docs/zh/native_apis 下面各个版本都写了这些API已支持,所以不需要提交PR修改资料。 # 【接口变更】 > 不涉及 # 【功能验证】 > 在torch2.7.1版本上执行该用例日志如下: [root@k8s-worker nn]# python test_jit_Attribute_count.py . ---------------------------------------------------------------------- Ran 1 test in 0.103s OK > 在torch2.11.0版本上执行该用例日志如下: `` [root@k8s-worker nn]# python test_jit_Attribute_count.py /root/miniconda3/envs/torch2.11/lib/python3.11/site-packages/torch/jit/_script.py:1488: DeprecationWarning: torch.jit.script is deprecated. Please switch to torch.compile or torch.export. warnings.warn( . ---------------------------------------------------------------------- Ran 1 test in 0.105s OK > 在torch2.12.0版本上执行该用例日志如下: [root@k8s-worker nn]# python test_jit_Attribute_count.py W0811 15:38:27.321000 2329315 site-packages/torch/_native/cutedsl_utils.py:55] CuTeDSL operators require optional Python packages nvidia-cutlass-dsl and apache-tvm-ffi; missing optional dependency nvidia_cutlass_dsl (importlib.util.find_spec(nvidia_cutlass_dsl) failed) /root/miniconda3/envs/torch2.12/lib/python3.11/site-packages/torch/jit/_script.py:1488: DeprecationWarning: torch.jit.script is deprecated. Please switch to torch.compile or torch.export. warnings.warn( . ---------------------------------------------------------------------- Ran 1 test in 0.104s OK > 在master上执行该用例日志如下: [root@k8s-worker nn]# python test_jit_Attribute_count.py W0811 15:38:27.321000 2329315 site-packages/torch/_native/cutedsl_utils.py:55] CuTeDSL operators require optional Python packages nvidia-cutlass-dsl and apache-tvm-ffi; missing optional dependency nvidia_cutlass_dsl (importlib.util.find_spec(nvidia_cutlass_dsl) failed) /root/miniconda3/envs/torch2.12/lib/python3.11/site-packages/torch/jit/_script.py:1488: DeprecationWarning: torch.jit.script is deprecated. Please switch to torch.compile or torch.export. warnings.warn( . ---------------------------------------------------------------------- Ran 1 test in 0.104s OK `` # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!43381 | 1 个月前 | |
test(nn): add test for jit._state._clear_class_state Co-authored-by: zyjoschina234<18344327769@163.com> # message auto-generated for no-merge-commit merge: !43373 merge test-jit-state-clear-class-state into master test(nn): add test for jit._state._clear_class_state Created-by: chenh91 Commit-by: zyjoschina234 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**https://gitcode.com/Ascend/pytorch/issues/3924**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 问题单 pytorch社区用例没有验证torch.jit._script_if_tracing,故新增该测试用例文件,用于验证api的正确性。 # 【修改方案】 一、API 功能说明 在 PyTorch 的 JIT 机制中,类注册表用于维护已编译的脚本类信息,这对于解析和链接类定义至关重要。然而,由于类注册表是进程全局且持久化的,在长时间运行的进程或需要重置状态的测试场景中,旧类的残留可能导致 ID 冲突、内存泄漏或类型解析错误。torch.jit._state._clear_class_state 的核心功能是:清空 JIT 内部维护的类注册表和相关的编译缓存状态。它的设计初衷是为了提供一种强制的状态重置机制,主要用于隔离测试环境或清理脏数据,确保后续的类注册和编译操作在一个全新的初始状态下进行。 二、测试文件 test_jit_state_clear_class_state.py 完整验证该 API 的原因 以上代码的核心验证功能是:验证 torch.jit._state._clear_class_state 能够彻底清空之前注册到 JIT 系统中的类状态,从而允许同名类被重新定义和编译,而不会产生类型冲突或复用旧的缓存逻辑。 具体包含以下三个维度的验证: 状态隔离与重置验证: 验证了在调用 _clear_class_state 之前,自定义的脚本类被 JIT 编译器记录并缓存。 验证了调用 _clear_class_state 后,JIT 系统对之前的类定义“失忆”,后续定义的同名类被视为全新的类型,而非复用旧的类结构。 编译环境解耦验证: 验证了清理后,新注册的类属性(如 torch.jit.Attribute)能够正确生效,不会受到旧类定义的字段干扰。 验证了清理操作不仅清除了类结构,还确保了后续的 torch.jit.script 调用能够基于最新的类定义进行解析和图生成。 功能复现性验证: 使用断言检查类名或类实例的唯一性(例如通过类型字符串或哈希值对比),确保清理后的类实例与清理前的类实例在类型系统层面完全不同,从而确认状态清理的有效性。 三、NPU适配 torch.jit._state._clear_class_state 具备硬件无关性、纯 Python 层实现、无底层算子依赖三大核心特征,决定了其无需针对昇腾 NPU 做修改,具体分析: 1. 纯 Python 层抽象,无硬件相关逻辑 _clear_class_state API:本质上是操作 JIT 编译器前端内部全局字典(或注册表)的辅助函数,用于删除已保存的类类型信息。它是「编译器状态管理」的纯 Python 抽象接口,不涉及任何硬件相关的计算、内存布局调整或通信逻辑。 核心机制:仅针对 Python 对象(类、类型、字符串)构成的缓存结构进行清空操作,逻辑完全独立于底层硬件架构,无论底层是运行在 CPU 还是 NPU 上,类的注册信息结构体都是一致的。 2. 无底层算子 / 内核依赖 该 API 内部仅访问 PyTorch JIT 核心维护的 Python 全局变量(如 _jit_class_types 等),未依赖 CUDA/NPU 等硬件相关的扩展库、内核函数或底层驱动。 其逻辑流转不涉及任何张量计算、显存/内存分配或设备间数据传输,仅是纯粹的内存数据结构清理操作,因此无需调用任何硬件相关接口(如 torch_npu.npu_set_device 等)。 3. 核心逻辑与硬件解耦 类型系统解耦:_clear_class_state 操作的对象是 TorchScript 的类型系统(Type System),这是软件层面的中间表示(IR)概念,与硬件架构无关。无论是 NPU 还是其他设备,类的类型定义和名称解析规则完全一致,清理逻辑无需针对 NPU 调整。 全局状态解耦:该 API 作用于进程级别的软件状态,而非硬件设备的上下文状态。它不感知也不绑定任何特定的硬件设备上下文(Device Context),NPU 环境下的类注册信息与 CPU 环境下在数据结构上无异,清理操作可直接复用。 执行路径解耦:当脚本类中包含 NPU 算子时,_clear_class_state 仅负责清除“类结构”的定义缓存,而不涉及算子本身在 NPU 上的二进制实现。实际算子的调度由 NPU Backend 在运行时处理,该 API 仅清理软件层面的定义,因此 NPU 环境下其“重置-清理”的流转规则无需调整。 简言之,_clear_class_state 是「硬件无关的纯 Python 状态管理抽象」,核心逻辑不耦合任何特定硬件(包括 GPU/NPU/CPU),因此适配昇腾 NPU 时无需修改该 API 本身,可直接复用。 # 【资料变更】 >“不涉及” 已检查文档,https://gitcode.com/Ascend/pytorch/tree/v2.7.1/docs/zh/native_apis 下面各个版本都写了这些API已支持,所以不需要提交PR修改资料。 # 【接口变更】 >“不涉及” # 【功能验证】 > 在torch2.7.1版本上执行该用例,均通过,日志如下: [root@k8s-worker nn]# python test_jit_state_clear_class_state.py . ---------------------------------------------------------------------- Ran 1 test in 0.026s OK > 在torch2.11.0版本上执行该用例,均通过,日志如下: `` [root@k8s-worker nn]# python test_jit_state_clear_class_state.py /root/miniconda3/envs/torch2.11/lib/python3.11/site-packages/torch/jit/_script.py:1488: DeprecationWarning: torch.jit.script is deprecated. Please switch to torch.compile or torch.export. warnings.warn( . ---------------------------------------------------------------------- Ran 1 test in 0.027s OK > 在torch2.12.0版本上执行该用例,均通过,日志如下: [root@k8s-worker nn]# python test_jit_state_clear_class_state.py W0811 16:05:40.190000 2454025 site-packages/torch/_native/cutedsl_utils.py:55] CuTeDSL operators require optional Python packages nvidia-cutlass-dsl and apache-tvm-ffi; missing optional dependency nvidia_cutlass_dsl (importlib.util.find_spec(nvidia_cutlass_dsl) failed) /root/miniconda3/envs/torch2.12/lib/python3.11/site-packages/torch/jit/_script.py:1488: DeprecationWarning: torch.jit.script is deprecated. Please switch to torch.compile or torch.export. warnings.warn( . ---------------------------------------------------------------------- Ran 1 test in 0.025s OK > 在master版本上执行该用例,均通过,日志如下: [root@k8s-worker nn]# python test_jit_state_clear_class_state.py W0811 16:05:40.190000 2454025 site-packages/torch/_native/cutedsl_utils.py:55] CuTeDSL operators require optional Python packages nvidia-cutlass-dsl and apache-tvm-ffi; missing optional dependency nvidia_cutlass_dsl (importlib.util.find_spec(nvidia_cutlass_dsl) failed) /root/miniconda3/envs/torch2.12/lib/python3.11/site-packages/torch/jit/_script.py:1488: DeprecationWarning: torch.jit.script is deprecated. Please switch to torch.compile or torch.export. warnings.warn( . ---------------------------------------------------------------------- Ran 1 test in 0.026s OK `` # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!43373 | 1 个月前 | |
| 2 年前 | ||
[Fix] Fix static check errors detected by SPACES Co-authored-by: huangjingwei<huangjingwei4@huawei.com> # message auto-generated for no-merge-commit merge: !35981 merge master_lintrunner into master [Fix] Fix static check errors detected by SPACES Created-by: huangjingwei Commit-by: huangjingwei Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 检测和删除代码中的行尾空白字符 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 不涉及 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!35981 | 4 个月前 | |
| 2 年前 | ||
[Fix] Fix static check errors detected by SPACES Co-authored-by: huangjingwei<huangjingwei4@huawei.com> # message auto-generated for no-merge-commit merge: !35981 merge master_lintrunner into master [Fix] Fix static check errors detected by SPACES Created-by: huangjingwei Commit-by: huangjingwei Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 检测和删除代码中的行尾空白字符 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 不涉及 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!35981 | 4 个月前 | |
test(nn): add test for torch.nn.Module.bfloat16 and torch.nn.Module.apply Co-authored-by: yangke<1723981822@qq.com> # message auto-generated for no-merge-commit merge: !45798 merge test-module-bfloat16-apply into master test(nn): add test for torch.nn.Module.bfloat16 and torch.nn.Module.apply Created-by: gcw_8p1hhlB0 Commit-by: yangke Merged-by: ascend-robot Description: # 【合入来源】 > <font color="red">**https://gitcode.com/Ascend/pytorch/issues/4608**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] issue/工单 pytorch 社区用例没有直接验证 torch.nn.Module.bfloat16 和 torch.nn.Module.apply 的用例,故新增该测试用例文件,用于验证这两个 API 在 NPU 上的正确性。 # 【修改方案】 一、API功能说明 1. torch.nn.Module.bfloat16 将模块所有浮点类型的参数和缓冲区原地(in-place)转换为 bfloat16 数据类型, 非浮点张量保持不变,返回 self。底层通过 _apply 递归处理所有子模块, dtype 转换在张量所在设备上执行,属于涉及硬件的接口。 2. torch.nn.Module.apply 将 fn 递归地应用到自身及所有子模块(后序遍历:先递归 children 再 fn(self)), 返回 self。纯 Python 递归接口,典型用途为参数初始化、批量迁移设备。 二、测试文件 test_module_bfloat16_apply.py 完整验证该 API 的原因 社区用例检索情况(在 pytorch 官方仓库 test 目录按短关键词检索,覆盖 v2.7.1/v2.11.0/v2.12.0/v2.13.0,用例分布一致): 1. torch.nn.Module.bfloat16:test_nn.py 中 bfloat16 相关用例(如参数化生成的 *_bfloat16 前向计算用例)均验证算子在 bf16 dtype 下的前向行为,全 test 目录无直接验证 Module.bfloat16() 转换方法的用例,社区用例确实缺失,需要新增。 2. torch.nn.Module.apply:仅在其他用例中顺带使用(test_dynamo_distributed.py、 test_module_hooks.py、quantization 等),test_nn.py 的 test_module_apply_inplace_op 验证的是私有方法 _apply,社区无直接用例。 用例覆盖说明(按 API 功能一致标准覆盖全场景): 1. torch.nn.Module.bfloat16(该 API 无入参,按张量类型等价类划分): test_bfloat16_casts_all_floating_point_params_and_buffers:fp32/fp64 参数与 fp32 缓冲区(含嵌套子模块)全部转为 bfloat16; test_bfloat16_keeps_non_floating_point_tensors:int64 缓冲区保持不变; test_bfloat16_returns_self_and_keeps_device:返回 self、设备不变; test_bfloat16_module_without_floating_point_tensors:无浮点张量模块边界场景; test_bfloat16_matches_cpu_result:NPU 侧与 CPU 侧转换结果一致性对比。 2. torch.nn.Module.apply(fn 为唯一入参): test_apply_calls_fn_on_self_and_all_submodules:fn 对自身及全部子模块各调用一次; test_apply_visits_submodules_before_parent:后序遍历顺序验证; test_apply_returns_self:返回 self; test_apply_moves_module_to_device:apply 批量迁移模块到设备的典型用法(张量运行在 NPU); test_apply_raises_type_error_for_non_callable_fn:fn 不可调用的异常传参场景。 社区用例检索证据(pytorch 官方仓库 v2.7.1 test 目录实际 grep 输出):   三、NPU适配 本用例按规范在导入头文件后获取设备: device_type = acc.type if (acc := torch.accelerator.current_accelerator()) else "cpu" 张量全部运行在 NPU 上(CPU 环境自动回退),无需对 API 本身做任何修改。 # 【资料变更】 不涉及 torch.nn.Module.bfloat16、torch.nn.Module.buffers 在 docs/zh/api/native_api 各版本目录中已有条目且无错误; torch.nn.Module.add_module / torch.nn.Module.apply / torch.nn.Module.children 的错误“self仅支持fp32”限制说明已单独提交 PR 修正:[文档 PR 链接] # 【接口变更】 不涉及 # 【功能验证】 验证结论:在 NPU 环境下(Atlas NPU 单卡,torch 2.10.0 + torch_npu 2.10.0,CANN 9.0.0),新增测试文件 10 个用例全部通过(TestModuleBFloat16 5 例 + TestModuleApply 5 例);torch.nn.Module.bfloat16 的 NPU 侧与 CPU 侧转换结果逐位一致(torch.equal 为 True);torch.nn.Module.apply 后序递归、设备迁移行为符合预期。验证结果表明两个 API 在 NPU 环境下功能正常,无需修改源码即可稳定适配 NPU 设备。 用例运行结果:   # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!45798 | 27 天前 | |
修复API入参校验和用例适配 Co-authored-by: bellatan<tanmei2@huawei.com> # message auto-generated for no-merge-commit merge: !36469 merge fix_api_validation into master 修复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_limit 和 get_device_limit 的 device 参数语义是指定 NPU 设备卡号,应传入明确的 NPU 设备 ID。 **当前问题:** 传入 None 和 float 等非 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_hf32、conv.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. 只允许 True 或 False; 3. int、str、None、list、dict 等非 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   2. 已有用例:test/npu/test_torch_backends.py  3. 已有用例:test/nn/test_module_hooks.py  # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!36469 | 4 个月前 | |
[Fix] Fix static check errors detected by SPACES Co-authored-by: huangjingwei<huangjingwei4@huawei.com> # message auto-generated for no-merge-commit merge: !35981 merge master_lintrunner into master [Fix] Fix static check errors detected by SPACES Created-by: huangjingwei Commit-by: huangjingwei Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 检测和删除代码中的行尾空白字符 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 不涉及 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!35981 | 4 个月前 | |
| 2 年前 | ||
add test for nn.Module.npu() Co-authored-by: zf_zhang<sjzz0306@outlook.com> # message auto-generated for no-merge-commit merge: !35161 merge test-nn-module-npu-master into master add test for nn.Module.npu() Created-by: zf_zhang Commit-by: zf_zhang Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">https://gitcode.com/Ascend/pytorch/issues/1888?ref=&did=3951326#tid-3951326</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> pytorch社区的test_nn.py中没有torch.nn.Module.npu的测试用例文件,故修改test/nn/test_nn_api.py这个测试用例文件,用于验证这个api的正确性 - [ ] 需求 - [ ] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) 用例设计原则 本次验证结合官方用例复用与自定义用例补充的方式,遵循 “最小化、核心化、针对性” 原则,核心思路为: 补充缺失用例:针对torch.nn.Module.npu这个缺失用例,我们设计了精简且详细的测试用例,覆盖了其核心功能 聚焦核心功能:我们验证了这个 API 的基础操作以及功能,确保结果反映 API 本身适配状态; 轻量化设计:单个测试方法仅验证一个核心功能点,逻辑清晰、执行高效,便于问题定位。 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” 不涉及 # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” 不涉及 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 在master 版本上执行该用例,测试通过,日志如下: root@aa02efd9993a:/home/test# python /home/test/pytorch-v271/test/nn/test_nn_api.py -v TestNNModuleAPIs.test_npu test_npu (__main__.TestNNModuleAPIs.test_npu) Checks that moving a module (with both parameters and buffers) to NPU via to("npu") or .npu() correctly places all tensors on the NPU device. ... ok ---------------------------------------------------------------------- Ran 1 test in 2.078s OK # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!35161 | 5 个月前 | |
[Fix] Fix static check errors detected by SPACES Co-authored-by: huangjingwei<huangjingwei4@huawei.com> # message auto-generated for no-merge-commit merge: !35981 merge master_lintrunner into master [Fix] Fix static check errors detected by SPACES Created-by: huangjingwei Commit-by: huangjingwei Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 检测和删除代码中的行尾空白字符 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 不涉及 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!35981 | 4 个月前 | |
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
test: add NPU test cases for torch.nn.attention.flex_attention BlockMask.to_string, create_mask, create_nested_block_mask Co-authored-by: gcw_H7sZe82x<2640411208@qq.com> # message auto-generated for no-merge-commit merge: !45154 merge test-flex-attention-apis-master into master test: add NPU test cases for torch.nn.attention.flex_attention BlockMask.to_string, create_mask, create_nested_block_mask Created-by: gcw_H7sZe82x Commit-by: gcw_H7sZe82x Merged-by: ascend-robot Description: ## 【合入来源】 - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 - 关联 issue: - https://atomgit.com/Ascend/pytorch/issues/3288 (torch.nn.attention.flex_attention.BlockMask.to_string) - https://atomgit.com/Ascend/pytorch/issues/3289 (torch.nn.attention.flex_attention.create_mask) - https://atomgit.com/Ascend/pytorch/issues/3290 (torch.nn.attention.flex_attention.create_nested_block_mask) - 任务分类:1.2②(PyTorch 官方社区无用例或未覆盖完整,且 API 涉及硬件接口) - 三个 API 均属于 torch.nn.attention.flex_attention 模块,故合并到同一测试文件中。 - pytorch 社区没有针对这三个 API 的独立且充分的测试用例,故新增该测试文件,用于验证这些 API 的正确性。 ## 【修改方案】 ### 一、API 功能说明 #### 1. torch.nn.attention.flex_attention.BlockMask.to_string BlockMask 类的字符串可视化方法,返回 BlockMask 的字符串表示。 - **签名**:to_string(self, grid_size: int | tuple[int, int] = (20, 20), limit: int = 4) -> str - **参数**: - grid_size:网格大小,控制输出可视化网格的行列数。为 int 时表示行列均相同;为 tuple 时分别指定行列;为 -1 时输出非压缩版本。 - limit:限制显示的 batch/head 组合数量,超出部分以 "..." 截断。 - **返回值**:str,包含可视化字符(█、空格、░)和 batch 索引的字符串。 - **内部实现**:调用 self.to_dense() 获取稠密掩码张量(涉及设备上的张量操作),再根据 grid_size 和 limit 参数生成可视化字符串。 #### 2. torch.nn.attention.flex_attention.create_mask 根据 mod_fn 函数创建掩码张量。 - **签名**:create_mask(mod_fn, B, H, Q_LEN, KV_LEN, device=None) -> Tensor - **参数**: - mod_fn:mask_mod 或 score_mod 函数,定义掩码模式。 - B:批量大小,为 None 时默认 1。 - H:头数,为 None 时默认 1。 - Q_LEN:查询序列长度。 - KV_LEN:键/值序列长度。 - device:设备,为 None 时使用当前加速器。 - **返回值**:Tensor,形状为 (B, H, Q_LEN, KV_LEN) 的掩码张量。 - **内部实现**:在设备上创建 arange 张量,通过 vmap 对 mod_fn 进行向量化计算,涉及设备上的张量操作。 #### 3. torch.nn.attention.flex_attention.create_nested_block_mask 根据 mask_mod 函数创建与嵌套张量(NJT)兼容的块掩码。 - **签名**:create_nested_block_mask(mask_mod, B, H, q_nt, kv_nt=None, BLOCK_SIZE=128, _compile=False) -> BlockMask - **参数**: - mask_mod:mask_mod 函数,定义掩码模式。 - B:批量大小。 - H:头数。 - q_nt:查询嵌套张量(Jagged layout NJT)。 - kv_nt:键/值嵌套张量,为 None 时使用 q_nt。 - BLOCK_SIZE:块大小。 - **返回值**:BlockMask 对象。 - **版本说明**:该 API 仅在 PyTorch v2.7.1 中存在,v2.11.0,v2.12.0,master 已移除。测试中使用 setUp + self.skipTest() 条件跳过。 ### 二、测试用例完备性说明 PyTorch 社区测试覆盖情况: - BlockMask.to_string:社区在 test/inductor/test_flex_attention.py 中仅通过 str(block_mask) 间接调用(默认参数),grid_size 和 limit 参数均未覆盖。 - create_mask:社区测试中无直接调用。 - create_nested_block_mask:社区测试中无直接调用。 新增测试文件 test/nn/test_npu_block_mask.py,共 28 个测试用例,分为三个测试类: #### TestBlockMaskToString(12 个用例) | 参数 | 覆盖场景 | 测试方法 | | --- | --- | --- | | grid_size | 默认值 (20, 20) | test_to_string_default | | grid_size | int 类型 | test_to_string_grid_size_int | | grid_size | tuple 类型(正方形) | test_to_string_grid_size_tuple | | grid_size | tuple 类型(非正方形) | test_to_string_grid_size_non_square_tuple | | grid_size | -1(非压缩) | test_to_string_grid_size_negative_one | | limit | 0(边界值,立即截断) | test_to_string_limit_zero | | limit | 1(边界值,显示一个后截断) | test_to_string_limit_one | | limit | 大于 batch*head(显示全部) | test_to_string_limit_large | | grid_size + limit | 组合参数 | test_to_string_combined_params | | 返回值 | 包含可视化字符 █ 和空格 | test_to_string_contains_visual_chars | | 返回值 | 包含 batch 索引 (0, 0) | test_to_string_contains_batch_indices | | 等价性 | grid_size int 等价于相同值 tuple | test_to_string_int_equals_tuple | #### TestCreateMask(11 个用例) | 参数 | 覆盖场景 | 测试方法 | | --- | --- | --- | | mod_fn | mask_mod 函数(4参数) | test_create_mask_basic_mask_mod | | mod_fn | score_mod 函数(5参数) | test_create_mask_basic_score_mod | | B | None(默认为 1) | test_create_mask_b_none | | H | None(默认为 1) | test_create_mask_h_none | | B, H | 均为 None | test_create_mask_both_none | | Q_LEN, KV_LEN | 不同长度 | test_create_mask_different_q_kv_len | | 返回值 | 因果掩码值正确性 | test_create_mask_causal_values | | device | 输出在正确设备上 | test_create_mask_device | | mod_fn | prefix LM 掩码 | test_create_mask_prefix_lm | | mod_fn | sliding window 掩码 | test_create_mask_sliding_window | | B, H | 多批量多头 | test_create_mask_multi_batch_heads | #### TestCreateNestedBlockMask(5 个用例,仅 PyTorch v2.7.1) | 参数 | 覆盖场景 | 测试方法 | | --- | --- | --- | | 基本功能 | 返回 BlockMask | test_create_nested_block_mask_basic | | kv_nt | 交叉注意力(显式 kv_nt) | test_create_nested_block_mask_with_kv_nt | | BLOCK_SIZE | 自定义块大小 | test_create_nested_block_mask_block_size | | B, H | 多批量多头 | test_create_nested_block_mask_multi_batch | | device | 输出在正确设备上 | test_create_nested_block_mask_device | ### 三、NPU 适配 - 使用 device_type = acc.type if (acc := torch.accelerator.current_accelerator()) else "cpu" 获取 NPU 设备。 - 通过 create_block_mask(mask_mod, B, H, Q_LEN, KV_LEN, device=device_type) 在 NPU 上创建 BlockMask。 - to_string 内部调用 to_dense() 执行设备上的张量操作,验证 NPU 设备上的正确性。 - create_mask 通过 device=device_type 在 NPU 上创建掩码张量,涉及 arange 和 vmap 设备操作。 - create_nested_block_mask 接收嵌套张量(NJT),在 NPU 设备上创建块掩码。 - create_nested_block_mask 仅在 PyTorch v2.7.1 中可用,使用 setUp + self.skipTest() 在不可用时跳过。 ## 【资料变更】 > 不涉及 > > 另行通过资料补齐 PR 提交至 master 分支,本PR仅提交测试文档,详见资料补齐 PR https://atomgit.com/Ascend/pytorch/pull/45155。 ## 【接口变更】 > 不涉及 > > 仅新增测试用例,未修改任何业务代码。 ## 【功能验证】 新增文件:test/nn/test_npu_block_mask.py ### 运行命令 bash # 运行全部测试 python test/nn/test_npu_block_mask.py # 单独运行各 API 测试类 python test/nn/test_npu_block_mask.py TestBlockMaskToString python test/nn/test_npu_block_mask.py TestCreateMask python test/nn/test_npu_block_mask.py TestCreateNestedBlockMask ### torch.nn.attention.flex_attention.BlockMask.to_string 验证结果 bash $ python test/nn/test_npu_block_mask.py TestBlockMaskToString test_to_string_combined_params ... ok test_to_string_contains_batch_indices ... ok test_to_string_contains_visual_chars ... ok test_to_string_default ... ok test_to_string_grid_size_int ... ok test_to_string_grid_size_negative_one ... ok test_to_string_grid_size_non_square_tuple ... ok test_to_string_grid_size_tuple ... ok test_to_string_int_equals_tuple ... ok test_to_string_limit_large ... ok test_to_string_limit_one ... ok test_to_string_limit_zero ... ok ---------------------------------------------------------------------- Ran 12 tests in ...s OK ### torch.nn.attention.flex_attention.create_mask 验证结果 bash $ python test/nn/test_npu_block_mask.py TestCreateMask test_create_mask_basic_mask_mod ... ok test_create_mask_basic_score_mod ... ok test_create_mask_b_none ... ok test_create_mask_both_none ... ok test_create_mask_causal_values ... ok test_create_mask_device ... ok test_create_mask_different_q_kv_len ... ok test_create_mask_h_none ... ok test_create_mask_multi_batch_heads ... ok test_create_mask_prefix_lm ... ok test_create_mask_sliding_window ... ok ---------------------------------------------------------------------- Ran 11 tests in ...s OK ### torch.nn.attention.flex_attention.create_nested_block_mask 验证结果 PyTorch v2.7.1(API 存在): bash $ python test/nn/test_npu_block_mask.py TestCreateNestedBlockMask test_create_nested_block_mask_basic ... ok test_create_nested_block_mask_block_size ... ok test_create_nested_block_mask_device ... ok test_create_nested_block_mask_multi_batch ... ok test_create_nested_block_mask_with_kv_nt ... ok ---------------------------------------------------------------------- Ran 5 tests in ...s OK PyTorch v2.11.0 / v2.12.0 / master(API 已移除,自动跳过): bash $ python test/nn/test_npu_block_mask.py TestCreateNestedBlockMask test_create_nested_block_mask_basic ... skipped 'create_nested_block_mask is only available in PyTorch 2.7' test_create_nested_block_mask_block_size ... skipped 'create_nested_block_mask is only available in PyTorch 2.7' test_create_nested_block_mask_device ... skipped 'create_nested_block_mask is only available in PyTorch 2.7' test_create_nested_block_mask_multi_batch ... skipped 'create_nested_block_mask is only available in PyTorch 2.7' test_create_nested_block_mask_with_kv_nt ... skipped 'create_nested_block_mask is only available in PyTorch 2.7' ---------------------------------------------------------------------- Ran 5 tests in ...s OK (skipped=5) ### 全部测试汇总 | 版本 | 运行命令 | 结果 | | --- | --- | --- | | PyTorch v2.7.1 | python test/nn/test_npu_block_mask.py | Ran 28 tests, OK | | PyTorch v2.11.0 | python test/nn/test_npu_block_mask.py | Ran 28 tests, OK (skipped=5) | | PyTorch v2.12.0 | python test/nn/test_npu_block_mask.py | Ran 28 tests, OK (skipped=5) | | master | python test/nn/test_npu_block_mask.py | Ran 28 tests, OK (skipped=5) | ## 【CheckList】 - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR 标题正确使用类型标签,如:feat、fix、refactor、docs、test 等 - [x] PR 持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!45154 | 21 天前 | |
feat: add autocast registration for flex_attention both eager and inductor Co-authored-by: liuyutong_bury<liuyutong25@huawei.com> # message auto-generated for no-merge-commit merge: !44287 merge feat/flex-attention-eager-autocast-v2 into master feat: add autocast registration for flex_attention both eager and inductor Created-by: liuyutong_bury Commit-by: liuyutong_bury Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> https://gitcode.com/Ascend/pytorch/issues/3824 - [x] 需求 - [ ] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 ## 修改文件 | 文件 | 操作 | 说明 | |------|------|------| | torch_npu/utils/patch_flexattention.py | 新建 | autocast 注册函数 + device 校验函数(不自动执行,由 PatchManager 调用) | | torch_npu/_init/patches/npu_patches.py | 修改 | 新增 apply_flex_attention_patch(),通过 PatchManager 在 import torch_npu 时触发 | | torch_npu/contrib/transfer_to_npu.py | 修改 | 删除 _patch_flex_attention_device 定义及 from torch_npu.utils import patch_flexattention | | torch_npu/_inductor/__init__.py | 修改 | 删除 _validate_device 的 import 和 flex_attention._validate_device = _validate_device 赋值 | | test/nn/test_npu_flexattention.py | 新建 | eager 执行 + autocast bf16 正确性测试 | ## 实现方案 将 flex_attention 的 AutocastPrivateUse1 注册和设备校验 patch 定义在 torch_npu.utils.patch_flexattention,通过 PatchManager 在 import torch_npu 时统一触发,不再依赖 eager / inductor 两条路径各自显式 import。 幂等安全:has_kernel_for_dispatch_key + _npu_device_patched flag 双保险,多次 import 不会冲突。 运行时路径 import torch_npu │ └─ PatchManager._apply_all_patches() │ └─ apply_flex_attention_patch() │ ├─ _patch_flex_attention_device() │ └─ fa_mod._validate_device = _npu_valid_device │ (接受 NPU tensor,拒绝非 NPU / 混合设备) │ └─ _register_npu_flex_attention_autocast() └─ flex_attention_hop.py_impl(AutocastPrivateUse1)(...) flex_attention_backward_hop.py_impl(AutocastPrivateUse1)(...) 验证 test 1: eager 模式 — flex_attention 在 NPU 上直接执行 test 2: autocast — bf16 自动类型转换 + 数值正确性 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!44287 | 2 个月前 | |
| 2 年前 | ||
test(nn): add PackedSequence API tests on NPU Co-authored-by: Jinfan Liu<1300083451@qq.com> # message auto-generated for no-merge-commit merge: !37118 merge test-packed-sequence-api-clean-npu-master into master test(nn): add PackedSequence API tests on NPU Created-by: JfanLiu Commit-by: Jinfan Liu Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**https://gitcode.com/Ascend/pytorch/issues/2003**</font> > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> [x] 问题单 # 【修改方案】 一、API功能说明 API范围: - torch.nn.utils.rnn.PackedSequence - torch.nn.utils.rnn.PackedSequence.count - torch.nn.utils.rnn.PackedSequence.index - torch.nn.utils.rnn.PackedSequence.is_pinned - torch.nn.utils.rnn.PackedSequence.to 1. torch.nn.utils.rnn.PackedSequence 是 PyTorch RNN 工具模块中表示变长序列压缩结果的数据结构,主要由 torch.nn.utils.rnn.pack_padded_sequence、torch.nn.utils.rnn.pack_sequence 等接口构造,也可以直接由 data、batch_sizes、sorted_indices、unsorted_indices 四元组构造。 核心能力:保存压缩后的 data Tensor、每个 time step 的 batch_sizes,以及可选的 sorted_indices / unsorted_indices,用于在压缩序列和 padded 序列之间恢复顺序关系。 设备约束:data 可以位于 NPU;sorted_indices / unsorted_indices 跟随 data 的设备;batch_sizes 是序列结构元数据,按 PyTorch 接口约束保持 CPU int64 Tensor。 2. torch.nn.utils.rnn.PackedSequence.to 是 PackedSequence 的设备和 dtype 迁移接口,语义对齐 torch.Tensor.to。 核心能力:对 data 执行目标 device / dtype 转换,并同步迁移 sorted_indices / unsorted_indices;当 data 已满足目标配置时返回 self,避免不必要拷贝。 边界约束:to 不迁移 batch_sizes,保持 PackedSequence 对 batch_sizes 的 CPU 元数据约束。 3. torch.nn.utils.rnn.PackedSequence.count / torch.nn.utils.rnn.PackedSequence.index 是 PackedSequence 继承自 NamedTuple 的实例方法。 核心能力:count 返回指定成员值在 PackedSequence 四元组中的出现次数;index 返回指定成员值首次出现的位置。 验证重点:PackedSequence 有自定义构造逻辑,需要在真实 PackedSequence 实例上确认 NamedTuple 的 tuple-like 行为没有被破坏。 4. torch.nn.utils.rnn.PackedSequence.is_pinned 是 PackedSequence 的 pinned memory 状态查询接口。 核心能力:返回 self.data.is_pinned() 的结果,用于判断 PackedSequence 的实际 data Tensor 是否处于 pinned memory 状态。 设备边界:NPU Tensor 不走 CPU pinned memory 语义,验证重点是接口可调用、返回值稳定,并且不会破坏 PackedSequence 的 NPU data Tensor 路径。 二、测试用例完备性说明 PyTorch 社区 test/nn/test_packed_sequence.py 已覆盖 torch.nn.utils.rnn.PackedSequence.to 及 pack/pad/unpack 集成路径,但缺少 torch.nn.utils.rnn.PackedSequence.count、torch.nn.utils.rnn.PackedSequence.index、torch.nn.utils.rnn.PackedSequence.is_pinned 的直接用例。 master 分支不提交 test_upstream patch。本 PR 在 torch-npu test 目录新增 test/nn/test_packed_sequence_api.py,包含 3 个直接用例: 1. test_packed_sequence_constructor_and_to_on_npu:构造 NPU data + CPU batch_sizes + NPU sorted/unsorted indices 的 PackedSequence,验证构造、设备约束、is_pinned,以及 to("cpu") / to("npu") 迁移。 2. test_packed_sequence_namedtuple_methods_on_optional_indices:验证 count(None)、index(None)、count("non_existent") 和 index 不存在成员抛 ValueError,覆盖 NamedTuple 方法。 3. test_packed_sequence_rejects_accelerator_batch_sizes:验证 NPU batch_sizes 按 PyTorch 约束抛出 ValueError。 三、NPU适配方案 1. API 源码无需修改:上述 API 位于 PyTorch 框架层,核心逻辑为 PackedSequence 结构管理、Tensor.to 调用转发和 NamedTuple 行为。 2. 新增 torch-npu 原生测试:补齐 PyTorch 社区缺少的 count/index/is_pinned 直接验证,并补充 PackedSequence.to 与 batch_sizes CPU 元数据约束验证。 # 【资料变更】 > 已检查 v2.7.1 docs/zh/native_apis 中各版本 torch-nn.md,以及 v2.12.0 docs/api/torch_npu_apis.md。torch.nn.utils.rnn.PackedSequence、torch.nn.utils.rnn.PackedSequence.count、torch.nn.utils.rnn.PackedSequence.index、torch.nn.utils.rnn.PackedSequence.is_pinned、torch.nn.utils.rnn.PackedSequence.to 均已列入 API 支持列表。本次只补充/适配测试用例,不涉及资料补充。 # 【接口变更】 > 不涉及。API 源码无修改,不新增、删除或变更对外接口。 # 【功能验证】 > 新增用例与 2.12.0 分支同源,已在 2.12.0 torch-npu 环境执行通过: bash python test/nn/test_packed_sequence_api.py Ran 3 tests in 1.446s OK See merge request: Ascend/pytorch!37118 | 4 个月前 | |
| 2 年前 | ||
[Docs][Test] Supplement nn.parameter.is_lazy document and test case Co-authored-by: m0_45651774<2759927519@qq.com> # message auto-generated for no-merge-commit merge: !44234 merge test-nn-parameter-is-lazy-master into master [Docs][Test] Supplement nn.parameter.is_lazy document and test case Created-by: m0_45651774 Commit-by: m0_45651774 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 **[[Usage]: torch.nn.parameter.is_lazy在 torch-npu 的资料未明确标注支持状态,但实际在 NPU 环境下可正常使用 ](https://gitcode.com/Ascend/pytorch/issues/3335)**</font>\ **请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 问题单 pytorch社区用例没有验证充分torch.nn.parameter.is_lazy,故新增该测试用例文件,验证其在不同参数类型及 NPU 场景下的行为是否符合预期。。 # 【修改方案】 **一、API 功能说明** torch.nn.parameter.is_lazy 用于判断一个参数(parameter)或缓冲区(buffer)是否处于 lazy(延迟初始化)状态。 判断输入对象 param 是否为: • torch.nn.UninitializedParameter • torch.nn.UninitializedBuffer 如果是,则返回 True;否则返回 False。 **二、测试文件test_parameter_is_lazy.py完整验证该 API 的原因** PyTorch 官方社区暂无针对该 API 的直接独立用例覆盖,有相关调用,但是验证功能不充分,因此自行编写用例并提交到 test 目录。 1. 覆盖了 API 的所有正向逻辑(True 场景) is_lazy 的核心功能是判断对象是否为未初始化的延迟(Lazy)状态。测试通过以下用例验证了所有符合该特性的对象: 未初始化的 Parameter (UninitializedParameter):验证 API 能正确识别延迟参数,返回 True。 未初始化的 Buffer (UninitializedBuffer):验证 API 能正确识别延迟 Buffer,返回 True。 2. 覆盖了全面的负向与边界逻辑(False 场景) 测试不仅验证了“是”的情况,还通过对比组排除了其他常见数据类型的干扰,确保没有假阳性(False Positive): 普通 Parameter:已实例化的 Parameter 应返回 False。 普通 Tensor:标准的 PyTorch 张量应返回 False。 空值 None:处理非法或边界输入时,API 不会崩溃并能安全返回 False。 3. 验证了生命周期变化(动态状态转换) 延迟加载(Lazy Model)的核心机制在于“先占位,后实例化”。 test_is_lazy_after_materialize 完整模拟了参数的生命周期: 1.初始为 UninitializedParameter is_lazy 返回 True。 2.调用 .materialize() 完成实体化 is_lazy 返回 False。 此用例确保了 API 能精准感知对象从 Lazy Concrete 的状态转变。 4. 适配特定硬件环境(NPU 跨设备验证) 代码开头使用 torch.accelerator.current_accelerator() 动态获取设备类型(如 NPU/Ascend)。 所有的验证用例在创建 Tensor/Parameter 时,都显式指定了 device=device_type。这不仅验证了 API 在标准 CPU 上的逻辑,还确保了其在 NPU 等特定硬件加速器上的兼容性与正确性。 **三、NPU适配** `` torch.nn.parameter.is_lazy 是 PyTorch 中用于判断参数是否处于 Lazy 初始化状态的纯 Python 层辅助 API。其核心逻辑仅依赖 UninitializedParameter 和 UninitializedBuffer 类型判断,不涉及 Tensor 计算、设备管理、内存分配或底层 Kernel 调用。核心逻辑不耦合任何特定硬件(包括 GPU/NPU/CPU),因此适配昇腾 NPU 时无需修改这个 API 本身,可直接复用。 # 【资料变更】 涉及 已检查文档,https://gitcode.com/Ascend/pytorch/tree/master/docs/zh/api/native_api 下面各个版本未写了该API已支持,所以需要提交PR修改资料。 注意:由于官方文档v2.7.1版本没有对torch.nn.parameter.is_lazy生成独立页面文档,因此docs中v2.7.1版本不会补齐,仅更新v2.11.0、v2.12.0、v2.13.0. # 【接口变更】 不涉及 # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 在2.7.1、2.11.0 、2.12.0版本上执行该用例,均通过,日志如下: 测试命令: python test/nn/test_parameter_is_lazy.py ``  # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [ ] 代码注释完备,正确记录错误日志 - [ ] 代码实现进行了返回值、空指针等校验 - [ ] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [ ] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!44234 | 2 个月前 | |
[master][Fix] Fix static check errors detected by CODESPELL Co-authored-by: thickhair<zp2165064878@163.com> # message auto-generated for no-merge-commit merge: !38552 merge code_spell_fix_master into master [master][Fix] Fix static check errors detected by CODESPELL Created-by: thickhair Commit-by: thickhair Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 https://gitcode.com/Ascend/pytorch/issues/1865 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容) # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” # 【功能验证】  # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!38552 | 3 个月前 | |
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
Skip failing torch official TestCase tests and disable unsupported test cases Co-authored-by: yuhaiyan<yuhaiyan8@huawei.com> Co-authored-by: yuhaiyan8<yuhaiyan8@h-partners.com> # message auto-generated for no-merge-commit merge: !32140 merge cherry-pick-mr-32139-1774073503832-auto into master Skip failing torch official TestCase tests and disable unsupported test cases Created-by: yuhaiyan Commit-by: yuhaiyan;yuhaiyan8 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [ ] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 1. 暂时跳过失败用例 2. 已提单跟进修复 # 【资料变更】 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及” # 【接口变更】 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及” # 【功能验证】 > 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤\ > 新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [ ] 代码注释完备,正确记录错误日志 - [ ] 代码实现进行了返回值、空指针等校验 - [ ] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [ ] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!32140 | 6 个月前 | |
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
test: add unflatten_dense_tensors NPU coverage Co-authored-by: yulin520<yutianaoxiang@163.com> # message auto-generated for no-merge-commit merge: !41637 merge test-unflatten-dense-tensors-npu-master-issue2862 into master test: add unflatten_dense_tensors NPU coverage Created-by: weixin_65332823 Commit-by: yulin520 Merged-by: ascend-robot Description: # 〖合入来源〗 - [ ] 需求 - [ ] 问题单 - [x] issue/工单:#2862 - [ ] 重构优化 - [ ] 资料更新 Issue: [Issue #2862](https://gitcode.com/Ascend/pytorch/issues/2862) # 〖修改方案〗 本 PR 针对 master 分支新增以下 NPU 测试文件: text test/nn/test_unflatten_dense_tensors.py 涉及 API: python torch._C._nn.unflatten_dense_tensors torch._C._nn.unflatten_dense_tensors 位于 PyTorch C++ 扩展绑定模块 torch._C._nn 中,用于根据原始 tensor 列表的信息,将扁平化后的 dense tensor 拆分并恢复为多个 dense tensor。 经验证,该 API 在 master 分支中已经存在,torch-npu 无需新增对应的 API 实现代码。本 PR 仅补充 Python 层 NPU 测试,用于验证该接口在 NPU Tensor 输入下的行为一致性。 测试中通过统一方式获取当前设备类型: python device_type = ( acc.type if (acc := torch.accelerator.current_accelerator()) else "cpu" ) 本次共新增 4 个测试用例,主要覆盖: 1. **基本功能测试** - 构造多个 NPU dense tensor; - 使用 torch._utils._flatten_dense_tensors 进行 flatten; - 调用 torch._C._nn.unflatten_dense_tensors 恢复 tensor; - 检查输出数量、shape、dtype、device 和数值; - 检查恢复 tensor 的 storage 共享关系及 storage offset。 2. **Empty Tensor 测试** - 验证输入中包含空 tensor 时能够正常恢复; - 检查恢复后的 shape、dtype 和 device。 3. **Autograd 测试** - 验证恢复后的 tensor 可以正常参与后续计算; - 验证反向传播路径可用。 4. **dtype 保持测试** - 覆盖 float16 和 float32; - 验证恢复后的 tensor dtype 与原始 tensor 保持一致。 本 PR: text 未新增 API 实现代码 未引入 transfer_to_npu 自动迁移 未修改 JIT / Dynamo 核心方法 未引入无关文件修改 # 〖资料变更〗 不涉及。 torch._C._nn.unflatten_dense_tensors 属于 PyTorch 内部 C++ 绑定接口。 本 PR 未新增公开 API,也未修改用户可见接口,因此不涉及公共 API 资料变更。 # 〖接口变更〗 不涉及。 本 PR 仅新增 NPU 测试文件,不涉及 API 实现及公开接口变更。 # 〖功能验证〗 验证环境: text 操作系统:Linux(Ubuntu) 昇腾硬件:910B4 CANN:8.5.0 目标分支:master PyTorch:2.14.0.dev20260719+cpu torch_npu:2.14.0+git294761d current accelerator:npu npu available:True npu device count:1 最终验证 Commit: text 294761dc7aabc19f2ee2add22869e50c013d8b0d master 源码版本及 PyTorch 依赖: text torch_npu source version:2.14.0 PyTorch requirement:torch==2.14.0.dev20260719 基于该最终 Commit 实际构建得到: text torch_npu-2.14.0+git294761d-cp311-cp311-linux_aarch64.whl 并在安装该 wheel 后完成真实 NPU Runtime 验证。 已完成以下检查: 1. API 存在性验证; 2. NPU 设备可用性验证; 3. 基本 flatten / unflatten 功能验证; 4. 输出 tensor 数量、shape、dtype、device 验证; 5. 输出 tensor 数值一致性验证; 6. storage 共享关系及 storage offset 验证; 7. empty tensor 场景验证; 8. autograd 路径验证; 9. float16 / float32 dtype 保持验证; 10. 测试文件 Python 语法检查; 11. 测试文件修改范围检查; 12. transfer_to_npu 未引入检查; 13. JIT / Dynamo 核心方法未修改检查; 14. commit 单文件范围检查; 15. master 最终 Commit 对应源码 wheel 构建验证; 16. wheel 安装验证; 17. 真实 NPU Runtime 验证; 18. 最终 PR Commit 对应的 4 个 API43 测试运行验证。 Runtime 验证结果: text TORCH=2.14.0.dev20260719+cpu TORCH_NPU=2.14.0+git294761d DEVICE=npu NPU_RUNTIME=PASS .... ---------------------------------------------------------------------- Ran 4 tests OK API43_RESULT=PASS 最终结果: text BUILD_RESULT=PASS INSTALL_RESULT=PASS API_EXISTENCE_RESULT=PASS NPU_RUNTIME=PASS API43_TEST_COUNT=4 API43_RESULT=PASS FINAL_RESULT=PASS 远程分支与提交信息: text 源仓库:weixin_65332823/pytorch 源分支:test-unflatten-dense-tensors-npu-master-issue2862 目标仓库:Ascend/pytorch 目标分支:master 最终 Commit:294761dc7aabc19f2ee2add22869e50c013d8b0d # 〖CheckList〗 - [x] PR 标题已使用 test 类型标签 - [x] 已关联 Issue #2862 - [x] 已确认 master 分支中 API 存在 - [x] 已使用统一 device_type 获取方式 - [x] 已完成基本功能验证 - [x] 已完成 storage 相关验证 - [x] 已完成 empty tensor 场景验证 - [x] 已完成 autograd 路径验证 - [x] 已完成 float16 / float32 dtype 验证 - [x] 已基于最终 Commit 构建 torch_npu wheel - [x] 已完成 wheel 安装验证 - [x] 已完成真实 NPU Runtime 验证 - [x] 4 个测试用例全部通过 - [x] 已检查新增测试文件内容 - [x] 已确认 commit 仅包含目标测试文件 - [x] 已确认未引入 transfer_to_npu - [x] 已确认未修改 JIT / Dynamo 核心方法 - [x] 已确认不涉及 API 实现代码 - [x] 已确认不涉及资料变更 - [x] 已确认不涉及公开接口变更 # 验证截图  See merge request: Ascend/pytorch!41637 | 2 个月前 | |
[Fix] Fix static check errors detected by SPACES Co-authored-by: huangjingwei<huangjingwei4@huawei.com> # message auto-generated for no-merge-commit merge: !35981 merge master_lintrunner into master [Fix] Fix static check errors detected by SPACES Created-by: huangjingwei Commit-by: huangjingwei Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 检测和删除代码中的行尾空白字符 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 不涉及 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!35981 | 4 个月前 | |
| 2 年前 | ||
[Fix] Fix static check errors detected by SPACES Co-authored-by: huangjingwei<huangjingwei4@huawei.com> # message auto-generated for no-merge-commit merge: !35981 merge master_lintrunner into master [Fix] Fix static check errors detected by SPACES Created-by: huangjingwei Commit-by: huangjingwei Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20260203 --> # 【合入来源】 > <font color="red">**如有社区issue,请关联issue链接**</font>\ > <font color="red">**请勿携带内部流程信息(需求链接、问题单、内部issue等)**</font> - [ ] 需求 - [ ] 问题单 - [x] issue/工单 - [ ] 重构优化 - [ ] 资料更新 # 【修改方案】 检测和删除代码中的行尾空白字符 # 【资料变更】 不涉及 # 【接口变更】 不涉及 # 【功能验证】 不涉及 # 【CheckList】 > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x] - [x] 代码注释完备,正确记录错误日志 - [x] 代码实现进行了返回值、空指针等校验 - [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等 - [x] PR持续集成流水线(CI)执行通过,代码检查无异常 See merge request: Ascend/pytorch!35981 | 4 个月前 | |
| 2 年前 | ||
| 2 年前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 4 个月前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 年前 | ||
| 4 个月前 | ||
| 2 年前 | ||
| 4 个月前 | ||
| 27 天前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 2 年前 | ||
| 5 个月前 | ||
| 4 个月前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 21 天前 | ||
| 2 个月前 | ||
| 2 年前 | ||
| 4 个月前 | ||
| 2 年前 | ||
| 2 个月前 | ||
| 3 个月前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 6 个月前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 个月前 | ||
| 4 个月前 | ||
| 2 年前 | ||
| 4 个月前 | ||
| 2 年前 | ||
| 2 年前 |