Ascend Extension for PyTorch Installation
导言
参与到 Ascend/pytorch项目里,首先就是如何安装。
由于黄区严格的网络限制,docker难以使用,还是只能conda下重新安装
肯定要是昇腾的设备
前提条件¶
安装配套版本的CANN软件,并使用其脚本
前辈装好了,直接用这部分
安装PyTorch框架¶
已有conda环境t00906153_bindCore
中包含torch 2.1.0
编译安装¶
如果需要调试torch_npu,需要删除torch相关的验证代码,所以需要手动编译torch
PTA使用export DEBUG=1
开启debug模式,在OpenSora样例下会报错result.use_count() <= 1
这是torch会校验DEBUG情况,但是PTA的值为2。 为此需要修改torch包,删除gen_variable_type.py
的对应行
git clone -b v2.1.0 https://github.com/pytorch/pytorch pt210
cd pt210
git submodule sync
# 网络不好会下载很久
git submodule update --init --recursive
conda activate XXX # 确定对应的py38
# 但是不需要 source cann.sh
export CC=gcc
export CXX=g++
export USE_XNNPACK=0
export _GLIBCXX_USE_CXX11_ABI=0 // 与PTA的保持对齐
DEBUG=1 python setup.py bdist_wheel // 生成whl
DEBUG=1 python setup.py install // 直接安装
由于pip包有较强版本限制,PTA安装时这个版本的pytorch是不匹配的,需要pip install dist.whl --no-deps
通过源码安装torch_npu插件¶
参考文档
# CentOS
yum install -y patch libjpeg-turbo-devel dos2unix openblas git
yum install -y gcc==7.3.0 cmake==3.12.0
git clone -b v2.1.0-6.0.rc1 https://gitee.com/ascend/pytorch.git
cd pytorch
# build 前要source pytorch环境
source . {xxx}/ascend-toolkit/set_env.sh
bash ci/build.sh --python=3.8
pip3 install --upgrade dist/torch_npu-2.1.0.post3-cp38-cp38-linux_aarch64.whl
DEBUG模式的PTA编译
- 运行
setup.py
前export DEBUG=1
即可。 - DEBUG的PTA刚需DEBUG的pytorch包, 原因是前面的
use_count != 1
反思:为什么第一次编译失败了
- 惯性思维:不严谨,想当然了,clone了master来运行
- 文档阅读不细致,就急于尝试:公司里有人写wiki是很难得的,如果有wiki可以参考,一定先看完,可以避免很多坑。
- 编译时缺头文件,如果不在项目代码里,就很有可能是相应的系统包没有安装。
torchrun¶
torchrun
是 PyTorch 中用于分布式训练的命令行工具,以下是参数的解析:
--nnodes=1
:指定节点数量,这里设置为 1 表示只使用一个节点。--nproc_per_node=8
:每个节点上使用的进程数,这里设置为 8,通常对应于 GPU 数量。--master-port 61888
:指定主节点的端口号,用于进程间通信。
结合这些参数,命令会在一个节点上启动 8 个进程进行训练,主节点通过指定的端口进行通信。
查看端口占用
sudo netstat -tuln | grep -E ':(61888|61889|619[0-9]{2}|62000)'