我需要在nx上跑深度学习,环境是torch1.10和python3.8。在nvidia官网没有torch1.10和python3.8的轮子,所以需要自己编译安装pytorch;
首先,先准备一些依赖包
sudo apt-get update
sudo apt-get install -y python3.8-dev python3-pip libopenblas-dev libopenmpi-dev libomp-dev cmake build-essential git clangsudo apt-get install clang # 用来编译pytorch
接着,从官网拉取pytorch源码并切换到指定版本以及同步子模块,总之就是把源码切换到指定版本并跟远程仓库保持一致;
git clone --recursive https://github.com/pytorch/pytorch
cd pytorch
git checkout v1.10.0
git submodule sync
git submodule update --init --recursive
然后配置编译项
export USE_CUDA=1
export USE_CUDNN=1
export USE_NCCL=1
export MAX_JOBS=$(nproc)
python3 setup.py clean
# 注释
export USE_CUDA=1 # cuda支持,gpu版本cuda
export USE_CUDNN=1
export USE_NCCL=1
export MAX_JOBS=$(nproc) # 获取cpu核心数赋值给MAX_JOBS,并行加快编译速度
python3 setup.py clean # 清理之前编译残留 保证编译环境干净
最后,编译pytorch
python3 setup.py bdist_wheel
这一步需要安装一些额外的包,解决编译出错问题;
- 第一个就是设置好setuptools这个包的版本,不然会出错;我是编译的torch1.10,python3.8在cuda11.4的nx开发板上编译,用的版本是46.0.0
- 第二个是安装 pyyaml 和 typing_extensions,可以直接使用pip安装
出错重新编译尝试记录;
第一次编译一夜卡在编译cuda的81%,nx直接卡死,查找原因可能是内存或者cpu负载满的问题,于是修改这句export MAX_JOBS=2重新运行。不过这次运行的是在网上下载的aarch版本的pytorch v1.10.0打包好的文件。详情看这个链接把1.11.0改成1.10.0
最终我使用的是这个文件夹中dist文件夹下编译出来的whl文件安装的