百度人工智能框架 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安装
**
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
以下步骤建议进入虚拟环境安装:
代码如下:
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网络请求的数据。
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
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
使用make编译
make -j6
需要很久
pytho预测库:python/dist/paddlepaddle_gpu-2.0.0-cp36-cp36m-linux_aarch64.whl
C++预测库:fluid_inference_install_dir/
pip install -U python/dist/*.whl #还是在build文件夹
验证安装
安装完成后您可以使用 python 或 python3 进入python解释器,输入import paddle.fluid as fluid
,再输入 fluid.install_check.run_check()
如果出现Your Paddle Fluid is installed succesfully!
,说明您已成功安装。
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发生了错误。
主要思路是通过源码编译安装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
没有出现任何的问题,接下来继续
pip3 install paddlehub
测试:
hub version
至此我们就完成了Jetson Xavier NX下安装PaddleHub~
报错:
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