一、环境

ubuntu16.04
JetPack3.2.1
python3.5

 二、前言

       目前在python2.7或者python3.6两个版本环境下安装pytorch可以使用NVIDIA平台提供的wheel包快速搭建环境,提供了v1.0~1.4多个版本(https://elinux.org/Jetson_Zoo#PyTorch_.28Caffe2.29),对于其他python版本需要从源码进行编译安装。

三、正式安装

(一)源码编译Pytorch

1、安装依赖包

sudo apt install libopenblas-dev libatlas-base-dev liblapack-dev
sudo apt install liblapacke-dev checkinstall
sudo apt-get install python3-dev

#安装pip3
sudo apt-get install python3-pip
#如果pip3版本较低,先升级pip3
pip3 install --upgrade pip
#查看pip3版本信息
python3 -m pip -V
 
# 安装python库
sudo apt-get install python3-dev python3-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev
sudo apt-get install gfortran  
python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy scipy --user #使用清华源进行下载加速,但是这里编译仍需要花费一点时间
python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyyaml --user
python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scikit-build --user
sudo apt-get -y install cmake 
python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple cffi --user

2、将CUDNN路径加入到环境变量

sudo gedit ~/.bashrc
export CUDNN_LIB_DIR=/usr/lib/aarch64-linux-gnu
export CUDNN_INCLUDE_DIR=/usr/include
#使更改生效
source ~/.bashrc

 3、下载Pytorch源码,安装必要的依赖

git clone http://github.com/pytorch/pytorch
cd pytorch
python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -U setuptools --user
python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt --user

4、编译Pytorch源码

#选择Pytorch版本进行编译,创建并切换到新分支build;如有需要切换回主分支使用git checkout master命令,其他情况按照终端反馈的提示做
git checkout tags/v1.0.0 -b build  

#删除nervanagpu这个包
git clean -xdf
git submodule deinit -f .
git submodule sync

git submodule update --init --recursive

这里选择编译Pytorch v1.0.0版本成功,尝试编译v1.3.0并未成功。如果不选择要编译的版本,默认应该是编译最新版本。 

 5、调整Jetson Tx2工作模式,加快后续编译过程

#切换到最高性能模式
sudo nvpmodel -m 0
#查看当前工作模式使用 sudo nvpmodel -q verbose 命令

#打开风扇
#首先创建一个默认工作状态的 l4t_dfs.conf 文件,再打开风扇,便于后续关闭风扇
sudo ./jetson_clocks.sh --store
sudo ./jetson_clocks.sh                     
#编译结束后,使用 sudo ./jetson_clocks.sh --restore 命令关闭风扇

#对于JePack4.x版本,jetson_clocks.sh文件在 /usr/bin/ 目录下

6、开始编译

#执行以下两行命令,通常需要花费4个小时左右的时间;各两个小时,编译过程中有进度提示
sudo python3 setup.py build
NO_SYSTEM_NCCL=1 DEBUG=1 sudo -E python3 setup.py install

PyTorch原生支持 pytorch 源码编译_pytorch

7、验证安装

python3
#切换到python编译器下
>>import torch
#退出python环境
>>exit()

8、其他组件的安装 

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

#安装pillow 
git clone https://github.com/python-pillow/Pillow.git
cd Pillow/
sudo python3 setup.py install

#安装pandas和scikit-image需要花费一点时间
python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas --user
python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple Cython --user
python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scikit-image --user
python3 -m pip --no-cache-dir install -i https://pypi.tuna.tsinghua.edu.cn/simple torchvision --user

(二)安装OpenCV

       在将JetPack包刷入到Jetson Tx2时,虽然也将OpenCV组件安装了,但是在python3环境下import cv2提示找不到,所以按照需求重新进行安装。

#通过以下命令查看opencv版本
pkg-config opencv --modversion
#由于python3环境中无法导入cv2,所以重新安装opencv
git clone https://github.com/jetsonhacks/buildOpenCVTX2.git
cd buildOpenCVTX2
#根据需求可以修改buildOpenCV.sh文件再编译
./buildOpenCV.sh

PyTorch原生支持 pytorch 源码编译_python_02

        编译完成后,在home目录下可以查看到生成的opencv目录,在终端下验证安装。

PyTorch原生支持 pytorch 源码编译_pytorch_03