手把手教你在昇腾平台上搭建PyTorch训练环境

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]昇腾论坛

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/23068.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【指针的深刻理解】

如何看待下面代码中的a变量? #include<stdio.h> int main() {int a 0;//同样的一个a&#xff0c;在不同的表达式中&#xff0c;名称是一样的&#xff0c;但是含义是完全不同的&#xff01;a 10;//使用的是a的空间&#xff1a;左值int b a; //使用的是a的内容&#x…

PLC/DCS系统中电磁干扰的来源及解决办法

自动化系统中所使用的各种类型DCS/PLC等自动化设备&#xff0c;有的是集中安装在控制室&#xff0c;有的是安装在生产现场和各种电机设备上&#xff0c;它们大多处在强电电路和强电设备所形成的恶劣电磁环境中。要提高这类控制系统可靠性&#xff0c;必须消除各种干扰才能有效保…

Fourier分析入门——第6章——连续函数的Fourier分析

目录 第 6 章 连续函数的Fourier分析 6.1 引言 6.2 Fourier模型 6.3 求取Fourier系数的实用方法 6.4 相关定理 6.4.1 线性定理(linearity) 6.4.2 平移定理(Shift theorem) 6.4.3 伸缩定理(Scaling theorem) 6.4.4 微分定理(Differentiation theorem) 6.4.5 积分定理…

Spring源码阅读:Spring事务传播特性

一、概述 我们平常工作中经常会听到事务的传播级别&#xff0c;但是使用中基本不会太调整这个事务传播级别&#xff0c;因为没什么业务场景需要我们这么做&#xff0c;只需要使用原有的事务传播级别即可解决95%的业务场景。但是为了那5%的业务场景&#xff0c;我们还是还要学习…

完美解决接口测试难题,数据驱动带签名混合封装框架实现

目录 前言&#xff1a; 一、框架概述 二、框架架构 三、代码实现 四、实战步骤 五、总结 前言&#xff1a; 接口自动化测试是保障软件质量的重要手段之一&#xff0c;其自动化程度越高&#xff0c;越能有效提高软件测试效率。而接口自动化测试中&#xff0c;接口测试框架…

Springboot +spring security,解决跨域问题

一.简介 这篇文章主要是解释什么是跨域&#xff0c;在Spring中如何解决跨域&#xff0c;引入Spring Security后Spring解决跨域的方式失效&#xff0c;Spring Security 如何解决跨域的问题。 二.什么是跨域 跨域的概率&#xff1a; 浏览器不能执行其他网站的脚本&#xff0c…

【新星计划-2023】TCP/IP协议讲解

相信大家在学习的过程中一定听到过TCP/IP这个协议&#xff0c;那么&#xff0c;TCP/IP协议是什么&#xff1f;为什么会有TCP/IP协议&#xff1f; 一、TCP/IP是什么&#xff1f; TCP/IP是用于计算机通信的一组协议&#xff0c;我们通常称它为TCP/IP协议族。它是70年代中期美国…

Taro 项目怎么获取元素的高度和视口高度

最近做小程序&#xff0c;用的Taro&#xff0c;需要设置空状态居中显示&#xff0c;因为空状态出现的地方不一样&#xff0c;所以需要动态设置&#xff0c;那么就需要获取元素的高度来计算 文档翻了一遍也没有找到&#xff0c;原生js获取高度得到的是null&#xff0c;百度了下…

考研数据结构--图

文章目录 图图的基本概念图的定义种类 图的抽象数据类型图的基本术语1. 端点和邻接点2. 顶点的度、入度和出度3. 完全图4. 稠密图、稀疏图5. 子图6. 路径和路径长度7. 回路或环8. 连通、连通图和连通分量9. 强连通图和强连通分量在一个图中找强连通分量的方法 10. 权和网 图的存…

自信裸辞:一晃 ,失业都3个月了.....

最近&#xff0c;找了很多软测行业的朋友聊天、吃饭 &#xff0c;了解了一些很意外的现状 。 我一直觉得他们技术非常不错&#xff0c;也走的测开/管理的路径&#xff1b;二三月份裸辞的&#xff0c;然后一直在找工作&#xff0c;现在还没找到工作 。 经过我的分析&#xff0…

2023年广东省中职网络安全Web渗透测试解析(超详细)

一、竞赛时间 180分钟 共计3小时 二、竞赛阶段 1.访问地址http://靶机IP/task1,分析页面内容,获取flag值,Flag格式为flag{xxx}; 2.访问地址http://靶机IP/task2,访问登录页面。用户user01的密码为1-1000以内的数,获取用户user01的密码,将密码作为Flag进行提交,Flag格式…

如何真正开启docker远程访问2375

注意看官方文档 Configure remote access for Docker daemon | Docker Documentation 1. windows上Docker Desktop开启远程访问端口2375 系统版本&#xff1a; win10专业版 Docker Desktop版本&#xff1a;4.18.0 很简单勾上&#xff0c; 应用并重启即可 2. linux上开启 尝…

设计模式—“接口隔离”

在组件构建过程中,某些接口之间直接的依赖常常会带来很多问题、甚至根本无法实现。采样添加一层间接(稳定)接口,来隔离本来互相紧密关联的接口是一种常见的解决方案。 典型模式有:Fascade、Proxy、Adapter、Mediator 一、Fascade 动机 上述A方案的问题在于组件的客户和…

性能测试重要知识与TPS上不去原因分析,测试进阶之路卷起来...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 常见性能测试术语…

音视频使用qt测试ffmpeg接口时无法运行

仅仅时把自己过程中遇到的稍微阻塞疑惑问题做出整理&#xff0c;疑惑的是拿到的ffmpeg包中没有dll文件&#xff0c;导致自己研究了一系列。 使用qt加载音视频ffmpeg对应的相关lib库&#xff0c;进行接口&#xff0c;源码的研究。 1&#xff1a;使用源码安装的方式获取相关的动…

易基因:全基因组DNA甲基化分析揭示DNMT1在斑马鱼模型听觉系统发育中的作用 | 胚胎发育

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 听力障碍通常与内耳发育不全或损伤有关&#xff0c;是影响生活质量的严重健康问题。因此研究听觉器官发生过程中的关键基因对于探索听力损伤的潜在策略至关重要。斑马鱼模型在理解内耳发…

基于SSM的校园办公管理系统的设计与实现(源码完整)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据你想解决的问题&#xff0c;今天给…

噶了呀,现在的00后这么卷的吗?

现在的小年轻真的卷得过分了。前段时间我们公司来了个00年的&#xff0c;工作没两年&#xff0c;跳槽到我们公司起薪20K&#xff0c;都快接近我了。 后来才知道人家是个卷王&#xff0c;从早干到晚就差搬张床到工位睡觉了。 最近和他聊了一次天&#xff0c;原来这位小老弟家里…

企业微信也能接入ChatGPT啦~你也能成功,步骤超详细~

文章目录 配置企业微信创建企业创建应用 配置项目一、OpenAI账号注册二、克隆项目代码三、复制配置文件四、企业微信配置 服务器购买运行项目安装Python安装核心依赖启动项目 个人微信绑定 上次我把ChatGPT接入了微信&#xff08;请看这篇文章当ChatGpt接入微信群之后&#xff…

前几天面了个30岁左右的测试员,年薪50w问题基本都能回答上,必是刷了不少八股文···

互联网行业竞争是一年比一年严峻&#xff0c;作为测试工程师的我们唯有不停地学习&#xff0c;不断的提升自己才能保证自己的核心竞争力从而拿到更好的薪水&#xff0c;进入心仪的企业&#xff08;阿里、字节、美团、腾讯等大厂.....&#xff09; 所以&#xff0c;大家就迎来了…