Jetson Xavier NX部署PaddlePaddle框架

news/2024/11/29 1:33:15/

文章目录

  • 前言
  • 一、刷机、开机等基本环境配置可以参考如下文章
    • 我的环境信息
  • 二、源码编译安装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 工程效果

在这里插入图片描述

五、我遇到的问题

  1. 刚开始使用paddle 1.8.4 到cmake时报错如下,换成git check out 换成paddle 2.0.0后ok
    在这里插入图片描述
  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


http://www.ppmy.cn/news/459492.html

相关文章

Jetson Xavier NX 内核编译、源码编译流程

[NVIDIA] 从零入手 Jetson Xavier NX 内核编译、源码编译流程 – ***注明:感谢网友提醒,我当时买的时候nx套件还没开售,因为核心板兼容b01,先买了核心板和b01的板子合在一起用的,所以本文是基于jetson xavier nx模块 …

J-004 Jetson电路设计之HDMI设计--NANO XAVIER NX

HDMI电路设计 1 简介2 框图介绍3 原理图介绍 1 简介 NANO & XAVIER NX提供一路HDMI接口,DP接口与HDMI是兼容的,可用于扩展一路HDMI。其中引脚说明: PIN名称描述方向类型63HDMI_DP_TXDN0DisplayPort 1 Lane 0 or HDMI Lane 2输出HDMI/DP65HDMI_DP_T…

J-002 Jetson电路设计之电源设计--NANO XAVIER NX

Jetson电源设计 1 电源说明1.1 电源和系统引脚描述1.2 电源控制框图详情 2 上电的时许2.1 框图分析2.2 上电时序 3 GND引脚 1 电源说明 Jetson NANO和XAVIER NX核心板的电源为DC-5V。 1.1 电源和系统引脚描述 PIN名称描述方向类型251-260VDD_IN主电源输入5.0V235PMIC_BBATRT…

努比亚修复工具_努比亚 X6 救砖教程 努比亚 NX601J恢复救砖教程

努比亚 X6(NX601J) 恢复兼救砖 1.下载刷机工具及说明 努比亚 X6(NX601J)线刷工具:点击下载(下载后解压出三个文件夹) 适用范围: 1、手机刷错包导致变砖,重启即黑屏,数据线连接电脑没有反应; 2、刷机后卡logo,进不去系统或者开机直接进入recovery,而且双清不了的; 以上两…

关于nubia z9 NX508J notification 不显示的问题

这几天测试友盟推送功能,测试发现nubia z9 NX508J收不到消息 但是调试发现,log日志里面收的到消息,那就只能是notification没有发送成功了。 于是单独写了一个demo,发现真的notification显示不了。 想来肯定是系统设置了权限,于是…

J-001 Jetson硬件电路设计概论--NANO XAVIER NX

Jetson硬件设计概论 1 Jetson板卡简介2 Jetson产品组合3 模组对比4 电路分析4.1 电源设计4.1.1 原理图设计4.1.2 引脚描述4.1.3 电源框图4.1.4 上电时序 4.2 USB设计4.2.1 USB 2.0引脚描述4.2.2 USB 3.0引脚描述 4.3 PCIe4.4 千兆网口设计4.4.1 引脚描述4.4.2 设计案列 4.5 MIP…

UG NX二次开发(C#)-分析-测量曲面的面积

1、 简要说明 在UG NX中随着版本的更新,测量曲面功能的界面也有所变化,在NX10中,有个单独的“测量面”功能,能测量曲面的面积和长度,如下图所示。 通过搜索查看面测量功能 NX10中的面测量界面 通过面测量能得到单张曲面或者多张曲面的面积。 但是到了NX改版后,其功能界…

jetson nx cmake jtop opencv安装

jetson nx刷机后需要安装一系列 (1) cmake 在官网上下cmake的包,解压 注:板子要下aarch64版本的 sudo vi ~/.bashrc 在最后一行加上 export CMAKE_HOME解压的文件夹/cmake-XXXX-linux-aarch64/bin #XXX处根据版本而定 export P…