PyTorch1.6在DLAP221上的编译及安装

由于Pytorch官方没有发布基于Arm架构的安装包,互联网上的第三方编译出来的Pytorch1.6的安装包要依赖libc6_2.28这个版本,而DLAP221上的系统中libc不支持这个版本,尝试过通过源码升级libc6,但是由于libc6影响的软件包太多,没有成功,所以采用源码编译pytorch1.6的方式来安装。

Torch 编译及安装

1. 安装依赖

首先安装一些编译需要的依赖库:

sudo apt-get install libopenblas-dev cython3 libatlas-base-dev m4 libblas-dev cmake

安装python的包

sudo pip3.7.5 install numpy pyyaml cpython setuptools wheel pillow

2. 编译Torch

git clone --recursive https://github.com/pytorch/pytorch
cd pytorch
git checkout v1.6.0 #这里选择1.6版
git submodule sync
git submodule update --init --recursive

由于DLAP是不支持CUDA和MKLDNN的,CUDA是nv的,MKLDNN是intel的, 我们的DLAP221也只做推理,分布式也不要了。所以我们设置以下的环境变量

export NO_CUDA=1
export NO_DISTRIBUTED=1
export NO_MKLDNN=1
export MAX_JOBS=4 #这里设置4是因为DLAP221是4核
export NO_NNPACK=1 #NNPACK:是神经网络计算的加速包,官网显示其支持ARM64,但是由于需要ARM NEON支持,ATLAS200不支持,编译报错
export NO_QNNPACK=1 #是一种用于低精度高性能神经网络推理的移动优化库,主要应用于移动设备,因此关闭;
export NO_XNNPACK=1 #XNNPACK是QNNPACK的替代版本

进行完以上的配置,我们可以编译了

#本地安装
python setup.py install

#打包成whl,打包成功后这个文件在dist目录里面
python setup.py bdist_wheel

编译时一个漫长的过程,在DLAP221上大概花了5个小时左右。

3. 编译问题解决

编译出现虚拟内存无法分配错误:

virtual memory exhausted: Cannot allocate memory

编译 torch 需要花费大量的内存,DLAP221没有设置swap交换分区,可以用swap扩展内存的方法。

mkdir /opt/images/  #可以放在自己喜欢的位置如/var/swap
dd if=/dev/zero of=/opt/images/swap bs=1024 count=4096000 #创建4G swap,我尝试创建2G,但是还是不够用
mkswap /opt/images/swap #格式化
swapon /opt/images/swap #使能swap

使用完毕后可以关掉swap:

swapoff swap
rm -f /opt/images/swap

文件也可以不删除,留着以后使用,关键是你的硬盘够用。

4. 安装Torch

cd dist
sudo pip3.7.5 install ./torch-1.6.0a0+b31f58d-cp37-cp37m-linux_aarch64.whl

5. 验证Torch

HwHiAiUser@davinci-mini:~/pytorch/dist$ python3.7.5
Python 3.7.5 (default, Nov 23 2020, 08:14:01)
[GCC 7.5.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>>  #不报错,证明ok了

TorchVision编译及安装

编译完pytorch以后还需要安装torchversion,pytorch1.6.0对应的torchvision是0.7.0的版本,所以这里面我们还是通过源码自己编译。注意,在编译torchvision时需要先安装好上文编译好的torch

1. 安装依赖包

安装编译所需要的包

sudo apt-get install libjpeg-dev libavcodec-dev libavformat-dev libswscale-dev

安装pillow

pip install pillow

2. 编译 TorchVision

目前官网的torchvision版本是0.6,我们不用切换版本直接用就好了

git clone https://github.com/pytorch/vision.git
cd vision
git checkout v0.7.0 #如果需要使用与pytorch 1.6一同发布的0.7版,则要加上这句
#本地安装
python setup.py install
#打包成whl
python setup.py bdist_wheel

3. 安装 TorchVision

cd dist
pip3 install ./torchvision-0.7.0a0+78ed10c-cp37-cp37m-linux_aarch64.whl

4. 验证TorchVision

HwHiAiUser@davinci-mini:~/vision/dist$ python3.7.5
Python 3.7.5 (default, Nov 23 2020, 08:14:01)
[GCC 7.5.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torchvision
>>> #没有报错,证明ok

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值