已合并
【docs】AIDD Scan Modification & Modification Manual Name #42189
lyx324521创建于 7月20日
【docs】AIDD Scan Modification & Modification Manual Name #42189
已合并
共 68 个文件变更+114-78
| @@ -373,12 +373,12 @@ PyTorch NPU 项目鼓励使用 AI 辅助研发与文档开发,以提升贡献 | |||
| 373 | 373 | ||
| 374 | 文档主要包含以下类目: | 374 | 文档主要包含以下类目: |
| 375 | 375 | ||
| 376 | -- **安装指南**(`installation_guide/`):环境准备、源码编译、pip 安装等说明。 | 376 | +- **软件安装**(`installation_guide/`):环境准备、源码编译、pip 安装等说明。 |
| 377 | - **快速入门**(`quick_start/`):快速上手教程。 | 377 | - **快速入门**(`quick_start/`):快速上手教程。 |
| 378 | -- **原生 API 文档**(`native_apis/`):各版本 PyTorch 原生 API 支持情况。 | 378 | +- **原生API**(`native_apis/`):各版本 PyTorch 原生 API 支持情况。 |
| 379 | -- **框架特性指南**(`framework_feature_guide_pytorch/`):NPU 图模式、Inductor、内存优化等特性说明。 | 379 | +- **框架特性**(`framework_feature_guide_pytorch/`):NPU 图模式、Inductor、内存优化等特性说明。 |
| 380 | -- **环境变量参考**(`environment_variable_reference/`):NPU 相关环境变量说明。 | 380 | +- **环境变量**(`environment_variable_reference/`):NPU 相关环境变量说明。 |
| 381 | -- **故障排除**(`troubleshooting/`):常见问题及错误码分析。 | 381 | +- **故障处理**(`troubleshooting/`):常见问题及错误码分析。 |
| 382 | - **安全声明**(`SECURITYNOTE.md`):安全相关说明。 | 382 | - **安全声明**(`SECURITYNOTE.md`):安全相关说明。 |
| 383 | - **贡献指南**(`CONTRIBUTING.md`):本文档。 | 383 | - **贡献指南**(`CONTRIBUTING.md`):本文档。 |
| 384 | 384 | ||
| @@ -230,7 +230,7 @@ PyTorch提供分布式训练能力,支持在单机和多机场景下进行训 | |||
| 230 | | 所属平面 | 不涉及 | 不涉及 | | 230 | | 所属平面 | 不涉及 | 不涉及 | |
| 231 | | 版本 | 所有版本 | 所有版本 | | 231 | | 版本 | 所有版本 | 所有版本 | |
| 232 | | 特殊场景 | 无 | 无 | | 232 | | 特殊场景 | 无 | 无 | |
| 233 | -| 备注 | 该通信过程由开源软件PyTorch控制,配置为PyTorch原生设置,可参考[PyTorch文档](https://pytorch.org/docs/stable/distributed.html#launch-utility)。源端口由操作系统自动分配,分配范围由操作系统的配置决定,例如ubuntu:采用/proc/sys/net/ipv4/ipv4_local_port_range文件指定,可通过cat /proc/sys/net/ipv4/ipv4_local_port_range或sysctl net.ipv4.ip_local_port_range查看 | 该通信过程由CANN中HCCL组件控制,TorchNPU不进行控制,端口范围可参考[《环境变量参考》](https://www.hiascend.com/document/detail/zh/canncommercial/82RC1/maintenref/envvar/envref_07_0001.html)的“执行相关 > 集合通信 >HCCL_IF_BASE_PORT” | | 233 | +| 备注 | 该通信过程由开源软件PyTorch控制,配置为PyTorch原生设置,可参考[PyTorch文档](https://pytorch.org/docs/stable/distributed.html#launch-utility)。源端口由操作系统自动分配,分配范围由操作系统的配置决定,例如ubuntu:采用/proc/sys/net/ipv4/ipv4_local_port_range文件指定,可通过cat /proc/sys/net/ipv4/ipv4_local_port_range或sysctl net.ipv4.ip_local_port_range查看 | 该通信过程由CANN中HCCL组件控制,TorchNPU不进行控制,端口范围可参考[《环境变量》](https://www.hiascend.com/document/detail/zh/canncommercial/82RC1/maintenref/envvar/envref_07_0001.html)的“执行相关 > 集合通信 >HCCL_IF_BASE_PORT” | |
| 234 | 234 | ||
| 235 | ## 漏洞机制说明 | 235 | ## 漏洞机制说明 |
| 236 | 236 | ||
| @@ -4,7 +4,7 @@ | |||
| 4 | 4 | ||
| 5 | 通过此环境变量可配置算子编译磁盘缓存的目录。 | 5 | 通过此环境变量可配置算子编译磁盘缓存的目录。 |
| 6 | 6 | ||
| 7 | -优先级:ACL\_OP\_COMPILER\_CACHE\_DIR \> ASCEND\_CACHE\_PATH \> 默认路径($HOME/atc\_data) | 7 | +优先级:ACL\_OP\_COMPILER\_CACHE\_DIR \> ASCEND\_CACHE\_PATH \> 默认路径($HOME/atc\_data) |
| 8 | 8 | ||
| 9 | 如果设置了该环境变量,则按照该环境变量指定路径落盘算子编译缓存;未设置则使用ASCEND\_CACHE\_PATH指定路径;若未设置该环境变量且未使用ASCEND\_CACHE\_PATH指定路径,则使用默认路径($HOME/atc\_data)。 | 9 | 如果设置了该环境变量,则按照该环境变量指定路径落盘算子编译缓存;未设置则使用ASCEND\_CACHE\_PATH指定路径;若未设置该环境变量且未使用ASCEND\_CACHE\_PATH指定路径,则使用默认路径($HOME/atc\_data)。 |
| 10 | 10 | ||
| @@ -14,7 +14,7 @@ | |||
| 14 | > | 14 | > |
| 15 | > - 需要调大阈值场景:若发生告警,并且确认此次数值波动为正常,不影响训练,则调大阈值。 | 15 | > - 需要调大阈值场景:若发生告警,并且确认此次数值波动为正常,不影响训练,则调大阈值。 |
| 16 | > - 若val超过NPU\_ASD\_UPPER\_THRESH导致告警,则需根据val值调大阈值NPU\_ASD\_UPPER\_THRESH(推荐为val\*2); | 16 | > - 若val超过NPU\_ASD\_UPPER\_THRESH导致告警,则需根据val值调大阈值NPU\_ASD\_UPPER\_THRESH(推荐为val\*2); |
| 17 | -> - 若跳变幅度超过NPU\_ASD\_SIGMA\_THRESH触发告警,则需根据\(val-pre\_val\)和\(max-min\)的比值调大阈值NPU\_ASD\_SIGMA\_THRESH(推荐为\(val-pre\_val\)/\(max-min\)\*2 )。 | 17 | +> - 若跳变幅度超过NPU\_ASD\_SIGMA\_THRESH触发告警,则需根据\(val-pre\_val\)和\(max-min\)的比值调大阈值NPU\_ASD\_SIGMA\_THRESH(推荐为\(val-pre\_val\)/\(max-min\)\*2)。 |
| 18 | > | 18 | > |
| 19 | > 相关影响:调大阈值会导致检出率有所降低,但误检率也会降低。 | 19 | > 相关影响:调大阈值会导致检出率有所降低,但误检率也会降低。 |
| 20 | > - 需要调小阈值场景:若频繁出现loss spike/grad norm spike影响训练,重新拉起依然有spike,但无告警,则按照一定比例(如10)逐渐调小阈值。 | 20 | > - 需要调小阈值场景:若频繁出现loss spike/grad norm spike影响训练,重新拉起依然有spike,但无告警,则按照一定比例(如10)逐渐调小阈值。 |
| @@ -14,7 +14,7 @@ | |||
| 14 | > | 14 | > |
| 15 | > - 需要调大阈值场景:若发生告警,并且确认此次数值波动为正常,不影响训练,则调大阈值。 | 15 | > - 需要调大阈值场景:若发生告警,并且确认此次数值波动为正常,不影响训练,则调大阈值。 |
| 16 | > - 若val超过NPU\_ASD\_UPPER\_THRESH导致告警,则需根据val值调大阈值NPU\_ASD\_UPPER\_THRESH(推荐为val\*2); | 16 | > - 若val超过NPU\_ASD\_UPPER\_THRESH导致告警,则需根据val值调大阈值NPU\_ASD\_UPPER\_THRESH(推荐为val\*2); |
| 17 | -> - 若跳变幅度超过NPU\_ASD\_SIGMA\_THRESH触发告警,则需根据\(val-pre\_val\)和\(max-min\)的比值调大阈值NPU\_ASD\_SIGMA\_THRESH(推荐为\(val-pre\_val\)/\(max-min\)\*2 )。 | 17 | +> - 若跳变幅度超过NPU\_ASD\_SIGMA\_THRESH触发告警,则需根据\(val-pre\_val\)和\(max-min\)的比值调大阈值NPU\_ASD\_SIGMA\_THRESH(推荐为\(val-pre\_val\)/\(max-min\)\*2)。 |
| 18 | > | 18 | > |
| 19 | > 相关影响:调大阈值会导致检出率有所降低,但误检率也会降低。 | 19 | > 相关影响:调大阈值会导致检出率有所降低,但误检率也会降低。 |
| 20 | > - 需要调小阈值场景:若频繁出现loss spike/grad norm spike影响训练,重新启动依然有spike,但无告警,则按照一定比例(如10)逐渐调小阈值。 | 20 | > - 需要调小阈值场景:若频繁出现loss spike/grad norm spike影响训练,重新启动依然有spike,但无告警,则按照一定比例(如10)逐渐调小阈值。 |
| @@ -5,11 +5,11 @@ | |||
| 5 | 通过此环境变量可配置是否开启点对点通信(torch.distributed.isend、torch.distributed.irecv和torch.distributed.batch\_isend\_irecv),并使用独立通信域功能。 | 5 | 通过此环境变量可配置是否开启点对点通信(torch.distributed.isend、torch.distributed.irecv和torch.distributed.batch\_isend\_irecv),并使用独立通信域功能。 |
| 6 | 6 | ||
| 7 | - 配置为0时:关闭点对点通信,使用独立通信域功能。 | 7 | - 配置为0时:关闭点对点通信,使用独立通信域功能。 |
| 8 | -- 配置大于等于1时:开启点对点通信使用独立通信域功能,并且缓存区大小为配置值。 | 8 | +- 配置大于等于1时:开启点对点通信使用独立通信域功能,并且缓冲区大小为配置值。 |
| 9 | 9 | ||
| 10 | 单位为MB,默认配置为20。 | 10 | 单位为MB,默认配置为20。 |
| 11 | 11 | ||
| 12 | -当开启点对点通信使用独立通信域功能时,每一个通信域都会额外占用2\*P2P\_HCCL\_BUFFSIZE大小的缓存区。若集群网络中存在较多的通信域,此缓存区占用量就会增多,可能影响模型数据的正常存放。此种场景下,可通过此环境变量减少点对点通信域占用的缓存区大小。若业务的模型数据量较小,但点对点通信数据量较大,则可通过此环境变量增大点对点通信域占用的缓存区大小,提升点对点通信效率。 | 12 | +当开启点对点通信使用独立通信域功能时,每一个通信域都会额外占用2\*P2P\_HCCL\_BUFFSIZE大小的缓冲区。若集群网络中存在较多的通信域,此缓冲区占用量就会增多,可能影响模型数据的正常存放。此种场景下,可通过此环境变量减少点对点通信域占用的缓冲区大小。若业务的模型数据量较小,但点对点通信数据量较大,则可通过此环境变量增大点对点通信域占用的缓冲区大小,提升点对点通信效率。 |
| 13 | 13 | ||
| 14 | ## 配置示例 | 14 | ## 配置示例 |
| 15 | 15 | ||
| @@ -20,7 +20,7 @@ export PER_STREAM_QUEUE=1 | |||
| 20 | 20 | ||
| 21 | ## 使用约束 | 21 | ## 使用约束 |
| 22 | 22 | ||
| 23 | -当[TASK\_QUEUE\_ENABLE](TASK_QUEUE_ENABLE.md)配置为“1“/“2“时,此环境变量才能生效。 | 23 | +当[TASK\_QUEUE\_ENABLE](TASK_QUEUE_ENABLE.md)配置为“1”/“2”时,此环境变量才能生效。 |
| 24 | 24 | ||
| 25 | ## 支持的型号 | 25 | ## 支持的型号 |
| 26 | 26 | ||
| @@ -9,12 +9,13 @@ | |||
| 9 | 9 | ||
| 10 | 此环境变量默认未配置。 | 10 | 此环境变量默认未配置。 |
| 11 | 11 | ||
| 12 | -> [!NOTE] | 12 | +> [!NOTE] |
| 13 | +> | ||
| 13 | > 配置RANK\_TABLE\_FILE场景下,执行模型分布式训练时如果出现“RuntimeError: The Inner Error ...”的报错,建议将HCCL\_CONNECT\_TIMEOUT的超时时间适当增大,避免rank table场景下无协商导致的建链超时问题,具体请参考[在进行模型分布式训练时遇到报错“RuntimeError: The Inner Error ...”](runtimeerror_Inner_Error.md)。 | 14 | > 配置RANK\_TABLE\_FILE场景下,执行模型分布式训练时如果出现“RuntimeError: The Inner Error ...”的报错,建议将HCCL\_CONNECT\_TIMEOUT的超时时间适当增大,避免rank table场景下无协商导致的建链超时问题,具体请参考[在进行模型分布式训练时遇到报错“RuntimeError: The Inner Error ...”](runtimeerror_Inner_Error.md)。 |
| 14 | 15 | ||
| 15 | ## 配置示例 | 16 | ## 配置示例 |
| 16 | 17 | ||
| 17 | -启用ranktable文件方式建链示例: | 18 | +启用rank table文件方式建链示例: |
| 18 | 19 | ||
| 19 | ```bash | 20 | ```bash |
| 20 | export RANK_TABLE_FILE=/home/ranktable.json | 21 | export RANK_TABLE_FILE=/home/ranktable.json |
| @@ -25,7 +26,7 @@ export RANK_TABLE_FILE=/home/ranktable.json | |||
| 25 | > - 配置的文件路径不存在时,会通过默认的协商流程进行集合通信域建链。 | 26 | > - 配置的文件路径不存在时,会通过默认的协商流程进行集合通信域建链。 |
| 26 | > - 配置的文件路径存在,但配置信息有误时,不会通过默认的协商流程进行集合通信域建链,而是在实际通信时会抛出相应的报错。 | 27 | > - 配置的文件路径存在,但配置信息有误时,不会通过默认的协商流程进行集合通信域建链,而是在实际通信时会抛出相应的报错。 |
| 27 | 28 | ||
| 28 | -关闭ranktable文件方式建链示例: | 29 | +关闭rank table文件方式建链示例: |
| 29 | 30 | ||
| 30 | ```bash | 31 | ```bash |
| 31 | unset RANK_TABLE_FILE | 32 | unset RANK_TABLE_FILE |
| @@ -5,7 +5,7 @@ | |||
| 5 | 通过此环境变量可配置`torch_npu.npu.get_device_capability()`的返回值,仅用于兼容原生PyTorch的`torch.cuda.get_device_capability()`接口,不代表NPU硬件实际能力。 | 5 | 通过此环境变量可配置`torch_npu.npu.get_device_capability()`的返回值,仅用于兼容原生PyTorch的`torch.cuda.get_device_capability()`接口,不代表NPU硬件实际能力。 |
| 6 | 6 | ||
| 7 | - 未配置时,`torch_npu.npu.get_device_capability()`返回值为`None`。 | 7 | - 未配置时,`torch_npu.npu.get_device_capability()`返回值为`None`。 |
| 8 | -- 配置时,`torch_npu.npu.get_device_capability()`返回值为环境变量TORCH\_NPU\_DEVICE\_CAPABILITY的值,配置格式遵循major.minor格式,例如8.0,9.0。 | 8 | +- 配置时,`torch_npu.npu.get_device_capability()`返回值为环境变量`TORCH_NPU_DEVICE_CAPABILITY`的值,配置格式遵循major.minor格式,例如8.0,9.0。 |
| 9 | 9 | ||
| 10 | 此环境变量默认为未配置。 | 10 | 此环境变量默认为未配置。 |
| 11 | 11 | ||
| @@ -4,8 +4,8 @@ | |||
| 4 | 4 | ||
| 5 | 通过此环境变量可开启TorchNPU Eager模式下的DVM算子融合。DVM将多个相邻的小算子合并成单个融合kernel,减少kernel下发次数和中间张量的搬运,从而加速训练和推理。 | 5 | 通过此环境变量可开启TorchNPU Eager模式下的DVM算子融合。DVM将多个相邻的小算子合并成单个融合kernel,减少kernel下发次数和中间张量的搬运,从而加速训练和推理。 |
| 6 | 6 | ||
| 7 | -- 配置为"True"时:开启DVM算子融合。 | 7 | +- 配置为“True”时:开启DVM算子融合。 |
| 8 | -- 未配置或配置为"False"时:关闭DVM算子融合。 | 8 | +- 未配置或配置为“False”时:关闭DVM算子融合。 |
| 9 | 9 | ||
| 10 | 此环境变量默认为未配置。 | 10 | 此环境变量默认为未配置。 |
| 11 | 11 | ||
| @@ -1,6 +1,6 @@ | |||
| 1 | # 编译验证 | 1 | # 编译验证 |
| 2 | 2 | ||
| 3 | -1. 算子适配完成后,需编译TorchNPU包,推荐使用容器场景进行编译安装,具体操作可参考《软件安装》中的“[方式二:源码编译安装](../installation_guide/compilation_installation_using_source_code.md)”章节的“方式一(推荐):容器场景”。 | 3 | +1. 算子适配完成后,需编译TorchNPU包,推荐使用容器场景进行编译安装,具体操作可参考《软件安装》中的“[方式二:源码安装](../installation_guide/compilation_installation_using_source_code.md)”章节的“方式一(推荐):容器场景”。 |
| 4 | 2. TorchNPU安装完成后进行新增算子接口的测试验证。测试验证(UT)通过功能正确性验证、边界条件覆盖等,确保算子实现预期,降低联调成本,同时作为长期维护的质量基线,保障算子适配全生命周期的稳定性,自定义算子适配test目录为test/test\_custom\_ops。 | 4 | 2. TorchNPU安装完成后进行新增算子接口的测试验证。测试验证(UT)通过功能正确性验证、边界条件覆盖等,确保算子实现预期,降低联调成本,同时作为长期维护的质量基线,保障算子适配全生命周期的稳定性,自定义算子适配test目录为test/test\_custom\_ops。 |
| 5 | 以npu_transpose为例,需要实现以下用例: | 5 | 以npu_transpose为例,需要实现以下用例: |
| 6 | 6 | ||
| @@ -44,7 +44,7 @@ | |||
| 44 | - upper\_thresh2:正整数,最小值为3,默认值为100。二级阈值,特征值超过二级阈值会被认为是一次疑似异常,不会更新到历史均值中。默认检测阈值无需配置,若需要修改阈值可通过此环境变量修改。 | 44 | - upper\_thresh2:正整数,最小值为3,默认值为100。二级阈值,特征值超过二级阈值会被认为是一次疑似异常,不会更新到历史均值中。默认检测阈值无需配置,若需要修改阈值可通过此环境变量修改。 |
| 45 | - grad\_sample\_interval:正整数,最小值为1,默认值为3。梯度检测的间隔数,标记每多少个梯度中检测一个。配置越小检出率越高,但性能相对会劣化更严重,可能会超过2%。 | 45 | - grad\_sample\_interval:正整数,最小值为1,默认值为3。梯度检测的间隔数,标记每多少个梯度中检测一个。配置越小检出率越高,但性能相对会劣化更严重,可能会超过2%。 |
| 46 | 46 | ||
| 47 | -此环境变量使用详情可参考《环境变量参考》中的“[NPU\_ASD\_CONFIG](../environment_variable_reference/NPU_ASD_CONFIG.md)”章节。 | 47 | +此环境变量使用详情可参考《环境变量》中的“[NPU\_ASD\_CONFIG](../environment_variable_reference/NPU_ASD_CONFIG.md)”章节。 |
| 48 | 48 | ||
| 49 | ## 使用样例 | 49 | ## 使用样例 |
| 50 | 50 | ||
| @@ -33,7 +33,7 @@ | |||
| 33 | - 未配置时,内存数据默认保存至当前路径。 | 33 | - 未配置时,内存数据默认保存至当前路径。 |
| 34 | - 配置时,内存数据保存至指定路径。 | 34 | - 配置时,内存数据保存至指定路径。 |
| 35 | 35 | ||
| 36 | -此环境变量使用详情请参考《环境变量参考》中的“[OOM\_SNAPSHOT\_ENABLE](../environment_variable_reference/OOM_SNAPSHOT_ENABLE.md)”章节和《环境变量参考》中的“[OOM\_SNAPSHOT\_PATH](../environment_variable_reference/OOM_SNAPSHOT_PATH.md)”章节。 | 36 | +此环境变量使用详情请参考《环境变量》中的“[OOM\_SNAPSHOT\_ENABLE](../environment_variable_reference/OOM_SNAPSHOT_ENABLE.md)”章节和《环境变量》中的“[OOM\_SNAPSHOT\_PATH](../environment_variable_reference/OOM_SNAPSHOT_PATH.md)”章节。 |
| 37 | 37 | ||
| 38 | 内存快照的使用方法和案例还可参考社区的相关说明[LINK](https://pytorch.org/docs/2.7/torch_cuda_memory.html#understanding-cuda-memory-usage)。社区内存快照的API具体用法请参考[LINK](https://pytorch.org/docs/2.7/torch_cuda_memory.html#snapshot-api-reference)。 | 38 | 内存快照的使用方法和案例还可参考社区的相关说明[LINK](https://pytorch.org/docs/2.7/torch_cuda_memory.html#understanding-cuda-memory-usage)。社区内存快照的API具体用法请参考[LINK](https://pytorch.org/docs/2.7/torch_cuda_memory.html#snapshot-api-reference)。 |
| 39 | 39 | ||
| @@ -31,7 +31,7 @@ | |||
| 31 | 31 | ||
| 32 | 默认值是1。 | 32 | 默认值是1。 |
| 33 | 33 | ||
| 34 | -此环境变量使用详情请参考《环境变量参考》中的“[MULTI\_STREAM\_MEMORY\_REUSE](https://www.hiascend.com/document/detail/zh/Pytorch/720/comref/Envvariables/Envir_016.html)”章节。 | 34 | +此环境变量使用详情请参考《环境变量》中的“[MULTI\_STREAM\_MEMORY\_REUSE](https://www.hiascend.com/document/detail/zh/Pytorch/720/comref/Envvariables/Envir_016.html)”章节。 |
| 35 | 35 | ||
| 36 | ## 使用样例 | 36 | ## 使用样例 |
| 37 | 37 | ||
| @@ -31,7 +31,7 @@ PyTorch通过rank table文件建立全局通信域。子通信域的建立通过 | |||
| 31 | >- 配置的文件路径存在,但配置信息有误时,不会通过默认的协商流程进行集合通信域建链,而是在实际通信时会进行相应的报错。 | 31 | >- 配置的文件路径存在,但配置信息有误时,不会通过默认的协商流程进行集合通信域建链,而是在实际通信时会进行相应的报错。 |
| 32 | >- 配置的文件路径不能为软链接,且具有读取权限。 | 32 | >- 配置的文件路径不能为软链接,且具有读取权限。 |
| 33 | 33 | ||
| 34 | -此环境变量使用详情请参考《环境变量参考》中的“[RANK\_TABLE\_FILE](../environment_variable_reference/RANK_TABLE_FILE.md)”章节。 | 34 | +此环境变量使用详情请参考《环境变量》中的“[RANK\_TABLE\_FILE](../environment_variable_reference/RANK_TABLE_FILE.md)”章节。 |
| 35 | 35 | ||
| 36 | ## 使用样例 | 36 | ## 使用样例 |
| 37 | 37 | ||
| @@ -205,7 +205,7 @@ | |||
| 205 | 205 | ||
| 206 | ## 编译验证 | 206 | ## 编译验证 |
| 207 | 207 | ||
| 208 | -1. 编译TorchNPU插件并安装,推荐使用容器场景进行编译,具体操作可参考《软件安装》中的“[方式二:源码编译安装](../installation_guide/compilation_installation_using_source_code.md)”章节的“方式一(推荐):容器场景”。 | 208 | +1. 编译TorchNPU插件并安装,推荐使用容器场景进行编译,具体操作可参考《软件安装》中的“[方式二:源码安装](../installation_guide/compilation_installation_using_source_code.md)”章节的“方式一(推荐):容器场景”。 |
| 209 | 209 | ||
| 210 | 2. 上述开发过程完成后,调用开发者测试脚本,验证基本功能是否正常。 | 210 | 2. 上述开发过程完成后,调用开发者测试脚本,验证基本功能是否正常。 |
| 211 | 211 | ||
| @@ -17,7 +17,7 @@ | |||
| 17 | 17 | ||
| 18 | 可选择如下任一方式: | 18 | 可选择如下任一方式: |
| 19 | 19 | ||
| 20 | -- 设置环境变量PYTORCH\_NPU\_ALLOC\_CONF=expandable\_segments:<value\>,此环境变量使用详情请参考《环境变量参考》中的“[PYTORCH\_NPU\_ALLOC\_CONF](../environment_variable_reference/PYTORCH_NPU_ALLOC_CONF.md)”章节。 | 20 | +- 设置环境变量PYTORCH\_NPU\_ALLOC\_CONF=expandable\_segments:<value\>,此环境变量使用详情请参考《环境变量》中的“[PYTORCH\_NPU\_ALLOC\_CONF](../environment_variable_reference/PYTORCH_NPU_ALLOC_CONF.md)”章节。 |
| 21 | - 修改torch.npu.memory.\_set\_allocator\_settings(“expandable\_segments: <value\>”)接口中的“expandable\_segments”属性值。 | 21 | - 修改torch.npu.memory.\_set\_allocator\_settings(“expandable\_segments: <value\>”)接口中的“expandable\_segments”属性值。 |
| 22 | 22 | ||
| 23 | value可以取值为True或False。默认为False。 | 23 | value可以取值为True或False。默认为False。 |
| @@ -26,7 +26,7 @@ HCCL\_ASYNC\_ERROR\_HANDLING取值情况: | |||
| 26 | 26 | ||
| 27 | 当PyTorch版本为1.11.0时,默认值为0;当PyTorch版本大于等于2.1.0时,默认值为1。 | 27 | 当PyTorch版本为1.11.0时,默认值为0;当PyTorch版本大于等于2.1.0时,默认值为1。 |
| 28 | 28 | ||
| 29 | -此环境变量使用详情请参考《环境变量参考》中的“[HCCL\_ASYNC\_ERROR\_HANDLING](../environment_variable_reference/HCCL_ASYNC_ERROR_HANDLING.md)”章节。 | 29 | +此环境变量使用详情请参考《环境变量》中的“[HCCL\_ASYNC\_ERROR\_HANDLING](../environment_variable_reference/HCCL_ASYNC_ERROR_HANDLING.md)”章节。 |
| 30 | 30 | ||
| 31 | ## 使用样例 | 31 | ## 使用样例 |
| 32 | 32 | ||
| @@ -103,7 +103,7 @@ ci/build.sh: line 11: syntax error near unexpected token `$'{\r'' | |||
| 103 | 103 | ||
| 104 | **报错原因** | 104 | **报错原因** |
| 105 | 105 | ||
| 106 | -Windows换行符问题 。文件使用了Windows风格的换行符(CRLF: \r\n ),而Linux bash只认Unix风格的换行符(LF: \n ),导致“\r”被当作命令的一部分执行。 | 106 | +Windows换行符问题。文件使用了Windows风格的换行符(CRLF: \r\n),而Linux bash只认Unix风格的换行符(LF: \n),导致“\r”被当作命令的一部分执行。 |
| 107 | 107 | ||
| 108 | **处理方法** | 108 | **处理方法** |
| 109 | 109 | ||
| @@ -109,7 +109,8 @@ | |||
| 109 | |2.12.0|X86_64|13.3.1|3.18.4| | 109 | |2.12.0|X86_64|13.3.1|3.18.4| |
| 110 | |3.12.0|AArch64|13.3.1|4.3.2| | 110 | |3.12.0|AArch64|13.3.1|4.3.2| |
| 111 | 111 | ||
| 112 | - > [!NOTE]<br> | 112 | + > [!NOTE] |
| 113 | + > | ||
| 113 | > 安装指导可参见[安装11.2.0版本gcc](installing_gcc_11-2-0.md)和[安装3.18.4版本cmake](installing_cmake_3-18-4.md)。 | 114 | > 安装指导可参见[安装11.2.0版本gcc](installing_gcc_11-2-0.md)和[安装3.18.4版本cmake](installing_cmake_3-18-4.md)。 |
| 114 | 115 | ||
| 115 | 2. 安装环境依赖。 | 116 | 2. 安装环境依赖。 |
| @@ -158,7 +159,7 @@ | |||
| 158 | 159 | ||
| 159 | 执行以下命令可检查安装的Python、PyTorch框架和TorchNPU插件版本。 | 160 | 执行以下命令可检查安装的Python、PyTorch框架和TorchNPU插件版本。 |
| 160 | 161 | ||
| 161 | -- 查看已安装的Pyhton版本。 | 162 | +- 查看已安装的Python版本。 |
| 162 | 163 | ||
| 163 | ```bash | 164 | ```bash |
| 164 | python --version | 165 | python --version |
| @@ -61,7 +61,7 @@ | |||
| 61 | 61 | ||
| 62 | 执行以下命令可检查安装的Python、PyTorch框架和TorchNPU插件版本。 | 62 | 执行以下命令可检查安装的Python、PyTorch框架和TorchNPU插件版本。 |
| 63 | 63 | ||
| 64 | -- 查看已安装的Pyhton版本。 | 64 | +- 查看已安装的Python版本。 |
| 65 | 65 | ||
| 66 | ```bash | 66 | ```bash |
| 67 | python --version | 67 | python --version |
| @@ -16,7 +16,7 @@ | |||
| 16 | 16 | ||
| 17 | > [!NOTE] | 17 | > [!NOTE] |
| 18 | > | 18 | > |
| 19 | -> 如需要保存卸载日志,可在pip3 uninstall命令后面加上参数--log <path\>,并对您指定的目录<path\>做好权限管控。 | 19 | +> 如需要保存卸载日志,可在pip3 uninstall命令后面加上参数--log <path\>,并对指定的目录<path\>做好权限管控。 |
| 20 | 20 | ||
| 21 | ## 卸载CANN软件 | 21 | ## 卸载CANN软件 |
| 22 | 22 | ||
| @@ -6,4 +6,4 @@ | |||
| 6 | > [!NOTE] | 6 | > [!NOTE] |
| 7 | > | 7 | > |
| 8 | > - 在驱动、固件和CANN软件配套场景下,可单独升级PyTorch框架与TorchNPU插件。 | 8 | > - 在驱动、固件和CANN软件配套场景下,可单独升级PyTorch框架与TorchNPU插件。 |
| 9 | -> - 如果也要升级固件、驱动和CANN软件,请按照“固件-\>驱动-\>CANN软件”的顺序先进行升级,再升级PyTorch框架与TorchNPU插件。 | 9 | +> - 如果也要升级固件、驱动和CANN软件,请按照“固件→驱动→CANN软件”的顺序先进行升级,再升级PyTorch框架与TorchNPU插件。 |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.compiler | 1 | # torch.compiler |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | 6 | ||
| 6 | |API名称|是否支持|限制与说明| | 7 | |API名称|是否支持|限制与说明| |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.distributed.elastic | 1 | # torch.distributed.elastic |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | 6 | ||
| 6 | |API名称|是否支持|限制与说明| | 7 | |API名称|是否支持|限制与说明| |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.distributed.pipelining | 1 | # torch.distributed.pipelining |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | 6 | ||
| 6 | |API名称|是否支持|限制与说明| | 7 | |API名称|是否支持|限制与说明| |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.fft | 1 | # torch.fft |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | > | 6 | > |
| 6 | > 使用以下接口,需要配置以下信息: | 7 | > 使用以下接口,需要配置以下信息: |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.linalg | 1 | # torch.linalg |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | 6 | ||
| 6 | |API名称|是否支持|限制与说明| | 7 | |API名称|是否支持|限制与说明| |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.nn.functional | 1 | # torch.nn.functional |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | 6 | ||
| 6 | |API名称|是否支持|限制与说明| | 7 | |API名称|是否支持|限制与说明| |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.nn | 1 | # torch.nn |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | 6 | ||
| 6 | |API名称|是否支持|限制与说明| | 7 | |API名称|是否支持|限制与说明| |
| @@ -93,7 +93,7 @@ | |||
| 93 | |torch.take|是|支持fp16,fp32,int16,int32,int64,bool| | 93 | |torch.take|是|支持fp16,fp32,int16,int32,int64,bool| |
| 94 | |torch.take_along_dim|是|支持fp32| | 94 | |torch.take_along_dim|是|支持fp32| |
| 95 | |torch.tensor_split|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128| | 95 | |torch.tensor_split|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128| |
| 96 | -|torch.tile|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128<br>若入参dims的长度小于input.shape的长度,则会在dims前自动补全1,使其长度与 input.shape对齐。补全后的dims,需要满足如下限制:<br>- 当需要对第一根轴进行重复时,最多允许同时对4个维度进行重复操作(即dims中大于1的元素个数 ≤ 4),例如:不支持torch.tile(input, [2, 3, 4, 5, 6]) ,支持torch.tile(input, [2, 3, 1, 5, 6])<br>- 当不需要对第一根轴进行重复时,最多允许同时对3个维度进行重复操作(即dims中大于1的元素个数 ≤ 3),例如:不支持torch.tile(input, [1, 3, 4, 5, 6]) ,支持torch.tile(input, [1, 3, 1, 5, 6])<br>- 若执行反向计算,输入Tensor的维度数与入参dims中大于1的元素个数之和不得超过8| | 96 | +|torch.tile|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128<br>若入参dims的长度小于input.shape的长度,则会在dims前自动补全1,使其长度与 input.shape对齐。补全后的dims,需要满足如下限制:<br>- 当需要对第一根轴进行重复时,最多允许同时对4个维度进行重复操作(即dims中大于1的元素个数 ≤ 4),例如:不支持torch.tile(input, [2, 3, 4, 5, 6]),支持torch.tile(input, [2, 3, 1, 5, 6])<br>- 当不需要对第一根轴进行重复时,最多允许同时对3个维度进行重复操作(即dims中大于1的元素个数 ≤ 3),例如:不支持torch.tile(input, [1, 3, 4, 5, 6]),支持torch.tile(input, [1, 3, 1, 5, 6])<br>- 若执行反向计算,输入Tensor的维度数与入参dims中大于1的元素个数之和不得超过8| |
| 97 | |torch.transpose|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128| | 97 | |torch.transpose|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128| |
| 98 | |torch.unsqueeze|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128| | 98 | |torch.unsqueeze|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128| |
| 99 | |torch.vsplit|是|支持bf16,fp16,fp32,uint8,int8,int16,int32,int64,bool,complex64,complex128| | 99 | |torch.vsplit|是|支持bf16,fp16,fp32,uint8,int8,int16,int32,int64,bool,complex64,complex128| |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.compiler | 1 | # torch.compiler |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | 6 | ||
| 6 | |API名称|是否支持|限制与说明| | 7 | |API名称|是否支持|限制与说明| |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.distributed.elastic | 1 | # torch.distributed.elastic |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | 6 | ||
| 6 | |API名称|是否支持|限制与说明| | 7 | |API名称|是否支持|限制与说明| |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.distributed.pipelining | 1 | # torch.distributed.pipelining |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | 6 | ||
| 6 | |API名称|是否支持|限制与说明| | 7 | |API名称|是否支持|限制与说明| |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.fft | 1 | # torch.fft |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | > | 6 | > |
| 6 | > 使用以下接口,需要配置以下信息: | 7 | > 使用以下接口,需要配置以下信息: |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.linalg | 1 | # torch.linalg |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | 6 | ||
| 6 | |API名称|是否支持|限制与说明| | 7 | |API名称|是否支持|限制与说明| |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.nn.functional | 1 | # torch.nn.functional |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | 6 | ||
| 6 | |API名称|是否支持|限制与说明| | 7 | |API名称|是否支持|限制与说明| |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.nn | 1 | # torch.nn |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | 6 | ||
| 6 | |API名称|是否支持|限制与说明| | 7 | |API名称|是否支持|限制与说明| |
| @@ -93,7 +93,7 @@ | |||
| 93 | |torch.take|是|支持fp16,fp32,int16,int32,int64,bool| | 93 | |torch.take|是|支持fp16,fp32,int16,int32,int64,bool| |
| 94 | |torch.take_along_dim|是|支持fp32| | 94 | |torch.take_along_dim|是|支持fp32| |
| 95 | |torch.tensor_split|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128| | 95 | |torch.tensor_split|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128| |
| 96 | -|torch.tile|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128<br>若入参dims的长度小于input.shape的长度,则会在dims前自动补全1,使其长度与 input.shape对齐。补全后的dims,需要满足如下限制:<br>- 当需要对第一根轴进行重复时,最多允许同时对4个维度进行重复操作(即dims中大于1的元素个数 ≤ 4),例如:不支持torch.tile(input, [2, 3, 4, 5, 6]) ,支持torch.tile(input, [2, 3, 1, 5, 6])<br>- 当不需要对第一根轴进行重复时,最多允许同时对3个维度进行重复操作(即dims中大于1的元素个数 ≤ 3),例如:不支持torch.tile(input, [1, 3, 4, 5, 6]) ,支持torch.tile(input, [1, 3, 1, 5, 6])<br>- 若执行反向计算,输入Tensor的维度数与入参dims中大于1的元素个数之和不得超过8| | 96 | +|torch.tile|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128<br>若入参dims的长度小于input.shape的长度,则会在dims前自动补全1,使其长度与 input.shape对齐。补全后的dims,需要满足如下限制:<br>- 当需要对第一根轴进行重复时,最多允许同时对4个维度进行重复操作(即dims中大于1的元素个数 ≤ 4),例如:不支持torch.tile(input, [2, 3, 4, 5, 6]),支持torch.tile(input, [2, 3, 1, 5, 6])<br>- 当不需要对第一根轴进行重复时,最多允许同时对3个维度进行重复操作(即dims中大于1的元素个数 ≤ 3),例如:不支持torch.tile(input, [1, 3, 4, 5, 6]),支持torch.tile(input, [1, 3, 1, 5, 6])<br>- 若执行反向计算,输入Tensor的维度数与入参dims中大于1的元素个数之和不得超过8| |
| 97 | |torch.transpose|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128| | 97 | |torch.transpose|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128| |
| 98 | |torch.unsqueeze|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128| | 98 | |torch.unsqueeze|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128| |
| 99 | |torch.vsplit|是|支持bf16,fp16,fp32,uint8,int8,int16,int32,int64,bool,complex64,complex128| | 99 | |torch.vsplit|是|支持bf16,fp16,fp32,uint8,int8,int16,int32,int64,bool,complex64,complex128| |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.compiler | 1 | # torch.compiler |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | 6 | ||
| 6 | |API名称|是否支持|限制与说明| | 7 | |API名称|是否支持|限制与说明| |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.distributed.elastic | 1 | # torch.distributed.elastic |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | 6 | ||
| 6 | |API名称|是否支持|限制与说明| | 7 | |API名称|是否支持|限制与说明| |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.distributed.pipelining | 1 | # torch.distributed.pipelining |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | 6 | ||
| 6 | |API名称|是否支持|限制与说明| | 7 | |API名称|是否支持|限制与说明| |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.fft | 1 | # torch.fft |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | > | 6 | > |
| 6 | > 使用以下接口,需要配置以下信息: | 7 | > 使用以下接口,需要配置以下信息: |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.linalg | 1 | # torch.linalg |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | 6 | ||
| 6 | |API名称|是否支持|限制与说明| | 7 | |API名称|是否支持|限制与说明| |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.nn.functional | 1 | # torch.nn.functional |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | 6 | ||
| 6 | |API名称|是否支持|限制与说明| | 7 | |API名称|是否支持|限制与说明| |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.nn | 1 | # torch.nn |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | 6 | ||
| 6 | |API名称|是否支持|限制与说明| | 7 | |API名称|是否支持|限制与说明| |
| @@ -93,7 +93,7 @@ | |||
| 93 | |torch.take|是|支持fp16,fp32,int16,int32,int64,bool| | 93 | |torch.take|是|支持fp16,fp32,int16,int32,int64,bool| |
| 94 | |torch.take_along_dim|是|支持fp32| | 94 | |torch.take_along_dim|是|支持fp32| |
| 95 | |torch.tensor_split|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128| | 95 | |torch.tensor_split|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128| |
| 96 | -|torch.tile|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128<br>若入参dims的长度小于input.shape的长度,则会在dims前自动补全1,使其长度与 input.shape对齐。补全后的dims,需要满足如下限制:<br>- 当需要对第一根轴进行重复时,最多允许同时对4个维度进行重复操作(即dims中大于1的元素个数 ≤ 4),例如:不支持torch.tile(input, [2, 3, 4, 5, 6]) ,支持torch.tile(input, [2, 3, 1, 5, 6])<br>- 当不需要对第一根轴进行重复时,最多允许同时对3个维度进行重复操作(即dims中大于1的元素个数 ≤ 3),例如:不支持torch.tile(input, [1, 3, 4, 5, 6]) ,支持torch.tile(input, [1, 3, 1, 5, 6])<br>- 若执行反向计算,输入Tensor的维度数与入参dims中大于1的元素个数之和不得超过8| | 96 | +|torch.tile|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128<br>若入参dims的长度小于input.shape的长度,则会在dims前自动补全1,使其长度与 input.shape对齐。补全后的dims,需要满足如下限制:<br>- 当需要对第一根轴进行重复时,最多允许同时对4个维度进行重复操作(即dims中大于1的元素个数 ≤ 4),例如:不支持torch.tile(input, [2, 3, 4, 5, 6]),支持torch.tile(input, [2, 3, 1, 5, 6])<br>- 当不需要对第一根轴进行重复时,最多允许同时对3个维度进行重复操作(即dims中大于1的元素个数 ≤ 3),例如:不支持torch.tile(input, [1, 3, 4, 5, 6]),支持torch.tile(input, [1, 3, 1, 5, 6])<br>- 若执行反向计算,输入Tensor的维度数与入参dims中大于1的元素个数之和不得超过8| |
| 97 | |torch.transpose|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128| | 97 | |torch.transpose|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128| |
| 98 | |torch.unsqueeze|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128| | 98 | |torch.unsqueeze|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128| |
| 99 | |torch.vsplit|是|支持bf16,fp16,fp32,uint8,int8,int16,int32,int64,bool,complex64,complex128| | 99 | |torch.vsplit|是|支持bf16,fp16,fp32,uint8,int8,int16,int32,int64,bool,complex64,complex128| |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.compiler | 1 | # torch.compiler |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | 6 | ||
| 6 | |API名称|是否支持|限制与说明| | 7 | |API名称|是否支持|限制与说明| |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.distributed.elastic | 1 | # torch.distributed.elastic |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | 6 | ||
| 6 | |API名称|是否支持|限制与说明| | 7 | |API名称|是否支持|限制与说明| |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.distributed.pipelining | 1 | # torch.distributed.pipelining |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | 6 | ||
| 6 | |API名称|是否支持|限制与说明| | 7 | |API名称|是否支持|限制与说明| |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.fft | 1 | # torch.fft |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | > | 6 | > |
| 6 | > 使用以下接口,需要配置以下信息: | 7 | > 使用以下接口,需要配置以下信息: |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.linalg | 1 | # torch.linalg |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | 6 | ||
| 6 | |API名称|是否支持|限制与说明| | 7 | |API名称|是否支持|限制与说明| |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.nn.functional | 1 | # torch.nn.functional |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | 6 | ||
| 6 | |API名称|是否支持|限制与说明| | 7 | |API名称|是否支持|限制与说明| |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.nn | 1 | # torch.nn |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | 6 | ||
| 6 | |API名称|是否支持|限制与说明| | 7 | |API名称|是否支持|限制与说明| |
| @@ -94,7 +94,7 @@ | |||
| 94 | |torch.take|是|支持fp16,fp32,int16,int32,int64,bool| | 94 | |torch.take|是|支持fp16,fp32,int16,int32,int64,bool| |
| 95 | |torch.take_along_dim|是|支持fp32| | 95 | |torch.take_along_dim|是|支持fp32| |
| 96 | |torch.tensor_split|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128| | 96 | |torch.tensor_split|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128| |
| 97 | -|torch.tile|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128<br>若入参dims的长度小于input.shape的长度,则会在dims前自动补全1,使其长度与 input.shape对齐。补全后的dims,需要满足如下限制:<br>- 当需要对第一根轴进行重复时,最多允许同时对4个维度进行重复操作(即dims中大于1的元素个数 ≤ 4),例如:不支持torch.tile(input, [2, 3, 4, 5, 6]) ,支持torch.tile(input, [2, 3, 1, 5, 6])<br>- 当不需要对第一根轴进行重复时,最多允许同时对3个维度进行重复操作(即dims中大于1的元素个数 ≤ 3),例如:不支持torch.tile(input, [1, 3, 4, 5, 6]) ,支持torch.tile(input, [1, 3, 1, 5, 6])<br>- 若执行反向计算,输入Tensor的维度数与入参dims中大于1的元素个数之和不得超过8| | 97 | +|torch.tile|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128<br>若入参dims的长度小于input.shape的长度,则会在dims前自动补全1,使其长度与 input.shape对齐。补全后的dims,需要满足如下限制:<br>- 当需要对第一根轴进行重复时,最多允许同时对4个维度进行重复操作(即dims中大于1的元素个数 ≤ 4),例如:不支持torch.tile(input, [2, 3, 4, 5, 6]),支持torch.tile(input, [2, 3, 1, 5, 6])<br>- 当不需要对第一根轴进行重复时,最多允许同时对3个维度进行重复操作(即dims中大于1的元素个数 ≤ 3),例如:不支持torch.tile(input, [1, 3, 4, 5, 6]),支持torch.tile(input, [1, 3, 1, 5, 6])<br>- 若执行反向计算,输入Tensor的维度数与入参dims中大于1的元素个数之和不得超过8| |
| 98 | |torch.transpose|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128| | 98 | |torch.transpose|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128| |
| 99 | |torch.unsqueeze|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128| | 99 | |torch.unsqueeze|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128| |
| 100 | |torch.vsplit|是|支持bf16,fp16,fp32,uint8,int8,int16,int32,int64,bool,complex64,complex128| | 100 | |torch.vsplit|是|支持bf16,fp16,fp32,uint8,int8,int16,int32,int64,bool,complex64,complex128| |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.compiler | 1 | # torch.compiler |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | 6 | ||
| 6 | |API名称|是否支持|限制与说明| | 7 | |API名称|是否支持|限制与说明| |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.distributed.pipelining | 1 | # torch.distributed.pipelining |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | 6 | ||
| 6 | |API名称|是否支持|限制与说明| | 7 | |API名称|是否支持|限制与说明| |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.fft | 1 | # torch.fft |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | > | 6 | > |
| 6 | > 使用以下接口,需要配置以下信息: | 7 | > 使用以下接口,需要配置以下信息: |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.linalg | 1 | # torch.linalg |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | 6 | ||
| 6 | |API名称|是否支持|限制与说明| | 7 | |API名称|是否支持|限制与说明| |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.nn.functional | 1 | # torch.nn.functional |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | 6 | ||
| 6 | |API名称|是否支持|限制与说明| | 7 | |API名称|是否支持|限制与说明| |
| @@ -1,6 +1,7 @@ | |||
| 1 | # torch.nn | 1 | # torch.nn |
| 2 | 2 | ||
| 3 | -> [!NOTE] | 3 | +> [!NOTE] |
| 4 | +> | ||
| 4 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 | 5 | > 若API“是否支持”为“是”,“限制与说明”为“-”,说明此API和原生API支持度保持一致。 |
| 5 | 6 | ||
| 6 | |API名称|是否支持|限制与说明| | 7 | |API名称|是否支持|限制与说明| |
| @@ -93,7 +93,7 @@ | |||
| 93 | |torch.take|是|支持fp16,fp32,int16,int32,int64,bool| | 93 | |torch.take|是|支持fp16,fp32,int16,int32,int64,bool| |
| 94 | |torch.take_along_dim|是|支持fp32| | 94 | |torch.take_along_dim|是|支持fp32| |
| 95 | |torch.tensor_split|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128| | 95 | |torch.tensor_split|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128| |
| 96 | -|torch.tile|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128<br>若入参dims的长度小于input.shape的长度,则会在dims前自动补全1,使其长度与 input.shape对齐。补全后的dims,需要满足如下限制:<br>- 当需要对第一根轴进行重复时,最多允许同时对4个维度进行重复操作(即dims中大于1的元素个数 ≤ 4),例如:不支持torch.tile(input, [2, 3, 4, 5, 6]) ,支持torch.tile(input, [2, 3, 1, 5, 6])<br>- 当不需要对第一根轴进行重复时,最多允许同时对3个维度进行重复操作(即dims中大于1的元素个数 ≤ 3),例如:不支持torch.tile(input, [1, 3, 4, 5, 6]) ,支持torch.tile(input, [1, 3, 1, 5, 6])<br>- 若执行反向计算,输入Tensor的维度数与入参dims中大于1的元素个数之和不得超过8| | 96 | +|torch.tile|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128<br>若入参dims的长度小于input.shape的长度,则会在dims前自动补全1,使其长度与 input.shape对齐。补全后的dims,需要满足如下限制:<br>- 当需要对第一根轴进行重复时,最多允许同时对4个维度进行重复操作(即dims中大于1的元素个数 ≤ 4),例如:不支持torch.tile(input, [2, 3, 4, 5, 6]),支持torch.tile(input, [2, 3, 1, 5, 6])<br>- 当不需要对第一根轴进行重复时,最多允许同时对3个维度进行重复操作(即dims中大于1的元素个数 ≤ 3),例如:不支持torch.tile(input, [1, 3, 4, 5, 6]),支持torch.tile(input, [1, 3, 1, 5, 6])<br>- 若执行反向计算,输入Tensor的维度数与入参dims中大于1的元素个数之和不得超过8| |
| 97 | |torch.transpose|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128| | 97 | |torch.transpose|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128| |
| 98 | |torch.unsqueeze|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128| | 98 | |torch.unsqueeze|是|支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128| |
| 99 | |torch.vsplit|是|支持bf16,fp16,fp32,uint8,int8,int16,int32,int64,bool,complex64,complex128| | 99 | |torch.vsplit|是|支持bf16,fp16,fp32,uint8,int8,int16,int32,int64,bool,complex64,complex128| |
| @@ -34,7 +34,7 @@ | |||
| 34 | 34 | ||
| 35 | ### 相关产品版本配套说明 | 35 | ### 相关产品版本配套说明 |
| 36 | 36 | ||
| 37 | -TorchNPU代码分支名称采用 **\{PyTorch版本\}-\{昇腾版本\}** 的命名规则,前者为TorchNPU匹配的PyTorch版本,后者为TorchNPU版本,详细匹配如下表: | 37 | +TorchNPU代码分支名称采用 **\{PyTorch版本\}-\{TorchNPU版本\}** 的命名规则,前者为TorchNPU匹配的PyTorch版本,详细匹配如下表: |
| 38 | 38 | ||
| 39 | |TorchNPU代码分支名称|PyTorch版本|TorchNPU版本|TorchNPU安装包版本|CANN版本|Python版本| | 39 | |TorchNPU代码分支名称|PyTorch版本|TorchNPU版本|TorchNPU安装包版本|CANN版本|Python版本| |
| 40 | |--|--|--|--|--|--| | 40 | |--|--|--|--|--|--| |
| @@ -149,7 +149,7 @@ TorchNPU代码分支名称采用 **\{PyTorch版本\}-\{昇腾版本\}** 的命 | |||
| 149 | - 废弃:表示该接口自作出废弃声明的版本起停止演进,且在声明一年后可能被移除。 | 149 | - 废弃:表示该接口自作出废弃声明的版本起停止演进,且在声明一年后可能被移除。 |
| 150 | - 删除:表示该接口在此次版本被移除。 | 150 | - 删除:表示该接口在此次版本被移除。 |
| 151 | 151 | ||
| 152 | -**表 1** Ascend Extension for PyTorch接口变更汇总 | 152 | +**表 1** TorchNPU接口变更汇总 |
| 153 | 153 | ||
| 154 | <table> | 154 | <table> |
| 155 | <thead align="left"> | 155 | <thead align="left"> |
| @@ -21,7 +21,7 @@ npu_backend = torchair.get_npu_backend(compiler_config=config) | |||
| 21 | compiled_model = torch.compile(model, backend=npu_backend) | 21 | compiled_model = torch.compile(model, backend=npu_backend) |
| 22 | ``` | 22 | ``` |
| 23 | 23 | ||
| 24 | -TorchAir-GE后端支持的编译选项(`compiler_config`参数)和详细使用指导请参考《PyTorch图模式使用(TorchAir)》中的 [GE图模式](https://gitcode.com/Ascend/torchair/blob/26.1.0/docs/zh/ascend_ir/quick_start.md)。 | 24 | +TorchAir-GE后端支持的编译选项(`compiler_config`参数)和详细使用指导请参考《TorchAir》中的 [GE图模式](https://gitcode.com/Ascend/torchair/blob/26.1.0/docs/zh/ascend_ir/quick_start.md)。 |
| 25 | 25 | ||
| 26 | ## 调用样例 | 26 | ## 调用样例 |
| 27 | 27 | ||