diff --git a/docs/en/PyTorch Installation Guide/PyTorch Installation Guide.md b/docs/en/PyTorch-Installation-Guide/PyTorch-Installation-Guide.md similarity index 100% rename from docs/en/PyTorch Installation Guide/PyTorch Installation Guide.md rename to docs/en/PyTorch-Installation-Guide/PyTorch-Installation-Guide.md diff --git a/docs/en/PyTorch Installation Guide/figures/en-us_image_0000001180656411.png b/docs/en/PyTorch-Installation-Guide/figures/en-us_image_0000001180656411.png similarity index 100% rename from docs/en/PyTorch Installation Guide/figures/en-us_image_0000001180656411.png rename to docs/en/PyTorch-Installation-Guide/figures/en-us_image_0000001180656411.png diff --git a/docs/en/PyTorch Installation Guide/figures/environment-setup-process.png b/docs/en/PyTorch-Installation-Guide/figures/environment-setup-process.png similarity index 100% rename from docs/en/PyTorch Installation Guide/figures/environment-setup-process.png rename to docs/en/PyTorch-Installation-Guide/figures/environment-setup-process.png diff --git a/docs/en/PyTorch Installation Guide/public_sys-resources/icon-caution.gif b/docs/en/PyTorch-Installation-Guide/public_sys-resources/icon-caution.gif similarity index 100% rename from docs/en/PyTorch Installation Guide/public_sys-resources/icon-caution.gif rename to docs/en/PyTorch-Installation-Guide/public_sys-resources/icon-caution.gif diff --git a/docs/en/PyTorch Installation Guide/public_sys-resources/icon-danger.gif b/docs/en/PyTorch-Installation-Guide/public_sys-resources/icon-danger.gif similarity index 100% rename from docs/en/PyTorch Installation Guide/public_sys-resources/icon-danger.gif rename to docs/en/PyTorch-Installation-Guide/public_sys-resources/icon-danger.gif diff --git a/docs/en/PyTorch Installation Guide/public_sys-resources/icon-note.gif b/docs/en/PyTorch-Installation-Guide/public_sys-resources/icon-note.gif similarity index 100% rename from docs/en/PyTorch Installation Guide/public_sys-resources/icon-note.gif rename to docs/en/PyTorch-Installation-Guide/public_sys-resources/icon-note.gif diff --git a/docs/en/PyTorch Installation Guide/public_sys-resources/icon-notice.gif b/docs/en/PyTorch-Installation-Guide/public_sys-resources/icon-notice.gif similarity index 100% rename from docs/en/PyTorch Installation Guide/public_sys-resources/icon-notice.gif rename to docs/en/PyTorch-Installation-Guide/public_sys-resources/icon-notice.gif diff --git a/docs/en/PyTorch Installation Guide/public_sys-resources/icon-tip.gif b/docs/en/PyTorch-Installation-Guide/public_sys-resources/icon-tip.gif similarity index 100% rename from docs/en/PyTorch Installation Guide/public_sys-resources/icon-tip.gif rename to docs/en/PyTorch-Installation-Guide/public_sys-resources/icon-tip.gif diff --git a/docs/en/PyTorch Installation Guide/public_sys-resources/icon-warning.gif b/docs/en/PyTorch-Installation-Guide/public_sys-resources/icon-warning.gif similarity index 100% rename from docs/en/PyTorch Installation Guide/public_sys-resources/icon-warning.gif rename to docs/en/PyTorch-Installation-Guide/public_sys-resources/icon-warning.gif diff --git "a/docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225.md" "b/docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225.md" index 9c0580cd6872806e3c4488490076e94eac30d543..4a1db6a4eff5b63272bfab1fb2e94838f0a4195f 100644 --- "a/docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225.md" +++ "b/docs/zh/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225/PyTorch API\346\224\257\346\214\201\346\270\205\345\215\225.md" @@ -1,17 +1,17 @@ # PyTorch API支持清单 -- [Tensors](#Tensors.md) -- [Generators](#Generators.md) -- [Random sampling](#Random-sampling.md) -- [Serialization](#Serialization.md) -- [Math operations](#Math-operations.md) -- [Utilities](#Utilities.md) -- [Other](#Other.md) -- [torch.Tensor](#torch-Tensor.md) -- [Layers \(torch.nn\)](#Layers-(torch-nn).md) -- [Functions\(torch.nn.functional\)](#Functions(torch-nn-functional).md) -- [torch.distributed](#torch-distributed.md) -- [NPU和CUDA功能对齐](#NPU和CUDA功能对齐.md) -

Tensors

+- [Tensors](#Tensors) +- [Generators](#Generators) +- [Random sampling](#Random-sampling) +- [Serialization](#Serialization) +- [Math operations](#Math-operations) +- [Utilities](#Utilities) +- [Other](#Other) +- [torch.Tensor](#torch-Tensor) +- [Layers \(torch.nn\)](#Layers-torch-nn) +- [Functions\(torch.nn.functional\)](#Functionstorch-nn-functional) +- [torch.distributed](#torch-distributed) +- [NPU和CUDA功能对齐](#NPU和CUDA功能对齐) +

Tensors

序号

@@ -361,7 +361,7 @@
-

Generators

+

Generators

序号

@@ -424,7 +424,7 @@
-

Random sampling

+

Random sampling

序号

@@ -641,7 +641,7 @@
-

Serialization

+

Serialization

序号

@@ -669,7 +669,7 @@
-

Math operations

+

Math operations

序号

@@ -1873,7 +1873,7 @@
-

Utilities

+

Utilities

序号

@@ -1915,7 +1915,7 @@
-

Other

+

Other

序号

@@ -1978,7 +1978,7 @@
-

torch.Tensor

+

torch.Tensor

序号

@@ -4484,7 +4484,7 @@
-

Layers \(torch.nn\)

+

Layers \(torch.nn\)

序号

@@ -6710,7 +6710,7 @@
-

Functions\(torch.nn.functional\)

+

Functions\(torch.nn.functional\)

序号

@@ -7417,7 +7417,7 @@
-

torch.distributed

+

torch.distributed

序号

@@ -7641,7 +7641,7 @@
-

NPU和CUDA功能对齐

+

NPU和CUDA功能对齐

序号

diff --git "a/docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227.md" "b/docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227.md" index a127b3865ac3d7d589bfc75e13e056b622c700e2..1566585d3aba2c419c796b76a081f091b6458e95 100644 --- "a/docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227.md" +++ "b/docs/zh/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227/PyTorch\345\234\250\347\272\277\346\216\250\347\220\206\346\214\207\345\215\227.md" @@ -1,14 +1,14 @@ # PyTorch在线推理指南 -- [使用场景](#使用场景.md) -- [基本使用流程](#基本使用流程.md) - - [前提条件](#前提条件.md) - - [在线推理流程](#在线推理流程.md) - - [环境变量配置](#环境变量配置.md) - - [样例参考](#样例参考.md) -- [专题](#专题.md) - - [混合精度](#混合精度.md) -- [安装7.3.0版本gcc](#安装7-3-0版本gcc.md) -

使用场景

+- [使用场景](#使用场景) +- [基本使用流程](#基本使用流程) + - [前提条件](#前提条件) + - [在线推理流程](#在线推理流程) + - [环境变量配置](#环境变量配置) + - [样例参考](#样例参考) +- [专题](#专题) + - [混合精度](#混合精度) +- [安装7.3.0版本gcc](#安装7-3-0版本gcc) +

使用场景

在线推理是在AI框架内执行推理的场景,例如在PyTorch框架上,加载模型后,通过“model.eval\(\)“将模型切换为推理模式。 @@ -20,29 +20,29 @@ 昇腾710 AI处理器 -

基本使用流程

+

基本使用流程

-- **[前提条件](#前提条件.md)** +- **[前提条件](#前提条件)** -- **[在线推理流程](#在线推理流程.md)** +- **[在线推理流程](#在线推理流程)** -- **[环境变量配置](#环境变量配置.md)** +- **[环境变量配置](#环境变量配置)** -- **[样例参考](#样例参考.md)** +- **[样例参考](#样例参考)** -

前提条件

+

前提条件

-已完成PyTorch框架及混合精度模块的安装,详情请参见《PyTorch安装指南](#https://gitee.com/ascend/pytorch/blob/2.0.2.tr5/docs/zh/PyTorch%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97/PyTorch%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97.md)》进行PyTorch相关运行环境搭建。 +已完成PyTorch框架及混合精度模块的安装,详情请参见[《PyTorch安装指南》](https://gitee.com/ascend/pytorch/blob/2.0.2.tr5/docs/zh/PyTorch%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97/PyTorch%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97.md)进行PyTorch相关运行环境搭建。 -

在线推理流程

+

在线推理流程

在线推理流程如[图1](#fig13802941161818)所示。 **图 1** 在线推理流程图 ![](figures/在线推理流程图.png "在线推理流程图") -

环境变量配置

+

环境变量配置

PyTorch在线推理进程启动所依赖的环境变量: @@ -131,9 +131,9 @@ export TASK_QUEUE_ENABLE=0
>![](public_sys-resources/icon-note.gif) **说明:** ->更多日志信息,请参见《CANN 日志参考](https://support.huawei.com/enterprise/zh/doc/EDOC1100206691?idPath=23710424%7C251366513%7C22892968%7C251168373)》。 +>更多日志信息,请参见[《CANN 日志参考》](https://support.huawei.com/enterprise/zh/doc/EDOC1100206691?idPath=23710424%7C251366513%7C22892968%7C251168373)。 -

样例参考

+

样例参考

## 样例代码 @@ -420,7 +420,7 @@ if __name__ == '__main__': 3. 执行推理。 - 参考[环境变量配置](#环境变量配置.md)设置环境变量,并执行命令: + 参考[环境变量配置](#环境变量配置)设置环境变量,并执行命令: ``` python3 pytorch-resnet50-apex.py --data /data/imagenet \ @@ -433,12 +433,12 @@ if __name__ == '__main__': >上述为样例输入,用户可根据实际修改传入参数。 -

专题

+

专题

-- **[混合精度](#混合精度.md)** +- **[混合精度](#混合精度)** -

混合精度

+

混合精度

## 概述 @@ -503,7 +503,7 @@ if __name__ == '__main__': model, optimizer = amp.initialize(model, optimizer) ``` - 也可参考[样例代码](#样例参考.md)中的“初始化混合精度模型”: + 也可参考[样例代码](#样例参考)中的“初始化混合精度模型”: ``` model, optimizer = amp.initialize(model, optimizer, opt_level="O2", loss_scale=1024, verbosity=1) @@ -514,9 +514,9 @@ if __name__ == '__main__': 按混合精度模型初始化后,正常执行模型正向计算即可。 -参考代码:可参考[样例代码](#样例参考.md)实现。 +参考代码:可参考[样例代码](#样例参考)实现。 -

安装7.3.0版本gcc

+

安装7.3.0版本gcc

以下步骤请在root用户下执行。 diff --git "a/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227.md" "b/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227.md" index 052e0f8f6a655c49bf843387c1b4609bc6fbf5cc..0a83182a76d4edb2949caade0ddc99092c7a9a7a 100644 --- "a/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227.md" +++ "b/docs/zh/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227/PyTorch\345\256\211\350\243\205\346\214\207\345\215\227.md" @@ -1,42 +1,42 @@ # PyTorch安装指南 -- [简介](#简介.md) -- [手动编译安装](#手动编译安装.md) - - [前提条件](#前提条件.md) - - [安装PyTorch框架](#安装PyTorch框架.md) - - [配置环境变量](#配置环境变量.md) - - [安装混合精度模块](#安装混合精度模块.md) -- [使用Ascend Hub镜像](#使用Ascend-Hub镜像.md) - - [Ascend Hub获取PyTorch镜像](#Ascend-Hub获取PyTorch镜像.md) - - [配置环境变量](#配置环境变量-0.md) -- [参考信息](#参考信息.md) - - [CMake安装方法](#CMake安装方法.md) - - [安装7.3.0版本gcc](#安装7-3-0版本gcc.md) - - [安装“torch-\*.whl ”提示“torch 1.5.0xxxx”与“torchvision”所依赖的版本不匹配](#安装-torch--whl-提示-torch-1-5-0xxxx-与-torchvision-所依赖的版本不匹配.md) -

简介

+- [简介](#简介) +- [手动编译安装](#手动编译安装) + - [前提条件](#前提条件) + - [安装PyTorch框架](#安装PyTorch框架) + - [配置环境变量](#配置环境变量) + - [安装混合精度模块](#安装混合精度模块) +- [使用Ascend Hub镜像](#使用Ascend-Hub镜像) + - [Ascend Hub获取PyTorch镜像](#Ascend-Hub获取PyTorch镜像) + - [配置环境变量](#配置环境变量-0) +- [参考信息](#参考信息) + - [CMake安装方法](#CMake安装方法) + - [安装7.3.0版本gcc](#安装7-3-0版本gcc) + - [安装“torch-\*.whl ”提示“torch 1.5.0xxxx”与“torchvision”所依赖的版本不匹配](#安装-torch--whl-提示-torch-1-5-0xxxx-与-torchvision-所依赖的版本不匹配) +

简介

用户在准备相关环境进行PyTorch模型的移植及训练时,可以选择在训练服务器中手动编译安装PyTorch框架相关模块,或直接获取Ascend Hub镜像中心提供的基础镜像(镜像中已安装PyTorch模块和混合精度模块),进行模型的移植与训练。 **图 1** 环境准备流程图 ![](figures/环境准备流程图.png "环境准备流程图") -

手动编译安装

+

手动编译安装

-- **[前提条件](#前提条件.md)** +- **[前提条件](#前提条件)** -- **[安装PyTorch框架](#安装PyTorch框架.md)** +- **[安装PyTorch框架](#安装PyTorch框架)** -- **[配置环境变量](#配置环境变量.md)** +- **[配置环境变量](#配置环境变量)** -- **[安装混合精度模块](#安装混合精度模块.md)** +- **[安装混合精度模块](#安装混合精度模块)** -

前提条件

+

前提条件

## 前提条件 -- 需完成CANN开发或运行环境的安装,具体操作请参考《CANN 软件安装指南](https://support.huawei.com/enterprise/zh/doc/EDOC1100206656?idPath=23710424%7C251366513%7C22892968%7C251168373)》。 -- 需安装3.12.0以上版本的CMake,安装方法请参考[CMake安装方法](#CMake安装方法.md)。 -- 需确保已安装7.3.0以上版本的gcc,7.3.0版本gcc具体安装及使用方式请参考[安装7.3.0版本gcc](#安装7-3-0版本gcc.md)。 +- 需完成CANN开发或运行环境的安装,具体操作请参考《[CANN 软件安装指南](https://support.huawei.com/enterprise/zh/doc/EDOC1100206656?idPath=23710424%7C251366513%7C22892968%7C251168373)》。 +- 需安装3.12.0以上版本的CMake,安装方法请参考[CMake安装方法](#CMake安装方法)。 +- 需确保已安装7.3.0以上版本的gcc,7.3.0版本gcc具体安装及使用方式请参考[安装7.3.0版本gcc](#安装7-3-0版本gcc)。 - 需确保环境中已安装patch、git工具,以Ubuntu和CentOS系统为例,命令如下: - Ubuntu系统 @@ -54,7 +54,7 @@ -

安装PyTorch框架

+

安装PyTorch框架

## 安装流程 @@ -155,7 +155,7 @@ >**pip3 list | grep torch** -

配置环境变量

+

配置环境变量

安装完软件包后,需要配置环境变量才能正常使用昇腾PyTorch。建议构建启动脚本,例如构建set\_env.sh脚本,使用source set\_env.sh配置当前窗口的环境变量。set\_env.sh脚本内容如下(以root用户安装,安装路径为默认路径为例)。 @@ -224,7 +224,7 @@ export HCCL_IF_IP="1.1.1.1" # “1.1.1.1”为示例使用的host网卡IP,请

LD_LIBRARY_PATH

动态库的查找路径,参考上述举例配置。

-

若训练所在系统环境需要升级gcc(例如CentOS、Debian和BClinux系统),则“LD_LIBRARY_PATH”配置项处动态库查找路径需要添加“${install_path}/lib64”,其中“{install_path}”为gcc升级安装路径。请参见5

+

若训练所在系统环境需要升级gcc(例如CentOS、Debian和BClinux系统),则“LD_LIBRARY_PATH”配置项处动态库查找路径需要添加“${install_path}/lib64”,其中“{install_path}”为gcc升级安装路径。请参见5

PYTHONPATH

@@ -279,12 +279,12 @@ export HCCL_IF_IP="1.1.1.1" # “1.1.1.1”为示例使用的host网卡IP,请 -

安装混合精度模块

+

安装混合精度模块

## 前提条件 1. 请确保运行环境中适配昇腾AI处理器的PyTorch框架能正常使用。 -2. 编译安装Apex前,需参见[配置环境变量](#配置环境变量.md)配置好编译过程依赖的环境变量。 +2. 编译安装Apex前,需参见[配置环境变量](#配置环境变量)配置好编译过程依赖的环境变量。 ## 安装流程 @@ -376,18 +376,18 @@ export HCCL_IF_IP="1.1.1.1" # “1.1.1.1”为示例使用的host网卡IP,请 >**pip3 list | grep apex** -

使用Ascend Hub镜像

+

使用Ascend Hub镜像

-- **[Ascend Hub获取PyTorch镜像](#Ascend-Hub获取PyTorch镜像.md)** +- **[Ascend Hub获取PyTorch镜像](#Ascend-Hub获取PyTorch镜像)** -- **[配置环境变量](#配置环境变量-0.md)** +- **[配置环境变量](#配置环境变量-0)** -

Ascend Hub获取PyTorch镜像

+

Ascend Hub获取PyTorch镜像

## 前提条件 -- 已完成CANN开发或运行环境的安装,具体操作请参考《CANN 软件安装指南](https://support.huawei.com/enterprise/zh/doc/EDOC1100206656?idPath=23710424%7C251366513%7C22892968%7C251168373)》。 +- 已完成CANN开发或运行环境的安装,具体操作请参考《[CANN 软件安装指南](https://support.huawei.com/enterprise/zh/doc/EDOC1100206656?idPath=23710424%7C251366513%7C22892968%7C251168373)》。 - 宿主机上已安装Docker。 ## 获取并使用镜像 @@ -417,20 +417,20 @@ export HCCL_IF_IP="1.1.1.1" # “1.1.1.1”为示例使用的host网卡IP,请 -

配置环境变量

+

配置环境变量

-启动并进入镜像容器后,请参见[配置环境变量](#配置环境变量.md)配置模型训练依赖的环境变量。 +启动并进入镜像容器后,请参见[配置环境变量](#配置环境变量)配置模型训练依赖的环境变量。 -

参考信息

+

参考信息

-- **[CMake安装方法](#CMake安装方法.md)** +- **[CMake安装方法](#CMake安装方法)** -- **[安装7.3.0版本gcc](#安装7-3-0版本gcc.md)** +- **[安装7.3.0版本gcc](#安装7-3-0版本gcc)** -- **[安装“torch-\*.whl ”提示“torch 1.5.0xxxx”与“torchvision”所依赖的版本不匹配](#安装-torch--whl-提示-torch-1-5-0xxxx-与-torchvision-所依赖的版本不匹配.md)** +- **[安装“torch-\*.whl ”提示“torch 1.5.0xxxx”与“torchvision”所依赖的版本不匹配](#安装-torch--whl-提示-torch-1-5-0xxxx-与-torchvision-所依赖的版本不匹配)** -

CMake安装方法

+

CMake安装方法

CMake版本升级为3.12.1的方法 @@ -469,7 +469,7 @@ CMake版本升级为3.12.1的方法 如显示“cmake version 3.12.1”则表示安装成功。 -

安装7.3.0版本gcc

+

安装7.3.0版本gcc

以下步骤请在root用户下执行。 @@ -550,7 +550,7 @@ CMake版本升级为3.12.1的方法 >本步骤为用户在需要用到gcc升级后的编译环境时才配置环境变量。 -

安装“torch-\*.whl ”提示“torch 1.5.0xxxx”与“torchvision”所依赖的版本不匹配

+

安装“torch-\*.whl ”提示“torch 1.5.0xxxx”与“torchvision”所依赖的版本不匹配

## 现象描述 diff --git "a/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227.md" "b/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227.md" index a42c9403d325f7dcca01a1357de86383736ed0cf..dc4738f5c93ee643220d296e0a733bacf4527f80 100644 --- "a/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227.md" +++ "b/docs/zh/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227/PyTorch\347\256\227\345\255\220\345\274\200\345\217\221\346\214\207\345\215\227.md" @@ -1,37 +1,37 @@ # PyTorch算子开发指南 -- [简介](#简介.md) -- [算子开发流程](#算子开发流程.md) -- [算子开发准备](#算子开发准备.md) - - [环境准备](#环境准备.md) - - [算子速查](#算子速查.md) -- [算子适配开发](#算子适配开发.md) - - [前提条件](#前提条件.md) - - [获取PyTorch源码](#获取PyTorch源码.md) - - [注册算子开发](#注册算子开发.md) - - [算子适配插件开发](#算子适配插件开发.md) - - [编译和安装PyTorch框架](#编译和安装PyTorch框架.md) -- [算子功能验证](#算子功能验证.md) - - [概述](#概述.md) - - [实现过程](#实现过程.md) -- [FAQ](#FAQ.md) - - [Pillow==5.3.0安装失败](#Pillow-5-3-0安装失败.md) - - [pip3.7 install torchvision安装失败](#pip3-7-install-torchvision安装失败.md) - - [安装“torch-\*.whl ”提示“torch 1.5.0xxxx”与“torchvision”所依赖的版本不匹配](#安装-torch--whl-提示-torch-1-5-0xxxx-与-torchvision-所依赖的版本不匹配.md) - - [如何查看测试的运行日志](#如何查看测试的运行日志.md) - - [为什么我实现的“自定义TBE算子”无法调用到?](#为什么我实现的-自定义TBE算子-无法调用到.md) - - [如何确定“TBE算子”是否被“PyTorch适配”正确调用](#如何确定-TBE算子-是否被-PyTorch适配-正确调用.md) - - [PyTorch编译失败,提示“error: ld returned 1 exit status”](#PyTorch编译失败-提示-error-ld-returned-1-exit-status.md) - - [PyTorch编译失败,提示“error: call of overload ....”](#PyTorch编译失败-提示-error-call-of-overload.md) -- [附录](#附录.md) - - [CMake安装方法](#CMake安装方法.md) - - [自定义算子导出方法](#自定义算子导出方法.md) -

简介

+- [简介](#简介) +- [算子开发流程](#算子开发流程) +- [算子开发准备](#算子开发准备) + - [环境准备](#环境准备) + - [算子速查](#算子速查) +- [算子适配开发](#算子适配开发) + - [前提条件](#前提条件) + - [获取PyTorch源码](#获取PyTorch源码) + - [注册算子开发](#注册算子开发) + - [算子适配插件开发](#算子适配插件开发) + - [编译和安装PyTorch框架](#编译和安装PyTorch框架) +- [算子功能验证](#算子功能验证) + - [概述](#概述) + - [实现过程](#实现过程) +- [FAQ](#FAQ) + - [Pillow==5.3.0安装失败](#Pillow-5-3-0安装失败) + - [pip3.7 install torchvision安装失败](#pip3-7-install-torchvision安装失败) + - [安装“torch-\*.whl ”提示“torch 1.5.0xxxx”与“torchvision”所依赖的版本不匹配](#安装-torch--whl-提示-torch-1-5-0xxxx-与-torchvision-所依赖的版本不匹配) + - [如何查看测试的运行日志](#如何查看测试的运行日志) + - [为什么我实现的“自定义TBE算子”无法调用到?](#为什么我实现的-自定义TBE算子-无法调用到) + - [如何确定“TBE算子”是否被“PyTorch适配”正确调用](#如何确定-TBE算子-是否被-PyTorch适配-正确调用) + - [PyTorch编译失败,提示“error: ld returned 1 exit status”](#PyTorch编译失败-提示-error-ld-returned-1-exit-status) + - [PyTorch编译失败,提示“error: call of overload ....”](#PyTorch编译失败-提示-error-call-of-overload) +- [附录](#附录) + - [CMake安装方法](#CMake安装方法) + - [自定义算子导出方法](#自定义算子导出方法) +

简介

## 概述 为了实现PyTorch深度学习框架在昇腾AI处理器上运行,需要将框架算子用TBE自定义开发。 -

算子开发流程

+

算子开发流程

Pytorch算子开发包含TBE算子开发和PyTorch框架下的算子适配。 @@ -66,7 +66,7 @@ Pytorch算子开发包含TBE算子开发和PyTorch框架下的算子适配。

准备算子开发及运行验证所依赖的开发环境与运行环境。

-

算子开发准备

+

算子开发准备

2

@@ -83,7 +83,7 @@ Pytorch算子开发包含TBE算子开发和PyTorch框架下的算子适配。

获取昇腾社区PyTorch源码。

-

算子适配开发

+

算子适配开发

4

@@ -113,25 +113,25 @@ Pytorch算子开发包含TBE算子开发和PyTorch框架下的算子适配。

在真实的硬件环境中验证算子功能。

-

算子功能验证

+

算子功能验证

-

算子开发准备

+

算子开发准备

-- **[环境准备](#环境准备.md)** +- **[环境准备](#环境准备)** -- **[算子速查](#算子速查.md)** +- **[算子速查](#算子速查)** -

环境准备

+

环境准备

## 前提条件 - 需完成CANN开发或运行环境的安装,具体操作请参考《CANN 软件安装指南](https://support.huawei.com/enterprise/zh/doc/EDOC1100206656?idPath=23710424%7C251366513%7C22892968%7C251168373)》。 -- 需安装3.12.0及以上版本的CMake,安装方法请参考[CMake安装方法](#CMake安装方法.md)。 +- 需安装3.12.0及以上版本的CMake,安装方法请参考[CMake安装方法](#CMake安装方法)。 - 需确保已安装7.3.0以上版本的gcc,7.3.0版本gcc具体安装及使用方式请参见《CANN 软件安装指南](https://support.huawei.com/enterprise/zh/doc/EDOC1100206656?idPath=23710424%7C251366513%7C22892968%7C251168373)》中的“安装7.3.0版本gcc”章节。 - 需确保环境中已安装git工具,以Ubuntu和CentOS系统为例,命令如下: - Ubuntu系统 @@ -159,9 +159,9 @@ pip3.7 install Pillow==5.3.0 ``` >![](public_sys-resources/icon-note.gif) **说明:** ->若以上过程出错,请参考[FAQ](#FAQ.md)尝试解决问题。 +>若以上过程出错,请参考[FAQ](#FAQ)尝试解决问题。 -

算子速查

+

算子速查

进行算子开发时,您可以查询当前昇腾AI处理器中支持的算子列表和当前PyTorch适配的算子列表。根据查询结果进行算子开发或PyTorch算子适配。 @@ -172,30 +172,30 @@ pip3.7 install Pillow==5.3.0 昇腾AI处理器和PyTorch适配的算子查询方式如下。 - 当前昇腾AI处理器中支持的算子以及对应的算子约束可以通过以下两种方式查询。 - - 命令行开发方式下,您可以参见《CANN 算子清单 \(Ascend 910\)](https://support.huawei.com/enterprise/zh/doc/EDOC1100206663)》进行离线查询。 - - MindStudio开发方式下,您可以通过MindStudio进行在线查询,详细查看方法可参见《MindStudio 用户指南](https://support.huaweicloud.com/mindstudio302/)》中的“算子&模型速查”章节。 + - 命令行开发方式下,您可以参见《[CANN 算子清单 \(Ascend 910\)](https://support.huawei.com/enterprise/zh/doc/EDOC1100206663)》进行离线查询。 + - MindStudio开发方式下,您可以通过MindStudio进行在线查询,详细查看方法可参见《[MindStudio 用户指南](https://support.huaweicloud.com/mindstudio302/)》中的“算子&模型速查”章节。 -- 当前PyTorch适配的算子列表可以参见《PyTorch适配算子清单](#https://gitee.com/ascend/pytorch/blob/2.0.2.tr5/docs/zh/PyTorch%E9%80%82%E9%85%8D%E7%AE%97%E5%AD%90%E6%B8%85%E5%8D%95/PyTorch%E9%80%82%E9%85%8D%E7%AE%97%E5%AD%90%E6%B8%85%E5%8D%95.md)》。 +- 当前PyTorch适配的算子列表可以参见《[PyTorch适配算子清单](https://gitee.com/ascend/pytorch/blob/2.0.2.tr5/docs/zh/PyTorch%E9%80%82%E9%85%8D%E7%AE%97%E5%AD%90%E6%B8%85%E5%8D%95/PyTorch%E9%80%82%E9%85%8D%E7%AE%97%E5%AD%90%E6%B8%85%E5%8D%95.md)》。 -

算子适配开发

+

算子适配开发

-- **[前提条件](#前提条件.md)** +- **[前提条件](#前提条件)** -- **[获取PyTorch源码](#获取PyTorch源码.md)** +- **[获取PyTorch源码](#获取PyTorch源码)** -- **[注册算子开发](#注册算子开发.md)** +- **[注册算子开发](#注册算子开发)** -- **[算子适配插件开发](#算子适配插件开发.md)** +- **[算子适配插件开发](#算子适配插件开发)** -- **[编译和安装PyTorch框架](#编译和安装PyTorch框架.md)** +- **[编译和安装PyTorch框架](#编译和安装PyTorch框架)** -

前提条件

+

前提条件

-- 完成开发及运行环境准备及相关依赖的安装,详情请参见[环境准备](#环境准备.md)。 -- 完成相关的TBE算子开发及部署,详情请参见《CANN TBE自定义算子开发指南](https://support.huawei.com/enterprise/zh/doc/EDOC1100206660)》。 +- 完成开发及运行环境准备及相关依赖的安装,详情请参见[环境准备](#环境准备)。 +- 完成相关的TBE算子开发及部署,详情请参见《[CANN TBE自定义算子开发指南](https://support.huawei.com/enterprise/zh/doc/EDOC1100206660)》。 -

获取PyTorch源码

+

获取PyTorch源码

从gitee上获取适配昇腾AI处理器的PyTorch源代码,获取地址为: [https://gitee.com/ascend/pytorch-develop](https://gitee.com/ascend/pytorch-develop) 。用户可以通过执行下面git命令行下载源代码。 @@ -208,7 +208,7 @@ git clone https://gitee.com/ascend/pytorch-develop.git --deepth=1 >![](public_sys-resources/icon-note.gif) **说明:** >如无权限获取代码,请联系华为技术支持申请加入“Ascend”组织。 -

注册算子开发

+

注册算子开发

## 概述 @@ -344,7 +344,7 @@ git clone https://gitee.com/ascend/pytorch-develop.git --deepth=1 -

算子适配插件开发

+

算子适配插件开发

## 简介 @@ -529,7 +529,7 @@ git clone https://gitee.com/ascend/pytorch-develop.git --deepth=1 >![](public_sys-resources/icon-note.gif) **说明:** >AddKernelNpu.cpp的详细实现代码请参见pytorch/aten/src/ATen/native/npu/AddKernelNpu.cpp文档。 -

编译和安装PyTorch框架

+

编译和安装PyTorch框架

## 编译PyTorch框架 @@ -549,7 +549,7 @@ git clone https://gitee.com/ascend/pytorch-develop.git --deepth=1 ## 安装PyTorch框架 -1. 将[编译和安装PyTorch框架](#编译和安装PyTorch框架.md)生成的torch-\*.whl包上传到服务器任一路径。 +1. 将[编译和安装PyTorch框架](#编译和安装PyTorch框架)生成的torch-\*.whl包上传到服务器任一路径。 2. 进入torch-\*.whl 所在的目录,使用pip命令完成torch安装。 当前登录用户为root用户时,执行: @@ -569,14 +569,14 @@ git clone https://gitee.com/ascend/pytorch-develop.git --deepth=1 >- 修改代码之后,需要重新执行“编译”和“安装”PyTorch过程。 >- 安装过程中,可能会出现错误提示"torchvision 0.6.0" 版本不匹配,此问题无影响,忽略即可。 -

算子功能验证

+

算子功能验证

-- **[概述](#概述.md)** +- **[概述](#概述)** -- **[实现过程](#实现过程.md)** +- **[实现过程](#实现过程)** -

概述

+

概述

## 简介 @@ -590,7 +590,7 @@ git clone https://gitee.com/ascend/pytorch-develop.git --deepth=1 在https://gitee.com/ascend/pytorch-develop中 "pytorch/test/test\_npu/test\_network\_ops"目录下提供了测试用例及测试工具,供用户参考。 -

实现过程

+

实现过程

## 简介 @@ -673,26 +673,26 @@ git clone https://gitee.com/ascend/pytorch-develop.git --deepth=1 ``` -

FAQ

+

FAQ

-- **[Pillow==5.3.0安装失败](#Pillow-5-3-0安装失败.md)** +- **[Pillow==5.3.0安装失败](#Pillow-5-3-0安装失败)** -- **[pip3.7 install torchvision安装失败](#pip3-7-install-torchvision安装失败.md)** +- **[pip3.7 install torchvision安装失败](#pip3-7-install-torchvision安装失败)** -- **[安装“torch-\*.whl ”提示“torch 1.5.0xxxx”与“torchvision”所依赖的版本不匹配](#安装-torch--whl-提示-torch-1-5-0xxxx-与-torchvision-所依赖的版本不匹配.md)** +- **[安装“torch-\*.whl ”提示“torch 1.5.0xxxx”与“torchvision”所依赖的版本不匹配](#安装-torch--whl-提示-torch-1-5-0xxxx-与-torchvision-所依赖的版本不匹配)** -- **[如何查看测试的运行日志](#如何查看测试的运行日志.md)** +- **[如何查看测试的运行日志](#如何查看测试的运行日志)** -- **[为什么我实现的“自定义TBE算子”无法调用到?](#为什么我实现的-自定义TBE算子-无法调用到.md)** +- **[为什么我实现的“自定义TBE算子”无法调用到?](#为什么我实现的-自定义TBE算子-无法调用到)** -- **[如何确定“TBE算子”是否被“PyTorch适配”正确调用](#如何确定-TBE算子-是否被-PyTorch适配-正确调用.md)** +- **[如何确定“TBE算子”是否被“PyTorch适配”正确调用](#如何确定-TBE算子-是否被-PyTorch适配-正确调用)** -- **[PyTorch编译失败,提示“error: ld returned 1 exit status”](#PyTorch编译失败-提示-error-ld-returned-1-exit-status.md)** +- **[PyTorch编译失败,提示“error: ld returned 1 exit status”](#PyTorch编译失败-提示-error-ld-returned-1-exit-status)** -- **[PyTorch编译失败,提示“error: call of overload ....”](#PyTorch编译失败-提示-error-call-of-overload.md)** +- **[PyTorch编译失败,提示“error: call of overload ....”](#PyTorch编译失败-提示-error-call-of-overload)** -

Pillow==5.3.0安装失败

+

Pillow==5.3.0安装失败

## 现象描述 @@ -710,7 +710,7 @@ pillow==5.3.0安装失败。 apt-get install libjpeg python-devel zlib-devel libjpeg-turbo-devel ``` -

pip3.7 install torchvision安装失败

+

pip3.7 install torchvision安装失败

## 现象描述 @@ -728,7 +728,7 @@ torch与torchvision版本不匹配。 pip3.7 install torchvision --no-deps ``` -

安装“torch-\*.whl ”提示“torch 1.5.0xxxx”与“torchvision”所依赖的版本不匹配

+

安装“torch-\*.whl ”提示“torch 1.5.0xxxx”与“torchvision”所依赖的版本不匹配

## 现象描述 @@ -746,7 +746,7 @@ pip3.7 install torchvision --no-deps 对实际结果无影响,无需处理。 -

如何查看测试的运行日志

+

如何查看测试的运行日志

测试运行过程提示错误,但直接可参考的信息太少,如何才能看到更详细的运行日志? @@ -767,7 +767,7 @@ pip3.7 install torchvision --no-deps ``` -

为什么我实现的“自定义TBE算子”无法调用到?

+

为什么我实现的“自定义TBE算子”无法调用到?

## 现象描述 @@ -781,7 +781,7 @@ pip3.7 install torchvision --no-deps ## 处理方法 -1. 参考“[算子功能验证](#算子功能验证.md)”章节,完成运行环境设置,特别注意: +1. 参考“[算子功能验证](#算子功能验证)”章节,完成运行环境设置,特别注意: ``` . /home/HwHiAiUser/Ascend/ascend-toolkit/set_env.sh @@ -821,7 +821,7 @@ pip3.7 install torchvision --no-deps -

如何确定“TBE算子”是否被“PyTorch适配”正确调用

+

如何确定“TBE算子”是否被“PyTorch适配”正确调用

不管是“custom”算子,还是“built-in”算子,在安装后,都是以\*.py源码的方式存放在安装目录下,所以我们可以通过编辑源码,在API入口增加日志的方式,打印输出入参,确定输入的参数是否正确。 @@ -871,7 +871,7 @@ pip3.7 install torchvision --no-deps ![](figures/zh-cn_image_0000001126846512.png) -

PyTorch编译失败,提示“error: ld returned 1 exit status”

+

PyTorch编译失败,提示“error: ld returned 1 exit status”

## 现象描述 @@ -891,7 +891,7 @@ PyTorch编译失败,提示“ error: ld returned 1 exit status”。 修改XxxxKernelNpu.cpp中实现的适配函数,在上面的例子中,修改“binary\_cross\_entropy\_npu”方法最后一个参数类型为“int64\_t”\(cpp中“long”的类型使用"int64\_t"\)。 -

PyTorch编译失败,提示“error: call of overload ....”

+

PyTorch编译失败,提示“error: call of overload ....”

## 现象描述 @@ -915,14 +915,14 @@ PyTorch编译失败,提示“error: call of overload ....”。 2、binary\_cross\_entropy\_attr\(\)入参类型修改为 int64\_t。 -

附录

+

附录

-- **[CMake安装方法](#CMake安装方法.md)** +- **[CMake安装方法](#CMake安装方法)** -- **[自定义算子导出方法](#自定义算子导出方法.md)** +- **[自定义算子导出方法](#自定义算子导出方法)** -

CMake安装方法

+

CMake安装方法

以CMake版本升级为3.12.1为例说明。 @@ -961,7 +961,7 @@ PyTorch编译失败,提示“error: call of overload ....”。 显示“cmake version 3.12.1”则表示安装成功。 -

自定义算子导出方法

+

自定义算子导出方法

## 简介 diff --git "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227.md" "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227.md" index eaa6fcd9fd2efe92159efd4aa2f2924da61c08a9..2d7ce5807f45ab9aaec52f84ec8c2764fd83fdbb 100644 --- "a/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227.md" +++ "b/docs/zh/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227/PyTorch\347\275\221\347\273\234\346\250\241\345\236\213\347\247\273\346\244\215&\350\256\255\347\273\203\346\214\207\345\215\227.md" @@ -1,95 +1,95 @@ # PyTorch网络模型移植&训练指南 -- [概述](#概述.md) -- [约束与限制](#约束与限制.md) -- [迁移流程](#迁移流程.md) -- [模型移植评估](#模型移植评估.md) -- [环境准备](#环境准备.md) - - [准备运行环境](#准备运行环境.md) - - [配置环境变量](#配置环境变量.md) -- [模型迁移](#模型迁移.md) - - [工具迁移](#工具迁移.md) - - [功能介绍](#功能介绍.md) - - [操作指南](#操作指南.md) - - [结果解析](#结果解析.md) - - [手工迁移](#手工迁移.md) - - [单P训练模型迁移](#单P训练模型迁移.md) - - [多P训练模型迁移](#多P训练模型迁移.md) - - [PyTorch接口替换](#PyTorch接口替换.md) - - [混合精度](#混合精度.md) - - [性能优化](#性能优化.md) - - [概述](#概述-0.md) - - [修改CPU性能模式(X86服务器)](#修改CPU性能模式(X86服务器).md) - - [修改CPU性能模式(ARM服务器)](#修改CPU性能模式(ARM服务器).md) - - [安装高性能pillow库(X86服务器)](#安装高性能pillow库(X86服务器).md) - - [(可选)安装指定版本OpenCV库](#(可选)安装指定版本OpenCV库.md) -- [模型训练](#模型训练.md) -- [性能调优和分析](#性能调优和分析.md) - - [前提条件](#前提条件.md) - - [调测过程](#调测过程.md) - - [总体思路](#总体思路.md) - - [采集训练过程相关数据](#采集训练过程相关数据.md) - - [性能优化](#性能优化-1.md) - - [亲和库](#亲和库.md) - - [来源介绍](#来源介绍.md) - - [功能介绍](#功能介绍-2.md) -- [精度调测](#精度调测.md) - - [前提条件](#前提条件-3.md) - - [调测过程](#调测过程-4.md) - - [总体思路](#总体思路-5.md) - - [精度调优方法](#精度调优方法.md) -- [模型保存与转换](#模型保存与转换.md) - - [简介](#简介.md) - - [模型保存](#模型保存.md) - - [导出ONNX模型](#导出ONNX模型.md) -- [样例说明](#样例说明.md) - - [ResNet50模型迁移示例](#ResNet50模型迁移示例.md) - - [样例获取](#样例获取.md) - - [训练脚本迁移](#训练脚本迁移.md) - - [单P训练修改](#单P训练修改.md) - - [分布式训练修改](#分布式训练修改.md) - - [脚本执行](#脚本执行.md) - - [ShuffleNet模型调优示例](#ShuffleNet模型调优示例.md) - - [样例获取](#样例获取-6.md) - - [模型评估](#模型评估.md) - - [网络迁移](#网络迁移.md) - - [网络调测](#网络调测.md) -- [参考信息](#参考信息.md) - - [单算子样例编写说明](#单算子样例编写说明.md) - - [单算子dump方法](#单算子dump方法.md) - - [常用环境变量说明](#常用环境变量说明.md) - - [dump op方法](#dump-op方法.md) - - [安装7.3.0版本gcc](#安装7-3-0版本gcc.md) -- [FAQ](#FAQ.md) - - [软件安装常见问题](#软件安装常见问题.md) - - [pip3.7 install Pillow==5.3.0安装失败](#pip3-7-install-Pillow-5-3-0安装失败.md) - - [模型和算子运行常见问题](#模型和算子运行常见问题.md) - - [在模型运行或者算子运行时遇到报错“RuntimeError: ExchangeDevice:”](#在模型运行或者算子运行时遇到报错-RuntimeError-ExchangeDevice.md) - - [在模型运行或者算子运行时遇到报错“Error in atexit.\_run\_exitfuncs:”](#在模型运行或者算子运行时遇到报错-Error-in-atexit-_run_exitfuncs.md) - - [在模型运行时遇到报错“terminate called after throwing an instance of 'c10::Error' what\(\): HelpACLExecute:”](#在模型运行时遇到报错-terminate-called-after-throwing-an-instance-of-c10-Error-what()-HelpACLExecute.md) - - [在模型运行时遇到报错“ImportError: libhccl.so.”](#在模型运行时遇到报错-ImportError-libhccl-so.md) - - [在模型运行时遇到报错“RuntimeError: Initialize.”](#在模型运行时遇到报错-RuntimeError-Initialize.md) - - [在模型运行时遇到报错“TVM/te/cce error.”](#在模型运行时遇到报错-TVM-te-cce-error.md) - - [在模型运行时遇到报错“MemCopySync:drvMemcpy failed.”](#在模型运行时遇到报错-MemCopySync-drvMemcpy-failed.md) - - [在模型运行时遇到报错“MemCopySync:drvMemcpy failed.”](#在模型运行时遇到报错-MemCopySync-drvMemcpy-failed-7.md) - - [在模型运行时将多任务下发关闭\(export TASK\_QUEUE\_ENABLE=0\)后仍然遇到报错“HelpACLExecute.”](#在模型运行时将多任务下发关闭(export-TASK_QUEUE_ENABLE-0)后仍然遇到报错-HelpACLExecute.md) - - [在模型运行时遇到报错“55056 GetInputConstDataOut: ErrorNo: -1\(failed\)”](#在模型运行时遇到报错-55056-GetInputConstDataOut-ErrorNo--1(failed).md) - - [模型调测常见问题](#模型调测常见问题.md) - - [在模型调测时遇到报错“RuntimeError: malloc:/..../pytorch/c10/npu/NPUCachingAllocator.cpp:293 NPU error, error code is 500000.”](#在模型调测时遇到报错-RuntimeError-malloc-pytorch-c10-npu-NPUCachingAllocator-cpp-293-NPU-error-error-code-is-5.md) - - [在模型调测时遇到报错“RuntimeError: Could not run 'aten::trunc.out' with arguments from the 'NPUTensorId' backend.”](#在模型调测时遇到报错-RuntimeError-Could-not-run-aten-trunc-out-with-arguments-from-the-NPUTensorId-backend.md) - - [在模型调测时遇到如MaxPoolGradWithArgmaxV1算子和max算子报错](#在模型调测时遇到如MaxPoolGradWithArgmaxV1算子和max算子报错.md) - - [在调用torch时遇到报错“ModuleNotFoundError: No module named 'torch.\_C'”](#在调用torch时遇到报错-ModuleNotFoundError-No-module-named-torch-_C.md) - - [其他操作相关问题](#其他操作相关问题.md) - - [cuda流同步操作报错](#cuda流同步操作报错.md) - - [aicpu\_kernels/libpt\_kernels.so不存在](#aicpu_kernels-libpt_kernels-so不存在.md) - - [使用npu-smi info查看显存时发现python进程残留](#使用npu-smi-info查看显存时发现python进程残留.md) - - [动态shape报错“match op inputs failed”](#动态shape报错-match-op-inputs-failed.md) - - [Op type SigmoidCrossEntropyWithLogitsV2 of ops kernel AIcoreEngine is unsupported](#Op-type-SigmoidCrossEntropyWithLogitsV2-of-ops-kernel-AIcoreEngine-is-unsupported.md) - - [Hook失败](#Hook失败.md) - - [加载权重时遇到报错“load state\_dict error.”](#加载权重时遇到报错-load-state_dict-error.md) - - [模型分布式训练常见问题](#模型分布式训练常见问题.md) - - [在进行模型分布式训练时遇到报错“host not found.”](#在进行模型分布式训练时遇到报错-host-not-found.md) - - [在进行模型分布式训练时遇到报错“RuntimeError:connect\(\) timed out.”](#在进行模型分布式训练时遇到报错-RuntimeError-connect()-timed-out.md) -

概述

+- [概述](#概述) +- [约束与限制](#约束与限制) +- [迁移流程](#迁移流程) +- [模型移植评估](#模型移植评估) +- [环境准备](#环境准备) + - [准备运行环境](#准备运行环境) + - [配置环境变量](#配置环境变量) +- [模型迁移](#模型迁移) + - [工具迁移](#工具迁移) + - [功能介绍](#功能介绍) + - [操作指南](#操作指南) + - [结果解析](#结果解析) + - [手工迁移](#手工迁移) + - [单P训练模型迁移](#单P训练模型迁移) + - [多P训练模型迁移](#多P训练模型迁移) + - [PyTorch接口替换](#PyTorch接口替换) + - [混合精度](#混合精度) + - [性能优化](#性能优化) + - [概述](#概述-0) + - [修改CPU性能模式(X86服务器)](#修改CPU性能模式X86服务器) + - [修改CPU性能模式(ARM服务器)](#修改CPU性能模式ARM服务器) + - [安装高性能pillow库(X86服务器)](#安装高性能pillow库X86服务器) + - [(可选)安装指定版本OpenCV库](#可选安装指定版本OpenCV库) +- [模型训练](#模型训练) +- [性能调优和分析](#性能调优和分析) + - [前提条件](#前提条件) + - [调测过程](#调测过程) + - [总体思路](#总体思路) + - [采集训练过程相关数据](#采集训练过程相关数据) + - [性能优化](#性能优化-1) + - [亲和库](#亲和库) + - [来源介绍](#来源介绍) + - [功能介绍](#功能介绍-2) +- [精度调测](#精度调测) + - [前提条件](#前提条件-3) + - [调测过程](#调测过程-4) + - [总体思路](#总体思路-5) + - [精度调优方法](#精度调优方法) +- [模型保存与转换](#模型保存与转换) + - [简介](#简介) + - [模型保存](#模型保存) + - [导出ONNX模型](#导出ONNX模型) +- [样例说明](#样例说明) + - [ResNet50模型迁移示例](#ResNet50模型迁移示例) + - [样例获取](#样例获取) + - [训练脚本迁移](#训练脚本迁移) + - [单P训练修改](#单P训练修改) + - [分布式训练修改](#分布式训练修改) + - [脚本执行](#脚本执行) + - [ShuffleNet模型调优示例](#ShuffleNet模型调优示例) + - [样例获取](#样例获取-6) + - [模型评估](#模型评估) + - [网络迁移](#网络迁移) + - [网络调测](#网络调测) +- [参考信息](#参考信息) + - [单算子样例编写说明](#单算子样例编写说明) + - [单算子dump方法](#单算子dump方法) + - [常用环境变量说明](#常用环境变量说明) + - [dump op方法](#dump-op方法) + - [安装7.3.0版本gcc](#安装7-3-0版本gcc) +- [FAQ](#FAQ) + - [软件安装常见问题](#软件安装常见问题) + - [pip3.7 install Pillow==5.3.0安装失败](#pip3-7-install-Pillow-5-3-0安装失败) + - [模型和算子运行常见问题](#模型和算子运行常见问题) + - [在模型运行或者算子运行时遇到报错“RuntimeError: ExchangeDevice:”](#在模型运行或者算子运行时遇到报错-RuntimeError-ExchangeDevice) + - [在模型运行或者算子运行时遇到报错“Error in atexit.\_run\_exitfuncs:”](#在模型运行或者算子运行时遇到报错-Error-in-atexit-_run_exitfuncs) + - [在模型运行时遇到报错“terminate called after throwing an instance of 'c10::Error' what\(\): HelpACLExecute:”](#在模型运行时遇到报错-terminate-called-after-throwing-an-instance-of-c10-Error-what-HelpACLExecute) + - [在模型运行时遇到报错“ImportError: libhccl.so.”](#在模型运行时遇到报错-ImportError-libhccl-so) + - [在模型运行时遇到报错“RuntimeError: Initialize.”](#在模型运行时遇到报错-RuntimeError-Initialize) + - [在模型运行时遇到报错“TVM/te/cce error.”](#在模型运行时遇到报错-TVM-te-cce-error) + - [在模型运行时遇到报错“MemCopySync:drvMemcpy failed.”](#在模型运行时遇到报错-MemCopySync-drvMemcpy-failed) + - [在模型运行时遇到报错“MemCopySync:drvMemcpy failed.”](#在模型运行时遇到报错-MemCopySync-drvMemcpy-failed-7) + - [在模型运行时将多任务下发关闭\(export TASK\_QUEUE\_ENABLE=0\)后仍然遇到报错“HelpACLExecute.”](#在模型运行时将多任务下发关闭export-TASK_QUEUE_ENABLE-0后仍然遇到报错-HelpACLExecute) + - [在模型运行时遇到报错“55056 GetInputConstDataOut: ErrorNo: -1\(failed\)”](#在模型运行时遇到报错-55056-GetInputConstDataOut-ErrorNo--1failed) + - [模型调测常见问题](#模型调测常见问题) + - [在模型调测时遇到报错“RuntimeError: malloc:/..../pytorch/c10/npu/NPUCachingAllocator.cpp:293 NPU error, error code is 500000.”](#在模型调测时遇到报错-RuntimeError-malloc-pytorch-c10-npu-NPUCachingAllocator-cpp-293-NPU-error-error-code-is-5) + - [在模型调测时遇到报错“RuntimeError: Could not run 'aten::trunc.out' with arguments from the 'NPUTensorId' backend.”](#在模型调测时遇到报错-RuntimeError-Could-not-run-aten-trunc-out-with-arguments-from-the-NPUTensorId-backend) + - [在模型调测时遇到如MaxPoolGradWithArgmaxV1算子和max算子报错](#在模型调测时遇到如MaxPoolGradWithArgmaxV1算子和max算子报错) + - [在调用torch时遇到报错“ModuleNotFoundError: No module named 'torch.\_C'”](#在调用torch时遇到报错-ModuleNotFoundError-No-module-named-torch-_C) + - [其他操作相关问题](#其他操作相关问题) + - [cuda流同步操作报错](#cuda流同步操作报错) + - [aicpu\_kernels/libpt\_kernels.so不存在](#aicpu_kernels-libpt_kernels-so不存在) + - [使用npu-smi info查看显存时发现python进程残留](#使用npu-smi-info查看显存时发现python进程残留) + - [动态shape报错“match op inputs failed”](#动态shape报错-match-op-inputs-failed) + - [Op type SigmoidCrossEntropyWithLogitsV2 of ops kernel AIcoreEngine is unsupported](#Op-type-SigmoidCrossEntropyWithLogitsV2-of-ops-kernel-AIcoreEngine-is-unsupported) + - [Hook失败](#Hook失败) + - [加载权重时遇到报错“load state\_dict error.”](#加载权重时遇到报错-load-state_dict-error) + - [模型分布式训练常见问题](#模型分布式训练常见问题) + - [在进行模型分布式训练时遇到报错“host not found.”](#在进行模型分布式训练时遇到报错-host-not-found) + - [在进行模型分布式训练时遇到报错“RuntimeError:connect\(\) timed out.”](#在进行模型分布式训练时遇到报错-RuntimeError-connect-timed-out) +

概述

当前阶段针对PyTorch框架实现的对接适配昇腾AI处理器的方案为在线对接方案。 @@ -110,7 +110,7 @@ 4. 扩展性好。在打通流程的通路之上,对于新增的网络类型或结构,只需涉及相关计算类算子的开发和实现。框架类算子,反向图建立和实现机制等结构可保持复用。 5. 与GPU的使用方式和风格保持一致。用户在使用在线对接方案时,只需在Python侧和Device相关操作中,指定device为昇腾AI处理器,即可完成用昇腾AI处理器在PyTorch对网络的开发、训练以及调试,用户无需进一步关注昇腾AI处理器具体的底层细节。这样可以确保用户的最小化修改,迁移成本较低。 -

约束与限制

+

约束与限制

- infershape阶段算子不支持unknowshape的推导。 - cube计算的算子只支持float16。 @@ -124,7 +124,7 @@ - 只支持int8,int32,float16和float32数据类型。 -

迁移流程

+

迁移流程

模型迁移主要指将开源社区中实现过的模型迁移到昇腾AI处理器上,主要流程如[图1](#fig759451810422)所示。 @@ -142,32 +142,32 @@

模型选取

-

详情请参见模型选取

+

详情请参见模型选取

模型移植评估

-

详情请参见模型移植评估

+

详情请参见模型移植评估

算子开发

-

详情请参见PyTorch算子开发指南

+

详情请参见PyTorch算子开发指南

环境准备

-

详情请参见环境准备

+

详情请参见环境准备

模型迁移

-

详情请参见模型迁移

+

详情请参见模型迁移

模型训练

-

详情请参见模型训练

+

详情请参见模型训练

错误分析

@@ -177,17 +177,17 @@

性能调优和分析

-

详情请参见性能调优和分析

+

详情请参见性能调优和分析

精度调测

-

详情请参见精度调测

+

详情请参见精度调测

模型保存与转换

-

详情请参见模型保存与转换《CANN 开发辅助工具指南》中“ATC工具使用指南”章节。

+

详情请参见模型保存与转换《CANN 开发辅助工具指南》中“ATC工具使用指南”章节。

应用软件开发

@@ -197,33 +197,33 @@

FAQ

-

主要涉及环境准备、模型迁移、模型调测和其他常见问题的解决方法。详情请参见FAQ

+

主要涉及环境准备、模型迁移、模型调测和其他常见问题的解决方法。详情请参见FAQ

-

模型移植评估

+

模型移植评估

1. 在选取模型时,尽可能选取权威Pytorch模型实现仓作为标杆,包括但不限于Pytorch\([example](https://github.com/pytorch/examples/tree/master/imagenet)/[vision](https://github.com/pytorch/vision)等\)、facebookresearch\([Detectron](https://github.com/facebookresearch/Detectron)/[detectron2](https://github.com/facebookresearch/detectron2)等\)和open-mmlab\([mmdetection](https://github.com/open-mmlab/mmdetection)/[mmpose](https://github.com/open-mmlab/mmpose)等\)。 -2. 查看算子适配情况。将原始模型及训练脚本迁移到昇腾AI处理器上之前,可以将原始模型及训练脚本在CPU上进行训练,使用dump op方法获取算子信息,与《PyTorch适配算子清单](#https://gitee.com/ascend/pytorch/blob/2.0.2.tr5/docs/zh/PyTorch%E9%80%82%E9%85%8D%E7%AE%97%E5%AD%90%E6%B8%85%E5%8D%95/PyTorch%E9%80%82%E9%85%8D%E7%AE%97%E5%AD%90%E6%B8%85%E5%8D%95.md)》算子进行比较,查看是否支持。dump op方法参见[dump op方法](#dump-op方法.md),当有不支持算子时参见《PyTorch算子开发指南](#https://gitee.com/ascend/pytorch/blob/2.0.2.tr5/docs/zh/PyTorch%E7%AE%97%E5%AD%90%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97/PyTorch%E7%AE%97%E5%AD%90%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97.md)》进行算子开发。 +2. 查看算子适配情况。将原始模型及训练脚本迁移到昇腾AI处理器上之前,可以将原始模型及训练脚本在CPU上进行训练,使用dump op方法获取算子信息,与[《PyTorch适配算子清单》](https://gitee.com/ascend/pytorch/blob/2.0.2.tr5/docs/zh/PyTorch%E9%80%82%E9%85%8D%E7%AE%97%E5%AD%90%E6%B8%85%E5%8D%95/PyTorch%E9%80%82%E9%85%8D%E7%AE%97%E5%AD%90%E6%B8%85%E5%8D%95.md)算子进行比较,查看是否支持。dump op方法参见[dump op方法](#dump-op方法),当有不支持算子时参见[《PyTorch算子开发指南》](https://gitee.com/ascend/pytorch/blob/2.0.2.tr5/docs/zh/PyTorch算子开发指南/PyTorch算子开发指南.md)进行算子开发。 >![](public_sys-resources/icon-note.gif) **说明:** >查看算子适配情况也可以先将模型及训练脚本迁移到昇腾AI处理器(迁移方法参见下文)进行训练来查看报错信息。一般会提示不能在昇腾AI处理器的backend下运行某个算子(第一个不支持的算子)。 -

环境准备

+

环境准备

-- **[准备运行环境](#准备运行环境.md)** +- **[准备运行环境](#准备运行环境)** -- **[配置环境变量](#配置环境变量.md)** +- **[配置环境变量](#配置环境变量)** -

准备运行环境

+

准备运行环境

-请参见《PyTorch安装指南](#https://gitee.com/ascend/pytorch/blob/2.0.2.tr5/docs/zh/PyTorch%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97/PyTorch%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97.md)》进行PyTorch相关运行环境搭建。 +请参见[《PyTorch安装指南》](https://gitee.com/ascend/pytorch/blob/2.0.2.tr5/docs/zh/PyTorch安装指南/PyTorch安装指南.md)进行PyTorch相关运行环境搭建。 -

配置环境变量

+

配置环境变量

安装完软件包后,需要配置环境变量才能正常使用昇腾PyTorch。建议构建启动脚本,例如构建set\_env.sh脚本,使用source set\_env.sh配置当前窗口的环境变量。set\_env.sh脚本内容如下(以root用户安装,安装路径为默认路径为例)。 @@ -347,29 +347,29 @@ export HCCL_IF_IP="1.1.1.1" # “1.1.1.1”为示例使用的host网卡IP,请 -

模型迁移

+

模型迁移

-- **[工具迁移](#工具迁移.md)** +- **[工具迁移](#工具迁移)** -- **[手工迁移](#手工迁移.md)** +- **[手工迁移](#手工迁移)** -- **[混合精度](#混合精度.md)** +- **[混合精度](#混合精度)** -- **[性能优化](#性能优化.md)** +- **[性能优化](#性能优化)** -

工具迁移

+

工具迁移

-Ascend平台提供了脚本转换工具使用户能通过命令行方式将训练脚本迁移到昇腾AI处理器上进行训练,命令行方式工具详细使用说明参见下文。除命令行方式外,用户也可通过MindStudio中集成的PyTorch GPU2Ascend功能进行迁移,详情请参见《MindStudio 用户指南](https://support.huaweicloud.com/mindstudio302/)》。 +Ascend平台提供了脚本转换工具使用户能通过命令行方式将训练脚本迁移到昇腾AI处理器上进行训练,命令行方式工具详细使用说明参见下文。除命令行方式外,用户也可通过MindStudio中集成的PyTorch GPU2Ascend功能进行迁移,详情请参见[《MindStudio 用户指南》](https://support.huaweicloud.com/mindstudio302/)。 -- **[功能介绍](#功能介绍.md)** +- **[功能介绍](#功能介绍)** -- **[操作指南](#操作指南.md)** +- **[操作指南](#操作指南)** -- **[结果解析](#结果解析.md)** +- **[结果解析](#结果解析)** -

功能介绍

+

功能介绍

## 简介 @@ -674,9 +674,9 @@ Ascend平台提供了脚本转换工具使用户能通过命令行方式将训 ## 环境准备 -详情请参考《CANN 软件安装指南](https://support.huawei.com/enterprise/zh/doc/EDOC1100206656?idPath=23710424%7C251366513%7C22892968%7C251168373)》安装开发环境。 +详情请参考[《CANN 软件安装指南》](https://support.huawei.com/enterprise/zh/doc/EDOC1100206656?idPath=23710424%7C251366513%7C22892968%7C251168373)安装开发环境。 -

操作指南

+

操作指南

## 参数说明 @@ -836,7 +836,7 @@ Ascend平台提供了脚本转换工具使用户能通过命令行方式将训 3. 完成脚本转换。 -

结果解析

+

结果解析

脚本转换完成后,进入脚本转换结果输出路径查看结果文件。 @@ -847,16 +847,16 @@ Ascend平台提供了脚本转换工具使用户能通过命令行方式将训 │ ├── unsupported_op.xlsx // 不支持算子列表文件。 ``` -

手工迁移

+

手工迁移

-- **[单P训练模型迁移](#单P训练模型迁移.md)** +- **[单P训练模型迁移](#单P训练模型迁移)** -- **[多P训练模型迁移](#多P训练模型迁移.md)** +- **[多P训练模型迁移](#多P训练模型迁移)** -- **[PyTorch接口替换](#PyTorch接口替换.md)** +- **[PyTorch接口替换](#PyTorch接口替换)** -

单P训练模型迁移

+

单P训练模型迁移

当前在线对接方案优点在于保证在昇腾AI处理器上训练与GPU的使用方式和风格保持一致。用户在使用在线对接方案时,**只需在Python侧和Device相关操作中,指定device为昇腾AI处理器**,即可完成用昇腾AI处理器在PyTorch对网络的开发、训练以及调试。针对单P模型训练,主要迁移改动如下。 @@ -886,9 +886,9 @@ Ascend平台提供了脚本转换工具使用户能通过命令行方式将训 target = target.to(CALCULATE_DEVICE) ``` -更多迁移细节请参见[单P训练修改](#单P训练修改.md)。 +更多迁移细节请参见[单P训练修改](#单P训练修改)。 -

多P训练模型迁移

+

多P训练模型迁移

多P训练模型迁移除了需在**Python侧和Device相关操作中,指定device为昇腾AI处理器**外,依然通过PyTorch的DistributedDataParallel方式来进行分布式训练,即在模型初始化阶段执行init\_process\_group,再将模型初始化为DistributedDataParallel模型。但须注意的是在初始化init\_process\_group时需要将**backend**配置为**hccl**并屏蔽掉初始化方式。 @@ -912,9 +912,9 @@ def main(): lr_scheduler) ``` -更多迁移细节请参见[分布式训练修改](#分布式训练修改.md)。 +更多迁移细节请参见[分布式训练修改](#分布式训练修改)。 -

PyTorch接口替换

+

PyTorch接口替换

1. 为了使昇腾AI处理器使用PyTorch框架的能力,需要对原生的PyTorch框架进行一定Device层面的适配,对外呈现是需要将跟cpu和cuda相关的接口进行切换;在进行网络迁移时,需要将某些设备相关的接口转换成跟昇腾AI处理器相关的接口,当前适配的设备相关接口请参见[表1](#table1922064517344): @@ -1111,9 +1111,9 @@ def main(): -更多接口请参见《PyTorch API支持清单](#https://gitee.com/ascend/pytorch/blob/2.0.2.tr5/docs/zh/PyTorch%20API%E6%94%AF%E6%8C%81%E6%B8%85%E5%8D%95/PyTorch%20API%E6%94%AF%E6%8C%81%E6%B8%85%E5%8D%95.md)》。 +更多接口请参见[《PyTorch API支持清单》](https://gitee.com/ascend/pytorch/blob/2.0.2.tr5/docs/zh/PyTorch%20API%E6%94%AF%E6%8C%81%E6%B8%85%E5%8D%95/PyTorch%20API%E6%94%AF%E6%8C%81%E6%B8%85%E5%8D%95.md)。 -

混合精度

+

混合精度

## 概述 @@ -1204,27 +1204,27 @@ def main(): ``` -

性能优化

+

性能优化

-- **[概述](#概述-0.md)** +- **[概述](#概述-0)** -- **[修改CPU性能模式(X86服务器)](#修改CPU性能模式(X86服务器).md)** +- **[修改CPU性能模式(X86服务器)](#修改CPU性能模式X86服务器)** -- **[修改CPU性能模式(ARM服务器)](#修改CPU性能模式(ARM服务器).md)** +- **[修改CPU性能模式(ARM服务器)](#修改CPU性能模式ARM服务器)** -- **[安装高性能pillow库(X86服务器)](#安装高性能pillow库(X86服务器).md)** +- **[安装高性能pillow库(X86服务器)](#安装高性能pillow库X86服务器)** -- **[(可选)安装指定版本OpenCV库](#(可选)安装指定版本OpenCV库.md)** +- **[(可选)安装指定版本OpenCV库](#可选安装指定版本OpenCV库)** -

概述

+

概述

在进行PyTorch模型迁移训练时,部分网络模型会出现1秒内识别的图像数(fps)较低、性能不达标的情况。此时需要针对服务器进行以下优化。 - 修改CPU性能模式。 - 安装高性能pillow库。 -

修改CPU性能模式(X86服务器)

+

修改CPU性能模式(X86服务器)

## 设置电源策略为高性能模式 @@ -1331,7 +1331,7 @@ def main(): 4. 再次执行[步骤1](#li158435131344)查看当前CPU模式是否已设置为performance模式。 -

修改CPU性能模式(ARM服务器)

+

修改CPU性能模式(ARM服务器)

## 设置电源策略为高性能模式 @@ -1360,7 +1360,7 @@ def main(): 6. 按下“F10”保存配置并重启服务器。 -

安装高性能pillow库(X86服务器)

+

安装高性能pillow库(X86服务器)

1. 安装高性能pillow库相关依赖,命令如下。 @@ -1411,42 +1411,42 @@ def main(): ``` -

(可选)安装指定版本OpenCV库

+

(可选)安装指定版本OpenCV库

如模型依赖OpenCV,基于训练性能考虑,建议安装OpenCV-3.4.10版本。 1. 获取源码:[获取地址](https://opencv.org/releases/)。 2. 安装指导:[获取地址](https://docs.opencv.org/3.4.10/d7/d9f/tutorial_linux_install.html)。 -

模型训练

+

模型训练

-训练脚本迁移完成后,需要参见[配置环境变量](#配置环境变量.md)设置环境变量,然后执行**python3.7** _xxx_进行模型训练。具体样例请参考[脚本执行](#脚本执行.md)。 +训练脚本迁移完成后,需要参见[配置环境变量](#配置环境变量)设置环境变量,然后执行**python3.7** _xxx_进行模型训练。具体样例请参考[脚本执行](#脚本执行)。 -

性能调优和分析

+

性能调优和分析

-- **[前提条件](#前提条件.md)** +- **[前提条件](#前提条件)** -- **[调测过程](#调测过程.md)** +- **[调测过程](#调测过程)** -- **[亲和库](#亲和库.md)** +- **[亲和库](#亲和库)** -

前提条件

+

前提条件

-1. 参见[样例说明](#样例说明.md)改造开源代码,使模型能够正常运行,包括数据预处理,前向计算,loss计算,混合精度,反向计算,参数更新等。 -2. 模型迁移阶段优先关注模型是否能跑通,现有算子是否能满足,如果遇到不满足的算子需参见《PyTorch算子开发指南](#https://gitee.com/ascend/pytorch/blob/2.0.2.tr5/docs/zh/PyTorch%E7%AE%97%E5%AD%90%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97/PyTorch%E7%AE%97%E5%AD%90%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97.md)》进行算子适配开发。 +1. 参见[样例说明](#样例说明)改造开源代码,使模型能够正常运行,包括数据预处理,前向计算,loss计算,混合精度,反向计算,参数更新等。 +2. 模型迁移阶段优先关注模型是否能跑通,现有算子是否能满足,如果遇到不满足的算子需参见[《PyTorch算子开发指南》](https://gitee.com/ascend/pytorch/blob/2.0.2.tr5/docs/zh/PyTorch%E7%AE%97%E5%AD%90%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97/PyTorch%E7%AE%97%E5%AD%90%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97.md)进行算子适配开发。 3. 优先打通单卡功能,再打通多卡功能。 -

调测过程

+

调测过程

-- **[总体思路](#总体思路.md)** +- **[总体思路](#总体思路)** -- **[采集训练过程相关数据](#采集训练过程相关数据.md)** +- **[采集训练过程相关数据](#采集训练过程相关数据)** -- **[性能优化](#性能优化-1.md)** +- **[性能优化](#性能优化-1)** -

总体思路

+

总体思路

1. 通过训练执行结果,判断吞吐量指标是否达到预期要求。 2. 当吞吐量指标不达标时,需要找出制约性能瓶颈的原因,主要为以下几个方面: @@ -1457,7 +1457,7 @@ def main(): 3. 针对以上制约性能瓶颈的原因进行分析与优化。 -

采集训练过程相关数据

+

采集训练过程相关数据

## Profiling数据采集 @@ -1536,7 +1536,7 @@ def main(): export ASCEND_SLOG_PRINT_TO_STDOUT=1 ``` -3. 设置日志级别为info,参考《CANN 日志参考](https://support.huawei.com/enterprise/zh/doc/EDOC1100206691?idPath=23710424%7C251366513%7C22892968%7C251168373)》设置日志级别。 +3. 设置日志级别为info,参考[《CANN 日志参考》](https://support.huawei.com/enterprise/zh/doc/EDOC1100206691?idPath=23710424%7C251366513%7C22892968%7C251168373)设置日志级别。 4. 执行训练脚本,进行模型训练,训练完成后获取host侧日志,默认位置为$HOME/ascend/log/plog目录下,$HOME表示Host侧用户根目录。 5. 解析host侧日志会在当前目录下得到OPInfo信息ascend\_op\_info\_summary.txt。 @@ -1546,7 +1546,7 @@ def main(): 6. 分析TaskInfo中额外的task,尤其关注transdata。 -

性能优化

+

性能优化

## 算子瓶颈优化 @@ -1590,18 +1590,18 @@ def main(): - 解决方案:减少编译或不需要编译该算子。 -

亲和库

+

亲和库

-- **[来源介绍](#来源介绍.md)** +- **[来源介绍](#来源介绍)** -- **[功能介绍](#功能介绍-2.md)** +- **[功能介绍](#功能介绍-2)** -

来源介绍

+

来源介绍

针对公版模型中常见的网络结构和函数,我们针对性地对其进行了优化,使得运算性能大幅度提升,同时,将其集成到Pytorch框架中,便于模型性能调优中使用。 -

功能介绍

+

功能介绍

函数名

@@ -1646,25 +1646,25 @@ def main(): >![](public_sys-resources/icon-note.gif) **说明:** >该部分调优内容会随着版本不断增强和更新,请以实际PyTorch版本中对应路径下的内容为准。 -

精度调测

+

精度调测

-- **[前提条件](#前提条件-3.md)** +- **[前提条件](#前提条件-3)** -- **[调测过程](#调测过程-4.md)** +- **[调测过程](#调测过程-4)** -

前提条件

+

前提条件

优先在同等语义和超参下,跑一定的epoch(推荐完整epoch数的20%),使精度,loss等对齐GPU相应水平,完成后再对齐最终精度。 -

调测过程

+

调测过程

-- **[总体思路](#总体思路-5.md)** +- **[总体思路](#总体思路-5)** -- **[精度调优方法](#精度调优方法.md)** +- **[精度调优方法](#精度调优方法)** -

总体思路

+

总体思路

精度问题排查需要找出是哪一步出现的问题,主要以下几个方面: @@ -1698,7 +1698,7 @@ def main(): -

精度调优方法

+

精度调优方法

1. 通过对比CPU和昇腾AI处理器的结果,判断在昇腾AI处理器上计算是否正确。 @@ -1758,16 +1758,16 @@ def main(): ``` -

模型保存与转换

+

模型保存与转换

-- **[简介](#简介.md)** +- **[简介](#简介)** -- **[模型保存](#模型保存.md)** +- **[模型保存](#模型保存)** -- **[导出ONNX模型](#导出ONNX模型.md)** +- **[导出ONNX模型](#导出ONNX模型)** -

简介

+

简介

模型训练完成后,通过Pytorch提供的接口保存模型文件并导出ONNX模型,然后通过ATC工具将其转换为适配昇腾AI处理器的.om文件用于离线推理。 @@ -1775,11 +1775,11 @@ def main(): 如果想使用Auto Tune优化功能,请参考《CANN 开发辅助工具指南》手册中“Auto Tune工具使用指导”章节。 -离线推理应用构建请参考《CANN 应用软件开发指南\(C&C++, 推理\)](https://support.huawei.com/enterprise/zh/doc/EDOC1100206685?idPath=23710424%7C251366513%7C22892968%7C251168373)》。整体流程如下: +离线推理应用构建请参考[《CANN 应用软件开发指南\(C&C++, 推理\)》](https://support.huawei.com/enterprise/zh/doc/EDOC1100206685?idPath=23710424%7C251366513%7C22892968%7C251168373)。整体流程如下: ![](figures/zh-cn_image_0000001106176222.png) -

模型保存

+

模型保存

Pytorch在训练过程中,通常使用torch.save\(\)来保存Checkpoint文件,根据模型文件的后续用途会保存为两种格式的模型文件: @@ -1799,7 +1799,7 @@ Pytorch在训练过程中,通常使用torch.save\(\)来保存Checkpoint文件 torch.save(net.state_dict(), PATH) ``` - 2. 加载模型以用于在线推理,示例如下,详情请参见《PyTorch在线推理指南](#https://gitee.com/ascend/pytorch/blob/2.0.2.tr5/docs/zh/PyTorch%E5%9C%A8%E7%BA%BF%E6%8E%A8%E7%90%86%E6%8C%87%E5%8D%97/PyTorch%E5%9C%A8%E7%BA%BF%E6%8E%A8%E7%90%86%E6%8C%87%E5%8D%97.md)》。 + 2. 加载模型以用于在线推理,示例如下,详情请参见[《PyTorch在线推理指南》](https://gitee.com/ascend/pytorch/blob/2.0.2.tr5/docs/zh/PyTorch%E5%9C%A8%E7%BA%BF%E6%8E%A8%E7%90%86%E6%8C%87%E5%8D%97/PyTorch%E5%9C%A8%E7%BA%BF%E6%8E%A8%E7%90%86%E6%8C%87%E5%8D%97.md)。 ``` # 模型文件保存路径 @@ -1852,7 +1852,7 @@ Pytorch在训练过程中,通常使用torch.save\(\)来保存Checkpoint文件 >![](public_sys-resources/icon-notice.gif) **须知:** >通常情况下,训练图和推理图中对同一个算子处理方式不同(例如BatchNorm和dropout等算子),在输入格式上也有差别,因此在运行推理或导出ONNX模型之前,必须调用model.eval\(\) 来将dropout和batch normalization层设置为推理模式。 -

导出ONNX模型

+

导出ONNX模型

## 简介 @@ -1939,23 +1939,23 @@ if __name__ == "__main__": convert() ``` -

样例说明

+

样例说明

-- **[ResNet50模型迁移示例](#ResNet50模型迁移示例.md)** +- **[ResNet50模型迁移示例](#ResNet50模型迁移示例)** -- **[ShuffleNet模型调优示例](#ShuffleNet模型调优示例.md)** +- **[ShuffleNet模型调优示例](#ShuffleNet模型调优示例)** -

ResNet50模型迁移示例

+

ResNet50模型迁移示例

-- **[样例获取](#样例获取.md)** +- **[样例获取](#样例获取)** -- **[训练脚本迁移](#训练脚本迁移.md)** +- **[训练脚本迁移](#训练脚本迁移)** -- **[脚本执行](#脚本执行.md)** +- **[脚本执行](#脚本执行)** -

样例获取

+

样例获取

## 样例获取 @@ -2001,14 +2001,14 @@ if __name__ == "__main__": ├──main.py ``` -

训练脚本迁移

+

训练脚本迁移

-- **[单P训练修改](#单P训练修改.md)** +- **[单P训练修改](#单P训练修改)** -- **[分布式训练修改](#分布式训练修改.md)** +- **[分布式训练修改](#分布式训练修改)** -

单P训练修改

+

单P训练修改

1. main.py增加头文件以支持基于PyTorch框架的模型在昇腾910 AI处理器上训练: @@ -2151,7 +2151,7 @@ if __name__ == "__main__": ``` -

分布式训练修改

+

分布式训练修改

1. main.py增加头文件以支持基于PyTorch框架的模型在昇腾910 AI处理器上训练及进行混合精度训练。 @@ -2502,7 +2502,7 @@ if __name__ == "__main__": ``` -

脚本执行

+

脚本执行

## 准备数据集 @@ -2553,18 +2553,18 @@ python3.7 main.py /home/data/resnet50/imagenet --addr='1.1.1.1' \ >![](public_sys-resources/icon-note.gif) **说明:** >dist-backend需配置成hccl以支持在昇腾AI设备上进行分布式训练。 -

ShuffleNet模型调优示例

+

ShuffleNet模型调优示例

-- **[样例获取](#样例获取-6.md)** +- **[样例获取](#样例获取-6)** -- **[模型评估](#模型评估.md)** +- **[模型评估](#模型评估)** -- **[网络迁移](#网络迁移.md)** +- **[网络迁移](#网络迁移)** -- **[网络调测](#网络调测.md)** +- **[网络调测](#网络调测)** -

样例获取

+

样例获取

## 样例获取 @@ -2587,15 +2587,15 @@ python3.7 main.py /home/data/resnet50/imagenet --addr='1.1.1.1' \ ├──main.py ``` -

模型评估

+

模型评估

-模型评估主要关注算子适配情况,使用dump op方法获取ShuffleNet网络算子信息,与《PyTorch适配算子清单](#https://gitee.com/ascend/pytorch/blob/2.0.2.tr5/docs/zh/PyTorch%E9%80%82%E9%85%8D%E7%AE%97%E5%AD%90%E6%B8%85%E5%8D%95/PyTorch%E9%80%82%E9%85%8D%E7%AE%97%E5%AD%90%E6%B8%85%E5%8D%95.md)》算子进行对比,若是发现某个算子当前暂不支持,对于简单场景我们可以考虑先暂时替换成类似的算子或者把该算子单独放到cpu上执行两种方式规避,复杂场景不支持算子需要参见《PyTorch算子开发指南](#https://gitee.com/ascend/pytorch/blob/2.0.2.tr5/docs/zh/PyTorch%E7%AE%97%E5%AD%90%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97/PyTorch%E7%AE%97%E5%AD%90%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97.md)》进行算子开发。 +模型评估主要关注算子适配情况,使用dump op方法获取ShuffleNet网络算子信息,与[《PyTorch适配算子清单》](https://gitee.com/ascend/pytorch/blob/2.0.2.tr5/docs/zh/PyTorch%E9%80%82%E9%85%8D%E7%AE%97%E5%AD%90%E6%B8%85%E5%8D%95/PyTorch%E9%80%82%E9%85%8D%E7%AE%97%E5%AD%90%E6%B8%85%E5%8D%95.md)算子进行对比,若是发现某个算子当前暂不支持,对于简单场景我们可以考虑先暂时替换成类似的算子或者把该算子单独放到cpu上执行两种方式规避,复杂场景不支持算子需要参见[《PyTorch算子开发指南》](https://gitee.com/ascend/pytorch/blob/2.0.2.tr5/docs/zh/PyTorch%E7%AE%97%E5%AD%90%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97/PyTorch%E7%AE%97%E5%AD%90%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97.md)进行算子开发。 -

网络迁移

+

网络迁移

训练脚本迁移请参见[单P训练修改](#单P训练修改.md)和[分布式训练修改](#分布式训练修改.md)。脚本执行时注意选择参数--arch shufflenet\_v2\_x1\_0。 -

网络调测

+

网络调测

网络调测具体方法请参见[调测过程](#调测过程.md)。经排查ShuffleNet运行时相关算子耗时过大,以下给出耗时数据及解决方法。 @@ -3094,20 +3094,20 @@ for group in [2, 4, 8]: ``` -

参考信息

+

参考信息

-- **[单算子样例编写说明](#单算子样例编写说明.md)** +- **[单算子样例编写说明](#单算子样例编写说明)** -- **[单算子dump方法](#单算子dump方法.md)** +- **[单算子dump方法](#单算子dump方法)** -- **[常用环境变量说明](#常用环境变量说明.md)** +- **[常用环境变量说明](#常用环境变量说明)** -- **[dump op方法](#dump-op方法.md)** +- **[dump op方法](#dump-op方法)** -- **[安装7.3.0版本gcc](#安装7-3-0版本gcc.md)** +- **[安装7.3.0版本gcc](#安装7-3-0版本gcc)** -

单算子样例编写说明

+

单算子样例编写说明

在模型中遇到问题时,使用整网复现问题成本较大,可以构建测试用例来复现精度或性能问题,便于定位解决。构建测试用例一般有如下两种方式。单算子dump方法请参见[单算子dump方法](#单算子dump方法.md)。 @@ -3202,7 +3202,7 @@ for group in [2, 4, 8]: ``` -

单算子dump方法

+

单算子dump方法

## 采集Dump数据 @@ -3310,7 +3310,7 @@ torch.npu.finalize_dump() 转换为.txt格式文件后,维度信息、Dtype均不存在。详细的使用方法请参考numpy官网介绍。 -

常用环境变量说明

+

常用环境变量说明

1. 开启TASK多线程下发,绝大多数情况下,打开该功能会进一步提升整网训练性能。 @@ -3320,7 +3320,7 @@ torch.npu.finalize_dump() **export ASCEND\_SLOG\_PRINT\_TO\_STDOUT=1** -3. 设置日志级别,日志级别设置,信息从多到少分别是 debug --\> info --\> warning --\> error --\> null,一般设置为error,调试时使用info。请参考《CANN 日志参考](https://support.huawei.com/enterprise/zh/doc/EDOC1100206691?idPath=23710424%7C251366513%7C22892968%7C251168373)》设置日志级别。 +3. 设置日志级别,日志级别设置,信息从多到少分别是 debug --\> info --\> warning --\> error --\> null,一般设置为error,调试时使用info。请参考[《CANN 日志参考》](https://support.huawei.com/enterprise/zh/doc/EDOC1100206691?idPath=23710424%7C251366513%7C22892968%7C251168373)设置日志级别。 4. dump图,主要用于查看图结构。 **export DUMP\_GE\_GRAPH=2** @@ -3328,7 +3328,7 @@ torch.npu.finalize_dump() **export DUMP\_GRAPH\_LEVEL=3** -

dump op方法

+

dump op方法

1. 使用profile接口对原始代码训练脚本的loss计算和优化过程进行改造,打印算子信息。代码样例如下: @@ -3343,7 +3343,7 @@ torch.npu.finalize_dump() 2. 将改造后的训练脚本在CPU上进行训练,屏幕会打印相关算子信息。 -

安装7.3.0版本gcc

+

安装7.3.0版本gcc

以下步骤请在root用户下执行。 @@ -3425,25 +3425,25 @@ torch.npu.finalize_dump() >本步骤为用户在需要用到gcc升级后的编译环境时才配置环境变量。 -

FAQ

+

FAQ

-- **[软件安装常见问题](#软件安装常见问题.md)** +- **[软件安装常见问题](#软件安装常见问题)** -- **[模型和算子运行常见问题](#模型和算子运行常见问题.md)** +- **[模型和算子运行常见问题](#模型和算子运行常见问题)** -- **[模型调测常见问题](#模型调测常见问题.md)** +- **[模型调测常见问题](#模型调测常见问题)** -- **[其他操作相关问题](#其他操作相关问题.md)** +- **[其他操作相关问题](#其他操作相关问题)** -- **[模型分布式训练常见问题](#模型分布式训练常见问题.md)** +- **[模型分布式训练常见问题](#模型分布式训练常见问题)** -

软件安装常见问题

+

软件安装常见问题

-- **[pip3.7 install Pillow==5.3.0安装失败](#pip3-7-install-Pillow-5-3-0安装失败.md)** +- **[pip3.7 install Pillow==5.3.0安装失败](#pip3-7-install-Pillow-5-3-0安装失败)** -

pip3.7 install Pillow==5.3.0安装失败

+

pip3.7 install Pillow==5.3.0安装失败

## 现象描述 @@ -3466,30 +3466,30 @@ pip3.7 install pillow==5.3.0安装失败。 **apt-get install libjpeg python-devel zlib-devel libjpeg-turbo-devel** -

模型和算子运行常见问题

+

模型和算子运行常见问题

-- **[在模型运行或者算子运行时遇到报错“RuntimeError: ExchangeDevice:”](#在模型运行或者算子运行时遇到报错-RuntimeError-ExchangeDevice.md)** +- **[在模型运行或者算子运行时遇到报错“RuntimeError: ExchangeDevice:”](#在模型运行或者算子运行时遇到报错-RuntimeError-ExchangeDevice)** -- **[在模型运行或者算子运行时遇到报错“Error in atexit.\_run\_exitfuncs:”](#在模型运行或者算子运行时遇到报错-Error-in-atexit-_run_exitfuncs.md)** +- **[在模型运行或者算子运行时遇到报错“Error in atexit.\_run\_exitfuncs:”](#在模型运行或者算子运行时遇到报错-Error-in-atexit-_run_exitfuncs)** -- **[在模型运行时遇到报错“terminate called after throwing an instance of 'c10::Error' what\(\): HelpACLExecute:”](#在模型运行时遇到报错-terminate-called-after-throwing-an-instance-of-c10-Error-what()-HelpACLExecute.md)** +- **[在模型运行时遇到报错“terminate called after throwing an instance of 'c10::Error' what\(\): HelpACLExecute:”](#在模型运行时遇到报错-terminate-called-after-throwing-an-instance-of-c10-Error-what-HelpACLExecute)** -- **[在模型运行时遇到报错“ImportError: libhccl.so.”](#在模型运行时遇到报错-ImportError-libhccl-so.md)** +- **[在模型运行时遇到报错“ImportError: libhccl.so.”](#在模型运行时遇到报错-ImportError-libhccl-so)** -- **[在模型运行时遇到报错“RuntimeError: Initialize.”](#在模型运行时遇到报错-RuntimeError-Initialize.md)** +- **[在模型运行时遇到报错“RuntimeError: Initialize.”](#在模型运行时遇到报错-RuntimeError-Initialize)** -- **[在模型运行时遇到报错“TVM/te/cce error.”](#在模型运行时遇到报错-TVM-te-cce-error.md)** +- **[在模型运行时遇到报错“TVM/te/cce error.”](#在模型运行时遇到报错-TVM-te-cce-error)** -- **[在模型运行时遇到报错“MemCopySync:drvMemcpy failed.”](#在模型运行时遇到报错-MemCopySync-drvMemcpy-failed.md)** +- **[在模型运行时遇到报错“MemCopySync:drvMemcpy failed.”](#在模型运行时遇到报错-MemCopySync-drvMemcpy-failed)** -- **[在模型运行时遇到报错“MemCopySync:drvMemcpy failed.”](#在模型运行时遇到报错-MemCopySync-drvMemcpy-failed-7.md)** +- **[在模型运行时遇到报错“MemCopySync:drvMemcpy failed.”](#在模型运行时遇到报错-MemCopySync-drvMemcpy-failed-7)** -- **[在模型运行时将多任务下发关闭\(export TASK\_QUEUE\_ENABLE=0\)后仍然遇到报错“HelpACLExecute.”](#在模型运行时将多任务下发关闭(export-TASK_QUEUE_ENABLE-0)后仍然遇到报错-HelpACLExecute.md)** +- **[在模型运行时将多任务下发关闭\(export TASK\_QUEUE\_ENABLE=0\)后仍然遇到报错“HelpACLExecute.”](#在模型运行时将多任务下发关闭export-TASK_QUEUE_ENABLE-0后仍然遇到报错-HelpACLExecute)** -- **[在模型运行时遇到报错“55056 GetInputConstDataOut: ErrorNo: -1\(failed\)”](#在模型运行时遇到报错-55056-GetInputConstDataOut-ErrorNo--1(failed).md)** +- **[在模型运行时遇到报错“55056 GetInputConstDataOut: ErrorNo: -1\(failed\)”](#在模型运行时遇到报错-55056-GetInputConstDataOut-ErrorNo--1failed)** -

在模型运行或者算子运行时遇到报错“RuntimeError: ExchangeDevice:”

+

在模型运行或者算子运行时遇到报错“RuntimeError: ExchangeDevice:”

## 现象描述 @@ -3503,7 +3503,7 @@ pip3.7 install pillow==5.3.0安装失败。 检查代码中在调用torch.npu.set\_device\(device\)、tensor.to\(device\)或者model.to\(device\)时,同一个线程内前后调用时device名称不一致。对于多个线程情况(如多卡训练),每个线程同样只能调用固定的npu device。 -

在模型运行或者算子运行时遇到报错“Error in atexit.\_run\_exitfuncs:”

+

在模型运行或者算子运行时遇到报错“Error in atexit.\_run\_exitfuncs:”

## 现象描述 @@ -3517,7 +3517,7 @@ pip3.7 install pillow==5.3.0安装失败。 在调用NPU设备之前,通过torch.npu.set\_device\(device\)指定需要使用的NPU设备即可。 -

在模型运行时遇到报错“terminate called after throwing an instance of 'c10::Error' what\(\): HelpACLExecute:”

+

在模型运行时遇到报错“terminate called after throwing an instance of 'c10::Error' what\(\): HelpACLExecute:”

## 现象描述 @@ -3534,7 +3534,7 @@ pip3.7 install pillow==5.3.0安装失败。 - 查看具体的host报错日志信息。日志默认路径为/var/log/npu/slog/host-0/,根据时间标识查找以host-0为前缀的日志文件,打开日志文件,搜索“ERROR”,查询具体的报错信息。 - 关闭多线程下发\(export TASK\_QUEUE\_ENABLE=0\),再次运行代码,一般可根据终端报错信息定位错误原因。 -

在模型运行时遇到报错“ImportError: libhccl.so.”

+

在模型运行时遇到报错“ImportError: libhccl.so.”

## 现象描述 @@ -3548,7 +3548,7 @@ pip3.7 install pillow==5.3.0安装失败。 将hccl模块的路径添加到环境变量中,一般情况下hccl库文件路径为安装包下的.../fwkacllib/python/site-packages/hccl。 -

在模型运行时遇到报错“RuntimeError: Initialize.”

+

在模型运行时遇到报错“RuntimeError: Initialize.”

## 现象描述 @@ -3586,7 +3586,7 @@ pip3.7 install pillow==5.3.0安装失败。 4. 联系华为工程师。 -

在模型运行时遇到报错“TVM/te/cce error.”

+

在模型运行时遇到报错“TVM/te/cce error.”

## 现象描述 @@ -3602,7 +3602,7 @@ pytorch内调用npu类型算子时,强依赖于te、cce、tvm组件,pytorch ![](figures/FAQ10-1.png) -

在模型运行时遇到报错“MemCopySync:drvMemcpy failed.”

+

在模型运行时遇到报错“MemCopySync:drvMemcpy failed.”

## 现象描述 @@ -3671,7 +3671,7 @@ shell报错是在同步操作中和AI CPU错误,而日志报错信息却是在 4. 打印stack所有参数的shape、dtype、npu\_format,通过构造单算子用例复现问题。定位到问题原因为减法计算输入参数数据类型不同,导致a-b和b-a结果的数据类型不一致,最终在stack算子中报错。 5. 将stack入参数据类型转换为一致即可临时规避问题。 -

在模型运行时遇到报错“MemCopySync:drvMemcpy failed.”

+

在模型运行时遇到报错“MemCopySync:drvMemcpy failed.”

## 现象描述 @@ -3740,7 +3740,7 @@ shell报错是在同步操作中和ai cpu错误,而日志报错信息却是在 4. 打印stack所有参数的shape、dtype、npu\_format,通过构造单算子用例复现问题。定位到问题原因为减法计算输入参数数据类型不同,导致a-b和b-a结果的数据类型不一致,最终在stack算子中报错。 5. 将stack入参数据类型转换为一致即可临时规避问题。 -

在模型运行时将多任务下发关闭\(export TASK\_QUEUE\_ENABLE=0\)后仍然遇到报错“HelpACLExecute.”

+

在模型运行时将多任务下发关闭\(export TASK\_QUEUE\_ENABLE=0\)后仍然遇到报错“HelpACLExecute.”

## 现象描述 @@ -3760,7 +3760,7 @@ pytorch算子在npu上运行,通过ACL接口调用底层经过优化的算子 在模型代码中查找topk算子调用位置,确定该算子是否可由其他算子代替,若可由其他算子报错,暂时使用代替方案,并将算子报错信息报告华为工程师。若无替代算子,请将算子报错信息通知华为工程师解决。 -

在模型运行时遇到报错“55056 GetInputConstDataOut: ErrorNo: -1\(failed\)”

+

在模型运行时遇到报错“55056 GetInputConstDataOut: ErrorNo: -1\(failed\)”

## 现象描述 @@ -3776,18 +3776,18 @@ pytorch算子在npu上运行,通过ACL接口调用底层经过优化的算子 该报错信息不影响训练功能与性能,可忽略该报错信息。 -

模型调测常见问题

+

模型调测常见问题

-- **[在模型调测时遇到报错“RuntimeError: malloc:/..../pytorch/c10/npu/NPUCachingAllocator.cpp:293 NPU error, error code is 500000.”](#在模型调测时遇到报错-RuntimeError-malloc-pytorch-c10-npu-NPUCachingAllocator-cpp-293-NPU-error-error-code-is-5.md)** +- **[在模型调测时遇到报错“RuntimeError: malloc:/..../pytorch/c10/npu/NPUCachingAllocator.cpp:293 NPU error, error code is 500000.”](#在模型调测时遇到报错-RuntimeError-malloc-pytorch-c10-npu-NPUCachingAllocator-cpp-293-NPU-error-error-code-is-5)** -- **[在模型调测时遇到报错“RuntimeError: Could not run 'aten::trunc.out' with arguments from the 'NPUTensorId' backend.”](#在模型调测时遇到报错-RuntimeError-Could-not-run-aten-trunc-out-with-arguments-from-the-NPUTensorId-backend.md)** +- **[在模型调测时遇到报错“RuntimeError: Could not run 'aten::trunc.out' with arguments from the 'NPUTensorId' backend.”](#在模型调测时遇到报错-RuntimeError-Could-not-run-aten-trunc-out-with-arguments-from-the-NPUTensorId-backend)** -- **[在模型调测时遇到如MaxPoolGradWithArgmaxV1算子和max算子报错](#在模型调测时遇到如MaxPoolGradWithArgmaxV1算子和max算子报错.md)** +- **[在模型调测时遇到如MaxPoolGradWithArgmaxV1算子和max算子报错](#在模型调测时遇到如MaxPoolGradWithArgmaxV1算子和max算子报错)** -- **[在调用torch时遇到报错“ModuleNotFoundError: No module named 'torch.\_C'”](#在调用torch时遇到报错-ModuleNotFoundError-No-module-named-torch-_C.md)** +- **[在调用torch时遇到报错“ModuleNotFoundError: No module named 'torch.\_C'”](#在调用torch时遇到报错-ModuleNotFoundError-No-module-named-torch-_C)** -

在模型调测时遇到报错“RuntimeError: malloc:/..../pytorch/c10/npu/NPUCachingAllocator.cpp:293 NPU error, error code is 500000.”

+

在模型调测时遇到报错“RuntimeError: malloc:/..../pytorch/c10/npu/NPUCachingAllocator.cpp:293 NPU error, error code is 500000.”

## 现象描述 @@ -3801,7 +3801,7 @@ pytorch算子在npu上运行,通过ACL接口调用底层经过优化的算子 在模型调测中,可用通过减小batch size参数来减少NPU显存的分配,解决该问题。 -

在模型调测时遇到报错“RuntimeError: Could not run 'aten::trunc.out' with arguments from the 'NPUTensorId' backend.”

+

在模型调测时遇到报错“RuntimeError: Could not run 'aten::trunc.out' with arguments from the 'NPUTensorId' backend.”

## 现象描述 @@ -3815,7 +3815,7 @@ pytorch算子在npu上运行,通过ACL接口调用底层经过优化的算子 在模型调测中,可通过减小batch size参数,来减少NPU显存的占用,解决该问题。 -

在模型调测时遇到如MaxPoolGradWithArgmaxV1算子和max算子报错

+

在模型调测时遇到如MaxPoolGradWithArgmaxV1算子和max算子报错

## 现象描述 @@ -3843,7 +3843,7 @@ pytorch算子在npu上运行,通过ACL接口调用底层经过优化的算子 在模型中遇到算子报错,首选是仅构建单算子测试用例,确定报错场景和原因即可;若无法在单算子中构建单算子用例,则需要构建基于上下文的单算子场景, 可以参考[单算子样例编写说明](#单算子样例编写说明.md)编写用例。 -

在调用torch时遇到报错“ModuleNotFoundError: No module named 'torch.\_C'”

+

在调用torch时遇到报错“ModuleNotFoundError: No module named 'torch.\_C'”

## 现象描述 @@ -3857,24 +3857,24 @@ pytorch算子在npu上运行,通过ACL接口调用底层经过优化的算子 切换到其他目录执行脚本。 -

其他操作相关问题

+

其他操作相关问题

-- **[cuda流同步操作报错](#cuda流同步操作报错.md)** +- **[cuda流同步操作报错](#cuda流同步操作报错)** -- **[aicpu\_kernels/libpt\_kernels.so不存在](#aicpu_kernels-libpt_kernels-so不存在.md)** +- **[aicpu\_kernels/libpt\_kernels.so不存在](#aicpu_kernels-libpt_kernels-so不存在)** -- **[使用npu-smi info查看显存时发现python进程残留](#使用npu-smi-info查看显存时发现python进程残留.md)** +- **[使用npu-smi info查看显存时发现python进程残留](#使用npu-smi-info查看显存时发现python进程残留)** -- **[动态shape报错“match op inputs failed”](#动态shape报错-match-op-inputs-failed.md)** +- **[动态shape报错“match op inputs failed”](#动态shape报错-match-op-inputs-failed)** -- **[Op type SigmoidCrossEntropyWithLogitsV2 of ops kernel AIcoreEngine is unsupported](#Op-type-SigmoidCrossEntropyWithLogitsV2-of-ops-kernel-AIcoreEngine-is-unsupported.md)** +- **[Op type SigmoidCrossEntropyWithLogitsV2 of ops kernel AIcoreEngine is unsupported](#Op-type-SigmoidCrossEntropyWithLogitsV2-of-ops-kernel-AIcoreEngine-is-unsupported)** -- **[Hook失败](#Hook失败.md)** +- **[Hook失败](#Hook失败)** -- **[加载权重时遇到报错“load state\_dict error.”](#加载权重时遇到报错-load-state_dict-error.md)** +- **[加载权重时遇到报错“load state\_dict error.”](#加载权重时遇到报错-load-state_dict-error)** -

cuda流同步操作报错

+

cuda流同步操作报错

## 现象描述 @@ -3893,7 +3893,7 @@ stream = torch.npu.current_stream() stream.synchronize() ``` -

aicpu\_kernels/libpt\_kernels.so不存在

+

aicpu\_kernels/libpt\_kernels.so不存在

## 现象描述 @@ -3911,7 +3911,7 @@ stream.synchronize() export ASCEND_AICPU_PATH=/usr/local/Ascend/ascend-toolkit/latest ``` -

使用npu-smi info查看显存时发现python进程残留

+

使用npu-smi info查看显存时发现python进程残留

## 现象描述 @@ -3929,7 +3929,7 @@ python进程残留,需要kill。 pkill -9 python ``` -

动态shape报错“match op inputs failed”

+

动态shape报错“match op inputs failed”

## 现象描述 @@ -3943,7 +3943,7 @@ PTIndexPut编译的算子和输入的shape不一致, 并有acl\_dynamic\_shape PTIndexPut对应tensor\[indices\] = value,需要在代码中找到对应的地方将动态shape修改为固定shape。 -

Op type SigmoidCrossEntropyWithLogitsV2 of ops kernel AIcoreEngine is unsupported

+

Op type SigmoidCrossEntropyWithLogitsV2 of ops kernel AIcoreEngine is unsupported

## 现象描述 @@ -3960,7 +3960,7 @@ SigmoidCrossEntropyWithLogitsV2算子输入了不支持的数据类型,可能 检查对应python代码中输入的数据类型,并修改。 -

Hook失败

+

Hook失败

## 现象描述 @@ -4016,7 +4016,7 @@ if len(self._backward_hooks) > 0: return result ``` -

加载权重时遇到报错“load state\_dict error.”

+

加载权重时遇到报错“load state\_dict error.”

## 现象描述 @@ -4045,14 +4045,14 @@ return result model.load_state_dict(state_dict) ``` -

模型分布式训练常见问题

+

模型分布式训练常见问题

-- **[在进行模型分布式训练时遇到报错“host not found.”](#在进行模型分布式训练时遇到报错-host-not-found.md)** +- **[在进行模型分布式训练时遇到报错“host not found.”](#在进行模型分布式训练时遇到报错-host-not-found)** -- **[在进行模型分布式训练时遇到报错“RuntimeError:connect\(\) timed out.”](#在进行模型分布式训练时遇到报错-RuntimeError-connect()-timed-out.md)** +- **[在进行模型分布式训练时遇到报错“RuntimeError:connect\(\) timed out.”](#在进行模型分布式训练时遇到报错-RuntimeError-connect-timed-out)** -

在进行模型分布式训练时遇到报错“host not found.”

+

在进行模型分布式训练时遇到报错“host not found.”

## 现象描述 @@ -4066,7 +4066,7 @@ return result 在运行脚本中设置正确的IP地址,对于单机情况,设置为本机的IP地址即可;对于多机情况,每个服务器上脚本中的IP需要设置为master节点的IP。 -

在进行模型分布式训练时遇到报错“RuntimeError:connect\(\) timed out.”

+

在进行模型分布式训练时遇到报错“RuntimeError:connect\(\) timed out.”

## 现象描述 diff --git "a/docs/zh/PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225/PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225.md" "b/docs/zh/PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225/PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225.md" index 1d286c4692957a56aa7dcb2ad01691b2cc95c76a..7d5dd76e6b9c4eeb03ec26bb2617d13592de7c8d 100644 --- "a/docs/zh/PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225/PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225.md" +++ "b/docs/zh/PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225/PyTorch\351\200\202\351\205\215\347\256\227\345\255\220\346\270\205\345\215\225.md" @@ -1,7 +1,7 @@ # PyTorch适配算子清单 -- [PyTorch原生算子与昇腾算子对应表](#PyTorch原生算子与昇腾算子对应表.md) -- [PyTorch昇腾自定义算子](#PyTorch昇腾自定义算子.md) -

PyTorch原生算子与昇腾算子对应表

+- [PyTorch原生算子与昇腾算子对应表](#PyTorch原生算子与昇腾算子对应表) +- [PyTorch昇腾自定义算子](#PyTorch昇腾自定义算子) +

PyTorch原生算子与昇腾算子对应表

序号

@@ -5405,7 +5405,7 @@
-

PyTorch昇腾自定义算子

+

PyTorch昇腾自定义算子

序号

diff --git a/docs/zh/RELEASENOTE/RELEASENOTE.md b/docs/zh/RELEASENOTE/RELEASENOTE.md index 485e1989729a6f8d15cf5c2fca486de6b9971279..0778242a41c5fa30ad9e8d3ea0a37fb27f9bdcc9 100644 --- a/docs/zh/RELEASENOTE/RELEASENOTE.md +++ b/docs/zh/RELEASENOTE/RELEASENOTE.md @@ -1,15 +1,15 @@ # PyTorch版本说明书 2.0.2 -- [用户须知](#用户须知.md) -- [新增特性](#新增特性.md) -- [特性修改](#特性修改.md) -- [已修复问题](#已修复问题.md) -- [已知问题](#已知问题.md) -- [兼容性](#兼容性.md) -

用户须知

+- [用户须知](#用户须知) +- [新增特性](#新增特性) +- [特性修改](#特性修改) +- [已修复问题](#已修复问题) +- [已知问题](#已知问题) +- [兼容性](#兼容性) +

用户须知

本框架基于Facebook主导的开源PyTorch1.5.0进行修改,延续原生的PyTorch特性,使用NPU进行动态图训练;以算子粒度进行模型适配,代码重用性好,支持现有的网络只修改设备类型或数据类型,即可迁移到NPU上使用。 -

新增特性

+

新增特性

**表 1** PyTorch支持的版本特性列表 @@ -84,15 +84,15 @@
-

特性修改

+

特性修改

不涉及 -

已修复问题

+

已修复问题

不涉及 -

已知问题

+

已知问题

已知问题

@@ -131,7 +131,7 @@
-

兼容性

+

兼容性

A800-9010:CentOS 7.6/Ubuntu 18.04/BC-Linux 7.6/Debian 9.9/Debian 10/OpenEuler 20.03 LTS