手把手教你在昇腾平台上搭建PyTorch训练环境
摘要:在昇腾平台上运行PyTorch业务时,需要搭建异构计算架构CANN软件开发环境,并安装PyTorch 框架,从而实现训练脚本的迁移、开发和调试。
本文分享自华为云社区《手把手教你在昇腾平台上搭建PyTorch训练环境》,作者:昇腾CANN。
PyTorch是业界流行的深度学习框架,用于开发深度学习训练脚本,默认运行在CPU/GPU上。在昇腾AI处理器上运行PyTorch业务时,需要搭建异构计算架构CANN(Compute Architecture for Neural Networks)软件开发环境,并安装PyTorch 框架,从而实现训练脚本的迁移、开发和调试。

下面带大家了解如何在昇腾平台上快速安装驱动固件、CANN软件及PyTorch框架。
环境检查
在昇腾平台上安装驱动和固件前,首先需要检查安装环境的NPU是否正常在位,并确认操作系统版本与内核版本是否满足对应的版本配套要求。
以Atlas 800 训练服务器(型号:9010)(昇腾AI处理器型号Ascend 910)为例,检查NPU是否正常在位可执行lspci | grep d801命令,如果服务器上有 N路NPU,回显N行含“d801”字段,则表示NPU正常在位。
安装驱动和固件
1.创建驱动运行用户HwHiAiUser。
groupadd -g 1000 HwHiAiUser
useradd -g HwHiAiUser -u 1000 -d /home/HwHiAiUser -m HwHiAiUser -s /bin/bash
2.安装驱动和固件。
在昇腾社区的“固件与驱动”下载页面下载配套产品的固件驱动软件,并上传到服务器任意目录,然后参考如下命令进行固件驱动软件包的安装,需要注意,需要以root用户进行安装。
a.为软件包增加可执行权限。
chmod +x Ascend-hdk-910-npu-driver_23.0.rc1_linux-x86-64.run
chmod +x Ascend-hdk-910-npu-firmware_6.3.0.1.241.run
b.安装驱动。
./Ascend-hdk-910-npu-driver_23.0.rc1_linux-x86-64.run --full --install-for-all
默认安装路径为“/usr/local/Ascend”,出现类似如下回显信息,说明安装成功。
Driver package installed successfully!复制
您还可以通过执行npu-smi info命令查看,出现类似如下信息,说明驱动加载成功。

c.安装固件。
./Ascend-hdk-910-npu-firmware_6.3.0.1.241.run --full
出现类型如下回显信息,说明安装成功。
Firmware package installed successfully! Reboot now or after driver installation for the installation/upgrade to take effect
3.驱动固件安装完成后,重启系统。
reboot
安装CANN软件依赖
CANN软件安装过程需要下载相关依赖,请确保安装环境能够连接网络,并已配置软件源,以下步骤以root用户操作为例。
1. 安装第三方依赖
Ubuntu系统(Debian、UOS20、Linux等系统操作一致):
apt-get install -y gcc g++ make cmake zlib1g zlib1g-dev openssl libsqlite3-dev libssl-dev libffi-dev unzip pciutils net-tools libblas-dev gfortran libblas3
openEuler系统(EulerOS、CentOS、BCLinux等系统操作一致):
yum install -y gcc gcc-c++ make cmake unzip zlib-devel libffi-devel openssl-devel pciutils net-tools sqlite-devel lapack-devel gcc-gfortran
2. 安装Python及其依赖
以安装Python 3.7.5为例。
1)通过wget命令下载python3.7.5源码包。
wget https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tgz
2)解压缩源码包
tar -zxvf Python-3.7.5.tgz
3)源码编译安装Python。
cd Python-3.7.5
./configure --prefix=/usr/local/python3.7.5 --enable-loadable-sqlite-extensions --enable-shared
make
make install
以--prefix=/usr/local/python3.7.5路径为例进行说明。执行配置、编译和安装命令后,安装包在/usr/local/python3.7.5路径。
4)设置python3.7.5环境变量。
#用于设置python3.7.5库文件路径
export LD_LIBRARY_PATH=/usr/local/python3.7.5/lib:$LD_LIBRARY_PATH
#如果用户环境存在多个python3版本,则指定使用python3.7.5版本
export PATH=/usr/local/python3.7.5/bin:$PATH
5)检查是否安装成功。
python3 --version
pip3 --version
返回相关版本信息,则说明安装成功。
6)安装pip依赖。
pip3 install attrs numpy decorator sympy cffi pyyaml pathlib2 psutil protobuf scipy requests absl-py
安装CANN开发套件包
1. 从昇腾社区“CANN”产品页,根据操作系统架构下载CANN开发套件包。
例如“Ascend-cann-toolkit_6.3.RC1_linux-x86_64.run”,并将其上传到安装环境任意目录。
2. 安装CANN开发套件包。
# 添加可执行权限
chmod +x Ascend-cann-toolkit_6.3.RC1_linux-x86_64.run
# 校验软件包的一致性和完整性
./Ascend-cann-toolkit_6.3.RC1_linux-x86_64.run --check
# 执行安装命令
./Ascend-cann-toolkit_6.3.RC1_linux-x86_64.run --install --install-for-all
安装完成后,若显示如下信息,则说明软件安装成功:
[INFO] xxx install success
xxx表示安装的实际软件包名。
安装PyTorch
CANN软件包安装完成后,就可以进行PyTorch的安装了。开发者可以选择PyTorch 1.8.1或PyTorch 1.11.0版本,PyTorch安装成功后再安装APEX混合精度模块。在安装Pytorch前,需要先安装以下依赖。
pip3 install wheel
pip3 install typing_extensions
安装PyTorch 1.8.1
1)安装官方torch包。
x86_64架构
wget https://download.pytorch.org/whl/cpu/torch-1.8.1%2Bcpu-cp37-cp37m-linux_x86_64.whl
pip3 install torch-1.8.1+cpu-cp37-cp37m-linux_x86_64.whl
aarch64架构
wget https://repo.huaweicloud.com/kunpeng/archive/Ascend/PyTorch/torch-1.8.1-cp37-cp37m-linux_aarch64.whl
pip3 install torch-1.8.1-cp37-cp37m-linux_aarch64.whl
2)安装昇腾提供的PyTorch适配插件torch_npu。
x86_64架构
wget https://gitee.com/ascend/pytorch/releases/download/v5.0.rc1-pytorch1.8.1/torch_npu-1.8.1.post1-cp37-cp37m-linux_ x86_64.whl
pip3 install torch_npu-1.8.1.post1-cp37-cp37m-linux_ x86_64.whl
aarch64架构
wget https://gitee.com/ascend/pytorch/releases/download/v5.0.rc1-pytorch1.8.1/torch_npu-1.8.1.post1-cp37-cp37m-linux_aarch64.whl
pip3 install torch_npu-1.8.1.post1-cp37-cp37m-linux_aarch64.whl
此处以5.0.rc1版本为例,实际请选择CANN配套的PyTorch插件版本进行安装。
3)安装对应框架版本的torchvision。
pip3 install torchvision==0.9.1
4)验证是否安装成功。
python -c "import torch;import torch_npu; a = torch.ones(3, 4).npu(); print(a + a);"
如果输出包含如下关键信息则说明PyTorch安装成功。
[[2., 2., 2., 2.],
[2., 2., 2., 2.],
[2., 2., 2., 2.]]
安装PyTorch 1.11.0
1)安装官方torch包。
x86_64架构
wget https://download.pytorch.org/whl/cpu/torch-1.11.0%2Bcpu-cp37-cp37m-linux_x86_64.whl
pip3 install torch-1.11.0+cpu-cp37-cp37m-linux_x86_64.whl
aarch64架构
wget https://repo.huaweicloud.com/kunpeng/archive/Ascend/PyTorch/torch-1.11.0-cp37-cp37m-linux_aarch64.whl
pip3 install torch-1.11.0-cp37-cp37m-linux_aarch64.whl
2)安装昇腾提供的PyTorch适配插件torch_npu。
x86_64架构
wget https://gitee.com/ascend/pytorch/releases/download/v5.0.rc1-pytorch1.11.0/torch_npu-1.11.0-cp37-cp37m-linux_ x86_64.whl
pip3 install torch_npu-1.11.0-cp37-cp37m-linux_ x86_64.whl
aarch64架构
wget https://gitee.com/ascend/pytorch/releases/download/v5.0.rc1-pytorch1.11.0/torch_npu-1.11.0-cp37-cp37m-linux_aarch64.whl
pip3 install torch_npu-1.11.0-cp37-cp37m-linux_aarch64.whl
3)安装对应框架版本的torchvision。
pip3 install torchvision==0.12.0
4)验证PyTorch是否安装成功。
python -c "import torch;import torch_npu; a = torch.ones(3, 4).npu(); print(a + a);"
如果输出包含如下关键信息则说明PyTorch安装成功。
[[2., 2., 2., 2.],
[2., 2., 2., 2.],
[2., 2., 2., 2.]]
安装APEX混合精度模块
APEX混合精度模块是一个集优化性能、精度收敛于一身的综合优化库,可以提供不同场景下的混合精度训练支持。
1. 获取昇腾适配的APEX源码以及原生APEX代码。
# 获取昇腾适配的APEX源码
git clone -b master https://gitee.com/ascend/apex.git
# 在apex目录下获取原生APEX代码
cd apex
git clone https://github.com/NVIDIA/apex.git
2. 切换到原生APEX代码对应分支。
cd apex
git checkout 4ef930c1c884fdca5f472ab2ce7cb9b505d26c1a
cd ..
3. 在昇腾适配APEX源码目录的scripts路径下生成昇腾适配全量代码。
cd scripts
bash gen.sh
4. 编译生成昇腾适配的APEX二进制安装包。
cd ../apex
python3 setup.py --cpp_ext --npu_float_status bdist_wheel
5. 安装APEX。
86_64架构
cd dist
pip3 install apex-0.1_ascend-cp37-cp37m-linux_ x86_64.whl
aarch64架构
cd dist
pip3 install apex-0.1_ascend-cp37-cp37m-linux_aarch64.whl
到此,PyTorch训练环境就搭建完毕了,开发者可以将PyTorch网络脚本迁移到昇腾平台执行训练,使用昇腾平台的强大算力。
关于更多文档介绍,可以在昇腾文档中心[1]查看,您也可在“昇腾社区在线课程[2]”板块学习视频课程,学习过程中的任何疑问,都可以在“昇腾论坛[3]”互动交流!
相关参考
[1]昇腾文档中心
[2]昇腾社区在线课程
[3]昇腾论坛
手把手教你在昇腾平台上搭建PyTorch训练环境的更多相关文章
- 基于eclipse-java的平台上搭建安卓开发环境
首先感谢好人的分享!http://www.mamicode.com/info-detail-516839.html 系统:windows 7 若想直接安装eclipse—android的,请启动如下传 ...
- 手把手教你制作AppPreview视频并上传到appStore进行审核
手把手教你制作AppPreview视频并上传到appStore进行审核 注意,你需要使用iMovie才能够制作AppPreview视频文件,用QuickTime录制的无效! 最终效果 1. 新建一个事 ...
- [Linux] Ubuntu Server 12.04 LTS 平台上搭建WordPress(Nginx+MySql+PHP) Part II
接着上一节继续搭建我们的LNMP平台,接下来我们安装PHP相关的服务 sudo apt-get install php5-cli php5-cgi php5-fpm php5-mcrypt php5- ...
- [Linux] Ubuntu Server 12.04 LTS 平台上搭建WordPress(Nginx+MySQL+PHP) Part IV
接下来我们去下载 WorePress 用最新的 3.7.1 下载地址是:http://cn.wordpress.org/wordpress-3.7.1-zh_CN.zip 我们先建立一个文件夹 /va ...
- 龙芯GO!龙芯平台上构建Go语言环境指南
龙芯软件生态系列——龙芯GO!龙芯平台上构建Go语言环境指南2016-07-05 龙芯中科1初识Go语言Go语言是Google公司于2009年正式推出的一款开源的编程语言,是由Robert Gries ...
- 【转】在NetBeans上搭建Android SDK环境
本文将介绍在NetBeans 6.8上搭建Android SDK环境,目前Android在Netbeans上进行开发需要借助nbandroid的平台插件. 我们刚刚介绍过<MyEclipse上搭 ...
- 在WP8上搭建cocos2d-x开发环境
在WP8上搭建cocos2d-x开发环境 转自:https://github.com/koowolf/cocos-docs/blob/master/manual/framework/native/in ...
- 如何在Windows上搭建Android开发环境
Android开发越来越火,许多小伙伴们纷纷学习Android开发,学习Android开发首要任务是搭建Android开发环境,由于大家 主要实在Windows 上开发Android,下面就详细给大家 ...
- 使用XAMPP和DVWA在Windows7上搭建渗透测试环境
前言: XAMPP是一个Web应用程序运行环境集成软件包,包括MySQL.PHP.PerI和Apache的环境及Apache.MySQL.FilleZilla.Mercury和Tomecat等组件.D ...
- 使用WampServer和DVWA在Windows10上搭建渗透测试环境
前言: DVWA是一个具有脆弱性的Web测试应用,需要PHP和MySQL的环境支持.我们可以手动配置DVWA所需的运行环境,也可以使用WampServer进行搭建.WampServer是集成了Apac ...
随机推荐
- PHP -pop魔术方法
PHP魔术方法: PHP提供了一系列的魔术方法,这些魔术方法为编程提供了很多便利,在 PHP 中的作用是非常重要的.PHP 中的魔术方法通常以__(两个下划线)开始,可以在要使用时灵活调用. 例题 [ ...
- k8s部署xxl-job-admin
概述 XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源代码并接入多家公司线上产品线,开箱即用. 下载好要用到的镜像 docker pull ...
- Html5学习内容-4
(一)display与visibility 这里主要控制元素是否显示 例子 visibility:文字消失空间保留 <!DOCTYPE html> <html lang=" ...
- 【实践篇】一次Paas化热部署实践分享
前言 本文是早些年,Paas化刚刚提出不久时,基于部门内第一次Paas化热部署落地经验所写,主要内容是如何构建一些热部署代码以及一些避雷经验. 一.设计-领域模型设计 1.首先,确定领域服务所属的领域 ...
- deepin解决文件管理器打不开和桌面黑屏的问题
总结 deepin 的优点是上手非常容易, 但截止当前(2021-6-24)的使用来说稳定性还不是非常好. 今天就遇到了无法显示桌面的问题,可以参照如下解决办法.只需使用红色框中的命令即可. 图片转载 ...
- git 忽略已提交(commit)的文件/文件夹
git 忽略已提交的文件或文件夹 最好是在工程一开始就编辑好 .gitignore 文件, 在第一次提交的时候仔细检查避免添加那些无用的文件 因为 .gitignore 只能对未提交过的文件起效, 也 ...
- rust程序设计(3)结构体相关概念和疑问
结构体 // 如何定义结构体 struct User { active: bool, username: String, email: String, sign_in_count: u64, } // ...
- 如何实现一套简单的oauth2授权码类型认证,一些思路,供参考
背景 组内人不少,今年陆陆续续研发了不少系统,一般都会包括一个后台管理系统,现在问题是,每个管理系统都有RBAC那一套用户权限体系,实在是有点浪费人力,于是今年我们搞了个统一管理各个应用系统的RBAC ...
- 神经网络入门篇:详解随机初始化(Random+Initialization)
当训练神经网络时,权重随机初始化是很重要的.对于逻辑回归,把权重初始化为0当然也是可以的.但是对于一个神经网络,如果把权重或者参数都初始化为0,那么梯度下降将不会起作用. 来看看这是为什么. 有两个输 ...
- 【UniApp】-uni-app-扩展组件
前言 好,经过上个章节的介绍完毕之后,了解了一下 uni-app-内置组件 那么了解完了uni-app-内置组件之后,这篇文章来给大家介绍一下 UniApp 中的扩展组件 首先不管三七二十一,先来新建 ...