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 cmakewget 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/414597.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

升级8.0:民生手机银行的“内容解法”

数字化浪潮,滚滚来袭。 随着数字中国建设的持续推进,数字经济正在蓬勃发展。中商产业研究院分析师预测,2023年中国数字经济市场规模将增长至56.7万亿元,占GDP的比重将达到43.5%。 在此浪潮下,数字化的触角蔓延到各行…

Docker五部曲之五:通过Docker和GitHub Action搭建个人CICD项目

文章目录 项目介绍Dockerfile解析compose.yml解析Nginx反向代理到容器以及SSL证书设置MySQL的准备工作Spring和环境变量的交互 GitHub Action解析项目测试结语 项目介绍 该项目是一个入门CICD-Demo,它由以下几部分组成: Dockerfile:用于构建…

【图解数据结构】深度解析时间复杂度与空间复杂度的典型问题

🌈个人主页:聆风吟 🔥系列专栏:图解数据结构、算法模板 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 一. ⛳️上期回顾二. ⛳️常见时间复杂度计算举例1️⃣实例一2️⃣实例二3️⃣实例三4️⃣实例四5…

电子词典Qt版

1. 服务端 词典数据&#xff0c;数据库路径&#xff1a;E:\peixunQianrushi\Qt\course\course10\cidain_shuju cidian_server widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QDebug> #include <QTcpServer> #include <QTcpSoc…

力扣每日一练(24-1-18)

经验一&#xff1a;不要把问题想复杂 Python&#xff1a; min_price float(inf)max_profit 0for price in prices:min_price min(min_price, price)max_profit max(max_profit, price - min_price)return max_profit C#&#xff1a; public int MaxProfit(int[] prices) {i…

npm run dev 启动vue的时候指定端口

使用的是 Vue CLI 来创建和管理 Vue 项目&#xff0c; 可以通过设置 --port 参数来指定启动的端口号。以下是具体的步骤&#xff1a; 打开命令行终端 进入您的 Vue 项目目录 运行以下命令&#xff0c;通过 --port 参数指定端口号&#xff08;例如&#xff0c;这里设置端口号…

基于YOLOv8深度学习的100种中草药智能识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

计算机网络-ACL实验

一、NAT实验配置 NAT实验配置 通过基本ACL匹配VLAN 10网段&#xff0c;然后在出口设备NAT转换只要匹配到VLAN10地址则进行转换。 核心交换机 # 配置VLAN和默认路由&#xff0c;配置Trunk和Access接口 interface Vlanif10ip address 192.168.10.254 255.255.255.0 # interface V…

【JVM】内存结构

Java 虚拟机的内存空间 Java 虚拟机的内存空间分为 5 个部分&#xff1a; 程序计数器 Java 虚拟机栈 本地方法栈 堆 方法区 JDK 1.8 同 JDK 1.7 比&#xff0c;最大的差别就是&#xff1a;元数据区取代了永久代。元空间的本质和永久代类似&#xff0c;都是对 JVM 规范中方法区…

Visual Studio离线版本下载安装

Visual Studio离线版本下载安装 一&#xff0c;版本下载 url&#xff1a; Visual Studio官网 下载新版本&#xff1a; 下载老版本&#xff1a; 需要将官网页面拉在最下方&#xff0c;点击较早的下载&#xff0c;选择老版本进行下载 下载后的可执行文件&#xff1a; 二&am…

【MATLAB源码-第118期】基于matlab的蜘蛛猴优化算法(SMO)无人机三维路径规划,输出做短路径图和适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 蜘蛛猴优化算法&#xff08;Spider Monkey Optimization, SMO&#xff09;是一种灵感来源于蜘蛛猴觅食行为的群体智能优化算法。蜘蛛猴是一种生活在南美洲热带雨林中的灵长类动物&#xff0c;它们在寻找食物时展现出的社会行…

C/C++ BM5 合并K个已排序的链表

文章目录 前言题目1 解决方案一1.1 思路阐述1.2 源码 2 解决方案二2.1 思路阐述2.2 源码 总结 前言 在接触了BM4的两个链表合并的情况&#xff0c;对于k个已排序列表&#xff0c;其实可以用合并的方法来看待问题。 这里第一种方法就是借用BM4的操作&#xff0c;只不过是多个合…