Jetson Xavier NX部署PaddlePaddle框架

文章目录

  • 前言
  • 一、刷机、开机等基本环境配置可以参考如下文章
    • 我的环境信息
  • 二、源码编译安装paddlepaddle
    • 1.编译前准备工作
    • 2.首先编译安装NCCL
    • 3.编译安装PaddlePaddle
    • 4.测试方法
  • 三、Jetson Xavier NX安装paddlehub
    • 1.paddlehub无法直接pip安装,报错如下
    • 2.源码编译安装sentencepiece
    • 3.pip安装PaddleHub
  • 四、paddleocr 工程效果
  • 五、我遇到的问题
  • 六、其他可能遇到的问题
  • 参考资料


前言

百度人工智能框架 paddlepaddle 官方显示不支持ARM64设备,Jetson Xavier NX 架构是arrch64(也属于arm64)无法直接pip安装,只能尝试源码编译,看了很多参考资料,网上百度关于Jetson Xavier NX 的不是很多,只有在对应的论坛找到一些资料,总结属于一篇自己的


一、刷机、开机等基本环境配置可以参考如下文章

NVIDIA Jetson Xavier NX 相关组件安装

带你玩转Jetson Xavier NX系列教程 | Xavier NX刷机教程

带你玩转Jetson Xavier NX系列教程 | Xavier NX 环境变量配置,风扇控制以及Jtop安装
**

我的环境信息

**
Jetson Xavier NX部署PaddlePaddle框架_第1张图片

二、源码编译安装paddlepaddle

1.编译前准备工作

1.1首先打开NX的性能模式:或者在右上角状态栏找英伟达图标选择15W 6CORE模式,开启最高性能。
命令开启如下

sudo nvpmodel -m 2 && sudo jetson_clocks

1.2 增加swap空间,使用第一步安装的jtop工具Extra Swap工具,临时增加swap空间,使用完可随时释放
Jetson Xavier NX部署PaddlePaddle框架_第2张图片
1.3 建立虚拟环境,使用virtualenv与virtualenvwrapper
使用指南可参考如下文章

https://www.cnblogs.com/fengqiang626/p/11788200.html
以下步骤建议进入虚拟环境安装:

2.首先编译安装NCCL

代码如下:

git clone https://github.com/NVIDIA/nccl.git
make -j6
sudo make install

报错:Jetson Xavier NX部署PaddlePaddle框架_第3张图片

如果在源码编译NCCL时报错fatal error: cuda_runtime.h: No such file or directory:

这个问题比较玄学,CUDA已经安装,自己也能找到在/usr/local/cuda/include/cuda_runtime.h找到此头文件,最后解决的方案是:

这个问题是因为我在源码编译NCCL之前已经配置好了CUDA的环境变量,我把CUDA环境变量“删掉后”就可以正常编译能找到头文件了,

所有在前面建议先源码编译NCCL后,再配置CUDA环境变量

该处使用的url网络请求的数据。


## 2.编译安装
sudo pip install virtualenv
sudo apt-get install python3.6-dev liblapack-dev  gfortran libfreetype6-dev libpng-dev libjpeg-dev zlib1g-dev patchelf python3-opencv

#建立基于Python3.6的虚拟环境
virtualenv pd_env --no-site-packages --python=python3.6
#进入Python虚拟环境
source pd_env/bin/activate

git clone https://github.com/paddlepaddle/paddle
#进入Paddle 源码目录
cd Paddle 

首先需要在虚拟环境中安装不包括在requirements.txt但又是必要的依赖:编译依赖表(依赖版本没有要求,测试中没有遇到不兼容的情况)

pip install cython wheel numpy

此处建议不要执行,只安装必要的包即可,参照官方依赖库:特别不要先安装opencv-python,否则有可能会导致最后编译生成的paddle wheel文件无法install

#进入克隆的Paddle文件夹,安装其他依赖

#cd Paddle
#pip install -r python/requirements.txt

3.编译安装PaddlePaddle

  • cmake配置
  • 官方推荐配置:编译选项表
cd Paddle
mkdir build
cd build
关于cmake的配置参数:
cmake .. \
  -DWITH_CONTRIB=OFF \
  -DWITH_MKL=OFF  \			#编译支持MKL的预测库
  -DWITH_MKLDNN=OFF \			#编译支持MKLDNN的预测库
  -DWITH_AVX=OFF \			#是否编译含有AVX指令集的飞桨二进制文件
  -DWITH_GPU=ON \			#编译支持GPU的预测库
  -DWITH_TESTING=OFF \			#是否开启单元测试
  -DCMAKE_BUILD_TYPE=Release \		#编译方式,仅使用预测库设为Release即可
  -DON_INFER=ON \			#预测时使用,必须设为ON
  -DWITH_PYTHON=ON  \			#是否内嵌PYTHON解释器并编译Wheel安装包
  -DPY_VERSION=3.6  \			#指定Python版本
  -DWITH_XBYAK=OFF  \			#使用XBYAK编译,在jetson硬件上编译需要设置为OFF
  -DWITH_NV_JETSON=ON			#在NV Jetson硬件上编译时需要设为ON
  • ps:可以把如上配置搞成脚本文件,再执行即可sh nx_cmake.sh
  • 生成完Makefile文件后
使用make编译

make -j6
需要很久

编译成功:Jetson Xavier NX部署PaddlePaddle框架_第4张图片
最后编译生成的预测库位于build文件夹下:

pytho预测库:python/dist/paddlepaddle_gpu-2.0.0-cp36-cp36m-linux_aarch64.whl

C++预测库:fluid_inference_install_dir/
  • 安装编译好的paddlepaddle-gpu的whl ,编译好的whl文件已上传,需要自取:https://download.csdn.net/download/qq_39712148/13027994
pip install -U python/dist/*.whl #还是在build文件夹

4.测试方法

验证安装
安装完成后您可以使用 python 或 python3 进入python解释器,输入import paddle.fluid as fluid ,再输入 fluid.install_check.run_check()

如果出现Your Paddle Fluid is installed succesfully!,说明您已成功安装。

三、Jetson Xavier NX安装paddlehub

1.paddlehub无法直接pip安装,报错如下

nx@nx-desktop:~/Downloads$ pip3 install paddlehub
Defaulting to user installation because normal site-packages is not writeable
Collecting paddlehub
Downloading paddlehub-1.8.2-py3-none-any.whl (336 kB)
|████████████████████████████████| 336 kB 214 kB/s
Requirement already satisfied: pandas; python_version >= "3" in /usr/lib/python3/dist-packages (from paddlehub) (0.22.0)
Collecting flask>=1.1.0
Using cached Flask-1.1.2-py2.py3-none-any.whl (94 kB)
Requirement already satisfied: tqdm in /home/nx/.local/lib/python3.6/site-packages (from paddlehub) (4.49.0)
Collecting sentencepiece
Using cached sentencepiece-0.1.91.tar.gz (500 kB)
ERROR: Command errored out with exit status 1:
command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-s_aw3i44/sentencepiece/setup.py'"'"'; file='"'"'/tmp/pip-install-s_aw3i44/sentencepiece/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-p6wyy_8t
cwd: /tmp/pip-install-s_aw3i44/sentencepiece/
Complete output (5 lines):
Package sentencepiece was not found in the pkg-config search path.
Perhaps you should add the directory containing `sentencepiece.pc'
to the PKG_CONFIG_PATH environment variable
No package 'sentencepiece' found
Failed to find sentencepiece pkgconfig
----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

仔细阅读报错结果,Failed to find sentencepiece pkgconfig。主要是在安装sentencepiece发生了错误。

  • 解决办法:于是Baidu搜索查阅资料,在这篇文章下找到了解决方案:https://blog.csdn.net/sinat_33455447/article/details/90265938

2.源码编译安装sentencepiece

主要思路是通过源码编译安装sentencepiece,首先搭建编译环境:
sudo apt-get install cmake build-essential pkg-config libgoogle-perftools-dev
然后进行源码编译:
git clone https://github.com/google/sentencepiece
cd sentencepiece
mkdir build
cd build
cmake ..
make -j $(nproc)
sudo make install
sudo ldconfig -v

没有出现任何的问题,接下来继续

3.pip安装PaddleHub

pip3 install paddlehub

测试:

hub version

至此我们就完成了Jetson Xavier NX下安装PaddleHub~

四、paddleocr 工程效果

Jetson Xavier NX部署PaddlePaddle框架_第5张图片

五、我遇到的问题

  1. 刚开始使用paddle 1.8.4 到cmake时报错如下,换成git check out 换成paddle 2.0.0后ok
    Jetson Xavier NX部署PaddlePaddle框架_第6张图片
  2. paddelhub在 nx板上无法下载模型文件,目前原因未知,先埋个坑
  3. 虚拟环境下的opencv无法imshow,目前还没搞清楚如何连接到系统的opencv4(系统自带的opencv4好像对python的支持好像不是太完整,准备重新编译)

六、其他可能遇到的问题

报错:

ERROR: ../aarch64-linux-gpn/crtn.o: Too many open files.

解决办法:增加系统同一时间最多可开启的文件数至2048

ulimit -n 2048

参考资料

https://aistudio.baidu.com/aistudio/projectdetail/969585
https://baidudanao.blog.csdn.net/article/details/107704028
https://paddle-inference.readthedocs.io/en/latest/user_guides/source_compile.html
https://www.paddlepaddle.org.cn/documentation/docs/zh/advanced_guide/inference_deployment/inference/build_and_install_lib_cn.html
https://www.cnblogs.com/ZhengPeng7/p/8609229.html

你可能感兴趣的:(paddlepaddle)