centos7 arm服务器编译安装PaddlePaddle

前言

随着国产服务器发展,部署项目需要用在国产服务器上,官方教程里面很多没有讲解到,安装过程中出现了各种各样的问题,以下是对官方教程的补充,有什么问题,欢迎指正!

一、环境准备

gcc: 8.2版本以上,可参考该文章进行编译【centos7 arm服务器编译安装gcc 8.2

cmake:版本>=3.15

patchelf:推荐选择0.14.5版本

python环境:版本>=3.7,可参考该文章进行编译【centos7 arm服务器编译安装python 3.8

二、安装编译前所需环境

1、cmake

Paddle依赖cmake进行编译构建,需要cmake版本>=3.15,如果操作系统提供的源包括了合适版本的cmake,直接安装即可,否则需要源码安装

复制代码
# 移除之前版本的cmake
yum remove cmake

wget https://github.com/Kitware/CMake/releases/download/v3.16.8/cmake-3.16.8.tar.gz
tar -xzf cmake-3.16.8.tar.gz && cd cmake-3.16.8
./bootstrap && make && sudo make install

本人安装过程中遇到了如下错误:

复制代码
Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_LIBRARIES OPENSSL_INCLUDE_DIR) 

解决办法,使用下面命令安装:

复制代码
yum install openssl-devel

然后再执行一遍cmake安装命令。

2、patchelf

安装官方文档的意思,这个目前还是需要的,推荐选择0.14.5版本,流程如下

复制代码
git clone https://github.com/NixOS/patchelf.git
cd patchelf
./bootstrap.sh
./configure
make
make check
sudo make install

安装过程中可能会报如下错误:failed to run aclocal: No such file or directory

解决办法,使用下面命令安装:

复制代码
yum install autoconf
yum install automake

然后再执行一遍make安装命令。

还有一种方式,验证也可行:

复制代码
pip3 install patchelf

三、paddle

流程跟官方一致,但官方用的develop分支的,我这里用的是正式版的分支

复制代码
git clone -b v2.3.2 https://github.com/PaddlePaddle/Paddle.git
cd Paddle
mkdir build && cd build

链接过程中打开文件数较多,可能超过系统默认限制导致编译出错,设置进程允许打开的最大文件数:

复制代码
ulimit -n 4096

执行cmake:

Python2环境中命令:

复制代码
cmake .. -DPY_VERSION=2 -DPYTHON_EXECUTABLE=`which python2` -DWITH_ARM=ON -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release -DON_INFER=ON -DWITH_XBYAK=OFF -DCMAKE_CXX_FLAGS="-Wno-error -w"

Python3环境命令:

复制代码
cmake .. -DPY_VERSION=3 -DPYTHON_EXECUTABLE=`which python3` -DWITH_ARM=ON -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release -DON_INFER=ON -DWITH_XBYAK=OFF -DCMAKE_CXX_FLAGS="-Wno-error -w"

或者

复制代码
cmake .. -DPY_VERSION=3.8 -DPYTHON_EXECUTABLE=`which python3` -DWITH_ARM=ON -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release -DON_INFER=ON -DWITH_XBYAK=OFF -DCMAKE_CXX_FLAGS="-Wno-error -w"

错误一:编译过程中可能遇到的错误:Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS)

解决办法

https://felaim.blog.csdn.net/article/details/105832560

错误二:没有numpy包

安装numpy也可能出现找不到'Python.h'文件,解决办法,下载python3的开发包:

复制代码
pip3 install numpy

错误三

解决办法:

复制代码
pip3 install wheel -i https://mirror.baidu.com/pypi/simple 
pip3 install protobuf -i https://mirror.baidu.com/pypi/simple 

四、make

使用以下命令来编译,注意,因为处理器为ARM架构,如果不加TARGET=ARMV8则会在编译的时候报错。

复制代码
make TARGET=ARMV8 -j$(nproc)

编译成功后进入Paddle/build/python/dist目录下找到生成的.whl包。

五、验证

进入python3环境

复制代码
import paddle
paddle.utils.run_check()

如下图表示安装成功:

完毕!!!

2.3.2版本:

centos7的arm服务器Python3.8版本的PaddlePaddle2.3.2

centos7的arm服务器Python3.9版本的PaddlePaddle2.3.2

2.6.1版本:

centos7的arm服务器Python3.8版本的PaddlePaddle2.6.1

centos7的arm服务器Python3.9版本的PaddlePaddle2.6.1

相关推荐
白白白飘2 小时前
【8】补充与拓展:Langchain的联网搜索Agent,使用Tavily工具
服务器·网络·langchain
草邦设计开发团队_媒体资源平台2 小时前
Linux 稳定常驻启动 PHP 队列,服务器重启自动恢复
linux·服务器·php·队列执行
竣达技术3 小时前
NAS / 服务器断电数据丢失?UPS 配套 USB关机保护板,市电断电池低自动提示服务器/电脑关机
运维·服务器·电脑
国科安芯3 小时前
基于ASM1042S2S的箭载通信网络抗辐射加固方案研究
服务器·网络·嵌入式硬件·fpga开发·架构·信号处理
wbs_scy3 小时前
仿 muduo 高并发服务器项目:实现 Any 通用容器并理解 std::any
运维·服务器
海盗12343 小时前
.NET编码规范03-C#命名规范大全
linux·服务器·.net
WZF-Sang3 小时前
TCP和UDP协议
linux·服务器·网络·c++·学习·tcp/ip·udp
做个文艺程序员3 小时前
Linux第11篇:存储管理——磁盘分区、LVM 与文件系统
linux·运维·服务器
AI视觉网奇4 小时前
BambuStudio 自定义加载页面
服务器·前端·javascript
孫治AllenSun4 小时前
【Linux】服务器设置固定ip
linux·服务器·tcp/ip