文章目录
- 前言
- 一、刷机、开机等基本环境配置可以参考如下文章
- 我的环境信息
- 二、源码编译安装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安装
**
我的环境信息
**
二、源码编译安装paddlepaddle
1.编译前准备工作
1.1首先打开NX的性能模式:或者在右上角状态栏找英伟达图标选择15W 6CORE模式,开启最高性能。
命令开启如下
sudo nvpmodel -m 2 && sudo jetson_clocks
1.2 增加swap空间,使用第一步安装的jtop工具Extra Swap工具,临时增加swap空间,使用完可随时释放
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
报错:
如果在源码编译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/activategit 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
需要很久
编译成功:
最后编译生成的预测库位于build文件夹下:
pytho预测库:python/dist/paddlepaddle_gpu-2.0.0-cp36-cp36m-linux_aarch64.whlC++预测库: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 工程效果
五、我遇到的问题
- 刚开始使用paddle 1.8.4 到cmake时报错如下,换成git check out 换成paddle 2.0.0后ok
- paddelhub在 nx板上无法下载模型文件,目前原因未知,先埋个坑
- 虚拟环境下的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