更多安装内容查看官方教程:https://support.huawei.com/enterprise/zh/doc/EDOC1100349380/523e3943#ZH-CN_TOPIC_0000001750824325
官方torch_npu下载地址和相关文档:https://www.hiascend.com/document/detail/zh/Pytorch/60RC1/configandinstg/instg/insg_0007.html
说明
anaconda版本号:conda 25.11.0
python 版本号:3.10
服务器:华为昇腾
操作系统:ubuntu
创建虚拟环境
创建名称为pyTorch的虚拟环境
shell
conda create -n pyTorch_py310 python==3.10 -y
进入环境
shell
conda activate pyTorch_py310
安装pyTorch 环境依赖
shell
pip install attrs cython numpy==1.24.0 decorator sympy cffi pyyaml pathlib2 psutil protobuf==3.20 scipy requests absl-py --user -i https://repo.huaweicloud.com/repository/pypi/simple/
安装pyTorch 2.2.0
shell
pip install torch==2.2.0 torchvision==0.17.0 torchaudio==2.2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
验证安装结果
执行以下命令
shell
python -c "import torch;print(f'PyTorch版本:{torch.__version__}')"
输出版本号则说明成功,如下:
shell
(yolo11_py310) yolo@ubuntu2503:~$ python -c "import torch;print(f'PyTorch版本:{torch.__version__}')"
PyTorch版本:2.2.0
安装CANN
注意:
- 下面安装的toolkit、kernels、nnal必须将安装路径指定在同一个路径下
- 安装路径必须时不存在的路径,安装时候会自己创建
- 路径只能使用绝对路径
例如我安装的路径在:/home/yolo/anaconda/CANN/install/ 目录下
安装toolkit
shell
# 下载安装包
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/CANN/CANN 8.2.RC1/Ascend-cann-toolkit_8.2.RC1_linux-aarch64.run
# 使用安装包安装
./Ascend-cann-toolkit_8.2.RC1_linux-aarch64.run --install --install-path=安装路径
安装kernels
shell
# 下载安装包
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C25B800TP028/Ascend-cann-kernels-310p_8.5.0.alpha002_linux-aarch64.run?response-content-type=application/octet-stream
# 使用安装包安装
./Ascend-cann-kernels-310p_8.5.0.alpha002_linux-aarch64.run --install --install-path=安装路径
安装nnal
shell
# 下载安装包
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/Milan-ASL%20V100R001C25B800TP028/Ascend-cann-nnal_8.5.0.alpha002_linux-aarch64.run?response-content-type=application/octet-stream
# 使用安装包安装
./Ascend-cann-nnal_8.5.0.alpha002_linux-aarch64.run --install --install-path=安装路径
加载环境变量
shell
# find 安装路径 -name "set_env.sh"
find /home/yolo/anaconda -name "set_env.sh"
结果如下:
shell
(yolo11_py310) yolo@ubuntu2503:~/anaconda$ find /home/yolo/anaconda -name "set_env.sh"
/home/yolo/anaconda/CANN/install/ascend-toolkit/set_env.sh
/home/yolo/anaconda/CANN/install/ascend-toolkit/8.2.RC1/bisheng_toolkit/set_env.sh
/home/yolo/anaconda/CANN/install/ascend-toolkit/8.2.RC1/aarch64-linux/script/set_env.sh
/home/yolo/anaconda/CANN/install/nnal/asdsip/set_env.sh
/home/yolo/anaconda/CANN/install/nnal/atb/8.5.0.alpha002/atb/set_env.sh
/home/yolo/anaconda/CANN/install/nnal/atb/set_env.sh
临时加载
注意:ascend-toolkit的环境变量 和 nnal的环境变量只能二选一。我这里使用的是ascend-toolkit的环境变量。未测试过加载nnal的环境变量。
加载ascend-toolkit的环境变量
临时加载只会在当前终端窗口中生效。加载ascend-toolkit的环境变量
shell
source /home/yolo/anaconda/CANN/install/ascend-toolkit/set_env.sh
加载nnal的环境变量
若使用nnal加速包环境则加载 /nnal/atb/set_env.sh 的环境变量
shell
source /home/yolo/anaconda/CANN/install/nnal/atb/set_env.sh
验证
加载ascend-toolkit的环境变量 后,使用以下命令验证是否加载成功
shell
echo $ASCEND_TOOLKIT_HOME
输出结果如下,说明加载成功:
shell
(yolo11_py310) yolo@ubuntu2503:~/anaconda$ echo $ASCEND_TOOLKIT_HOME
/home/yolo/anaconda/CANN/install/ascend-toolkit/latest
永久加载配置
在当前用户的环境变量文件末尾添加以下内容
shell
# 在文件末尾添加以下内容(替换为你的set_env.sh路径):
# 加载昇腾CANN环境
source /home/yolo/anaconda/CANN/install/nnal/atb/set_env.sh
# 强制指定HCCL库路径
export LD_LIBRARY_PATH=$ASCEND_TOOLKIT_HOME/lib64:$ASCEND_TOOLKIT_HOME/../driver/lib64:$LD_LIBRARY_PATH
# 解决PTA资源缺失
export ASCEND_PTA_CONFIG_PATH=$ASCEND_TOOLKIT_HOME/pta/config
安装 torch_npu
torch_npu 的版本要与安装的pytorch对应。
shell
# 下载 torch_npu 安装包
wget https://gitee.com/ascend/pytorch/releases/download/v6.0.rc1-pytorch2.2.0/torch_npu-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
# 使用安装包安装
pip install torch_npu-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
验证安装结果
使用命令验证安装结果
shell
python -c "import torch;import torch_npu;print(f'torch_npu版本:{torch_npu.__version__}');print(f'NPU是否可用:{torch.npu.is_available()}');print(f'NPU设备数:{torch.npu.device_count()}');x = torch.tensor([1,2,3]).npu();print('NPU张量:', x);"
结果输出如下,说明成功
shell
(yolo11_py310) yolo@ubuntu2503:~$ python -c "import torch;import torch_npu;print(f'torch_npu版本:{torch_npu.__version__}');print(f'NPU是否可用:{torch.npu.is_available()}');print(f'NPU设备数:{torch.npu.device_count()}');x = torch.tensor([1,2,3]).npu();print('NPU张量:', x);"
# 用户警告。pkg_resources 作为 API 已被废弃。计划最早于 2025 年 11 月 30 日被移除。固定 Setuptools 版本至 81 以下。
#非致命错误,不影响程序运行,但需关注兼容性。pkg_resources 是 setuptools 库下的旧版 API,官方已标记为弃用。该 API 在 2025 年 11 月后会从 setuptools 中彻底删除,届时使用该 API 的代码会报错。 setuptools 81.x 及以上版本会逐步移除 pkg_resources,需锁定低版本规避问题。
#该警告由torch_npu内部调用了弃用的pkg_resources API 导致,不影响 NPU 功能正常使用;若暂时不想修改版本,可忽略此警告,待torch_npu官方更新修复即可。
/home/yolo/anaconda/install/envs/yolo11_py310/lib/python3.10/site-packages/torch_npu/dynamo/torchair/__init__.py:3: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.
import pkg_resources
# 实际结果
torch_npu版本:2.2.0
NPU是否可用:True
NPU设备数:2
NPU张量: tensor([1, 2, 3], device='npu:0')
降级setuptools版本
先使用命令卸载原来的setuptools
shell
pip uninstall setuptools -y
安装新版本
shell
pip install setuptools==80.0.0
重新执行命令,验证安装结果,此时不会提示警告。
shell
python -c "import torch;import torch_npu;print(f'torch_npu版本:{torch_npu.__version__}');print(f'NPU是否可用:{torch.npu.is_available()}');print(f'NPU设备数:{torch.npu.device_count()}');x = torch.tensor([1,2,3]).npu();print('NPU张量:', x);"
输出结果为
shell
(yolo11_py310) yolo@ubuntu2503:~$ python -c "import torch;import torch_npu;print(f'torch_npu版本:{torch_npu.__version__}');print(f'NPU是否可用:{torch.npu.is_available()}');print(f'NPU设备数:{torch.npu.device_count()}');x = torch.tensor([1,2,3]).npu();print('NPU张量:', x);"
torch_npu版本:2.2.0
NPU是否可用:True
NPU设备数:2
NPU张量: tensor([1, 2, 3], device='npu:0')
更新其他包为对应版本
shell
pip install opencv-python==4.8.0.74 --force-reinstall -i https://repo.huaweicloud.com/repository/pypi/simple/
pip install numpy==1.26.4 --force-reinstall -i https://repo.huaweicloud.com/repository/pypi/simple/