PaddlePaddle从入门到炼丹——环境搭建与安装¶
前言¶
本章介绍如何安装PaddlePaddle的新版本,特别是Fluid版本。Fluid设计的目标是让用户能够像使用PyTorch和TensorFlow Eager Execution一样执行程序。在这些系统中,不再有“模型”的概念,应用也不再包含描述Operator图或层序列的符号化描述,而是像通用程序一样描述训练或预测过程。因此,PaddlePaddle从Fluid版本开始采用动态图机制,本系列教程也基于Fluid版本编写。
环境要求¶
- 系统:64位Windows 10专业版、64位Ubuntu 16.04
- Python环境:Python 3.5
- 内存:8G
Windows下安装¶
安装Python¶
-
下载Python 3.5:
本系列使用Python 3.5,官方支持Windows系统的Python版本包括2.7.15、3.5.x、3.6.x和3.7.x。读者可根据需求选择版本,官网下载地址:
https://www.python.org/downloads/windows/
推荐直接下载Python 3.5.4 64位安装包:
https://www.python.org/ftp/python/3.5.4/python-3.5.4-amd64.exe -
安装Python并配置环境变量:
双击安装包,勾选“Add Python to PATH”,点击“Install Now”完成安装。 -
验证Python安装:
打开Windows PowerShell或cmd,输入命令python -V,若显示Python版本则安装成功。
安装PaddlePaddle¶
PaddlePaddle支持Windows后,安装非常简单,一条命令即可完成。
CPU版本安装¶
在Windows PowerShell中执行:
pip3 install paddlepaddle==1.4.1 -i https://mirrors.aliyun.com/pypi/simple/
GPU版本安装(需CUDA 8.0+cuDNN v7)¶
pip3 install paddlepaddle-gpu==1.4.1 -i https://mirrors.aliyun.com/pypi/simple/
验证安装¶
在Windows PowerShell中输入python,进入Python环境后执行:
import paddle.fluid
若无报错,证明安装成功。
Ubuntu下安装¶
安装Python(通常无需单独安装)¶
Ubuntu 16.04默认预装Python 3.5,若需指定版本:
sudo apt install python3.5
sudo apt install python3.5-dev
安装PaddlePaddle¶
CPU版本安装¶
在终端(Ctrl+Alt+T)执行:
pip3 install paddlepaddle==1.4.1 -i https://mirrors.aliyun.com/pypi/simple/
GPU版本安装(需CUDA 9.0+cuDNN 7)¶
- 先安装CUDA和cuDNN(参考Ubuntu安装和卸载CUDA和CUDNN)
- 安装PaddlePaddle GPU版本:
pip3 install paddlepaddle-gpu==1.4.1.post97 -i https://mirrors.aliyun.com/pypi/simple/
验证安装¶
在终端执行python3,进入Python环境后执行:
import paddle.fluid
若无报错,证明安装成功。
源码编译安装¶
Windows下源码编译¶
环境准备¶
-
安装Visual Studio 2015 Update3:
下载地址:https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/
需加入免费Dev Essentials计划以获取下载权限。 -
安装CMake 3.13:
下载地址:https://cmake.org/download/,安装时勾选“Add CMake to system PATH”。 -
安装依赖库:
pip3 install numpy protobuf wheel
- 安装Git:
下载地址:https://git-scm.com/downloads,默认安装即可。
编译步骤¶
- 克隆PaddlePaddle源码:
git clone https://github.com/PaddlePaddle/Paddle.git
cd Paddle
- 切换到稳定分支(以release/1.2为例):
git checkout release/1.2
- 创建并进入build目录:
mkdir build && cd build
- 配置编译参数(仅CPU版本):
cmake .. -G "Visual Studio 14 2015 Win64" -DPY_VERSION=3.5 -DWITH_FLUID_ONLY=ON -DWITH_GPU=OFF -DCMAKE_BUILD_TYPE=Release
-
下载第三方依赖:
从https://github.com/wopeizl/Paddle_deps下载third_party文件夹,放入build目录。 -
编译:
使用Visual Studio 2015打开paddle.sln,选择x64和Release配置,开始编译。 -
安装生成的.whl包:
在paddle/build/python/dist目录中找到.whl文件,执行:
pip3 install (whl包名称)
Ubuntu下源码编译¶
安装依赖¶
- 安装OpenCV:
sudo apt update
sudo apt-get install cmake build-essential libgtk2.0-dev
wget https://github.com/opencv/opencv/archive/3.4.5.zip
unzip 3.4.5.zip
cd opencv-3.4.5
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j$(nproc)
sudo make install
- 安装编译工具链:
sudo apt install python3.5-dev swig patchelf
pip3 install numpy protobuf wheel
编译步骤¶
- 克隆源码并切换分支:
git clone https://github.com/PaddlePaddle/Paddle.git
cd Paddle
git checkout release/1.4
- 配置编译参数(CPU版本):
mkdir build && cd build
cmake .. -DPY_VERSION=3.5 -DWITH_FLUID_ONLY=ON -DWITH_GPU=OFF -DCMAKE_BUILD_TYPE=Release
- 编译:
make -j$(nproc)
- 安装生成的.whl包:
cd python/dist
pip3 install (whl包名称)
Ubuntu Docker编译¶
通过Docker编译生成的安装包仅适用于Ubuntu系统,步骤如下:
- 安装Docker:
sudo apt install docker-ce
sudo systemctl restart docker
sudo docker run hello-world # 验证安装
- 编译PaddlePaddle:
git clone https://github.com/PaddlePaddle/Paddle.git
cd Paddle
# CPU版本编译
sudo docker run --name paddle-test -v $PWD:/paddle -it hub.baidubce.com/paddlepaddle/paddle:latest-dev /bin/bash
cd paddle && git checkout release/1.4 && mkdir build && cd build
cmake .. -DPY_VERSION=3.5 -DWITH_FLUID_ONLY=ON -DWITH_GPU=OFF -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)
pip3 install build/python/dist/*.whl
测试环境¶
使用PyCharm或VS Code创建Python项目,选择系统Python环境(Python 3.5),编写测试代码:
import paddle.fluid as fluid
import numpy as np
# 定义简单神经网络
def test_net():
x = fluid.layers.data(name='x', shape=[13], dtype='float32')
y = fluid.layers.fc(input=x, size=1, act=None)
place = fluid.CPUPlace()
exe = fluid.Executor(place)
data = np.random.rand(10, 13).astype('float32')
result = exe.run(fluid.default_main_program(), feed={'x': data}, fetch_list=[y])
print("Test output shape:", result[0].shape)
if __name__ == '__main__':
test_net()
输出示例:
Test output shape: (10, 1)
参考资料¶
下一章:《PaddlePaddle从入门到炼丹》二——计算1+1
项目代码GitHub地址:https://github.com/yeyupiaoling/LearnPaddle2/tree/master/note1
注意:最新代码以GitHub仓库为准。