使用Docker编译PaddlePaddle
在ubuntu中使用Docker编译PaddlePaddle
要在ubuntu中使用docker编译paddle框架,首先分为以下几个步骤:
- 安装docker环境
- 拉取paddle的docker镜像
- 开启镜像并配置
- 验证编译安装成功
1、Docker环境安装
使用Docker编译¶
Docker是一个开源的应用容器引擎。使用Docker,既可以将PaddlePaddle的安装&使用与系统环境隔离,也可以与主机共享GPU、网络等资源
使用Docker编译PaddlePaddle,您需要:
- 在本地主机上安装Docker
- 如需在Linux开启GPU支持,请安装nvidia-docker


可参考:
2、拉取Paddle的docker镜像
对于国内用户,因为网络问题下载docker比较慢时,可使用百度提供的镜像:
CPU版的PaddlePaddle:
docker pull registry.baidubce.com/paddlepaddle/paddle:latest-dev
GPU版的PaddlePaddle:
nvidia-docker pull registry.baidubce.com/paddlepaddle/paddle:latest-gpu-cuda10.2-cudnn7-dev


3、docker编译配置
(1) 进入docker
先要开始启动docker,然后再使用attach进入环境。
sudo docker start paddle-test

sudo docker ps

sudo docker attach paddle-test


(2) 源码下载及环境配置
mkdir source

git clone git@github.com:PaddlePaddle/Paddle.git

进入下列文件目录
cd Paddle

(非必选)可根据需要,切换到较稳定版本下进行编译:¶
git checkout [分支名]
例如:
git checkout release/2.3
注意:python3.6、python3.7版本从release/1.2分支开始支持, python3.8版本从release/1.8分支开始支持, python3.9版本从release/2.1分支开始支持, python3.10版本从release/2.3分支开始支持
安装依赖
pip3 install protobuf

apt install patchelf

(3) 依赖项
由于在paddle源码编译过程中,需要安装相应的依赖库,这些依赖库是通过github仓库拉取源码的形式下载下来的。
若docker环境下能够网络通畅的使用github,可跳过此项。
若网络情况不稳定,那么这里建议参考下面,分别将这些仓库手动clone下来,同时要注意当前的目录。
- extern_gflags https://github.com/gflags/gflags.git
- extern_cryptopp https://github.com/weidai11/cryptopp.git
- extern_mkldnn https://github.com/oneapi-src/oneDNN
- extern_warpctc git clone https://github.com/espnet/warp-ctc.git
- extern_protobuf https://github.com/protocolbuffers/protobuf.git
git clone https://github.com/protocolbuffers/protobuf.git
git clone https://github.com/weidai11/cryptopp.git
git clone https://github.com/dmlc/dlpack.git
git clone https://github.com/oneapi-src/oneDNN.git
git clone https://github.com/baidu-research/warp-ctc.git
git clone https://github.com/gflags/gflags.git
git clone https://github.com/wjakob/clang-cindex-python3





(4) 执行cmake
执行cmake,根据是否使用GPU有以下两种方式,可自行结合需要修改DWITH_GPU=ON或OFF。
cmake .. -DPY_VERSION=3.7 -DWITH_GPU=OFF
cmake .. -DPY_VERSION=3.7 -DWITH_GPU=ON




(5) 执行编译
开始执行编译,-j后面对应的是线程数,可自定义。当然最好是用(nproc),会根据系统参数自动设置。
这里的流程是:
- 1、先执行build源码到target。

- 2、copying 源码到build目录下

- 3、creating、adding


最后,看到[100%]Built target paddle_python就说明已经编译完成了。
4、安装编译好的包
编译好paddle源码后,我们还需要将生成的whl安装到docker中的python环境下。
根据上面的信息和官方文档的提示,可以知道,生成whl文件在下面这个目录。
cd /paddle/build/python/dist


pip3 install paddlepaddle-0.0.0-cp37-cp37m-linxu_x86_64.whl

由于在clone paddle的源码时,使用的是develop分支,因此对应的版本号为0.0.0。
如果需要稳定版本,可在源码下载的时候,选择相应的分支。
5、验证安装成功
将paddle的whl安装到python3环境后,可以在docker中进行相应的验证是否可用。
python3
import paddle
paddle.utils.run_check()

至此,所有步骤完成,paddle以源码形式编译并安装完成,enjoy your work~。
6、参考材料
[1].https://www.paddlepaddle.org.cn/documentation/docs/zh/install/compile/linux-compile.html
使用Docker编译PaddlePaddle的更多相关文章
- 使用docker安装paddlepaddle 和 tensorflow
1.tensorflow安装 http://blog.csdn.net/freewebsys/article/details/70237003 (1)拉取镜像:docker pull tensorfl ...
- 利用Docker编译Hadoop 3.1.0
前言 为什么要使用Docker编译,请自行百度 操作系统环境:Centos 6.8 uname -r 内核版本:2.6.32-642.el6.x86_64 除非有把握否则不要在Centos6.8中直接 ...
- YOLOv4: Darknet 如何于 Docker 编译,及训练 COCO 子集
YOLO 算法是非常著名的目标检测算法.从其全称 You Only Look Once: Unified, Real-Time Object Detection ,可以看出它的特性: Look Onc ...
- 使用 Docker 编译 OpenWRT(Widora)
Docker 是一种新的被称之为容器的虚拟机.本文将使用此工具,进行 OpenWRT 的编译. 在 Docker 中下载 Ubuntu 14.04 的镜像 使用以下命令可以十分方便的从远程服务器上将 ...
- (原) ubuntu下用pycharm2016.1专业版配docker编译环境(docker Interpreter)
一:先创建docker-machine 先创建docker machine.我主机上的虚拟机是virtualbox.$ docker-machine create --driver virtualbo ...
- docker 编译开发代码做镜像
文件目录 Dockerfile 是docker制作镜像的文件,docker_run.sh是sh文件,gin_test是go编译之后的linux可执行程序,gintest.env是配置文件夹 首先写一个 ...
- Docker编译Android6.0源码
docker环境配置 更正时区时间 # 查看当前时间 $ date # 修改当前时间 $ cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime ech ...
- 使用Docker编译OpenResty支持国密ssl加密
编译环境 执行编译操作环境如下 #操作系统 CentOS Linux release 7.4.1708 (Core) #docker版本 Version: 19.03.5 编译过程 Dockerfil ...
- 使用Docker安装PaddlePaddle安装过程中出现的几个问题
Unable to create: 已停止该运行的命令,因为首选项变量"ErrorActionPreference"或通用参数设置为 Stop: 无法新建虚拟机. "Mo ...
- 编译Docker<v1.9.0>源码和初级安装
本文主要介绍了如何在POWER CPU处理器上编译和安装Docker服务.很多时候,我们都需要自己编译Docker源码,有的时候是由于自己的处理器没有对应的安装包,有的时候是由于当前的新版本还有发布, ...
随机推荐
- DC-1内网靶机入门
DC-1 1.安装dc-1 靶机 2.内网扫描 查看主机IP ip a ifconfig nmap扫描全网段 nmap -A -p- -v 192.168.27.0/24 -A 选项会执行操作系统探测 ...
- 生成文本聚类java实现1
本章主要的学习是中文分词 和两种统计词频(传统词频和TF-IDF算法 ) 的方法. 学习目的:通过N多的新闻标题 or 新闻摘要 or 新闻标签,生成基本的文本聚类,以便统计当天新闻的热点内容. 扩展 ...
- 手写js new,new的过程到底发生了什么
在JavaScript中,new关键字的应用可以说是再平常不过了,最基础的有new Array().new Set(),再而就是new一个自己创建的构造函数,也就是创建一个该构造函数的示例.如:var ...
- 我用Replicate训练了个纹身Flux AI LORA模型,分享下经验
# 我用Replicate训练了个纹身AI模型,分享下经验 ## 起因 最近一直在研究AI辅助设计,正好我对纹身设计特别感兴趣.经过一段时间摸索,用Replicate平台训练了一个还不错的纹身设计模型 ...
- Git Flow开发分支管理
Git Flow Git Flow 是一种基于 Git 版本控制系统的分支管理模型,定义了一套严格的分支命名和操作规范 主要包括以下几种分支类型: 主干分支(master):始终保持稳定,只包含经过充 ...
- CSP模拟50联测12 T2 赌神
CSP模拟50联测12 T2 赌神 题面与数据规模 Ps:超链接为衡水中学OJ. 思路 \(subtask2\): 由于\(x_i\)较小,考虑 dp. 假设一开始球的颜色为红和蓝,设 \(dp[i] ...
- 【一步步开发AI运动小程序】五、帧图像人体识别
随着人工智能技术的不断发展,阿里体育等IT大厂,推出的"乐动力"."天天跳绳"AI运动APP,让云上运动会.线上运动会.健身打卡.AI体育指导等概念空前火热.那 ...
- 2024-11-20:交替子数组计数。用go语言,给定一个二进制数组 nums, 如果一个子数组中的相邻元素的值都不相同,我们称这个子数组为交替子数组。 请返回数组 nums 中交替子数组的总数。 输
2024-11-20:交替子数组计数.用go语言,给定一个二进制数组 nums, 如果一个子数组中的相邻元素的值都不相同,我们称这个子数组为交替子数组. 请返回数组 nums 中交替子数组的总数. 输 ...
- 2个月搞定计算机二级C语言——真题(12)解析
1. 前言 本篇我们讲解2个月搞定计算机二级C语言--真题12 2. 程序填空题 2.1 题目要求 2.2 提供的代码 #include <stdio.h> #define N 3 int ...
- highcharts在vue中的应用
1.安装命令 npm install highcharts --save 2.在页面中按需引入 import Highcharts from 'highcharts/highstock'; impor ...