Dji Manifold2-G源码编译安装pytorch

Dji Manifold-2G 源码安装pytorch

最近需要在无人机上做一些实验,需要配置深度学习框架。本打算采用轮子安装的方式,当时尝试几次都无法安装成功,缺少依赖的动态库。Manifold-2G 自带cuda9.0, 升级cuda是很麻烦的事,也没有找到合适的方法。因此尝试使用pytorch源码安装,在安装过程中也遇到些问题,在此做记录和总结。

1. 查看Dji Manifold-2G环境

#内核版本
uname-a 
#ubtuntu版本
cat /etc/lsb-release
#查看cuda版本
nvcc --version
#查看cuDNN版本
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
#查看camke版本号
cmake -version

2. 安装cudnn

2.1 下载cuDNN

源码安装pytorch需要使用cuda、cudnn以及cmake,Manifold自带cuda9.0,需要安装对应版本的cudnn,Maniflod自带的cudnn需要更新到7.6.5
cudnn的下载地址:
https://developer.nvidia.com/rdp/cudnn-archive

在这里插入图片描述
找到与cuda9.0版本对应的cuDNN,点开之后选择与系统对应版本,由于Manifold是基于arm架构的,这里我们要选择第三项下载。

这里也给大家提供了一个直接对应cuda9.0版本的cudnn链接:cuDNN-v7.6.5
在这里插入图片描述

2.2 安装cuDNN

~$ cd Downloads/ #安装文件下载的目录
~$ sudo tar xvf cudnn-9.0-linux-x64-v7.6.tgz
~$ mkdir cudnn7
~$ sudo cp -r cuda cudnn7
~$ cd cudnn7
~$ sudo cp include/cudnn.h /usr/local/cuda/include/
~$ sudo cp lib64/* /usr/local/cuda/lib64/
~$ cd /usr/local/cuda/lib64/
/usr/local/cuda/lib64$ sudo chmod +r libcudnn.so.7.6.5
/usr/local/cuda/lib64$ sudo rm -rf libcudnn.so libcudnn.so.7
/usr/local/cuda/lib64$ sudo ln -s libcudnn.so.7.6.5 libcudnn.so.7
/usr/local/cuda/lib64$ sudo ln -s libcudnn.so.7 libcudnn.so
/usr/local/cuda/lib64$ sudo ldconfig

查看cuDNN版本

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

添加cudnn的lib和include的路径

sudo gedit ~/.bashrc
export CUDNN_LIB_DIR=/usr/lib/aarch64-linux-gnu
export CUDNN_INCLUDE_DIR=/usr/include
source ~/.bashrc

3. 下载pytorch源码与安装

3.1 下载源码

在Manifold上安装pytorch时,强烈建议下载v1.0.0版本的pytorch源码,可以通过github版本子链接下载,也可通过下面指令下载:

#将pytorch源码下载到固态硬盘!!
git clone --recursive --branch v1.0.0 http://github.com/pytorch/pytorch #版本号为v1.0.0

Tips: 下载时会出现无法访问GitHub的情况,这种建议更改DNS,或者多尝试几次即可;

接下来我们需要对pytorch的源码做一下基础修改(编译前关闭程序中的NCCL):

sudo gedit /pytorch/CMakeList.txt
#   > CmakeLists.txt : Change NCCL to 'Off' on line 98

sudo gedit /pytorch/setup.py
#   > setup.py: Add USE_NCCL = False below line 200

sudo gedit /pytorch/tools/setup_helpers/nccl.py
#   > nccl.py : Change USE_SYSTEM_NCCL to 'False' on line 13
#               Change NCCL to 'False' on line 78

sudo gedit /pytorch/torch/csrc/cuda/nccl.h
#   > nccl.h : Comment self-include on line 8
#              Comment entire code from line 21 to 28

sudo gedit torch/csrc/distributed/c10d/ddp.cpp
#   > ddp.cpp : Comment nccl.h include on line 6
#               Comment torch::cuda::nccl::reduce on line 163

3.2 安装依赖环境

我安装的是python3版本的pytorch,注意我python指令对应的是3.6版本的python,下面python指令都是针对python3.6进行的。
在这里插入图片描述

sudo apt install libopenblas-dev libatlas-dev liblapack-dev
sudo apt install liblapacke-dev checkinstall 
sudo apt-get install python-pip
 
pip install --upgrade pip
sudo apt-get install python-dev
 
sudo pip install numpy scipy
sudo pip install pyyaml
sudo pip install scikit-build
sudo apt-get -y install cmake
sudo apt install libffi-dev
sudo pip install cffi

3.3 进行编译

cd pytorch 
# 此处还是老问题,git时会出现失败情况,如果失败重新执行命令即可,会继续git所需要的源码,
git submodule update --init --recursive 

安装python依赖的包

#安装python的必要依赖包
sudo pip install -U setuptools
sudo pip install -r requirements.txt
#开启Dji Manifold2-G最大功率模式
sudo ./jetson_clocks.sh
#安装scikit
sudo pip install scikit-build --user
#更新动态链接库
sudo ldconfig
#设置编译参数
export USE_NCCL=0 USE_DISTRIBUTED=1 USE_OPENCV=ON USE_CUDNN=1 USE_CUDA=1 ONNX_ML=1 

编译过程1: tips:两步编译过程时间较长,耐心等待2h左右,摸鱼时间

sudo -E USE_MKLDNN=0 USE_QNNPACK=0 USE_NNPACK=0 USE_DISTRIBUTED=0 BUILD_TEST=0 python setup.py bdist_wheel

编译过程2

sudo -E USE_MKLDNN=0 USE_QNNPACK=0 USE_NNPACK=0 USE_DISTRIBUTED=0 BUILD_TEST=0 DEBUG=1 python setup.py build develop
# 注意在python3下安装,我的python指令对应python3.6

漫长的编译结束后:

sudo apt clean
sudo apt-get install libjpeg-dev zlib1g-dev

#git到固态硬盘
cd /media/dji/Furh/
#git下载pillow源码
git clone https://github.com/python-pillow/Pillow.git
cd Pillow/
#安装pillow
sudo python setup.py install
#安装sklearn等其他包
sudo apt-get install python-sklearn
sudo pip install pandas Cython scikit-image 
#安装torch对应版本的torchvision
sudo pip --no-cache-dir install torchvision

4. 总结

按照以上过程安装,成功在Manifold-2G上安装了pytorch-v1.0.0. 整个过程还是比较坎坷,其中可能会遇到些问题,整理到问题中供大家参考。后续工作需要将检测等移植到Manifold-2G。

问题汇总

Q1:

Makefile:138: recipe for target ‘all’ failed make: *** [all] Error 2 Failed to run 'bash …/tools/build_pytorch_libs.sh --use-cuda --use-nnpack --use-mkldnn --use-qnnpack caffe2’
在这个错误之前,发现有这样的错误
fatal error: Python.h: No such file or directory
解决方案
如果使用3.6: sudo apt-get install python3.6-dev
如果使用2.7: sudo apt-get install python-dev
即可正确执行
在这里插入图片描述这个问题在第二遍的时候也发生了,没有提示fatal error: Python.h: No such file or directory,同样像上述步骤正常安装即可。

Q2:

c++: internal compiler error: Killed (program cc1plus)

编译过程内存不足导致,解决办法在其他博客中记录,自行参考。
在这里插入图片描述
解决方法:https://blog.csdn.net/lioe_1995/article/details/115384945?spm=1001.2014.3001.5501

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值