已合并
[docs]产品名称修改 #5621
chenzhenxi创建于 7月30日
[docs]产品名称修改 #5621
已合并
共 13 个文件变更+27-27
| @@ -4,7 +4,7 @@ | |||
| 4 | 4 | ||
| 5 | ## 项目介绍 | 5 | ## 项目介绍 |
| 6 | 6 | ||
| 7 | -OpPlugin 是 Ascend Extension for PyTorch(torch_npu)的算子插件,为使用 PyTorch 框架的开发者提供便捷的 NPU 算子库调用能力。本项目旨在为 torch_npu 提供运行所需要的算子适配文件。 | 7 | +OpPlugin 是 TorchNPU 的算子插件,为使用 PyTorch 框架的开发者提供便捷的 NPU 算子库调用能力。本项目旨在为 TorchNPU 提供运行所需要的算子适配文件。 |
| 8 | 8 | ||
| 9 | ### 项目架构 | 9 | ### 项目架构 |
| 10 | 10 | ||
| @@ -76,7 +76,7 @@ op-plugin | |||
| 76 | 76 | ||
| 77 | **Bug Report 格式**: | 77 | **Bug Report 格式**: |
| 78 | 78 | ||
| 79 | -- **环境信息**:OpPlugin 版本、torch_npu 版本、Python 版本、CANN 版本等 | 79 | +- **环境信息**:OpPlugin 版本、TorchNPU 版本、Python 版本、CANN 版本等 |
| 80 | - **问题描述**:添加标签以便在问题仪表板上突出显示 | 80 | - **问题描述**:添加标签以便在问题仪表板上突出显示 |
| 81 | - **复现步骤**:尽可能详细地描述如何重现问题 | 81 | - **复现步骤**:尽可能详细地描述如何重现问题 |
| 82 | - **预期行为**:描述您预期发生的行为 | 82 | - **预期行为**:描述您预期发生的行为 |
| @@ -1,6 +1,6 @@ | |||
| 1 | # OpPlugin 开发镜像 | 1 | # OpPlugin 开发镜像 |
| 2 | 2 | ||
| 3 | -本目录提供 Dockerfile 及构建脚本,用于生成 OpPlugin 的构建与开发镜像:`builder` 镜像提供包含 OpPlugin 源码的 torch_npu wheel 编译环境(不含 CANN),`dev` 镜像在此基础上叠加 CANN 运行环境。 | 3 | +本目录提供 Dockerfile 及构建脚本,用于生成 OpPlugin 的构建与开发镜像:`builder` 镜像提供包含 OpPlugin 源码的 TorchNPU wheel 编译环境(不含 CANN),`dev` 镜像在此基础上叠加 CANN 运行环境。 |
| 4 | 4 | ||
| 5 | ## 1 镜像介绍 | 5 | ## 1 镜像介绍 |
| 6 | 6 | ||
| @@ -12,7 +12,7 @@ base manylinux + Python 软链接 + pip 源 + 基础系统包(curl/wget | |||
| 12 | └── dev builder + CANN(Toolkit + Ops + NNAL 可选) ← 运行环境 | 12 | └── dev builder + CANN(Toolkit + Ops + NNAL 可选) ← 运行环境 |
| 13 | ``` | 13 | ``` |
| 14 | 14 | ||
| 15 | -- **builder**(默认):用于编译包含当前 OpPlugin 源码的 torch_npu wheel,不含 CANN | 15 | +- **builder**(默认):用于编译包含当前 OpPlugin 源码的 TorchNPU wheel,不含 CANN |
| 16 | - **dev**:基于 builder,叠加 CANN 运行环境;继承全部编译工具链,可在容器内直接编译和调试 OpPlugin | 16 | - **dev**:基于 builder,叠加 CANN 运行环境;继承全部编译工具链,可在容器内直接编译和调试 OpPlugin |
| 17 | 17 | ||
| 18 | > Dockerfile会自动根据当前架构(ARM/X86)拉取对应镜像。 | 18 | > Dockerfile会自动根据当前架构(ARM/X86)拉取对应镜像。 |
| @@ -111,7 +111,7 @@ bash builder.sh --cann --no-cache # 含 CANN 且不使用 | |||
| 111 | 111 | ||
| 112 | ## 3 启动容器 | 112 | ## 3 启动容器 |
| 113 | 113 | ||
| 114 | -> torch_npu **编译**无需 CANN/驱动;CANN 与 NPU 驱动仅在**运行时**(`import torch_npu`、调用 NPU 算子)需要。因此根据镜像类型选择不同的启动方式。 | 114 | +> TorchNPU **编译**无需 CANN/驱动;CANN 与 NPU 驱动仅在**运行时**(`import torch_npu`、调用 NPU 算子)需要。因此根据镜像类型选择不同的启动方式。 |
| 115 | > | 115 | > |
| 116 | > 若已通过 `builder.sh` 构建,脚本会自动构建镜像并启动容器,可直接执行下方的 `docker exec` 命令进入容器;本节其余命令仅适用于手动执行 `docker build` 后需自行启动容器的场景。 | 116 | > 若已通过 `builder.sh` 构建,脚本会自动构建镜像并启动容器,可直接执行下方的 `docker exec` 命令进入容器;本节其余命令仅适用于手动执行 `docker build` 后需自行启动容器的场景。 |
| 117 | 117 | ||
| @@ -1,6 +1,6 @@ | |||
| 1 | # aclnn_extension 样例说明 | 1 | # aclnn_extension 样例说明 |
| 2 | 2 | ||
| 3 | -本样例是 **「自定义算子接入 - 结构化代码生成」** 的示例工程,演示如何通过 YAML 描述 + 代码生成工具,将自定义 aclnn 算子接入 PyTorch NPU 生态,并生成可参与 torch_npu 编译的适配代码。 | 3 | +本样例是 **「自定义算子接入 - 结构化代码生成」** 的示例工程,演示如何通过 YAML 描述 + 代码生成工具,将自定义 aclnn 算子接入 Ascned for Pytorch 生态,并生成可参与 TorchNPU 编译的适配代码。 |
| 4 | 4 | ||
| 5 | ## 适用场景 | 5 | ## 适用场景 |
| 6 | 6 | ||
| @@ -15,8 +15,8 @@ | |||
| 15 | 15 | ||
| 16 | ## 环境与依赖 | 16 | ## 环境与依赖 |
| 17 | 17 | ||
| 18 | -- **运行/编译依赖**:PyTorch、torch_npu、CANN。 | 18 | +- **运行/编译依赖**:PyTorch、TorchNPU、CANN。 |
| 19 | - 安装与版本要求见 [torch_npu 安装说明](https://gitcode.com/ascend/pytorch#%E5%AE%89%E8%A3%85)。 | 19 | + 安装与版本要求见 [TorchNPU 安装说明](https://gitcode.com/ascend/pytorch#%E5%AE%89%E8%A3%85)。 |
| 20 | 20 | ||
| 21 | ## 目录与文件结构 | 21 | ## 目录与文件结构 |
| 22 | 22 | ||
| @@ -178,11 +178,11 @@ python test_npu_fast_gelu_custom.py | |||
| 178 | | 2 | `torchnpugen.gen_derivatives` | 仅当传入 `$2` 时执行;根据 derivatives YAML 生成前反向绑定文件 `derivatives.yaml` | `--version`、`--output_dir`、`--source_yaml`(传入的 derivatives YAML) | | 178 | | 2 | `torchnpugen.gen_derivatives` | 仅当传入 `$2` 时执行;根据 derivatives YAML 生成前反向绑定文件 `derivatives.yaml` | `--version`、`--output_dir`、`--source_yaml`(传入的 derivatives YAML) | |
| 179 | | 3 | `torchnpugen.gen_op_backend` | 根据 `op_plugin_functions.yaml` 生成 op_plugin 对外接口与路由(如 OpInterface、OpApiInterface 等) | `--version`、`--output_dir`(`op_plugin/`)、`--source_yaml`(上一步生成的 `op_plugin_functions.yaml`)、`--deprecate_yaml` | | 179 | | 3 | `torchnpugen.gen_op_backend` | 根据 `op_plugin_functions.yaml` 生成 op_plugin 对外接口与路由(如 OpInterface、OpApiInterface 等) | `--version`、`--output_dir`(`op_plugin/`)、`--source_yaml`(上一步生成的 `op_plugin_functions.yaml`)、`--deprecate_yaml` | |
| 180 | | 4 | `torchnpugen.struct.gen_struct_opapi` | 根据算子 YAML 与 `op_plugin_functions.yaml` 生成 aclnn 结构化适配实现(如 `StructKernelNpuOpApi.cpp`) | `--output_dir`(`op_plugin/ops/opapi/`)、`--native_yaml`(`op_plugin_functions.yaml`)、`--struct_yaml`(传入的算子 YAML) | | 180 | | 4 | `torchnpugen.struct.gen_struct_opapi` | 根据算子 YAML 与 `op_plugin_functions.yaml` 生成 aclnn 结构化适配实现(如 `StructKernelNpuOpApi.cpp`) | `--output_dir`(`op_plugin/ops/opapi/`)、`--native_yaml`(`op_plugin_functions.yaml`)、`--struct_yaml`(传入的算子 YAML) | |
| 181 | -| 5 | `torchnpugen.gen_backend_stubs` | 根据 `test_native_functions.yaml` 等生成 torch_npu 侧 backend stub 代码到 `csrc/aten` | `--output_dir`、`--source_yaml`(当前为 `./test_native_functions.yaml`)、`--impl_path`、`--op_plugin_impl_path`、`--op_plugin_yaml_path` | | 181 | +| 5 | `torchnpugen.gen_backend_stubs` | 根据 `test_native_functions.yaml` 等生成 TorchNPU 侧 backend stub 代码到 `csrc/aten` | `--output_dir`、`--source_yaml`(当前为 `./test_native_functions.yaml`)、`--impl_path`、`--op_plugin_impl_path`、`--op_plugin_yaml_path` | |
| 182 | | 6 | `torchnpugen.autograd.gen_autograd` | 根据 `test_native_functions.yaml` 生成 autograd 相关代码到 `csrc/aten` 与 `autograd` | `--out_dir`、`--autograd_dir`、`--npu_native_function_dir`(当前为 `./test_native_functions.yaml`) | | 182 | | 6 | `torchnpugen.autograd.gen_autograd` | 根据 `test_native_functions.yaml` 生成 autograd 相关代码到 `csrc/aten` 与 `autograd` | `--out_dir`、`--autograd_dir`、`--npu_native_function_dir`(当前为 `./test_native_functions.yaml`) | |
| 183 | 183 | ||
| 184 | - **步骤 1~4** 使用算子 YAML 和生成的 `op_plugin_functions.yaml`,产出在 `op_plugin/` 下,是 aclnn 扩展适配的核心。 | 184 | - **步骤 1~4** 使用算子 YAML 和生成的 `op_plugin_functions.yaml`,产出在 `op_plugin/` 下,是 aclnn 扩展适配的核心。 |
| 185 | -- **步骤 5~6** 使用 `test_native_functions.yaml`,产出在 `csrc/aten`、`autograd`,用于与 torch_npu 侧的注册与求导衔接。 | 185 | +- **步骤 5~6** 使用 `test_native_functions.yaml`,产出在 `csrc/aten`、`autograd`,用于与 TorchNPU 侧的注册与求导衔接。 |
| 186 | 186 | ||
| 187 | ### 自定义时可调整的内容 | 187 | ### 自定义时可调整的内容 |
| 188 | 188 | ||
| @@ -50,8 +50,8 @@ | |||
| 50 | #### Aten IR实现 | 50 | #### Aten IR实现 |
| 51 | 51 | ||
| 52 | 根据Aten IR定义适配算子。 | 52 | 根据Aten IR定义适配算子。 |
| 53 | -TORCH_NPU的算子下发和执行是异步的,通过TASKQUEUE实现, | 53 | +TorchNPU的算子下发和执行是异步的,通过TASKQUEUE实现, |
| 54 | -样例中,我们通过`at_npu::native::OpCommand::RunOpApiV2`方法,将算子执行入队到TORCH_NPU的TASKQUEUE。样例如下: | 54 | +样例中,我们通过`at_npu::native::OpCommand::RunOpApiV2`方法,将算子执行入队到TorchNPU的TASKQUEUE。样例如下: |
| 55 | 55 | ||
| 56 | ```c++ | 56 | ```c++ |
| 57 | #include "torch_npu/csrc/core/npu/NPUStream.h" | 57 | #include "torch_npu/csrc/core/npu/NPUStream.h" |
| @@ -96,7 +96,7 @@ output = op_extension.ops.custom_add(x_npu, y_npu) | |||
| 96 | 96 | ||
| 97 | ## 运行自定义的算子 | 97 | ## 运行自定义的算子 |
| 98 | 98 | ||
| 99 | - 运行依赖torch、torch_npu和CANN。具体安装步骤参考[torch_npu文档](https://gitcode.com/ascend/pytorch#%E5%AE%89%E8%A3%85) | 99 | + 运行依赖PyTorch、TorchNPU和CANN。具体安装步骤参考[TorchNPU文档](https://gitcode.com/ascend/pytorch#%E5%AE%89%E8%A3%85) |
| 100 | 运行流程: | 100 | 运行流程: |
| 101 | 101 | ||
| 102 | 1. 运行setup脚本,编译生成whl包。 | 102 | 1. 运行setup脚本,编译生成whl包。 |
| @@ -157,6 +157,6 @@ output = op_extension.ops.custom_add(x_npu, y_npu) | |||
| 157 | 157 | ||
| 158 | ### 3. 版本兼容性 | 158 | ### 3. 版本兼容性 |
| 159 | 159 | ||
| 160 | -- 确保 PyTorch、torch_npu 和 CANN 版本兼容 | 160 | +- 确保 PyTorch、TorchNPU 和 CANN 版本兼容 |
| 161 | - 版本不匹配可能导致编译或运行时错误 | 161 | - 版本不匹配可能导致编译或运行时错误 |
| 162 | -- 参考 [torch_npu 文档](https://gitcode.com/ascend/pytorch#%E5%AE%89%E8%A3%85) 获取兼容版本信息 | 162 | +- 参考 [TorchNPU 文档](https://gitcode.com/ascend/pytorch#%E5%AE%89%E8%A3%85) 获取兼容版本信息 |
| @@ -1,6 +1,6 @@ | |||
| 1 | # 适配开发及调用(AscendC) | 1 | # 适配开发及调用(AscendC) |
| 2 | 2 | ||
| 3 | -基于C++ extensions方式,通过torch_npu框架调用AscendC自定义算子的完整适配开发流程。本样例展示了如何将AscendC算子集成到PyTorch生态中,实现高效的NPU加速计算。 | 3 | +基于C++ extensions方式,通过TorchNPU框架调用AscendC自定义算子的完整适配开发流程。本样例展示了如何将AscendC算子集成到Ascend for PyTorch生态中,实现高效的NPU加速计算。 |
| 4 | 4 | ||
| 5 | ## 算子适配开发 | 5 | ## 算子适配开发 |
| 6 | 6 | ||
| @@ -1,6 +1,6 @@ | |||
| 1 | # 适配开发及调用(基础样例) | 1 | # 适配开发及调用(基础样例) |
| 2 | 2 | ||
| 3 | -本文档基于C++ extensions方式,使用torch_npu单算子API进行适配开发的完整流程。流程涵盖了算子定义、算子适配、ATen IR注册绑定,最终实现调用自定义算子。 | 3 | +本文档基于C++ extensions方式,使用TorchNPU单算子API进行适配开发的完整流程。流程涵盖了算子定义、算子适配、ATen IR注册绑定,最终实现调用自定义算子。 |
| 4 | 4 | ||
| 5 | ## 算子适配开发 | 5 | ## 算子适配开发 |
| 6 | 6 | ||
| @@ -1,6 +1,6 @@ | |||
| 1 | # 适配开发及调用(完整样例-module) | 1 | # 适配开发及调用(完整样例-module) |
| 2 | 2 | ||
| 3 | -基于C++ extensions方式,通过torch_npu来调用单算子API的适配开发过程,其中前反向绑定通过Python类的`forward`和`backward`注册实现。 | 3 | +基于C++ extensions方式,通过TorchNPU来调用单算子API的适配开发过程,其中前反向绑定通过Python类的`forward`和`backward`注册实现。 |
| 4 | 4 | ||
| 5 | ## 算子适配开发 | 5 | ## 算子适配开发 |
| 6 | 6 | ||
| @@ -1,6 +1,6 @@ | |||
| 1 | # 适配开发及调用(完整样例-TORCH_LIBRARY_IMPL) | 1 | # 适配开发及调用(完整样例-TORCH_LIBRARY_IMPL) |
| 2 | 2 | ||
| 3 | -基于C++ extensions方式,通过torch_npu来调用单算子API的适配开发过程,其中前反向绑定通过PyTorch中`TORCH_LIBRARY_IMPL`注册实现。 | 3 | +基于C++ extensions方式,通过TorchNPU来调用单算子API的适配开发过程,其中前反向绑定通过PyTorch中`TORCH_LIBRARY_IMPL`注册实现。 |
| 4 | 4 | ||
| 5 | ## 算子适配开发 | 5 | ## 算子适配开发 |
| 6 | 6 | ||
| @@ -1,6 +1,6 @@ | |||
| 1 | # 适配开发及调用(pybind) | 1 | # 适配开发及调用(pybind) |
| 2 | 2 | ||
| 3 | -本文档基于C++ extensions方式,使用torch_npu单算子API进行适配开发的完整流程。流程涵盖了算子定义、算子适配、ATen IR注册绑定,最终实现调用自定义算子。区别于常见的TORCH_LIBRARY方式,本用例采用PYBIND进行绑定注册,以获得更灵活的输入类型支持。 | 3 | +本文档基于C++ extensions方式,使用TorchNPU单算子API进行适配开发的完整流程。流程涵盖了算子定义、算子适配、ATen IR注册绑定,最终实现调用自定义算子。区别于常见的TORCH_LIBRARY方式,本用例采用PYBIND进行绑定注册,以获得更灵活的输入类型支持。 |
| 4 | 4 | ||
| 5 | ## 算子适配开发 | 5 | ## 算子适配开发 |
| 6 | 6 | ||
| @@ -1,6 +1,6 @@ | |||
| 1 | # 算子适配开发及调用(结构化) | 1 | # 算子适配开发及调用(结构化) |
| 2 | 2 | ||
| 3 | -本文档介绍基于C++ extensions方式与torch_npu单算子API进行自定义NPU算子适配开发的完整流程,流程涵盖了算子定义、算子适配、ATen IR注册绑定。本样例重点阐述结构化内核适配方法,该方法适用于aclnn接口与ATen IR语义一致,且适配层逻辑仅需负责output tensor申请的场景。 | 3 | +本文档介绍基于C++ extensions方式与TorchNPU单算子API进行自定义NPU算子适配开发的完整流程,流程涵盖了算子定义、算子适配、ATen IR注册绑定。本样例重点阐述结构化内核适配方法,该方法适用于aclnn接口与ATen IR语义一致,且适配层逻辑仅需负责output tensor申请的场景。 |
| 4 | 4 | ||
| 5 | ## 算子适配开发 | 5 | ## 算子适配开发 |
| 6 | 6 | ||
| @@ -121,10 +121,10 @@ | |||
| 121 | 121 | ||
| 122 | - 环境安装 | 122 | - 环境安装 |
| 123 | 123 | ||
| 124 | -1. 请参考与您当前使用的版本配套的[《Ascend Extension for PyTorch | 124 | +1. 请参考与您当前使用的版本配套的[《TorchNPU |
| 125 | - 软件安装指南》](https://www.hiascend.com/document/detail/zh/Pytorch/720/configandinstg/instg/insg_0001.html),获取PyTorch和torch_npu详细的安装步骤。 | 125 | + 软件安装指南》](https://www.hiascend.com/document/detail/zh/Pytorch/720/configandinstg/instg/insg_0001.html),获取PyTorch和TorchNPU详细的安装步骤。 |
| 126 | 126 | ||
| 127 | - 本样例需torch2.6.0及以上版本,支持`backend="npugraph_ex"`需torch_npu 7.3.0及以上版本。 | 127 | + 本样例需torch2.6.0及以上版本,支持`backend="npugraph_ex"`需TorchNPU 7.3.0及以上版本。 |
| 128 | 2. 根据实际环境安装CANN toolkit包,本样例需8.5.0及以上版本,安装指导详见《[CANN 软件安装指南](https://www.hiascend.com/document/redirect/CannCommunityInstSoftware)》。 | 128 | 2. 根据实际环境安装CANN toolkit包,本样例需8.5.0及以上版本,安装指导详见《[CANN 软件安装指南](https://www.hiascend.com/document/redirect/CannCommunityInstSoftware)》。 |
| 129 | 3. 根据实际环境安装CANN ops包。根据产品型号和环境架构,下载对应安装包,可参考[下载链接](https://ascend.devcloud.huaweicloud.com/cann/run/software/8.5.0-beta.1)并执行如下命令安装: | 129 | 3. 根据实际环境安装CANN ops包。根据产品型号和环境架构,下载对应安装包,可参考[下载链接](https://ascend.devcloud.huaweicloud.com/cann/run/software/8.5.0-beta.1)并执行如下命令安装: |
| 130 | 130 | ||
| @@ -121,10 +121,10 @@ | |||
| 121 | 121 | ||
| 122 | - 环境安装 | 122 | - 环境安装 |
| 123 | 123 | ||
| 124 | -1. 请参考与您当前使用的版本配套的[《Ascend Extension for PyTorch | 124 | +1. 请参考与您当前使用的版本配套的[《TorchNPU |
| 125 | 软件安装指南》](https://www.hiascend.com/document/detail/zh/Pytorch/720/configandinstg/instg/insg_0001.html),获取PyTorch和torch_npu详细的安装步骤。 | 125 | 软件安装指南》](https://www.hiascend.com/document/detail/zh/Pytorch/720/configandinstg/instg/insg_0001.html),获取PyTorch和torch_npu详细的安装步骤。 |
| 126 | 126 | ||
| 127 | - 本样例需torch2.6.0及以上版本,支持`backend="npugraph_ex"`需7.3.0及以上版本。 | 127 | + 本样例需torch2.6.0及以上版本,支持`backend="npugraph_ex"`需TorchNPU 7.3.0及以上版本。 |
| 128 | 2. 根据实际环境安装CANN toolkit包,本样例需8.5.0及以上版本,安装指导详见《[CANN 软件安装指南](https://www.hiascend.com/document/redirect/CannCommunityInstSoftware)》。 | 128 | 2. 根据实际环境安装CANN toolkit包,本样例需8.5.0及以上版本,安装指导详见《[CANN 软件安装指南](https://www.hiascend.com/document/redirect/CannCommunityInstSoftware)》。 |
| 129 | 3. 根据实际环境安装CANN ops包。根据产品型号和环境架构,下载对应安装包,可参考[下载链接](https://ascend.devcloud.huaweicloud.com/cann/run/software/8.5.0-beta.1)并执行如下命令安装: | 129 | 3. 根据实际环境安装CANN ops包。根据产品型号和环境架构,下载对应安装包,可参考[下载链接](https://ascend.devcloud.huaweicloud.com/cann/run/software/8.5.0-beta.1)并执行如下命令安装: |
| 130 | 130 | ||
| @@ -278,7 +278,7 @@ Pytorch的算子自动反向微分依赖于算子的前反向绑定,即前向 | |||
| 278 | 278 | ||
| 279 | - 适配前向和反向算子: 与上节算子适配开发中一致,分别适配前向算子和反向算子,并在op_plugin_functions.yaml中配置前向和反向算子。 | 279 | - 适配前向和反向算子: 与上节算子适配开发中一致,分别适配前向算子和反向算子,并在op_plugin_functions.yaml中配置前向和反向算子。 |
| 280 | - 配置前反向绑定,将前向和反向算子进行绑定: | 280 | - 配置前反向绑定,将前向和反向算子进行绑定: |
| 281 | - Op-plugin与原生PyTorch一致,通过derivatives.yaml,配置算子的前反向绑定关系,如下所示: | 281 | + OpPlugin与原生PyTorch一致,通过derivatives.yaml,配置算子的前反向绑定关系,如下所示: |
| 282 | 282 | ||
| 283 | ```yaml | 283 | ```yaml |
| 284 | # derivatives.yaml | 284 | # derivatives.yaml |