未验证 提交 55be9c74 编写于 作者: C Cheerego 提交者: GitHub

Cherrypick1.3 (#652)

* thorough clean

* delete_DS_Store

* [Don't merge now]update_install_doc (#643)

* update_install_doc

* follow_comments

* add maxdepth (#646)

* upload_md (#649)

* update_version (#650)

* Translation of 16 new apis (#651)

* fix_windows
上级 6faa1da8
......@@ -10,7 +10,7 @@ API Reference
=============
.. toctree::
:maxdepth: 1
''')
file_object.write(' ../api_guides/index_en.rst'+'\n')
......
......@@ -3,7 +3,7 @@ API Reference
=============
.. toctree::
:maxdepth: 1
../api_guides/index_en.rst
fluid.rst
......
......@@ -128,9 +128,62 @@ BOOL类型。如果设置为True, GPU操作中的一些锁将被释放,Paralle
.. _cn_api_fluid_CompiledProgram:
CompiledProgram
-------------------------------
.. py:class:: paddle.fluid.CompiledProgram(program)
编译一个接着用来执行的Program。
1. 首先使用layers(网络层)创建程序。
2. (可选)可使用CompiledProgram来在运行之前优化程序。
3. 定义的程序或CompiledProgram由Executor运行。
CompiledProgram用于转换程序以进行各种优化。例如,
- 预先计算一些逻辑,以便每次运行更快。
- 转换Program,使其可以在多个设备中运行。
- 转换Program以进行优化预测或分布式训练。
**代码示例**
.. code-block:: python
place = fluid.CUDAPlace(0) if use_cuda else fluid.CPUPlace()
exe = fluid.Executor(place)
exe.run(startup)
compiled_prog = compiler.CompiledProgram(main).with_data_parallel(
loss_name=loss.name)
for i in range(5):
test_loss, = exe.run(compiled_prog,
feed=feed_dict,
fetch_list=[loss.name])
参数:
- **program** : 一个Program对象,承载着用户定义的模型计算逻辑
.. py:method:: with_data_parallel(loss_name=None, build_strategy=None, exec_strategy=None, share_vars_from=None)
配置Program使其以数据并行方式运行。
参数:
- **loss_name** (str) - 损失函数名称必须在训练过程中设置。 默认None。
- **build_strategy** (BuildStrategy) - build_strategy用于构建图,因此它可以在具有优化拓扑的多个设备/核上运行。 有关更多信息,请参阅 ``fluid.BuildStrategy`` 。 默认None。
- **exec_strategy** (ExecutionStrategy) - exec_strategy用于选择执行图的方式,例如使用多少线程,每次清理临时变量之前进行的迭代次数。 有关更多信息,请参阅 ``fluid.ExecutionStrategy`` 。 默认None。
- **share_vars_from** (CompiledProgram) - 如果有,此CompiledProgram将共享来自share_vars_from的变量。 share_vars_from指定的Program必须由此CompiledProgram之前的Executor运行,以便vars准备就绪。
返回: self
.. py:method:: with_inference_optimize(config)
添加预测优化。
参数:
- **config** - 用于创建预测器的NativeConfig或AnalysisConfig的实例
返回: self
......@@ -1512,56 +1565,6 @@ release_memory
.. _cn_api_fluid_Scope:
Scope
-------------------------------
.. py:class:: paddle.fluid.scope(scope)
(作用域)Scope为变量名的联合。所有变量都属于Scope。
从本地作用域中可以拉取到其双亲作用域的变量。
要想运行一个网络,需要指明它运行所在的域,确切的说: exe.Run(&scope) 。
一个网络可以在不同域上运行,并且更新该域的各类变量。
在作用域上创建一个变量,并在域中获取。
**代码示例**
.. code-block:: python
# create tensor from a scope and set value to it.
param = scope.var('Param').get_tensor()
param_array = np.full((height, row_numel), 5.0).astype("float32")
param.set(param_array, place)
.. py:method:: drop_kids(self: paddle.fluid.core.Scope) → None
.. py:method:: find_var(self: paddle.fluid.core.Scope, arg0: unicode) → paddle.fluid.core.Variable
.. py:method:: new_scope(self: paddle.fluid.core.Scope) → paddle.fluid.core.Scope
.. py:method:: var(self: paddle.fluid.core.Scope, arg0: unicode) → paddle.fluid.core.Variable
.. _cn_api_fluid_scope_guard:
scope_guard
......
......@@ -10,7 +10,7 @@ API Reference
=============
.. toctree::
:maxdepth: 1
''')
file_object.write(' ../api_guides/index.rst'+'\n')
......
......@@ -3,7 +3,7 @@ API
=====
.. toctree::
:maxdepth: 1
../api_guides/index.rst
fluid_cn.rst
......
......@@ -6,7 +6,7 @@
.. _cn_api_fluid_initializer_Bilinear:
Bilinear
>>>>>>>>>>>
-------------------------------
.. py:attribute:: paddle.fluid.initializer.Bilinear
......@@ -16,7 +16,7 @@ Bilinear
.. _cn_api_fluid_initializer_BilinearInitializer:
BilinearInitializer
>>>>>>>>>>>>>>>>>>>>>
-------------------------------
.. py:class:: paddle.fluid.initializer.BilinearInitializer
......@@ -49,7 +49,7 @@ num_filters = C和groups = C 表示这是按通道转置的卷积函数。滤波
.. _cn_api_fluid_initializer_Constant:
Constant
>>>>>>>>>>
-------------------------------
.. py:attribute:: paddle.fluid.initializer.Constant
......@@ -59,7 +59,7 @@ Constant
.. _cn_api_fluid_initializer_ConstantInitializer:
ConstantInitializer
>>>>>>>>>>>>
-------------------------------
.. py:class:: paddle.fluid.initializer.ConstantInitializer(value=0.0, force_cpu=False)
......@@ -84,7 +84,7 @@ ConstantInitializer
.. _cn_api_fluid_initializer_force_init_on_cpu:
force_init_on_cpu
>>>>>>>>>>>>>>>>>>>
-------------------------------
.. py:function:: paddle.fluid.initializer.force_init_on_cpu()
......@@ -114,7 +114,7 @@ force_init_on_cpu
.. _cn_api_fluid_initializer_init_on_cpu:
init_on_cpu
>>>>>>>>>>>>
-------------------------------
.. py:function:: paddle.fluid.initializer.init_on_cpu(*args, **kwds)
......@@ -135,7 +135,7 @@ init_on_cpu
.. _cn_api_fluid_initializer_MSRA:
MSRA
>>>>>>
-------------------------------
.. py:attribute:: paddle.fluid.initializer.MSRA
......@@ -144,7 +144,7 @@ MSRA
.. _cn_api_fluid_initializer_MSRAInitializer:
MSRAInitializer
>>>>>>>>>>>>>>>>>
-------------------------------
.. py:class:: paddle.fluid.initializer.MSRAInitializer(uniform=True, fan_in=None, seed=0)
......@@ -189,7 +189,7 @@ MSRAInitializer
.. _cn_api_fluid_initializer_Normal:
Normal
>>>>>>>>
-------------------------------
.. py:attribute:: paddle.fluid.initializer.Normal
......@@ -199,7 +199,7 @@ Normal
.. _cn_api_fluid_initializer_NormalInitializer:
NormalInitializer
>>>>>>>>>>>>
-------------------------------
.. py:class:: paddle.fluid.initializer.NormalInitializer(loc=0.0, scale=1.0, seed=0)
......@@ -218,15 +218,30 @@ NormalInitializer
param_attr=fluid.initializer.Normal(loc=0.0, scale=2.0)
.. _cn_api_fluid_initializer_NumpyArrayInitializer:
NumpyArrayInitializer
-------------------------------
.. py:class:: paddle.fluid.initializer.NumpyArrayInitializer(value)
使用Numpy型数组来初始化参数变量。
参数:
- **value** (numpy) - 用于初始化变量的一个Numpy型数组。
**代码示例**
.. code-block:: python
fc = fluid.layers.fc(input=x, size=10,
param_attr=fluid.initializer.NumpyArrayInitializer(numpy.array([1,2])))
.. _cn_api_fluid_initializer_TruncatedNormal:
TruncatedNormal
>>>>>>>>>>>>>>>>>
-------------------------------
.. py:attribute:: paddle.fluid.initializer.TruncatedNormal
......@@ -236,7 +251,7 @@ TruncatedNormal
.. _cn_api_fluid_initializer_TruncatedNormalInitializer:
TruncatedNormalInitializer
>>>>>>>>>>>>
-------------------------------
.. py:class:: paddle.fluid.initializer.TruncatedNormalInitializer(loc=0.0, scale=1.0, seed=0)
......@@ -265,7 +280,7 @@ Random Truncated Normal(高斯)分布初始化器
.. _cn_api_fluid_initializer_Uniform:
Uniform
>>>>>>>>>
-------------------------------
.. py:attribute:: paddle.fluid.initializer.Uniform
......@@ -276,7 +291,7 @@ Uniform
.. _cn_api_fluid_initializer_UniformInitializer:
UniformInitializer
>>>>>>>>>>>>
-------------------------------
.. py:class:: paddle.fluid.initializer.UniformInitializer(low=-1.0, high=1.0, seed=0)
......@@ -305,7 +320,7 @@ UniformInitializer
.. _cn_api_fluid_initializer_Xavier:
Xavier
>>>>>>>>>
-------------------------------
.. py:attribute:: paddle.fluid.initializer.Xavier
......@@ -319,7 +334,8 @@ Xavier
.. _cn_api_fluid_initializer_XavierInitializer:
XavierInitializer
>>>>>>>>>>>>>>>>>>>
-------------------------------
.. py:class:: paddle.fluid.initializer.XavierInitializer(uniform=True, fan_in=None, fan_out=None, seed=0)
该类实现Xavier权重初始化方法( Xavier weight initializer),Xavier权重初始化方法出自Xavier Glorot和Yoshua Bengio的论文 `Understanding the difficulty of training deep feedforward neural networks <http://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf>`_
......
......@@ -4,7 +4,7 @@ fluid.layers
============
control_flow
control_flow
============
......@@ -1282,6 +1282,151 @@ shuffle
nn
============
.. _cn_api_fluid_layers_adaptive_pool2d:
adaptive_pool2d
-------------------------------
.. py:function:: paddle.fluid.layers.adaptive_pool2d(input, pool_size, pool_type='max', require_index=False, name=None)
pooling2d操作根据输入 ``input`` , ``pool_size`` , ``pool_type`` 参数计算输出。 输入(X)和输出(Out)采用NCHW格式,其中N是批大小batch size,C是通道数,H是feature(特征)的高度,W是feature(特征)的宽度。 参数 ``pool_size`` 由两个元素构成, 这两个元素分别代表高度和宽度。 输出(Out)的H和W维与 ``pool_size`` 大小相同。
对于平均adaptive pool2d:
.. math::
hstart &= floor(i * H_{in} / H_{out})
hend &= ceil((i + 1) * H_{in} / H_{out})
wstart &= floor(j * W_{in} / W_{out})
wend &= ceil((j + 1) * W_{in} / W_{out})
Output(i ,j) &= \frac{sum(Input[hstart:hend, wstart:wend])}{(hend - hstart) * (wend - wstart)}
参数:
- **input** (Variable) - 池化操作的输入张量。 输入张量的格式为NCHW,其中N是batch大小,C是通道数,H是特征的高度,W是特征的宽度。
- **pool_size** (int | list | tuple) - 池化核大小。 如果池化核大小是元组或列表,则它必须包含两个整数(pool_size_Height,pool_size_Width)。
- **pool_type** (string)- 池化类型,可输入“max”代表max-pooling,或者“avg”代表average-pooling。
- **require_index** (bool) - 如果为true,则输出中带有最大池化点所在的索引。 如果pool_type为avg,该项不可被设置为true。
- **name** (str | None) - 此层的名称(可选)。 如果设置为None,则将自动命名该层。
返回: 池化结果
返回类型: Variable
抛出异常:
- ``ValueError`` – ``pool_type`` 不是 ‘max’ 或 ‘avg’
- ``ValueError`` – 当 ``pool_type`` 是 ‘avg’ 时,错误地设置 ‘require_index’ 为true .
- ``ValueError`` – ``pool_size`` 应为一个长度为2的列表或元组
.. code-block:: python
# 假设输入形为[N, C, H, W], `pool_size` 为 [m, n],
# 输出形为 [N, C, m, n], adaptive pool 将输入的 H 和 W 纬度
# 平均分割为 m * n 个栅格(grid) ,然后为每个栅格进行池化得到输出
# adaptive average pool 进行如下操作
#
# for i in range(m):
# for j in range(n):
# hstart = floor(i * H / m)
# hend = ceil((i + 1) * H / m)
# wstart = floor(i * W / n)
# wend = ceil((i + 1) * W / n)
# output[:, :, i, j] = avg(input[:, :, hstart: hend, wstart: wend])
#
data = fluid.layers.data(
name='data', shape=[3, 32, 32], dtype='float32')
pool_out = fluid.layers.adaptive_pool2d(
input=data,
pool_size=[3, 3],
pool_type='avg')
.. _cn_api_fluid_layers_adaptive_pool3d:
adaptive_pool3d
-------------------------------
.. py:function:: paddle.fluid.layers.adaptive_pool3d(input, pool_size, pool_type='max', require_index=False, name=None)
pooling3d操作根据输入 ``input`` ,``pool_size`` , ``pool_type`` 参数计算输出。 输入(X)和输出(输出)采用NCDHW格式,其中N是批大小batch size,C是通道数,D是特征(feature)的深度,H是特征的高度,W是特征的宽度。 参数 ``pool_size`` 由三个元素组成。 这三个元素分别代表深度,高度和宽度。输出(Out)的D,H,W维与 ``pool_size`` 相同。
对于平均adaptive pool3d:
.. math::
dstart &= floor(i * D_{in} / D_{out})
dend &= ceil((i + 1) * D_{in} / D_{out})
hstart &= floor(j * H_{in} / H_{out})
hend &= ceil((j + 1) * H_{in} / H_{out})
wstart &= floor(k * W_{in} / W_{out})
wend &= ceil((k + 1) * W_{in} / W_{out})
Output(i ,j, k) &= \frac{sum(Input[dstart:dend, hstart:hend, wstart:wend])}{(dend - dstart) * (hend - hstart) * (wend - wstart)}
参数:
- **input** (Variable) - 池化操作的输入张量。 输入张量的格式为NCDHW,其中N是batch大小,C是通道数,D为特征的深度,H是特征的高度,W是特征的宽度。
- **pool_size** (int | list | tuple) - 池化核大小。 如果池化核大小是元组或列表,则它必须包含三个整数(Depth, Height, Width)。
- **pool_type** (string)- 池化类型,可输入“max”代表max-pooling,或者“avg”代表average-pooling。
- **require_index** (bool) - 如果为true,则输出中带有最大池化点所在的索引。 如果pool_type为avg,该项不可被设置为true。
- **name** (str | None) - 此层的名称(可选)。 如果设置为None,则将自动命名该层。
返回: 池化结果
返回类型: Variable
抛出异常:
- ``ValueError`` – ``pool_type`` 不是 ‘max’ 或 ‘avg’
- ``ValueError`` – 当 ``pool_type`` 是 ‘avg’ 时,错误地设置 ‘require_index’ 为true .
- ``ValueError`` – ``pool_size`` 应为一个长度为3的列表或元组
.. code-block:: python
# 假设输入形为[N, C, D, H, W], `pool_size` 为 [l, m, n],
# 输出形为 [N, C, l, m, n], adaptive pool 将输入的D, H 和 W 纬度
# 平均分割为 l * m * n 个栅格(grid) ,然后为每个栅格进行池化得到输出
# adaptive average pool 进行如下操作
#
# for i in range(l):
# for j in range(m):
# for k in range(n):
# dstart = floor(i * D / l)
# dend = ceil((i + 1) * D / l)
# hstart = floor(j * H / m)
# hend = ceil((j + 1) * H / m)
# wstart = floor(k * W / n)
# wend = ceil((k + 1) * W / n)
# output[:, :, i, j, k] =
# avg(input[:, :, dstart:dend, hstart: hend, wstart: wend])
#
data = fluid.layers.data(
name='data', shape=[3, 32, 32], dtype='float32')
pool_out, mask = fluid.layers.adaptive_pool3d(
input=data,
pool_size=[3, 3, 3],
pool_type='avg')
.. _cn_api_fluid_layers_add_position_encoding:
......@@ -1700,7 +1845,36 @@ bilinear_tensor_product
.. _cn_api_fluid_layers_bpr_loss:
bpr_loss
-------------------------------
.. py:function:: paddle.fluid.layers.bpr_loss(input, label, name=None)
Bayesian Personalized Ranking Loss Operator. (贝叶斯个性化排序损失计算)
该算子属于pairwise的排序类型,其标签是期望物品。在某次会话中某一给定点的损失值由下式计算而得:
.. math::
Y[i] = -\frac{1}{N_{i}-1} * \sum_{0\le j<N_{i},~ j\neq Label[i]}\log(\sigma(X[i, Label[i]]-X[i, j]))
更多细节请参考 `Session Based Recommendations with Recurrent Neural Networks <https://arxiv.org/abs/1511.06939>`_
参数:
- **input** (Variable|list): 一个形为[N x D]的2-D tensor , 其中 N 为批大小batch size ,D 为种类的数量。该输入为logits而非概率。
- **label** (Variable|list): 2-D tensor<int64> 类型的真实值, 形为[N x 1]
- **name** (str|None): (可选)该层的命名。 如果为None, 则自动为该层命名。 默认为None.
返回: 形为[N x 1]的2D张量,即bpr损失
**代码示例:**
.. code-block:: python
cost = fluid.layers.bpr_loss(input=predict, label=label)
......@@ -2563,6 +2737,57 @@ ctc_greedy_decoder
.. _cn_api_fluid_layers_data_norm:
data_norm
-------------------------------
.. py:function:: paddle.fluid.layers.data_norm(input, act=None, epsilon=1e-05, param_attr=None, data_layout='NCHW', in_place=False, use_mkldnn=False, name=None, moving_mean_name=None, moving_variance_name=None, do_model_average_for_mean_and_var=False)
**数据正则化层**
可用作conv2d和fully_connected操作的正则化函数。 此层所需的数据格式为以下之一:
1. NHWC [batch, in_height, in_width, in_channels]
2. NCHW [batch, in_channels, in_height, in_width]
:math:`input` 为一个mini-batch上的特征:
.. math::
\mu_{\beta} &\gets \frac{1}{m} \sum_{i=1}^{m} x_i \qquad &//\
\ mini-batch\ mean \\
\sigma_{\beta}^{2} &\gets \frac{1}{m} \sum_{i=1}^{m}(x_i - \
\mu_{\beta})^2 \qquad &//\ mini-batch\ variance \\
\hat{x_i} &\gets \frac{x_i - \mu_\beta} {\sqrt{\
\sigma_{\beta}^{2} + \epsilon}} \qquad &//\ normalize \\
y_i &\gets \gamma \hat{x_i} + \beta \qquad &//\ scale\ and\ shift
参数:
- **input** (variable) - 输入变量,它是一个LoDTensor。
- **act** (string,默认None) - 激活函数类型,线性| relu | prelu | ...
- **epsilon** (float,默认1e-05) -
- **param_attr** (ParamAttr) - 参数比例的参数属性。
- **data_layout** (string,默认NCHW) - NCHW | NHWC
- **in_place** (bool,默认值False) - 使data_norm的输入和输出复用同一块内存。
- **use_mkldnn** (bool,默认为false) - 是否使用mkldnn
- **name** (string,默认None) - 此层的名称(可选)。 如果设置为None,则将自动命名该层。
- **moving_mean_name** (string,Default None) - 存储全局Mean的moving_mean的名称。
- **moving_variance_name** (string,默认None) - 存储全局Variance的moving_variance的名称。
- **do_model_average_for_mean_and_var** (bool,默认值为false) - 是否为mean和variance进行模型平均。
返回: 张量变量,是对输入数据进行正则化后的结果。
返回类型: Variable
**代码示例**
.. code-block:: python
data = fluid.layers.data(input=x, size=200, param_attr='fc1.w')
hidden2 = fluid.layers.data_norm(input=hidden1)
......@@ -4143,8 +4368,44 @@ hsigmoid可以把时间复杂度 :math:`O(N)` 优化到 :math:`O(logN)` ,其中
.. _cn_api_fluid_layers_huber_loss:
huber_loss
-------------------------------
.. py:function:: paddle.fluid.layers.huber_loss(input, label, delta)
Huber损失是更具鲁棒性的损失函数。 huber损失可以评估输入对标签的合适度。 与MSE损失不同,Huber损失可更为稳健地处理异常值。
当输入和标签之间的距离大于delta时:
.. math::
huber\_loss = delta * (label - input) - 0.5 * delta * delta
当输入和标签之间的距离小于delta时:
.. math::
huber\_loss = 0.5 * (label - input) * (label - input)
参数:
- **input** (Variable) - 此输入是前一个算子计算得到的概率。 第一个维度是批大小batch_size,最后一个维度是1。
- **label** (Variable) - 第一个维度为批量大小batch_size且最后一个维度为1的真实值
- **delta** (float) - huber loss的参数,用于控制异常值的范围
返回: 形为[batch_size, 1]的huber loss.
返回类型: huber_loss (Variable)
**代码示例**
.. code-block:: python
predictions = fluid.layers.softmax(x)
loss = fluid.layers.huber_loss(input=predictions, label=label, 1.0)
......@@ -5957,7 +6218,113 @@ prelu
.. _cn_api_fluid_layers_psroi_pool:
psroi_pool
-------------------------------
.. py:function:: paddle.fluid.layers.psroi_pool(input, rois, output_channels, spatial_scale, pooled_height, pooled_width, name=None)
PSROIPool运算
区分位置的感兴趣区域池化方法(Position sensitive region of interest pooling,也称为PSROIPooling)是对输入的 "感兴趣区域"(RoI)执行按位置的average池化,并将N个按位置评分图(score map)和一个由num_rois个感兴趣区域所组成的列表作为输入。
用于R-FCN的PSROIPooling。 有关更多详细信息,请参阅 https://arxiv.org/abs/1605.06409。
参数:
- **input** (Variable) - (Tensor),PSROIPoolOp的输入。 输入张量的格式是NCHW。 其中N是批大小batch_size,C是输入通道的数量,H是输入特征图的高度,W是特征图宽度
- **rois** (Variable) - 要进行池化的RoI(感兴趣区域)。
- **output_channels** (integer) - (int),输出特征图的通道数。 对于共C个种类的对象分类任务,output_channels应该是(C + 1),该情况仅适用于分类任务。
- **spatial_scale** (float) - (float,default 1.0),乘法空间比例因子,用于将ROI坐标从其输入比例转换为池化使用的比例。默认值:1.0
- **pooled_height** (integer) - (int,默认值1),池化输出的高度。默认值:1
- **pooled_width** (integer) - (int,默认值1),池化输出的宽度。默认值:1
- **name** (str,default None) - 此层的名称。
返回: (Tensor),PSROIPoolOp的输出是形为 (num_rois,output_channels,pooled_h,pooled_w) 的4-D Tensor。
返回类型: 变量(Variable)
**代码示例:**
.. code-block:: python
pool_out = fluid.layers.psroi_pool(input=x, rois=rois, 490, 1.0, 7, 7)
.. _cn_api_fluid_layers_py_func:
py_func
-------------------------------
.. py:function:: paddle.fluid.layers.py_func(func, x, out, backward_func=None, skip_vars_in_backward_input=None)
PyFunc运算。
用户可以使用 ``py_func`` 在Python端注册operator。 ``func`` 的输入 ``x`` 是LoDTensor,输出可以是numpy数组或LoDTensor。 Paddle将在前向部分调用注册的 ``func`` ,并在反向部分调用 ``backward_func`` (如果 ``backward_func`` 不是None)。
在调用此函数之前,应正确设置 ``out`` 的数据类型和形状。 但是,``out`` 和 ``x`` 对应梯度的数据类型和形状将自动推断而出。
``backward_func`` 的输入顺序为:前向输入x,前向输出 ``out`` 和反向输入 ``out`` 的梯度。 如果 ``out`` 的某些变量没有梯度,则输入张量在Python端将为None。
如果in的某些变量没有梯度,则用户应返回None。
此功能还可用于调试正在运行的网络,可以通过添加没有输出的py_func运算,并在func中打印输入x。
参数:
- **func** (callable) - 前向Python函数。
- **x** (Variable|list(Variable)|tuple(Variable)) - func的输入。
- **out** (Variable|list(Variable)|tuple(Variable)) - func的输出。 Paddle无法自动推断out的形状和数据类型。 应事先创建 ``out`` 。
- **backward_func** (callable|None) - 反向Python函数。 None意味着没有反向计算。 默认None。
- **skip_vars_in_backward_input** (Variable|list(Variable)|tuple(Variable)) - backward_func输入中不需要的变量。 这些变量必须是x和out中的一个。 如果设置,这些变量将不是backward_func的输入,仅在backward_func不是None时有用。 默认None。
返回: 传入的 ``out``
返回类型: out (Variable|list(Variable)|tuple(Variable))
**代码示例**:
.. code-block:: python
import paddle.fluid as fluid
import six
def create_tmp_var(name, dtype, shape):
return fluid.default_main_program().current_block().create_var(
name=name, dtype=dtype, shape=shape)
# Paddle C++ op提供的tanh激活函数
# 此处仅采用tanh作为示例展示py_func的使用方法
def tanh(x):
return np.tanh(x)
# 跳过前向输入x
def tanh_grad(y, dy):
return np.array(dy) * (1 - np.square(np.array(y)))
def debug_func(x):
print(x)
def simple_net(img, label):
hidden = img
for idx in six.moves.range(4):
hidden = fluid.layers.fc(hidden, size=200)
new_hidden = create_tmp_var(name='hidden_{}'.format(idx),
dtype=hidden.dtype, shape=hidden.shape)
# 用户自定义的前向反向计算
hidden = fluid.layers.py_func(func=tanh, x=hidden,
out=new_hidden, backward_func=tanh_grad,
skip_vars_in_backward_input=hidden)
# 用户自定义的调试层,可以打印出变量细则
fluid.layers.py_func(func=debug_func, x=hidden, out=None)
prediction = fluid.layers.fc(hidden, size=10, act='softmax')
loss = fluid.layers.cross_entropy(input=prediction, label=label)
return fluid.layers.mean(loss)
......@@ -7711,6 +8078,73 @@ shape算子
.. _cn_api_fluid_layers_shuffle_channel:
shuffle_channel
-------------------------------
.. py:function:: paddle.fluid.layers.shuffle_channel(x, group, name=None)
**Shuffle Channel 运算(通道重排运算)**
该运算符将输入 ``x`` 的通道混洗重排。 它将每个组中的输入通道分成 ``group`` 个子组,并通过逐个从每个子组中选择元素来获得新的顺序。
请参阅 https://arxiv.org/pdf/1707.01083.pdf
::
输入一个形为 (N, C, H, W) 的4-D tensor:
input.shape = (1, 4, 2, 2)
input.data =[[[[0.1, 0.2],
[0.2, 0.3]],
[[0.3, 0.4],
[0.4, 0.5]],
[[0.5, 0.6],
[0.6, 0.7]],
[[0.7, 0.8],
[0.8, 0.9]]]]
指定组数 group: 2
可得到与输入同形的输出 4-D tensor:
out.shape = (1, 4, 2, 2)
out.data = [[[[0.1, 0.2],
[0.2, 0.3]],
[[0.5, 0.6],
[0.6, 0.7]],
[[0.3, 0.4],
[0.4, 0.5]],
[[0.7, 0.8],
[0.8, 0.9]]]]
参数:
- **x** (Variable) – 输入张量变量。 应是形状为[N,C,H,W]的4-D张量
- **group** (int) – 表示子组的数目,它应该整除通道数。
返回:通道混洗结果是一个张量变量,其形状和类型与输入相同。
返回类型:输出(Variable)
**代码示例:**
.. code-block:: python
input = fluid.layers.data(name='input', shape=[4,2,2], dtype='float32')
out = fluid.layers.shuffle_channel(x=input, group=2)
......@@ -8424,7 +8858,37 @@ Swish 激活函数
y = fluid.layers.swish(x, beta=2.0)
.. _cn_api_fluid_layers_teacher_student_sigmoid_loss:
teacher_student_sigmoid_loss
-----------------------------------
.. py:function:: paddle.fluid.layers.teacher_student_sigmoid_loss(input, label, soft_max_up_bound=15.0, soft_max_lower_bound=-15.0)
**Teacher Student Log Loss Layer(教师--学生对数损失层)**
此图层接受输入预测和目标标签,并返回teacher_student损失。
.. math::
loss = max(x, 0) - x * z + log(1 + exp(-abs(x))) + max(x, 0) - x * z' + log(1 + exp(-abs(x)))
参数:
- **input** (Variable|list) – 形状为[N x 1]的二维张量,其中N是批大小batch size。 该输入是由前一个运算计算而得的概率。
- **label** (Variable|list) – 具有形状[N x 1]的二维张量的真实值,其中N是批大小batch_size。
- **soft_max_up_bound** (float) – 若input > soft_max_up_bound, 输入会被向下限制。默认为15.0
- **soft_max_lower_bound** (float) – 若input < soft_max_lower_bound, 输入将会被向上限制。默认为-15.0
返回:具有形状[N x 1]的2-D张量,teacher_student_sigmoid_loss。
返回类型:变量
**代码示例**:
.. code-block:: python
cost = fluid.layers.teacher_student_sigmoid_loss(input=similarity, label=label)
......@@ -8522,6 +8986,61 @@ transpose
.. _cn_api_fluid_layers_tree_conv:
tree_conv
-------------------------------
.. py:function:: paddle.fluid.layers.tree_conv(nodes_vector, edge_set, output_size, num_filters=1, max_depth=2, act='tanh', param_attr=None, bias_attr=None, name=None)
基于树结构的卷积Tree-Based Convolution运算。
基于树的卷积是基于树的卷积神经网络(TBCNN,Tree-Based Convolution Neural Network)的一部分,它用于对树结构进行分类,例如抽象语法树。 Tree-Based Convolution提出了一种称为连续二叉树的数据结构,它将多路(multiway)树视为二叉树。 提出基于树的卷积论文: https://arxiv.org/abs/1409.5718v1
参数:
- **nodes_vector** (Variable) – (Tensor) 树上每个节点的特征向量(vector)。特征向量的形状必须为[max_tree_node_size,feature_size]
- **edge_set** (Variable) – (Tensor) 树的边。边必须带方向。边集的形状必须是[max_tree_node_size,2]
- **output_size** (int) – 输出特征宽度
- **num_filters** (int) – filter数量,默认值1
- **max_depth** (int) – filter的最大深度,默认值2
- **act** (str) – 激活函数,默认 tanh
- **param_attr** (ParamAttr) – filter的参数属性,默认None
- **bias_attr** (ParamAttr) – 此层bias的参数属性,默认None
- **name** (str) – 此层的名称(可选)。如果设置为None,则将自动命名层,默认为None
返回: (Tensor)子树的特征向量。输出张量的形状是[max_tree_node_size,output_size,num_filters]。输出张量可以是下一个树卷积层的新特征向量
返回类型:out(Variable)
**代码示例**:
.. code-block:: python
nodes_vector = layers.data(name='vectors', shape=[None, 10, 5], dtype='float32)
# batch size为None, 10代表数据集最大节点大小max_node_size,5表示向量宽度
edge_set = layers.data(name='edge_set', shape=[None, 10, 2], dtype='float32')
# None 代表batch size, 10 代表数据集的最大节点大小max_node_size, 2 代表每条边连接两个节点
# 边必须为有向边
out_vector = layers.tree_conv(nodes_vector, edge_set, 6, 1, 2, 'tanh',
ParamAttr(initializer=Constant(1.0), ParamAttr(initializer=Constant(1.0))
# 输出的形会是[None, 10, 6, 1],
# None 代表batch size, 10数据集的最大节点大小max_node_size, 6 代表输出大小output size, 1 代表 1 个filter
out_vector = layers.reshape(out_vector, shape=[None, 10, 6])
# reshape之后, 输出张量output tensor为下一个树卷积的nodes_vector
out_vector_2 = layers.tree_conv(out_vector, edge_set, 3, 4, 2, 'tanh',
ParamAttr(initializer=Constant(1.0), ParamAttr(initializer=Constant(1.0))
# 输出tensor也可以用来池化(论文中称为global pooling)
pooled = layers.reduce_max(out_vector, dims=2) # global 池化
......@@ -10272,7 +10791,49 @@ bipartite_match
.. _cn_api_fluid_layers_box_clip:
box_clip
-------------------------------
.. py:function:: paddle.fluid.layers.box_clip(input, im_info, name=None)
将box框剪切为 ``im_info`` 给出的大小。对于每个输入框,公式如下:
::
xmin = max(min(xmin, im_w - 1), 0)
ymin = max(min(ymin, im_h - 1), 0)
xmax = max(min(xmax, im_w - 1), 0)
ymax = max(min(ymax, im_h - 1), 0)
其中im_w和im_h是从im_info计算的:
::
im_h = round(height / scale)
im_w = round(weight / scale)
参数:
- **input (variable)** – 输入框,最后一个维度为4
- **im_info (variable)** – 具有(高度height,宽度width,比例scale)排列的形为[N,3]的图像的信息。高度和宽度是输入大小,比例是输入大小和原始大小的比率
- **name (str)** – 该层的名称。 为可选项
返回:剪切后的tensor
返回类型: Variable
**代码示例**
.. code-block:: python
boxes = fluid.layers.data(
name='data', shape=[8, 4], dtype='float32', lod_level=1)
im_info = fluid.layers.data(name='im_info', shape=[3])
out = fluid.layers.box_clip(
input=boxes, im_info=im_info, inplace=True)
......@@ -10546,7 +11107,84 @@ Detection Output Layer for Single Shot Multibox Detector(SSD)
.. _cn_api_fluid_layers_generate_mask_labels:
generate_mask_labels
-------------------------------
.. py:function:: paddle.fluid.layers.generate_mask_labels(im_info, gt_classes, is_crowd, gt_segms, rois, labels_int32, num_classes, resolution)
**为Mask-RCNN生成mask标签**
对于给定的 RoI (Regions of Interest) 和相应的标签,该运算符可以对前景RoI进行采样。 该mask branch对每个前景RoI还具有 :math:`K*M^{2}` 维输出目标,用于编码分辨率为M×M的K个二进制mask,K个种类中的各种类分别对应一个这样的二进制mask。 此mask输出目标用于计算掩码分支的损失。
请注意groud-truth(真实值,下简称GT)分段的数据格式。假设分段如下, 第一个实例有两个GT对象。 第二个实例有一个GT对象,该对象有两个GT分段。
::
#[
# [[[229.14, 370.9, 229.14, 370.9, ...]],
# [[343.7, 139.85, 349.01, 138.46, ...]]], # 第0个实例对象
# [[[500.0, 390.62, ...],[115.48, 187.86, ...]]] # 第1个实例对象
#]
batch_masks = []
for semgs in batch_semgs:
gt_masks = []
for semg in semgs:
gt_segm = []
for polys in semg:
gt_segm.append(np.array(polys).reshape(-1, 2))
gt_masks.append(gt_segm)
batch_masks.append(gt_masks)
place = fluid.CPUPlace()
feeder = fluid.DataFeeder(place=place, feed_list=feeds)
feeder.feed(batch_masks)
参数:
- **im_info** (Variable) – 具有形状[N,3]的2-D张量。 N是批量大小,其每个元素是图像的[高度,宽度,比例],对应第二维中的3。图像比例是 :math:`\frac{target\_size}{original\_size}` 。
- **gt_classes** (Variable) – 形为[M,1]的2-D LoDTensor。 M是真实值的总数,其每个元素都是一个类标签,对应第二维中的1。
- **is_crowd** (Variable) – 一个形为 ``gt_classes`` 的2-D LoDTensor,每个元素都是一个标志,指示一个groundtruth是否为crowd(群)。
- **gt_segms** (Variable) – 这个输入是一个形状为[S,2]的2D LoDTensor,它的LoD级别为3。通常用户不需要理解LoD,但用户应该在Reader中返回正确的数据格式。LoD [0]表示每个实例中GT对象的数目。 LoD [1]表示每个对象的分段数。 LoD [2]表示每个分段的多边形(polygon)数。S为多边形坐标点的总数。每个元素是(x,y)坐标点。
- **rois** (Variable) – 形为[R,4]的2-D LoDTensor。 R是RoI的总数,其中每个元素是在原始图像范围内具有(xmin,ymin,xmax,ymax)格式的边界框(bounding box)。
- **labels_int32** (Variable) – 形为[R,1]且类型为int32的2-D LoDTensor。 R与rois中的R含义相同。每个元素都反映了RoI的一个类标签。
- **num_classes** (int) – 种类数目
- **resolution** (int) – mask预测的分辨率
返回:
- 形为[P,4]的2D LoDTensor。 P是采样出的RoI总数。每个元素都是在原始图像大小范围内具有[xmin,ymin,xmax,ymax]格式的边界框(bounding box)。
- mask_rois_has_mask_int32(Variable):形状为[P,1]的2D LoDTensor,其中每个元素为对于输入的RoI进行输出的mask RoI 索引
- mask_int32(Variable):形状为[P,K * M * M]的2D LoDTensor,K为种类数,M为mask预测的分辨率,每个元素都是二进制目标mask值。
返回类型:mask_rois (Variable)
**代码示例**:
.. code-block:: python
im_info = fluid.layers.data(name="im_info", shape=[3],
dtype="float32")
gt_classes = fluid.layers.data(name="gt_classes", shape=[1],
dtype="float32", lod_level=1)
is_crowd = fluid.layers.data(name="is_crowd", shape=[1],
dtype="float32", lod_level=1)
gt_masks = fluid.layers.data(name="gt_masks", shape=[2],
dtype="float32", lod_level=3)
# rois, labels_int32 可以是
# fluid.layers.generate_proposal_labels 的输出
mask_rois, mask_index, mask_int32 = fluid.layers.generate_mask_labels(
im_info=im_info,
gt_classes=gt_classes,
is_crowd=is_crowd,
gt_segms=gt_masks,
rois=rois,
labels_int32=labels_int32,
num_classes=81,
resolution=14)
......@@ -10738,9 +11376,62 @@ multi_box_head
.. _cn_api_fluid_layers_multiclass_nms:
multiclass_nms
-------------------------------
.. py:function:: paddle.fluid.layers.multiclass_nms(bboxes, scores, score_threshold, nms_top_k, keep_top_k, nms_threshold=0.3, normalized=True, nms_eta=1.0, background_label=0, name=None)
**多分类NMS**
该运算用于对边界框(bounding box)和评分进行多类非最大抑制(NMS)。
在NMS中,如果提供 ``score_threshold`` 阈值,则此运算符贪婪地选择具有高于 ``score_threshold`` 的高分数的检测边界框(bounding box)的子集,然后如果nms_top_k大于-1,则选择最大的nms_top_k置信度分数。 接着,该运算符基于 ``nms_threshold`` 和 ``nms_eta`` 参数,通过自适应阈值NMS移去与已经选择的框具有高IOU(intersection over union)重叠的框。
在NMS步骤后,如果keep_top_k大于-1,则每个图像最多保留keep_top_k个总bbox数。
参数:
- **bboxes** (Variable) – 支持两种类型的bbox(bounding box):
1. (Tensor)具有形[N,M,4]或[8 16 24 32]的3-D张量表示M个边界bbox的预测位置, N是批大小batch size。当边界框(bounding box)大小等于4时,每个边界框有四个坐标值,布局为[xmin,ymin,xmax,ymax]。
2. (LoDTensor)形状为[M,C,4] M的三维张量是边界框的数量,C是种类数量
- **scores** (Variable) – 支持两种类型的分数:
1. (tensor)具有形状[N,C,M]的3-D张量表示预测的置信度。 N是批量大小 batch size,C是种类数目,M是边界框bounding box的数量。对于每个类别,存在对应于M个边界框的总M个分数。请注意,M等于bboxes的第二维。
2. (LoDTensor)具有形状[M,C]的2-D LoDTensor。 M是bbox的数量,C是种类数目。在这种情况下,输入bboxes应该是形为[M,C,4]的第二种情况。
- **background_label** (int) – 背景标签(类别)的索引,背景标签(类别)将被忽略。如果设置为-1,则将考虑所有类别。默认值:0
- **score_threshold** (float) – 过滤掉低置信度分数的边界框的阈值。如果没有提供,请考虑所有边界框。
- **nms_top_k** (int) – 根据通过score_threshold的过滤后而得的检测(detection)的置信度,所需要保留的最大检测数。
- **nms_threshold** (float) – 在NMS中使用的阈值。默认值:0.3 。
- **nms_eta** (float) – 在NMS中使用的阈值。默认值:1.0 。
- **keep_top_k** (int) – NMS步骤后每个图像要保留的总bbox数。 -1表示在NMS步骤之后保留所有bbox。
- **normalized** (bool) – 检测是否已经经过正则化。默认值:True 。
- **name** (str) – 多类nms op(此op)的名称,用于自定义op在网络中的命名。默认值:None 。
返回:形为[No,6]的2-D LoDTensor,表示检测(detections)结果。每行有6个值:[标签label,置信度confidence,xmin,ymin,xmax,ymax]。或形为[No,10]的2-D LoDTensor,用来表示检测结果。 每行有10个值:[标签label,置信度confidence,x1,y1,x2,y2,x3,y3,x4,y4]。 No是检测的总数。 如果对所有图像都没有检测到的box,则lod将设置为{1},而Out仅包含一个值-1。 (1.3版本之后,当未检测到box时,lod从{0}更改为{1})
返回类型:Out
**代码示例**
.. code-block:: python
boxes = fluid.layers.data(name='bboxes', shape=[81, 4],
dtype='float32', lod_level=1)
scores = fluid.layers.data(name='scores', shape=[81],
dtype='float32', lod_level=1)
out = fluid.layers.multiclass_nms(bboxes=boxes,
scores=scores,
background_label=0,
score_threshold=0.5,
nms_top_k=400,
nms_threshold=0.3,
keep_top_k=200,
normalized=False)
......@@ -11085,7 +11776,90 @@ target_assign
gt, matched_indices, mismatch_value=0)
.. _cn_api_fluid_layers_yolov3_loss:
yolov3_loss
-------------------------------
.. py:function:: paddle.fluid.layers.yolov3_loss(x, gtbox, gtlabel, anchors, anchor_mask, class_num, ignore_thresh, downsample_ratio, name=None)
该运算通过给定的预测结果和真实框生成yolov3损失。
之前的网络的输出形状为[N,C,H,W],而H和W应该相同,用来指定网格(grid)大小。每个网格点预测给定的数目的边界框(bounding boxes),这个给定的数字是由 ``anchors`` 指定的,我们将它记为S。在第二维(表示通道的维度)中,C的值应为S *(class_num + 5),class_num是源数据集的对象种类数(如coco中为80),另外,除了存储4个边界框位置坐标x,y,w,h,还包括边界框以及每个anchor框的one-hot关键字的置信度得分。
假设有四个表征位置的坐标为 :math:`t_x, t_y, t_w, t_h` ,那么边界框的预测将会如下定义:
$$
b_x = \\sigma(t_x) + c_x
$$
$$
b_y = \\sigma(t_y) + c_y
$$
$$
b_w = p_w e^{t_w}
$$
$$
b_h = p_h e^{t_h}
$$
在上面的等式中, :math:`c_x, c_y` 是当前网格的左上角, :math:`p_w, p_h` 由anchors指定。
至于置信度得分,它是anchor框和真实框之间的IoU的逻辑回归值,anchor框的得分最高为1,此时该anchor框对应着最大IoU。
如果anchor框之间的IoU大于忽略阀值ignore_thresh,则该anchor框的置信度评分损失将会被忽略。
         
因此,yolov3损失包括三个主要部分,框位置损失,置信度评分损失,分类损失。L2损失用于
框坐标(w,h),同时,sigmoid交叉熵损失用于框坐标(x,y),置信度评分损失和分类损失。
         
每个真实框在所有anchor中找到最匹配的anchor,预测各anchor框都将会产生所有三种损失的计算,但是没有匹配GT box(ground truth box真实框)的anchor的预测只会产生目标损失。
为了权衡大框(box)和小(box)之间的框坐标损失,框坐标损失将与比例权重相乘而得。即:
$$
weight_{box} = 2.0 - t_w * t_h
$$
最后的loss值将如下计算:
$$
loss = (loss_{xy} + loss_{wh}) * weight_{box} + loss_{conf} + loss_{class}
$$
参数:
- **x** (Variable) – YOLOv3损失运算的输入张量,这是一个形状为[N,C,H,W]的四维张量。H和W应该相同,第二维(C)存储框的位置信息,以及每个anchor box的置信度得分和one-hot分类
- **gtbox** (Variable) – 真实框,应该是[N,B,4]的形状。第三维用来承载x、y、w、h,x、y、w、h应该是输入图像相对值。 N是batch size,B是图像中所含有的的最多的box数目
- **gtlabel** (Variable) – 真实框的类id,应该形为[N,B]。
- **anchors** (list|tuple) – 指定anchor框的宽度和高度,它们将逐对进行解析
- **anchor_mask** (list|tuple) – 当前YOLOv3损失计算中使用的anchor的mask索引
- **class_num** (int) – 要预测的类数
- **ignore_thresh** (float) – 一定条件下忽略某框置信度损失的忽略阈值
- **downsample_ratio** (int) – 从网络输入到YOLOv3 loss输入的下采样率,因此应为第一,第二和第三个YOLOv3损失运算设置32,16,8
- **name** (string) – yolov3损失层的命名
返回: 具有形状[1]的1-D张量,yolov3损失的值
返回类型: 变量(Variable)
抛出异常:
- ``TypeError`` – yolov3_loss的输入x必须是Variable
- ``TypeError`` – 输入yolov3_loss的gtbox必须是Variable
- ``TypeError`` – 输入yolov3_loss的gtlabel必须是Variable
- ``TypeError`` – 输入yolov3_loss的anchors必须是list或tuple
- ``TypeError`` – 输入yolov3_loss的class_num必须是整数integer类型
- ``TypeError`` – 输入yolov3_loss的ignore_thresh必须是一个浮点数float类型
**代码示例**
.. code-block:: python
x = fluid.layers.data(name='x', shape=[255, 13, 13], dtype='float32')
gtbox = fluid.layers.data(name='gtbox', shape=[6, 5], dtype='float32')
gtlabel = fluid.layers.data(name='gtlabel', shape=[6, 1], dtype='int32')
anchors = [10, 13, 16, 30, 33, 23, 30, 61, 62, 45, 59, 119, 116, 90, 156, 198, 373, 326]
anchor_mask = [0, 1, 2]
loss = fluid.layers.yolov3_loss(x=x, gtbox=gtbox, gtlabel=gtlabel, anchors=anchors,
anchor_mask=anchor_mask, class_num=80,
ignore_thresh=0.7, downsample_ratio=32)
......
***
<a name="FAQ"></a>
# **FAQ**
- 报错“nccl.h找不到”
> 请[安装nccl2](https://developer.nvidia.com/nccl/nccl-download)
- 报错`Cannot uninstall 'six'.`
> 此问题可能与系统中已有Python有关,请使用`pip install paddlepaddle --ignore-installed six`(CPU)或`pip install paddlepaddle --ignore-installed six`(GPU)解决
- CentOS6下如何编译python2.7为共享库?
> 使用以下指令:
......@@ -29,10 +36,7 @@
ln -s gcc-4.8 gcc
ln -s g++-4.8 g++
- 遇到paddlepaddle*.whl is not a supported wheel on this platform?
- 遇到paddlepaddle.whl is not a supported wheel on this platform?
> 出现这个问题的主要原因是,没有找到和当前系统匹配的paddlepaddle安装包。 请检查Python版本是否为2.7系列。另外最新的pip官方源中的安装包默认是manylinux1标准, 需要使用最新的pip (>9.0.0) 才可以安装。您可以执行以下指令更新您的pip:
......@@ -47,28 +51,6 @@
> 请参照GitHub上[Issue12079](https://github.com/PaddlePaddle/Paddle/issues/12079)
- 什么是 Docker?
> 如果您没有听说 Docker,可以把它想象为一个类似 virtualenv 的系统,但是虚拟的不仅仅是 Python 的运行环境。
- Docker 还是虚拟机?
> 有人用虚拟机来类比 Docker。需要强调的是:Docker 不会虚拟任何硬件,Docker container 里运行的编译工具实际上都是在本机的 CPU 和操作系统上直接运行的,性能和把编译工具安装在本机运行一样。
- 为什么用 Docker?
> 把工具和配置都安装在一个 Docker image 里可以标准化编译环境。这样如果遇到问题,其他人可以复现问题以便帮助。
另外,对于习惯使用Windows和MacOS的开发者来说,使用Docker就不用配置交叉编译环境了。
- 可以选择不用Docker吗?
> 当然可以。大家可以用把开发工具安装进入 Docker image 一样的方式,把这些工具安装到本机。这篇文档介绍基于 Docker 的开发流程,是因为这个流程比其他方法都更简便。
- 学习 Docker 有多难?
> 理解 Docker 并不难,大概花十分钟看一下[这篇文章](https://zhuanlan.zhihu.com/p/19902938)。
这可以帮您省掉花一小时安装和配置各种开发工具,以及切换机器时需要新安装的辛苦。别忘了 PaddlePaddle 更新可能导致需要新的开发工具。更别提简化问题复现带来的好处了。
- 可以用 IDE 吗?
> 当然可以,因为源码就在本机上。IDE 默认调用 make 之类的程序来编译源码,我们只需要配置 IDE 来调用 Docker 命令编译源码即可。
......@@ -81,10 +63,6 @@
> 是的。我们的 Docker image 运行一个 [Bash 脚本](https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/paddle/scripts/paddle_build.sh)。这个脚本调用`make -j$(nproc)` 来启动和 CPU 核一样多的进程来并行编译。
- Docker 需要 sudo?
> 如果用自己的电脑开发,自然也就有管理员权限(sudo)了。如果用公用的电脑开发,需要请管理员安装和配置好 Docker。此外,PaddlePaddle 项目在努力开始支持其他不需要 sudo 的集装箱技术,比如 rkt。
- 在 Windows/MacOS 上编译很慢?
> Docker 在 Windows 和 MacOS 都可以运行。不过实际上是运行在一个 Linux 虚拟机上。可能需要注意给这个虚拟机多分配一些 CPU 和内存,以保证编译高效。具体做法请参考[issue627](https://github.com/PaddlePaddle/Paddle/issues/627)。
......
......@@ -324,40 +324,7 @@ PaddePaddle通过编译时指定路径来实现引用各种BLAS/CUDA/cuDNN库。
您可以在 [Release History](https://pypi.org/project/paddlepaddle-gpu/#history) 中找到PaddlePaddle-gpu的各个发行版本。
***
<a name="dockers"></a>
</br></br>
## **安装镜像表及简介**
<p align="center">
<table>
<thead>
<tr>
<th> 版本号 </th>
<th> 版本说明 </th>
</tr>
</thead>
<tbody>
<tr>
<td> hub.baidubce.com/paddlepaddle/paddle:latest </td>
<td> 最新的预先安装好PaddlePaddle CPU版本的镜像 </td>
</tr>
<tr>
<td> hub.baidubce.com/paddlepaddle/paddle:latest-dev </td>
<td> 最新的PaddlePaddle的开发环境 </td>
</tr>
<tr>
<td> hub.baidubce.com/paddlepaddle/paddle:[Version] </td>
<td> 将version换成具体的版本,历史版本的预安装好PaddlePaddle的镜像 </td>
</tr>
<tr>
<td> hub.baidubce.com/paddlepaddle/paddle:latest-gpu </td>
<td> 最新的预先安装好PaddlePaddle GPU版本的镜像 </td>
</tr>
</tbody>
</table>
</p>
您可以在 [DockerHub](https://hub.docker.com/r/paddlepaddle/paddle/tags/) 中找到PaddlePaddle的各个发行的版本的docker镜像。
***
......@@ -381,81 +348,82 @@ PaddePaddle通过编译时指定路径来实现引用各种BLAS/CUDA/cuDNN库。
<tbody>
<tr>
<td> cpu-noavx-mkl </td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-cpu-noavx-mkl/paddlepaddle-1.2.0-cp27-cp27mu-linux_x86_64.whl">
paddlepaddle-1.2.0-cp27-cp27mu-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-cpu-noavx-mkl/paddlepaddle-1.2.0-cp27-cp27m-linux_x86_64.whl">
paddlepaddle-1.2.0-cp27-cp27m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-cpu-noavx-mkl/paddlepaddle-1.2.0-cp35-cp35m-linux_x86_64.whl">
paddlepaddle-1.2.0-cp35-cp35m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-cpu-noavx-mkl/paddlepaddle-1.2.0-cp36-cp36m-linux_x86_64.whl">
paddlepaddle-1.2.0-cp36-cp36m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-cpu-noavx-mkl/paddlepaddle-1.2.0-cp37-cp37m-linux_x86_64.whl">
paddlepaddle-1.2.0-cp37-cp37m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/1.3.0-cpu-noavx-mkl/paddlepaddle-1.3.0-cp27-cp27mu-linux_x86_64.whl">
paddlepaddle-1.3.0-cp27-cp27mu-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/1.3.0-cpu-noavx-mkl/paddlepaddle-1.3.0-cp27-cp27m-linux_x86_64.whl">
paddlepaddle-1.3.0-cp27-cp27m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/1.3.0-cpu-noavx-mkl/paddlepaddle-1.3.0-cp35-cp35m-linux_x86_64.whl">
paddlepaddle-1.3.0-cp35-cp35m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/1.3.0-cpu-noavx-mkl/paddlepaddle-1.3.0-cp36-cp36m-linux_x86_64.whl">
paddlepaddle-1.3.0-cp36-cp36m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/1.3.0-cpu-noavx-mkl/paddlepaddle-1.3.0-cp37-cp37m-linux_x86_64.whl">
paddlepaddle-1.3.0-cp37-cp37m-linux_x86_64.whl</a></td>
</tr>
<tr>
<td> cpu_avx_mkl </td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-cpu-avx-mkl/paddlepaddle-1.2.0-cp27-cp27mu-linux_x86_64.whl">
paddlepaddle-1.2.0-cp27-cp27mu-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-cpu-avx-mkl/paddlepaddle-1.2.0-cp27-cp27m-linux_x86_64.whl">
paddlepaddle-1.2.0-cp27-cp27m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-cpu-avx-mkl/paddlepaddle-1.2.0-cp35-cp35m-linux_x86_64.whl">
paddlepaddle-1.2.0-cp35-cp35m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-cpu-avx-mkl/paddlepaddle-1.2.0-cp36-cp36m-linux_x86_64.whl">
paddlepaddle-1.2.0-cp36-cp36m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-cpu-avx-mkl/paddlepaddle-1.2.0-cp37-cp37m-linux_x86_64.whl">
paddlepaddle-1.2.0-cp37-cp37m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/1.3.0-cpu-avx-mkl/paddlepaddle-1.3.0-cp27-cp27mu-linux_x86_64.whl">
paddlepaddle-1.3.0-cp27-cp27mu-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/1.3.0-cpu-avx-mkl/paddlepaddle-1.3.0-cp27-cp27m-linux_x86_64.whl">
paddlepaddle-1.3.0-cp27-cp27m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/1.3.0-cpu-avx-mkl/paddlepaddle-1.3.0-cp35-cp35m-linux_x86_64.whl">
paddlepaddle-1.3.0-cp35-cp35m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/1.3.0-cpu-avx-mkl/paddlepaddle-1.3.0-cp36-cp36m-linux_x86_64.whl">
paddlepaddle-1.3.0-cp36-cp36m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/1.3.0-cpu-avx-mkl/paddlepaddle-1.3.0-cp37-cp37m-linux_x86_64.whl">
paddlepaddle-1.3.0-cp37-cp37m-linux_x86_64.whl</a></td>
</tr>
<tr>
<td> cpu_avx_openblas </td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-cpu-avx-openblas/paddlepaddle-1.2.0-cp27-cp27mu-linux_x86_64.whl">
paddlepaddle-1.2.0-cp27-cp27mu-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-cpu-avx-openblas/paddlepaddle-1.2.0-cp27-cp27m-linux_x86_64.whl"> paddlepaddle-1.2.0-cp27-cp27m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-cpu-avx-openblas/paddlepaddle-1.2.0-cp35-cp35m-linux_x86_64.whl">
paddlepaddle-1.2.0-cp35-cp35m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-cpu-avx-openblas/paddlepaddle-1.2.0-cp36-cp36m-linux_x86_64.whl">
paddlepaddle-1.2.0-cp36-cp36m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-cpu-avx-openblas/paddlepaddle-1.2.0-cp37-cp37m-linux_x86_64.whl">
paddlepaddle-1.2.0-cp37-cp37m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/1.3.0-cpu-avx-openblas/paddlepaddle-1.3.0-cp27-cp27mu-linux_x86_64.whl">
paddlepaddle-1.3.0-cp27-cp27mu-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/1.3.0-cpu-avx-openblas/paddlepaddle-1.3.0-cp27-cp27m-linux_x86_64.whl">
paddlepaddle-1.3.0-cp27-cp27m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/1.3.0-cpu-avx-openblas/paddlepaddle-1.3.0-cp35-cp35m-linux_x86_64.whl">
paddlepaddle-1.3.0-cp35-cp35m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/1.3.0-cpu-avx-openblas/paddlepaddle-1.3.0-cp36-cp36m-linux_x86_64.whl">
paddlepaddle-1.3.0-cp36-cp36m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/1.3.0-cpu-avx-openblas/paddlepaddle-1.3.0-cp37-cp37m-linux_x86_64.whl">
paddlepaddle-1.3.0-cp37-cp37m-linux_x86_64.whl</a></td>
</tr>
<tr>
<td> cuda8.0_cudnn5_avx_mkl </td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-gpu-cuda8-cudnn5-avx-mkl/paddlepaddle_gpu-1.2.0.post85-cp27-cp27mu-linux_x86_64.whl"> paddlepaddle_gpu-1.2.0-cp27-cp27mu-linux_x86_64.whl</a></td>
<td><a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-gpu-cuda8-cudnn5-avx-mkl/paddlepaddle_gpu-1.2.0.post85-cp27-cp27m-linux_x86_64.whl"> paddlepaddle_gpu-1.2.0-cp27-cp27m-linux_x86_64.whl</a></td>
<td><a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-gpu-cuda8-cudnn5-avx-mkl/paddlepaddle_gpu-1.2.0.post85-cp35-cp35m-linux_x86_64.whl"> paddlepaddle_gpu-1.2.0-cp35-cp35m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-gpu-cuda8-cudnn5-avx-mkl/paddlepaddle_gpu-1.2.0.post85-cp36-cp36m-linux_x86_64.whl">
paddlepaddle_gpu-1.2.0-cp36-cp36m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-gpu-cuda8-cudnn5-avx-mkl/paddlepaddle_gpu-1.2.0.post85-cp37-cp37m-linux_x86_64.whl">
paddlepaddle_gpu-1.2.0-cp37-cp37m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/1.3.0-gpu-cuda8-cudnn5-avx-mkl/paddlepaddle_gpu-1.3.0.post85-cp27-cp27mu-linux_x86_64.whl"> paddlepaddle_gpu-1.3.0-cp27-cp27mu-linux_x86_64.whl</a></td>
<td><a href="http://paddle-wheel.bj.bcebos.com/1.3.0-gpu-cuda8-cudnn5-avx-mkl/paddlepaddle_gpu-1.3.0.post85-cp27-cp27m-linux_x86_64.whl"> paddlepaddle_gpu-1.3.0-cp27-cp27m-linux_x86_64.whl</a></td>
<td><a href="http://paddle-wheel.bj.bcebos.com/1.3.0-gpu-cuda8-cudnn5-avx-mkl/paddlepaddle_gpu-1.3.0.post85-cp35-cp35m-linux_x86_64.whl"> paddlepaddle_gpu-1.3.0-cp35-cp35m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/1.3.0-gpu-cuda8-cudnn5-avx-mkl/paddlepaddle_gpu-1.3.0.post85-cp36-cp36m-linux_x86_64.whl">
paddlepaddle_gpu-1.3.0-cp36-cp36m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/1.3.0-gpu-cuda8-cudnn5-avx-mkl/paddlepaddle_gpu-1.3.0.post85-cp37-cp37m-linux_x86_64.whl">
paddlepaddle_gpu-1.3.0-cp37-cp37m-linux_x86_64.whl</a></td>
</tr>
<tr>
<td> cuda8.0_cudnn7_noavx_mkl </td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-gpu-cuda8-cudnn7-noavx-mkl/paddlepaddle_gpu-1.2.0-cp27-cp27mu-linux_x86_64.whl"> paddlepaddle_gpu-1.2.0-cp27-cp27mu-linux_x86_64.whl</a></td>
<td><a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-gpu-cuda8-cudnn7-noavx-mkl/paddlepaddle_gpu-1.2.0-cp27-cp27m-linux_x86_64.whl"> paddlepaddle_gpu-1.2.0-cp27-cp27m-linux_x86_64.whl</a></td>
<td><a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-gpu-cuda8-cudnn7-noavx-mkl/paddlepaddle_gpu-1.2.0-cp35-cp35m-linux_x86_64.whl"> paddlepaddle_gpu-1.2.0-cp35-cp35m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-gpu-cuda8-cudnn7-noavx-mkl/paddlepaddle_gpu-1.2.0-cp36-cp36m-linux_x86_64.whl">
paddlepaddle_gpu-1.2.0-cp36-cp36m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-gpu-cuda8-cudnn7-noavx-mkl/paddlepaddle_gpu-1.2.0-cp37-cp37m-linux_x86_64.whl">
paddlepaddle_gpu-1.2.0-cp37-cp37m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/1.3.0-gpu-cuda8-cudnn7-noavx-mkl/paddlepaddle_gpu-1.3.0-cp27-cp27mu-linux_x86_64.whl"> paddlepaddle_gpu-1.3.0-cp27-cp27mu-linux_x86_64.whl</a></td>
<td><a href="http://paddle-wheel.bj.bcebos.com/1.3.0-gpu-cuda8-cudnn7-noavx-mkl/paddlepaddle_gpu-1.3.0-cp27-cp27m-linux_x86_64.whl"> paddlepaddle_gpu-1.3.0-cp27-cp27m-linux_x86_64.whl</a></td>
<td><a href="http://paddle-wheel.bj.bcebos.com/1.3.0-gpu-cuda8-cudnn7-noavx-mkl/paddlepaddle_gpu-1.3.0-cp35-cp35m-linux_x86_64.whl"> paddlepaddle_gpu-1.3.0-cp35-cp35m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/1.3.0-gpu-cuda8-cudnn7-noavx-mkl/paddlepaddle_gpu-1.3.0-cp36-cp36m-linux_x86_64.whl">
paddlepaddle_gpu-1.3.0-cp36-cp36m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/1.3.0-gpu-cuda8-cudnn7-noavx-mkl/paddlepaddle_gpu-1.3.0-cp37-cp37m-linux_x86_64.whl">
paddlepaddle_gpu-1.3.0-cp37-cp37m-linux_x86_64.whl</a></td>
</tr>
<tr>
<td> cuda8.0_cudnn7_avx_mkl </td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-gpu-cuda8-cudnn7-avx-mkl/paddlepaddle_gpu-1.2.0.post87-cp27-cp27mu-linux_x86_64.whl"> paddlepaddle_gpu-1.2.0.post87-cp27-cp27mu-linux_x86_64.whl</a></td>
<td><a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-gpu-cuda8-cudnn7-avx-mkl/paddlepaddle_gpu-1.2.0.post87-cp27-cp27m-linux_x86_64.whl"> paddlepaddle_gpu-1.2.0.post87-cp27-cp27m-linux_x86_64.whl</a></td>
<td><a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-gpu-cuda8-cudnn7-avx-mkl/paddlepaddle_gpu-1.2.0.post87-cp35-cp35m-linux_x86_64.whl"> paddlepaddle_gpu-1.2.0.post87-cp35-cp35m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-gpu-cuda8-cudnn7-avx-mkl/paddlepaddle_gpu-1.2.0.post87-cp36-cp36m-linux_x86_64.whl">
paddlepaddle_gpu-1.2.0.post87-cp36-cp36m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-gpu-cuda8-cudnn7-avx-mkl/paddlepaddle_gpu-1.2.0.post87-cp37-cp37m-linux_x86_64.whl">
paddlepaddle_gpu-1.2.0.post87-cp37-cp37m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/1.3.0-gpu-cuda8-cudnn7-avx-mkl/paddlepaddle_gpu-1.3.0.post87-cp27-cp27mu-linux_x86_64.whl"> paddlepaddle_gpu-1.3.0.post87-cp27-cp27mu-linux_x86_64.whl</a></td>
<td><a href="http://paddle-wheel.bj.bcebos.com/1.3.0-gpu-cuda8-cudnn7-avx-mkl/paddlepaddle_gpu-1.3.0.post87-cp27-cp27m-linux_x86_64.whl"> paddlepaddle_gpu-1.3.0.post87-cp27-cp27m-linux_x86_64.whl</a></td>
<td><a href="http://paddle-wheel.bj.bcebos.com/1.3.0-gpu-cuda8-cudnn7-avx-mkl/paddlepaddle_gpu-1.3.0.post87-cp35-cp35m-linux_x86_64.whl"> paddlepaddle_gpu-1.3.0.post87-cp35-cp35m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/1.3.0-gpu-cuda8-cudnn7-avx-mkl/paddlepaddle_gpu-1.3.0.post87-cp36-cp36m-linux_x86_64.whl">
paddlepaddle_gpu-1.3.0.post87-cp36-cp36m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/1.3.0-gpu-cuda8-cudnn7-avx-mkl/paddlepaddle_gpu-1.3.0.post87-cp37-cp37m-linux_x86_64.whl">
paddlepaddle_gpu-1.3.0.post87-cp37-cp37m-linux_x86_64.whl</a></td>
</tr>
<tr>
<td> cuda9.0_cudnn7_avx_mkl </td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-gpu-cuda9-cudnn7-avx-mkl/paddlepaddle_gpu-1.2.0.post97-cp27-cp27mu-linux_x86_64.whl"> paddlepaddle_gpu-1.2.0-cp27-cp27mu-linux_x86_64.whl</a></td>
<td><a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-gpu-cuda9-cudnn7-avx-mkl/paddlepaddle_gpu-1.2.0.post97-cp27-cp27m-linux_x86_64.whl"> paddlepaddle_gpu-1.2.0-cp27-cp27m-linux_x86_64.whl</a></td>
<td><a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-gpu-cuda9-cudnn7-avx-mkl/paddlepaddle_gpu-1.2.0.post97-cp35-cp35m-linux_x86_64.whl"> paddlepaddle_gpu-1.2.0-cp35-cp35m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-gpu-cuda9-cudnn7-avx-mkl/paddlepaddle_gpu-1.2.0.post97-cp36-cp36m-linux_x86_64.whl">
paddlepaddle_gpu-1.2.0-cp36-cp36m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/1.2.0-gpu-cuda9-cudnn7-avx-mkl/paddlepaddle_gpu-1.2.0.post97-cp37-cp37m-linux_x86_64.whl">
paddlepaddle_gpu-1.2.0-cp37-cp37m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/1.3.0-gpu-cuda9-cudnn7-avx-mkl/paddlepaddle_gpu-1.3.0.post97-cp27-cp27mu-linux_x86_64.whl"> paddlepaddle_gpu-1.3.0-cp27-cp27mu-linux_x86_64.whl</a></td>
<td><a href="http://paddle-wheel.bj.bcebos.com/1.3.0-gpu-cuda9-cudnn7-avx-mkl/paddlepaddle_gpu-1.3.0.post97-cp27-cp27m-linux_x86_64.whl"> paddlepaddle_gpu-1.3.0-cp27-cp27m-linux_x86_64.whl</a></td>
<td><a href="http://paddle-wheel.bj.bcebos.com/1.3.0-gpu-cuda9-cudnn7-avx-mkl/paddlepaddle_gpu-1.3.0.post97-cp35-cp35m-linux_x86_64.whl"> paddlepaddle_gpu-1.3.0-cp35-cp35m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/1.3.0-gpu-cuda9-cudnn7-avx-mkl/paddlepaddle_gpu-1.3.0.post97-cp36-cp36m-linux_x86_64.whl">
paddlepaddle_gpu-1.3.0-cp36-cp36m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/1.3.0-gpu-cuda9-cudnn7-avx-mkl/paddlepaddle_gpu-1.3.0.post97-cp37-cp37m-linux_x86_64.whl">
paddlepaddle_gpu-1.3.0-cp37-cp37m-linux_x86_64.whl</a></td>
</tr>
</tbody>
</table>
......@@ -479,75 +447,75 @@ PaddePaddle通过编译时指定路径来实现引用各种BLAS/CUDA/cuDNN库。
<tbody>
<tr>
<td> cpu-noavx-mkl </td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-cpu-noavx-mkl/paddlepaddle-latest-cp27-cp27mu-linux_x86_64.whl">
<td> <a href="http://paddle-wheel.bj.bcebos.com/latest-cpu-noavx-mkl/paddlepaddle-latest-cp27-cp27mu-linux_x86_64.whl">
paddlepaddle-latest-cp27-cp27mu-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-cpu-noavx-mkl/paddlepaddle-latest-cp27-cp27m-linux_x86_64.whl">
<td> <a href="http://paddle-wheel.bj.bcebos.com/latest-cpu-noavx-mkl/paddlepaddle-latest-cp27-cp27m-linux_x86_64.whl">
paddlepaddle-latest-cp27-cp27m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-cpu-noavx-mkl/paddlepaddle-latest-cp35-cp35m-linux_x86_64.whl">
<td> <a href="http://paddle-wheel.bj.bcebos.com/latest-cpu-noavx-mkl/paddlepaddle-latest-cp35-cp35m-linux_x86_64.whl">
paddlepaddle-latest-cp35-cp35m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-cpu-noavx-mkl/paddlepaddle-latest-cp36-cp36m-linux_x86_64.whl">
<td> <a href="http://paddle-wheel.bj.bcebos.com/latest-cpu-noavx-mkl/paddlepaddle-latest-cp36-cp36m-linux_x86_64.whl">
paddlepaddle-latest-cp36-cp36m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-cpu-noavx-mkl/paddlepaddle-latest-cp37-cp37m-linux_x86_64.whl">
<td> <a href="http://paddle-wheel.bj.bcebos.com/latest-cpu-noavx-mkl/paddlepaddle-latest-cp37-cp37m-linux_x86_64.whl">
paddlepaddle-latest-cp37-cp37m-linux_x86_64.whl</a></td>
</tr>
<tr>
<td> cpu_avx_mkl </td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-cpu-avx-mkl/paddlepaddle-latest-cp27-cp27mu-linux_x86_64.whl">
<td> <a href="http://paddle-wheel.bj.bcebos.com/latest-cpu-avx-mkl/paddlepaddle-latest-cp27-cp27mu-linux_x86_64.whl">
paddlepaddle-latest-cp27-cp27mu-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-cpu-avx-mkl/paddlepaddle-latest-cp27-cp27m-linux_x86_64.whl">
<td> <a href="http://paddle-wheel.bj.bcebos.com/latest-cpu-avx-mkl/paddlepaddle-latest-cp27-cp27m-linux_x86_64.whl">
paddlepaddle-latest-cp27-cp27m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-cpu-avx-mkl/paddlepaddle-latest-cp35-cp35m-linux_x86_64.whl">
<td> <a href="http://paddle-wheel.bj.bcebos.com/latest-cpu-avx-mkl/paddlepaddle-latest-cp35-cp35m-linux_x86_64.whl">
paddlepaddle-latest-cp35-cp35m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-cpu-avx-mkl/paddlepaddle-latest-cp36-cp36m-linux_x86_64.whl">
<td> <a href="http://paddle-wheel.bj.bcebos.com/latest-cpu-avx-mkl/paddlepaddle-latest-cp36-cp36m-linux_x86_64.whl">
paddlepaddle-latest-cp36-cp36m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-cpu-avx-mkl/paddlepaddle-latest-cp37-cp37m-linux_x86_64.whl">
<td> <a href="http://paddle-wheel.bj.bcebos.com/latest-cpu-avx-mkl/paddlepaddle-latest-cp37-cp37m-linux_x86_64.whl">
paddlepaddle-latest-cp37-cp37m-linux_x86_64.whl</a></td>
</tr>
<tr>
<td> cpu_avx_openblas </td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-cpu-avx-openblas/paddlepaddle-latest-cp27-cp27mu-linux_x86_64.whl">
<td> <a href="http://paddle-wheel.bj.bcebos.com/latest-cpu-avx-openblas/paddlepaddle-latest-cp27-cp27mu-linux_x86_64.whl">
paddlepaddle-latest-cp27-cp27mu-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-cpu-avx-openblas/paddlepaddle-latest-cp27-cp27m-linux_x86_64.whl"> paddlepaddle-latest-cp27-cp27m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-cpu-avx-openblas/paddlepaddle-latest-cp35-cp35m-linux_x86_64.whl">
<td> <a href="http://paddle-wheel.bj.bcebos.com/latest-cpu-avx-openblas/paddlepaddle-latest-cp27-cp27m-linux_x86_64.whl"> paddlepaddle-latest-cp27-cp27m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/latest-cpu-avx-openblas/paddlepaddle-latest-cp35-cp35m-linux_x86_64.whl">
paddlepaddle-latest-cp35-cp35m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-cpu-avx-openblas/paddlepaddle-latest-cp36-cp36m-linux_x86_64.whl">
<td> <a href="http://paddle-wheel.bj.bcebos.com/latest-cpu-avx-openblas/paddlepaddle-latest-cp36-cp36m-linux_x86_64.whl">
paddlepaddle-latest-cp36-cp36m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-cpu-avx-openblas/paddlepaddle-latest-cp37-cp37m-linux_x86_64.whl">
<td> <a href="http://paddle-wheel.bj.bcebos.com/latest-cpu-avx-openblas/paddlepaddle-latest-cp37-cp37m-linux_x86_64.whl">
paddlepaddle-latest-cp37-cp37m-linux_x86_64.whl</a></td>
</tr>
<tr>
<td> cuda8.0_cudnn5_avx_mkl </td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda8-cudnn5-avx-mkl/paddlepaddle_gpu-latest-cp27-cp27mu-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp27-cp27mu-linux_x86_64.whl</a></td>
<td><a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda8-cudnn5-avx-mkl/paddlepaddle_gpu-latest-cp27-cp27m-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp27-cp27m-linux_x86_64.whl</a></td>
<td><a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda8-cudnn5-avx-mkl/paddlepaddle_gpu-latest-cp35-cp35m-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp35-cp35m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda8-cudnn5-avx-mkl/paddlepaddle_gpu-latest-cp36-cp36m-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp36-cp36m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda8-cudnn5-avx-mkl/paddlepaddle_gpu-latest-cp37-cp37m-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp37-cp37m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda8-cudnn5-avx-mkl/paddlepaddle_gpu-latest-cp27-cp27mu-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp27-cp27mu-linux_x86_64.whl</a></td>
<td><a href="http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda8-cudnn5-avx-mkl/paddlepaddle_gpu-latest-cp27-cp27m-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp27-cp27m-linux_x86_64.whl</a></td>
<td><a href="http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda8-cudnn5-avx-mkl/paddlepaddle_gpu-latest-cp35-cp35m-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp35-cp35m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda8-cudnn5-avx-mkl/paddlepaddle_gpu-latest-cp36-cp36m-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp36-cp36m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda8-cudnn5-avx-mkl/paddlepaddle_gpu-latest-cp37-cp37m-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp37-cp37m-linux_x86_64.whl</a></td>
</tr>
<tr>
<td> cuda8.0_cudnn7_noavx_mkl </td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda8-cudnn7-noavx-mkl/paddlepaddle_gpu-latest-cp27-cp27mu-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp27-cp27mu-linux_x86_64.whl</a></td>
<td><a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda8-cudnn7-noavx-mkl/paddlepaddle_gpu-latest-cp27-cp27m-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp27-cp27m-linux_x86_64.whl</a></td>
<td><a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda8-cudnn7-noavx-mkl/paddlepaddle_gpu-latest-cp35-cp35m-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp35-cp35m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda8-cudnn7-noavx-mkl/paddlepaddle_gpu-latest-cp36-cp36m-linux_x86_64.whl">
<td> <a href="http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda8-cudnn7-noavx-mkl/paddlepaddle_gpu-latest-cp27-cp27mu-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp27-cp27mu-linux_x86_64.whl</a></td>
<td><a href="http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda8-cudnn7-noavx-mkl/paddlepaddle_gpu-latest-cp27-cp27m-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp27-cp27m-linux_x86_64.whl</a></td>
<td><a href="http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda8-cudnn7-noavx-mkl/paddlepaddle_gpu-latest-cp35-cp35m-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp35-cp35m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda8-cudnn7-noavx-mkl/paddlepaddle_gpu-latest-cp36-cp36m-linux_x86_64.whl">
paddlepaddle_gpu-latest-cp36-cp36m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda8-cudnn7-noavx-mkl/paddlepaddle_gpu-latest-cp37-cp37m-linux_x86_64.whl">
<td> <a href="http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda8-cudnn7-noavx-mkl/paddlepaddle_gpu-latest-cp37-cp37m-linux_x86_64.whl">
paddlepaddle_gpu-latest-cp37-cp37m-linux_x86_64.whl</a></td>
</tr>
<tr>
<td> cuda8.0_cudnn7_avx_mkl </td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda8-cudnn7-avx-mkl/paddlepaddle_gpu-latest-cp27-cp27mu-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp27-cp27mu-linux_x86_64.whl</a></td>
<td><a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda8-cudnn7-avx-mkl/paddlepaddle_gpu-latest-cp27-cp27m-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp27-cp27m-linux_x86_64.whl</a></td>
<td><a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda8-cudnn7-avx-mkl/paddlepaddle_gpu-latest-cp35-cp35m-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp35-cp35m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda8-cudnn7-avx-mkl/paddlepaddle_gpu-latest-cp36-cp36m-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp36-cp36m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda8-cudnn7-avx-mkl/paddlepaddle_gpu-latest-cp37-cp37m-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp37-cp37m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda8-cudnn7-avx-mkl/paddlepaddle_gpu-latest-cp27-cp27mu-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp27-cp27mu-linux_x86_64.whl</a></td>
<td><a href="http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda8-cudnn7-avx-mkl/paddlepaddle_gpu-latest-cp27-cp27m-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp27-cp27m-linux_x86_64.whl</a></td>
<td><a href="http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda8-cudnn7-avx-mkl/paddlepaddle_gpu-latest-cp35-cp35m-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp35-cp35m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda8-cudnn7-avx-mkl/paddlepaddle_gpu-latest-cp36-cp36m-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp36-cp36m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda8-cudnn7-avx-mkl/paddlepaddle_gpu-latest-cp37-cp37m-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp37-cp37m-linux_x86_64.whl</a></td>
</tr>
<tr>
<td> cuda9.0_cudnn7_avx_mkl </td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda9-cudnn7-avx-mkl/paddlepaddle_gpu-latest-cp27-cp27mu-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp27-cp27mu-linux_x86_64.whl</a></td>
<td><a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda9-cudnn7-avx-mkl/paddlepaddle_gpu-latest-cp27-cp27m-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp27-cp27m-linux_x86_64.whl</a></td>
<td><a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda9-cudnn7-avx-mkl/paddlepaddle_gpu-latest-cp35-cp35m-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp35-cp35m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda9-cudnn7-avx-mkl/paddlepaddle_gpu-latest-cp36-cp36m-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp36-cp36m-linux_x86_64.whl</a></td>
<td> <a href="http://paddlepaddle.org/download?url=http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda9-cudnn7-avx-mkl/paddlepaddle_gpu-latest-cp37-cp37m-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp37-cp37m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda9-cudnn7-avx-mkl/paddlepaddle_gpu-latest-cp27-cp27mu-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp27-cp27mu-linux_x86_64.whl</a></td>
<td><a href="http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda9-cudnn7-avx-mkl/paddlepaddle_gpu-latest-cp27-cp27m-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp27-cp27m-linux_x86_64.whl</a></td>
<td><a href="http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda9-cudnn7-avx-mkl/paddlepaddle_gpu-latest-cp35-cp35m-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp35-cp35m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda9-cudnn7-avx-mkl/paddlepaddle_gpu-latest-cp36-cp36m-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp36-cp36m-linux_x86_64.whl</a></td>
<td> <a href="http://paddle-wheel.bj.bcebos.com/latest-gpu-cuda9-cudnn7-avx-mkl/paddlepaddle_gpu-latest-cp37-cp37m-linux_x86_64.whl"> paddlepaddle_gpu-latest-cp37-cp37m-linux_x86_64.whl</a></td>
</tr>
</tbody>
</table>
......
***
# **CentOS下从源码编译**
本说明将介绍如何在*64位台式机或笔记本电脑*以及CentOS系统下编译PaddlePaddle,我们支持的Ubuntu系统需满足以下要求:
## 环境准备
* CentOS 7 / 6(这涉及到相关工具是否能被正常安装)
* *64位操作系统*
* *CentOS 6 / 7*
* *Python 2.7/3.5/3.6/3.7*
* *pip或pip3 >= 9.0.1*
## 确定要编译的版本
* **仅支持CPU的PaddlePaddle**
## 选择CPU/GPU
<!--* 支持GPU的PaddlePaddle,为了使得PaddlePaddle程序运行的更加迅速,我们通常使用GPU对PaddlePaddle程序进行加速,但安装GPU版本的PaddlePaddle需要先拥有满足以下条件的NVIDIA® GPU(具体安装流程和配置请务必参见NVIDIA官方文档:[For CUDA](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/)[For cuDNN](https://docs.nvidia.com/deeplearning/sdk/cudnn-install/)
* *Cuda 工具包9.0配合cuDNN v7*
* *Cuda 工具包8.0配合cuDNN v7*
* *GPU运算能力超过1.0的硬件设备*-->
* 目前仅支持在CentOS环境下编译安装CPU版本的PaddlePaddle
## 选择如何编译
我们在CentOS的系统下提供2种编译方式:
## 安装步骤
* Docker源码编译(不支持CentOS 6 / 7的GPU版本)(该镜像已经包含python2.7、python3.6、python3.7环境)
* 直接本机源码编译(不支持CentOS 6的全部版本以及CentOS 7的GPU版本)
在CentOS的系统下有2种编译方式:
我们更加推荐**使用Docker进行编译**,因为我们在把工具和配置都安装在一个 Docker image 里。这样如果遇到问题,其他人可以复现问题以便帮助。另外,对于习惯使用Windows和MacOS的开发者来说,使用Docker就不用配置交叉编译环境了。需要强调的是:Docker 不会虚拟任何硬件,Docker container 里运行的编译工具实际上都是在本机的 CPU 和操作系统上直接运行的,性能和把编译工具安装在本机运行一样。
同样对于那些出于各种原因不能够安装Docker的用户我们也提供了可以从**本机直接源码编译**的方法,但是由于在本机上的情况更加复杂,因此我们只支持特定的系统。
* Docker源码编译
* 本机源码编译(不支持CentOS 6)
<a name="ct_docker"></a>
<br/><br/>
### ***使用Docker编译***
为了更好的使用Docker并避免发生问题,我们推荐使用**最高版本的Docker**,关于**安装和使用Docker**的细节请参阅Docker[官方文档](https://docs.docker.com/install/)
[Docker](https://docs.docker.com/install/)是一个开源的应用容器引擎。使用Docker,既可以将PaddlePaddle的安装&使用与系统环境隔离,也可以与主机共享GPU、网络等资源
使用Docker编译PaddlePaddle,您需要:
- 在本地主机上[安装Docker](https://hub.docker.com/search/?type=edition&offering=community)
<!--TODO add the following back when support gpu version on Cent-->
- 如需在Linux开启GPU支持,请[安装nvidia-docker](https://github.com/NVIDIA/nvidia-docker)
当您已经**正确安装Docker**后你就可以开始**使用Docker编译PaddlePaddle**
请您按照以下步骤安装
1. 请首先选择您希望储存PaddlePaddle的路径,然后在该路径下使用以下命令将PaddlePaddle的源码从github克隆到本地当前目录下名为Paddle的文件夹中:
......@@ -44,27 +37,36 @@
2. 进入Paddle目录下: `cd Paddle`
3. 利用我们提供的镜像(使用该命令您可以不必提前下载镜像)
3. 创建并进入已配置好编译环境的Docker容器
`docker run --name paddle-test -v $PWD:/paddle --network=host -it hub.baidubce.com/paddlepaddle/paddle:latest-dev /bin/bash`
> --name paddle-test为您创建的Docker容器命名为paddle-test,-v $PWD:/paddle 将当前目录挂载到Docker容器中的/paddle目录下(Linux中PWD变量会展开为当前路径的[绝对路径](https://baike.baidu.com/item/绝对路径/481185)),-it 与宿主机保持交互状态,`hub.baidubce.com/paddlepaddle/paddle` 使用名为`hub.baidubce.com/paddlepaddle/paddle:latest-dev`的镜像创建Docker容器,/bin/bash 进入容器后启动/bin/bash命令。
4. 进入Docker后进入paddle目录下:`cd paddle`
4. 进入Docker后进入paddle目录下:
`cd paddle`
5. 切换到较稳定版本下进行编译:
`git checkout v1.1`
`git checkout [分支名]`
例如:
`git checkout release/1.2`
注意:python3.6、python3.7版本从release/1.2分支开始支持
6. 创建并进入/paddle/build路径下:
`mkdir -p /paddle/build && cd /paddle/build`
7. 使用以下命令安装相关依赖:(For Python3:请选择您希望用的python版本对应的pip,如pip3.5、pip3.6)
7. 使用以下命令安装相关依赖:
For Python2: pip install protobuf==3.1.0
For Python3: pip3.5 install protobuf==3.1.0
注意:以上用Python3.5命令来举例,如您的Python版本为3.6/3.7,请将上述命令中的Python3.5改成Python3.6/Python3.7
> 安装protobuf 3.1.0。
......@@ -75,7 +77,7 @@
8. 执行cmake:
>具体编译选项含义请参见[编译选项表](../Tables.html/#Compile)
>请注意修改参数`-DPY_VERSION`为您希望编译使用的python版本, 如以下命令中`-DPY_VERSION=3.5`表示python版本为3.5.x
>请注意修改参数`-DPY_VERSION`为您希望编译使用的python版本, 例如`-DPY_VERSION=3.5`表示python版本为3.5.x
* 对于需要编译**CPU版本PaddlePaddle**的用户:
......@@ -91,35 +93,23 @@
10. 编译成功后进入`/paddle/build/python/dist`目录下找到生成的`.whl`包: `cd /paddle/build/python/dist`
11. 在当前机器或目标机器安装编译好的`.whl`包:(For Python3:请选择您希望用的python版本对应的pip,如pip3.5、pip3.6)
11. 在当前机器或目标机器安装编译好的`.whl`包:
For Python2: pip install (whl包的名字)
For Python3: pip3.5 install (whl包的名字)
注意:以上涉及Python3的命令,用Python3.5来举例,如您的Python版本为3.6/3.7,请将上述命令中的Python3.5改成Python3.6/Python3.7
至此您已经成功使用Docker安装PaddlePaddle,您只需要进入Docker容器后运行PaddlePaddle即可,更多Docker使用请参见[Docker官方文档](https://docs.docker.com)
> 注:PaddlePaddle Docker镜像为了减小体积,默认没有安装`vim`,您可以在容器中执行 `apt-get install -y vim` 安装后,在容器中编辑代码。
恭喜您,现在您已经完成使用Docker编译PaddlePaddle的过程。
恭喜,至此您已完成PaddlePaddle的编译安装。您只需要进入Docker容器后运行PaddlePaddle,即可开始使用。更多Docker使用请参见[Docker官方文档](https://docs.docker.com)
> 注:PaddlePaddle Docker镜像为了减小体积,默认没有安装`vim`,您可以在容器中执行 `apt-get install -y vim` 来安装
<a name="ct_source"></a>
<br/><br/>
### ***本机编译***
**请严格按照以下指令顺序执行**
1. 检查您的计算机和操作系统是否符合我们支持的编译标准: `uname -m && cat /etc/*release`
2. 更新`yum`的源: `yum update`, 并添加必要的yum源:`yum install -y epel-release`, 并提前安装openCV
2. 更新`yum`的源: `yum update`, 并添加必要的yum源:`yum install -y epel-release`, 并提前安装[OpenCV](https://opencv.org/releases.html)
3. 安装必要的工具`bzip2`以及`make``yum install -y bzip2``yum install -y make`
......@@ -159,7 +149,7 @@
5. 进入虚环境:`workon paddle-venv`
6. **执行编译前**请您确认在虚环境中安装有[编译依赖表](../Tables.html/#third_party)中提到的相关依赖:<!--TODO:Link 安装依赖表到这里-->
6. **执行编译前**请您确认在虚环境中安装有[编译依赖表](../Tables.html/#third_party)中提到的相关依赖:
* 这里特别提供`patchELF`的安装方法,其他的依赖可以使用`yum install`或者`pip install`/`pip3 install` 后跟依赖名称和版本安装:
......@@ -172,7 +162,11 @@
- `cd Paddle`
8. 切换到较稳定release分支下进行编译(从1.2分支开始支持python3.6及3.7版本):
8. 切换到较稳定release分支下进行编译:
`git checkout [分支名]`
例如:
`git checkout release/1.2`
......@@ -182,7 +176,7 @@
10. 执行cmake:
>具体编译选项含义请参见[编译选项表](../Tables.html/#Compile)<!--TODO:Link 安装选项表到这里-->
>具体编译选项含义请参见[编译选项表](../Tables.html/#Compile)
* 对于需要编译**CPU版本PaddlePaddle**的用户:
......@@ -203,16 +197,14 @@
`pip install (whl包的名字)`或`pip3 install (whl包的名字)`
恭喜您,现在您已经完成使本机编译PaddlePaddle的过程了。
恭喜,至此您已完成PaddlePaddle的编译安装
<br/><br/>
## ***验证安装***
安装完成后您可以使用:`python` 进入Python解释器,然后使用`import paddle.fluid` 验证是否安装成功。
安装完成后您可以使用:`python` `python3` 进入Python解释器,然后使用`import paddle.fluid` 验证是否安装成功。
<br/><br/>
## ***如何卸载***
请使用以下命令卸载PaddlePaddle(使用docker安装PaddlePaddle的用户请进入包含PaddlePaddle的容器中使用以下命令,请使用对应版本pip)
请使用以下命令卸载PaddlePaddle:
* ***CPU版本的PaddlePaddle***: `pip uninstall paddlepaddle``pip3 uninstall paddlepaddle`
使用Docker安装PaddlePaddle的用户,请进入包含PaddlePaddle的容器中使用上述命令,注意使用对应版本的pip
***
# **MacOS下从源码编译**
本说明将介绍如何在*64位台式机或笔记本电脑*以及MacOS系统下编译PaddlePaddle,我们支持的MacOS系统需满足#以下要求:
## 环境准备
* MacOS 10.12/10.13/10.14(这涉及到相关工具是否能被正常安装)
* *64位操作系统*
* *MacOS 10.12/10.13/10.14*
* *Python 2.7/3.5/3.6/3.7*
* *pip或pip3 >= 9.0.1*
## 确定要编译的版本
* **仅支持CPU的PaddlePaddle**
<!--* 支持GPU的PaddlePaddle,为了使得PaddlePaddle程序运行的更加迅速,我们通常使用GPU对PaddlePaddle程序进行加速,但安装GPU版本的PaddlePaddle需要先拥有满足以下条件的NVIDIA® GPU(具体安装流程和配置请务必参见NVIDIA官方文档:[For CUDA](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/)[For cuDNN](https://docs.nvidia.com/deeplearning/sdk/cudnn-install/)
* *Cuda 工具包9.0配合cuDNN v7*
* *Cuda 工具包8.0配合cuDNN v7*
* *GPU运算能力超过1.0的硬件设备*-->
## 选择如何编译
在MacOS 10.12/10.13/10.14 的系统下我们提供2种编译方式:
* Docker源码编译 (该镜像已经包含python2.7、python3.6、python3.7环境)
* 直接本机源码编译
我们更加推荐**使用Docker进行编译**,因为我们在把工具和配置都安装在一个 Docker image 里。这样如果遇到问题,其他人可以复现问题以便帮助。另外,对于习惯使用Windows和MacOS的开发者来说,使用Docker就不用配置交叉编译环境了。需要强调的是:Docker 不会虚拟任何硬件,Docker container 里运行的编译工具实际上都是在本机的 CPU 和操作系统上直接运行的,性能和把编译工具安装在本机运行一样。
同样对于那些出于各种原因不能够安装Docker的用户我们也提供了可以从**本机直接源码编译**的方法,但是由于在本机上的情况更加复杂,因此我们只支持特定的系统。
## 选择CPU/GPU
* 目前仅支持在MacOS环境下编译安装CPU版本的PaddlePaddle
## 安装步骤
在MacOS系统下有2种编译方式:
* Docker源码编译
* 本机源码编译
<a name="mac_docker"></a>
<br/><br/>
### ***使用Docker编译***
为了更好的使用Docker并避免发生问题,我们推荐使用**最高版本的Docker**,关于**安装和使用Docker**的细节请参阅Docker[官方文档](https://docs.docker.com/install/)
[Docker](https://docs.docker.com/install/)是一个开源的应用容器引擎。使用Docker,既可以将PaddlePaddle的安装&使用与系统环境隔离,也可以与主机共享GPU、网络等资源
使用Docker编译PaddlePaddle,您需要:
> 请注意,在MacOS系统下登陆docker需要使用您的dockerID进行登录,否则将出现`Authenticate Failed`错误。
- 在本地主机上[安装Docker](https://hub.docker.com/search/?type=edition&offering=community)
- 使用Docker ID登陆Docker,以避免出现`Authenticate Failed`错误
当您已经**正确安装Docker**后你就可以开始**使用Docker编译PaddlePaddle**
请您按照以下步骤安装
1. 进入Mac的终端
......@@ -52,27 +38,36 @@
3. 进入Paddle目录下: `cd Paddle`
4. 利用我们提供的镜像(使用该命令您可以不必提前下载镜像)
4. 创建并进入满足编译环境的Docker容器
`docker run --name paddle-test -v $PWD:/paddle --network=host -it hub.baidubce.com/paddlepaddle/paddle:latest-dev /bin/bash`
> --name paddle-test为您创建的Docker容器命名为paddle-test,-v $PWD:/paddle 将当前目录挂载到Docker容器中的/paddle目录下(Linux中PWD变量会展开为当前路径的[绝对路径](https://baike.baidu.com/item/绝对路径/481185)),-it 与宿主机保持交互状态,`hub.baidubce.com/paddlepaddle/paddle:latest-dev` 使用名为`hub.baidubce.com/paddlepaddle/paddle:latest-dev`的镜像创建Docker容器,/bin/bash 进入容器后启动/bin/bash命令。
5. 进入Docker后进入paddle目录下:`cd paddle`
5. 进入Docker后进入paddle目录下:
`cd paddle`
6. 切换到较稳定版本下进行编译:
`git checkout v1.1`
`git checkout [分支名]`
例如:
`git checkout release/1.2`
注意:python3.6、python3.7版本从release/1.2分支开始支持
7. 创建并进入/paddle/build路径下:
`mkdir -p /paddle/build && cd /paddle/build`
8. 使用以下命令安装相关依赖:(For Python3:请选择您希望用的python版本对应的pip,如pip3.5、pip3.6)
8. 使用以下命令安装相关依赖:
For Python2: pip install protobuf==3.1.0
For Python3: pip3.5 install protobuf==3.1.0
注意:以上用Python3.5命令来举例,如您的Python版本为3.6/3.7,请将上述命令中的Python3.5改成Python3.6/Python3.7
> 安装protobuf 3.1.0。
......@@ -82,18 +77,14 @@
9. 执行cmake:
>具体编译选项含义请参见[编译选项表](../Tables.html/#Compile)<!--TODO: Link 编译选项表到这里-->
>请注意修改参数`-DPY_VERSION`为您希望编译使用的python版本, 如以下命令中`-DPY_VERSION=3.5`表示python版本为3.5.x
>具体编译选项含义请参见[编译选项表](../Tables.html/#Compile)
>请注意修改参数`-DPY_VERSION`为您希望编译使用的python版本, 例如`-DPY_VERSION=3.5`表示python版本为3.5.x
* 对于需要编译**CPU版本PaddlePaddle**的用户:
`cmake .. -DPY_VERSION=3.5 -DWITH_FLUID_ONLY=ON -DWITH_GPU=OFF -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release`
> 我们目前不支持CentOS下GPU版本PaddlePaddle的编译
> 我们目前不支持MacOS下GPU版本PaddlePaddle的编译
10. 执行编译:
......@@ -103,30 +94,28 @@
11. 编译成功后进入`/paddle/build/python/dist`目录下找到生成的`.whl`包: `cd /paddle/build/python/dist`
12. 在当前机器或目标机器安装编译好的`.whl`包:(For Python3:请选择您希望用的python版本对应的pip,如pip3.5、pip3.6)
12. 在当前机器或目标机器安装编译好的`.whl`包:
For Python2: pip install (whl包的名字)
For Python3: pip3.5 install (whl包的名字)
注意:以上涉及Python3的命令,用Python3.5来举例,如您的Python版本为3.6/3.7,请将上述命令中的Python3.5改成Python3.6/Python3.7
至此您已经成功使用Docker安装PaddlePaddle,您只需要进入Docker容器后运行PaddlePaddle即可,更多Docker使用请参见[Docker官方文档](https://docs.docker.com)
> 注:PaddlePaddle Docker镜像为了减小体积,默认没有安装`vim`,您可以在容器中执行 `apt-get install -y vim` 安装后,在容器中编辑代码。
恭喜您,现在您已经完成使用Docker编译PaddlePaddle的过程。
恭喜,至此您已完成PaddlePaddle的编译安装。您只需要进入Docker容器后运行PaddlePaddle,即可开始使用。更多Docker使用请参见[Docker官方文档](https://docs.docker.com)
> 注:PaddlePaddle Docker镜像为了减小体积,默认没有安装`vim`,您可以在容器中执行 `apt-get install -y vim` 来安装
<a name="mac_source"></a>
<br/><br/>
### ***本机编译***
**请严格按照以下指令顺序执行**
1. 检查您的计算机和操作系统是否符合我们支持的编译标准: `uname -m` 并且在`关于本机`中查看系统版本。并提前安装[OpenCV](https://opencv.org/releases.html)
1. 检查您的计算机和操作系统是否符合我们支持的编译标准: `uname -m` 并且在`关于本机`中查看系统版本。并提前安装openCV。
2. 安装Python以及pip:
2. 安装python以及pip:
> **请不要使用MacOS中自带python**,我们强烈建议您使用[Homebrew](https://brew.sh)安装python(对于**Python3**请使用python[官方下载](https://www.python.org/downloads/mac-osx/)python3.5.x、python3.6.x、python3.7.x), pip以及其他的依赖,这会大大降低您安装编译的难度。
> **请不要使用MacOS中自带Python**,我们强烈建议您使用[Homebrew](https://brew.sh)安装python(对于**Python3**请使用python[官方下载](https://www.python.org/downloads/mac-osx/)python3.5.x、python3.6.x、python3.7.x), pip以及其他的依赖,这将会使您高效编译。
For python2: brew install python@2
For python3: 使用Python官网安装
......@@ -155,9 +144,6 @@
- g. (可选)如果您是在MacOS 10.14上编译PaddlePaddle,请保证您已经安装了[对应版本](http://developer.apple.com/download)的Xcode。
5. **执行编译前**请您确认您的环境中安装有[编译依赖表](../Tables.html/#third_party)中提到的相关依赖,否则我们强烈推荐使用`Homebrew`安装相关依赖。
> MacOS下如果您未自行修改或安装过“编译依赖表”中提到的依赖,则仅需要使用`pip`安装`numpy,protobuf,wheel`,使用`homebrew`安装`wget,swig`,另外安装`cmake`即可
......@@ -171,24 +157,29 @@
- b. 如果您不想使用系统默认的blas而希望使用自己安装的OPENBLAS请参见[FAQ](../FAQ.html/#OPENBLAS)
6. 将PaddlePaddle的源码clone在当下目录下的Paddle的文件夹中,并进入Padde目录下:
- `git clone https://github.com/PaddlePaddle/Paddle.git`
- `cd Paddle`
7. 切换到较稳定release分支下进行编译:(注意,python3.6、python3.7版本是从1.2分支开始支持)
7. 切换到较稳定release分支下进行编译:
`git checkout [分支名]`
例如:
`git checkout release/1.2`
注意:python3.6、python3.7版本从release/1.2分支开始支持
8. 并且请创建并进入一个叫build的目录下:
`mkdir build && cd build`
9. 执行cmake:
>具体编译选项含义请参见[编译选项表](../Tables.html/#Compile)<!--TODO:Link 安装选项表到这里-->
>具体编译选项含义请参见[编译选项表](../Tables.html/#Compile)
* 对于需要编译**CPU版本PaddlePaddle**的用户:
......@@ -197,7 +188,6 @@
-DPYTHON_LIBRARY=${PYTHON_LIBRARY} -DWITH_FLUID_ONLY=ON -DWITH_GPU=OFF -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release
>`-DPY_VERSION=3.5`请修改为安装环境的Python版本
10. 使用以下命令来编译:
`make -j4`
......@@ -210,17 +200,14 @@
> 如果您的电脑上安装有多个python环境以及pip请参见[FAQ](../Tables.html/#MACPRO)
恭喜您,现在您已经完成使用本机编译PaddlePaddle的过程了。
恭喜,至此您已完成PaddlePaddle的编译安装
<br/><br/>
## ***验证安装***
安装完成后您可以使用:`python` 进入Python解释器,然后使用`import paddle.fluid` 验证是否安装成功。
安装完成后您可以使用:`python` `python3` 进入Python解释器,然后使用`import paddle.fluid` 验证是否安装成功。
<br/><br/>
## ***如何卸载***
请使用以下命令卸载PaddlePaddle(使用docker安装PaddlePaddle的用户请进入包含PaddlePaddle的容器中使用以下命令,请使用相应版本的pip):
请使用以下命令卸载PaddlePaddle
* ***CPU版本的PaddlePaddle***: `pip uninstall paddlepaddle``pip3 uninstall paddlepaddle`
使用Docker安装PaddlePaddle的用户,请进入包含PaddlePaddle的容器中使用上述命令,注意使用对应版本的pip
***
# **Ubuntu下从源码编译**
本说明将介绍如何在*64位台式机或笔记本电脑*以及Ubuntu系统下编译PaddlePaddle,我们支持的Ubuntu系统需满足以下要求:
## 环境准备
* *64位操作系统*
* *Ubuntu 14.04 /16.04 /18.04*
* *Python 2.7/3.5/3.6/3.7*
* *pip或pip3 >= 9.0.1*
* Ubuntu 14.04/16.04/18.04(这涉及到相关工具是否能被正常安装)
## 选择CPU/GPU
## 确定要编译的版本
* **仅支持CPU的PaddlePaddle**,如果您的系统没有 NVIDIA® GPU,则必须安装此版本。而此版本较GPU版本更加容易安
因此即使您的计算机上拥有GPU我们也推荐您先安装CPU版本的PaddlePaddle来检测您本地的环境是否适合。
* 如果您的计算机没有 NVIDIA® GPU,请编译CPU版的PaddlePaddle
* **支持GPU的PaddlePaddle**,为了使得PaddlePaddle程序运行的更加迅速,我们通常使用GPU对PaddlePaddle程序进行加速,但安装GPU版本的PaddlePaddle需要先拥有满足以下条件的NVIDIA® GPU(具体安装流程和配置请务必参见NVIDIA官方文档:[For CUDA](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/)[For cuDNN](https://docs.nvidia.com/deeplearning/sdk/cudnn-install/)
* 如果您的计算机有NVIDIA® GPU,并且满足以下条件,推荐编译GPU版的PaddlePaddle
* *CUDA 工具包9.0配合cuDNN v7*
* *CUDA 工具包8.0配合cuDNN v7*
* *CUDA 工具包8.0配合cuDNN v5*
* *GPU运算能力超过1.0的硬件设备*
## 选择如何编译
在Ubuntu的系统下我们提供2种编译方式:
* Docker源码编译 (该镜像已经包含python2.7、python3.6、python3.7环境)
* 直接本机源码编译(不支持ubuntu18.04下GPU版本)
## 安装步骤
我们更加推荐**使用Docker进行编译**,因为我们在把工具和配置都安装在一个 Docker image 里。这样如果遇到问题,其他人可以复现问题以便帮助。另外,对于习惯使用Windows和MacOS的开发者来说,使用Docker就不用配置交叉编译环境了。有人用虚拟机来类比 Docker。需要强调的是:Docker 不会虚拟任何硬件,Docker container 里运行的编译工具实际上都是在本机的 CPU 和操作系统上直接运行的,性能和把编译工具安装在本机运行一样。
在Ubuntu的系统下有2种编译方式:
我们也提供了可以从**本机直接源码编译**的方法,但是由于在本机上的情况更加复杂,我们只对特定系统提供了支持。
* Docker源码编译(暂不支持Ubuntu18.04下GPU版本)
* 本机源码编译
<a name="ubt_docker"></a>
### 用Docker编译
<br/><br/>
### ***使用Docker编译***
为了更好的使用Docker并避免发生问题,我们推荐使用**最高版本的Docker**,关于**安装和使用Docker**的细节请参阅Docker[官方文档](https://docs.docker.com/install/)
[Docker](https://docs.docker.com/install/)是一个开源的应用容器引擎。使用Docker,既可以将PaddlePaddle的安装&使用与系统环境隔离,也可以与主机共享GPU、网络等资源
> 请注意,要安装和使用支持 GPU 的PaddlePaddle版本,您必须先安装[nvidia-docker](https://github.com/NVIDIA/nvidia-docker)
使用Docker编译PaddlePaddle,您需要:
- 在本地主机上[安装Docker](https://hub.docker.com/search/?type=edition&offering=community)
- 如需在Linux开启GPU支持,请[安装nvidia-docker](https://github.com/NVIDIA/nvidia-docker)
当您已经**正确安装Docker**后你就可以开始**使用Docker编译PaddlePaddle**
请您按照以下步骤安装
1. 请首先选择您希望储存PaddlePaddle的路径,然后在该路径下使用以下命令将PaddlePaddle的源码从github克隆到本地当前目录下名为Paddle的文件夹中:
......@@ -46,47 +43,58 @@
2. 进入Paddle目录下: `cd Paddle`
3. 利用我们提供的镜像(使用该命令您可以不必提前下载镜像)
3. 创建并进入满足编译环境的Docker容器
`docker run --name paddle-test -v $PWD:/paddle --network=host -it hub.baidubce.com/paddlepaddle/paddle:latest-dev /bin/bash`
> --name paddle-test为您创建的Docker容器命名为paddle-test,-v $PWD:/paddle 将当前目录挂载到Docker容器中的/paddle目录下(Linux中PWD变量会展开为当前路径的[绝对路径](https://baike.baidu.com/item/绝对路径/481185)),-it 与宿主机保持交互状态,`hub.baidubce.com/paddlepaddle/paddle:latest-dev` 使用名为`hub.baidubce.com/paddlepaddle/paddle:latest-dev`的镜像创建Docker容器,/bin/bash 进入容器后启动/bin/bash命令。
4. 进入Docker后进入paddle目录下:`cd paddle`
4. 进入Docker后进入paddle目录下:
5. 切换到较稳定release分支下进行编译:(注意,python3.6、python3.7版本是从1.2分支开始支持)
`cd paddle`
5. 切换到较稳定release分支下进行编译:
`git checkout [分支名]`
例如:
`git checkout release/1.2`
注意:python3.6、python3.7版本从release/1.2分支开始支持
6. 创建并进入/paddle/build路径下:
`mkdir -p /paddle/build && cd /paddle/build`
7. 使用以下命令安装相关依赖:(For Python3:请选择您希望用的python版本对应的pip,如pip3.5、pip3.6)
7. 使用以下命令安装相关依赖:
For Python2: pip install protobuf==3.1.0
For Python3: pip3.5 install protobuf==3.1.0
注意:以上用Python3.5命令来举例,如您的Python版本为3.6/3.7,请将上述命令中的Python3.5改成Python3.6/Python3.7
> 安装protobuf 3.1.0。
`apt install patchelf`
> 安装patchelf,PatchELF 是一个小而实用的程序,用于修改ELF可执行文件的动态链接器和RPATH。
> 安装patchelf
这是一个小而实用的程序,用于修改ELF可执行文件的动态链接器和RPATH
8. 执行cmake:
>具体编译选项含义请参见[编译选项表](../Tables.html/#Compile)<!--TODO: Link 编译选项表到这里-->
>请注意修改参数`-DPY_VERSION`为您希望编译使用的python版本, 如以下命令中`-DPY_VERSION=3.5`表示python版本为3.5.x
>具体编译选项含义请参见[编译选项表](../Tables.html/#Compile)
* 对于需要编译**CPU版本PaddlePaddle**的用户:
>请注意修改参数`-DPY_VERSION`为您希望编译使用的python版本, 例如`-DPY_VERSION=3.5`表示python版本为3.5.x
* 编译**CPU版本PaddlePaddle**:
`cmake .. -DPY_VERSION=3.5 -DWITH_FLUID_ONLY=ON -DWITH_GPU=OFF -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release`
* 对于需要编译**GPU版本PaddlePaddle**的用户
* 编译**GPU版本PaddlePaddle**
`cmake .. -DPY_VERSION=3.5 -DWITH_FLUID_ONLY=ON -DWITH_GPU=ON -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release`
9. 执行编译:
`make -j$(nproc)`
......@@ -95,42 +103,37 @@
10. 编译成功后进入`/paddle/build/python/dist`目录下找到生成的`.whl`包: `cd /paddle/build/python/dist`
11. 在当前机器或目标机器安装编译好的`.whl`包:(For Python3:请选择您希望用的python版本对应的pip,如pip3.5、pip3.6)
11. 在当前机器或目标机器安装编译好的`.whl`包:
For Python2: pip install (whl包的名字)
For Python3: pip3.5 install (whl包的名字)
注意:以上涉及Python3的命令,用Python3.5来举例,如您的Python版本为3.6/3.7,请将上述命令中的Python3.5改成Python3.6/Python3.7
至此您已经成功使用Docker安装PaddlePaddle,您只需要进入Docker容器后运行PaddlePaddle即可,更多Docker使用请参见[Docker官方文档](https://docs.docker.com)
恭喜,至此您已完成PaddlePaddle的编译安装。您只需要进入Docker容器后运行PaddlePaddle,即可开始使用。更多Docker使用请参见[Docker官方文档](https://docs.docker.com)
> 注:PaddlePaddle Docker镜像为了减小体积,默认没有安装`vim`,您可以在容器中执行 `apt-get install -y vim` 安装后,在容器中编辑代码。
恭喜您,现在您已经完成使用Docker编译PaddlePaddle的过程。
> 注:PaddlePaddle Docker镜像为了减小体积,默认没有安装`vim`,您可以在容器中执行 `apt-get install -y vim` 来安装。
<a name="ubt_source"></a>
<br/><br/>
### ***本机编译***
**请严格按照以下指令顺序执行**
1. 检查您的计算机和操作系统是否符合我们支持的编译标准: `uname -m && cat /etc/*release`
2. 更新`apt`的源: `apt update`, 并提前安装openCV
2. 更新`apt`的源: `apt update`, 并提前安装[OpenCV](https://opencv.org/releases.html)
3. 我们支持使用virtualenv进行编译安装,首先请使用以下命令创建一个名为`paddle-venv`的虚环境:
* a. 安装Python-dev:(请安装与当前环境python版本匹配的python3.x-dev)
* a. 安装Python-dev:
For Python2: apt install python-dev
For Python3: apt install python3.5-dev
* b. 安装pip: (请保证拥有9.0.1及以上版本的pip):(请注意修改对应python3的版本)
* b. 安装pip: (请保证拥有9.0.1及以上版本的pip):
For Python2: apt install python-pip
For Python3: apt-get udpate && apt-get install -y software-properties-common && add-apt-repository ppa:deadsnakes/ppa && apt install curl && curl https://bootstrap.pypa.io/get-pip.py -o - | python3.5 && easy_install pip
* c. 安装虚环境`virtualenv`以及`virtualenvwrapper`并创建名为`paddle-venv`的虚环境:(请注意修改python版本)
* c. 安装虚环境`virtualenv`以及`virtualenvwrapper`并创建名为`paddle-venv`的虚环境:
1. `apt install virtualenv` 或 `pip install virtualenv` 或 `pip3 install virtualenv`
2. `apt install virtualenvwrapper` 或 `pip install virtualenvwrapper` 或 `pip3 install virtualenvwrapper`
......@@ -140,9 +143,11 @@
6. 按照`virtualenvwrapper.sh`中的描述,安装`virtualwrapper`
7. 创建名为`paddle-venv`的虚环境: `mkvirtualenv paddle-venv`
注意:以上涉及Python3的命令,用Python3.5来举例,如您的Python版本为3.6/3.7,请将上述命令中的Python3.5改成Python3.6/Python3.7
4. 进入虚环境:`workon paddle-venv`
5. **执行编译前**请您确认在虚环境中安装有[编译依赖表](../Tables.html/#third_party)中提到的相关依赖<!--TODO:Link 安装依赖表到这里-->
5. **执行编译前**请您确认在虚环境中安装有[编译依赖表](../Tables.html/#third_party)中提到的相关依赖:
* 这里特别提供`patchELF`的安装方法,其他的依赖可以使用`apt install`或者`pip install` 后跟依赖名称和版本安装:
......@@ -158,7 +163,11 @@
6. 切换到较稳定release分支下进行编译,将中括号以及其中的内容替换为**目标分支名**
`git checkout [name of target branch]`
`git checkout [分支名]`
例如:
`git checkout release/1.2`
7. 并且请创建并进入一个叫build的目录下:
......@@ -166,9 +175,9 @@
8. 执行cmake:
>具体编译选项含义请参见[编译选项表](../Tables.html/#Compile)<!--TODO:Link 安装选项表到这里-->
>具体编译选项含义请参见[编译选项表](../Tables.html/#Compile)
* 对于需要编译**CPU版本PaddlePaddle**的用户:(*For Python3: 请给PY_VERSION参数配置正确的python版本*)
* 对于需要编译**CPU版本PaddlePaddle**的用户:
For Python2: cmake .. -DWITH_FLUID_ONLY=ON -DWITH_GPU=OFF -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release
For Python3: cmake .. -DPY_VERSION=3.5 -DWITH_FLUID_ONLY=ON -DWITH_GPU=OFF -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release
......@@ -185,7 +194,7 @@
For Python2: cmake .. -DWITH_FLUID_ONLY=ON -DWITH_GPU=ON -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release
For Python3: cmake .. -DPY_VERSION=3.5 -DWITH_FLUID_ONLY=ON -DWITH_GPU=ON -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release
>`-DPY_VERSION=3.5`请修改为安装环境的Python版本
注意:以上涉及Python3的命令,用Python3.5来举例,如您的Python版本为3.6/3.7,请将上述命令中的Python3.5改成Python3.6/Python3.7
9. 使用以下命令来编译:
......@@ -197,17 +206,16 @@
`pip install (whl包的名字)`或`pip3 install (whl包的名字)`
恭喜您,现在您已经完成使本机编译PaddlePaddle的过程了。
恭喜,至此您已完成PaddlePaddle的编译安装
<br/><br/>
## ***验证安装***
安装完成后您可以使用:`python``python3` 进入Python解释器,然后使用`import paddle.fluid` 验证是否安装成功。
<br/><br/>
## ***如何卸载***
请使用以下命令卸载PaddlePaddle(使用docker安装PaddlePaddle的用户请进入包含PaddlePaddle的容器中使用以下命令,请使用对应版本的pip)
请使用以下命令卸载PaddlePaddle:
* ***CPU版本的PaddlePaddle***: `pip uninstall paddlepaddle``pip3 uninstall paddlepaddle`
* ***GPU版本的PaddlePaddle***: `pip uninstall paddlepaddle-gpu``pip3 uninstall paddlepaddle-gpu`
使用Docker安装PaddlePaddle的用户,请进入包含PaddlePaddle的容器中使用上述命令,注意使用对应版本的pip
***
# **Windows下从源码编译**
本说明将介绍如何在*64位台式机或笔记本电脑*以及Windows 10系统下编译PaddlePaddle,我们支持的Windows系统需满足以下要求:
## 环境准备
* Windows 10 家庭版/专业版/企业版
* Visual Studio 2015 Update3
* *64位操作系统*
* *Windows 10 家庭版/专业版/企业版*
* *Python 2.7/3.5/3.6/3.7*
* *pip或pip3 >= 9.0.1*
* *Visual Studio 2015 Update3*
## 确定要编译的版本
## 选择CPU/GPU
* 1.3支持GPU的PaddlePaddle,为了使得PaddlePaddle程序运行的更加迅速,我们通常使用GPU对PaddlePaddle程序进行加速,但安装GPU版本的PaddlePaddle需要先拥有满足以下条件的NVIDIA GPU(具体安装流程和配置请务必参见NVIDIA官方文档:[For CUDA](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/)[For cuDNN](https://docs.nvidia.com/deeplearning/sdk/cudnn-install/)
* Cuda 工具包8.0配合cuDNN v7
* GPU运算能力超过1.0的硬件设备
* 如果您的计算机没有 NVIDIA® GPU,请编译CPU版的PaddlePaddle
## 选择如何编译
我们在Windows的系统下提供1种编译方式:
* 如果您的计算机有NVIDIA® GPU,并且满足以下条件,推荐编译GPU版的PaddlePaddle
* *CUDA 工具包8.0配合cuDNN v7*
* *GPU运算能力超过1.0的硬件设备*
* 直接本机源码编译
## 安装步骤
由于在本机上的情况更加复杂,因此我们只支持特定的系统。
在Windows的系统下提供1种编译方式:
请注意:当前版本不支持NCCL,分布式等相关功能。
<a name="ct_source"></a>
* 直接本机源码编译(暂不支持NCCL,分布式等相关功能)
<a name="win_source"></a>
### ***本机编译***
**请严格按照以下指令顺序执行**
1. 检查您的计算机和操作系统是否符合我们支持的编译标准
* Windows 10 家庭版/专业版/企业版
* Visual Studio 2015 Update3
1. 安装必要的工具 cmake,git 以及 python :
2. 安装必要的工具 cmake,git 以及 python :
> cmake 需要3.5 及以上版本, 可在官网[下载](https://cmake.org/download/),并添加到环境变量中。
> cmake 需要3.5 及以上版本, 可以在官网进行下载,并添加到环境变量中。 [下载地址](https://cmake.org/download/)
> python 需要2.7 及以上版本, 可在官网[下载](https://www.python.org/download/releases/2.7/)。
> git可以在官网进行下载,并添加到环境变量中。 [下载地址](https://gitforwindows.org/)
> python 需要2.7 及以上版本, 同时确保 `numpy, protobuf, wheel` 等模块得到安装 [下载地址](https://www.python.org/download/releases/2.7/)
> python2.7下, 使用`pip`命令就可以; 如果是python3.x, 则建议使用`pip3`命令来使用pip安装工具。
> 需要安装`numpy, protobuf, wheel` 。python2.7下, 请使用`pip`命令; 如果是python3.x, 请使用`pip3`命令。
* 安装 numpy 包可以通过命令 `pip install numpy` 或 `pip3 install numpy`
......@@ -49,26 +39,33 @@
* 安装 wheel 包可以通过命令 `pip install wheel` 或 `pip3 install wheel`
3. 将PaddlePaddle的源码clone在当下目录下的Paddle的文件夹中,并进入Padde目录下:
> git可以在官网[下载](https://gitforwindows.org/),并添加到环境变量中。
2. 将PaddlePaddle的源码clone在当下目录下的Paddle的文件夹中,并进入Padde目录下:
- `git clone https://github.com/PaddlePaddle/Paddle.git`
- `cd Paddle`
4. 切换到较稳定release分支下进行编译(支持1.3.x及以上版本):
3. 切换到较稳定release分支下进行编译:
`git checkout [分支名]`
- `git checkout release/x.x.x`
例如:
5. 创建名为build的目录并进入:
`git checkout release/1.2`
注意:python3.6、python3.7版本从release/1.2分支开始支持
4. 创建名为build的目录并进入:
- `mkdir build`
- `cd build`
6. 执行cmake:
5. 执行cmake:
>具体编译选项含义请参见[编译选项表](../Tables.html/#Compile)<!--TODO:Link 安装选项表到这里-->
>具体编译选项含义请参见[编译选项表](../Tables.html/#Compile)
* 对于需要编译**CPU版本PaddlePaddle**的用户:
* 编译**CPU版本PaddlePaddle**:
For Python2: `cmake .. -G "Visual Studio 14 2015 Win64" -DPYTHON_INCLUDE_DIR=${PYTHON_INCLUDE_DIRS}
-DPYTHON_LIBRARY=${PYTHON_LIBRARY}
......@@ -78,8 +75,7 @@
-DPYTHON_LIBRARY=${PYTHON_LIBRARY}
-DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE} -DWITH_FLUID_ONLY=ON -DWITH_GPU=OFF -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release`
* 对于需要编译**GPU版本PaddlePaddle**的用户:
* 编译**GPU版本PaddlePaddle**:
For Python2: `cmake .. -G "Visual Studio 14 2015 Win64" -DPYTHON_INCLUDE_DIR=${PYTHON_INCLUDE_DIRS}
-DPYTHON_LIBRARY=${PYTHON_LIBRARY}
......@@ -91,24 +87,22 @@
-DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}
-DWITH_FLUID_ONLY=ON -DWITH_GPU=ON -DWITH_TESTING=OFF -DCMAKE_BUILD_TYPE=Release -DCUDA_TOOLKIT_ROOT_DIR=${CUDA_TOOLKIT_ROOT_DIR}`
6. 部分第三方依赖包(openblas,snappystream)目前需要用户自己提供预编译版本,也可以到 `https://github.com/wopeizl/Paddle_deps` 下载预编译好的文件, 将整个 `third_party` 文件夹放到 `build` 目录下.
7. 部分第三方依赖包(openblas,snappystream)目前需要用户自己提供预编译版本,也可以到 `https://github.com/wopeizl/Paddle_deps` 下载预编译好的文件, 将整个 `third_party` 文件夹放到 `build` 目录下.
7. 使用Blend for Visual Studio 2015 打开 `paddle.sln` 文件,选择平台为 `x64`,配置为 `Release`,先编译third_party模块,然后编译其他模块
8. 使用Blend for Visual Studio 2015 打开 `paddle.sln` 文件,选择平台为 `x64`,配置为 `Release`,先编译third_party模块,然后编译其他模块
9. 编译成功后进入 `\paddle\build\python\dist` 目录下找到生成的 `.whl` 包:
8. 编译成功后进入 `\paddle\build\python\dist` 目录下找到生成的 `.whl` 包:
`cd \paddle\build\python\dist`
10. 在当前机器或目标机器安装编译好的 `.whl` 包:
9. 在当前机器或目标机器安装编译好的 `.whl` 包:
`pip install (whl包的名字)` 或 `pip3 install (whl包的名字)`
恭喜您,现在您已经完成使本机编译PaddlePaddle的过程了。
恭喜,至此您已完成PaddlePaddle的编译安装
## ***验证安装***
安装完成后您可以使用:`python` 进入Python解释器,然后使用 `import paddle.fluid`, 如沒有提示错误,则表明安装成功。
安装完成后您可以使用:`python` `python3`进入Python解释器,然后使用 `import paddle.fluid`, 如沒有提示错误,则表明安装成功。
## ***如何卸载***
请使用以下命令卸载PaddlePaddle:
......@@ -116,3 +110,5 @@
* ***CPU版本的PaddlePaddle***: `pip uninstall paddlepaddle``pip3 uninstall paddlepaddle`
* ***GPU版本的PaddlePaddle***: `pip uninstall paddlepaddle-gpu``pip3 uninstall paddlepaddle-gpu`
使用Docker安装PaddlePaddle的用户,请进入包含PaddlePaddle的容器中使用上述命令,注意使用对应版本的pip
......@@ -2,11 +2,8 @@
**从源码编译**
===========================
您也可以选择源码编译的方式编译安装PaddlePaddle,但由于本机环境的多样性,在编译源码时易出现复杂问题,可能会造成您安装失败。为保证您顺利安装,推荐您优先选择普通安装方式。
.. toctree::
:hidden:
:maxdepth: 1
compile_Ubuntu.md
compile_CentOS.md
......
==========
安装说明
==========
本说明将指导您在64位台式机或笔记本电脑上编译和安装PaddlePaddle
本说明将指导您在64位操作系统编译和安装PaddlePaddle
PaddlePaddle目前支持的Python版本包括:Python 2.7-3.7
......@@ -12,8 +12,7 @@ PaddlePaddle目前支持以下环境:
* *MacOS 10.11 / 10.12 / 10.13 / 10.14*
* *Windows7 / 8/ 10(专业版/企业版)*
请确保您的环境满足以上条件,我们默认提供的安装同时需要您的计算机拥有64位操作系统,处理器支持AVX指令集,否则请选择 `多版本whl包安装列表 <Tables.html/#ciwhls>`_ 中 :code:`no_avx` 的版本
请确保您的环境满足以上条件,我们默认提供的安装同时需要您的计算机拥有64位操作系统,处理器支持AVX指令集和MKL,如您有其他需求,请参考 `多版本whl包安装列表 <Tables.html/#ciwhls>`_
- 如果您希望使用 `pip <https://pypi.org/pypi/>`_ 进行安装PaddlePaddle可以直接使用以下命令:
......@@ -37,6 +36,7 @@ PaddlePaddle目前支持以下环境:
install_CentOS.md
install_MacOS.md
install_Windows.md
install_Docker.md
compile/fromsource.rst
FAQ.md
Tables.md
***
# **CentOS下安装**
本说明将介绍如何在*64位台式机或笔记本电脑*以及CentOS系统下安装PaddlePaddle,我们支持的CentOS系统需满足以下要求:
## 环境准备
* *64位操作系统*
* *CentOS 6 / 7*
* *Python 2.7/3.5/3.6/3.7*
* *pip或pip3 >= 9.0.1*
### 注意事项
请注意:在其他系统上的尝试可能会导致安装失败。请确保您的环境满足以上条件,我们默认提供的安装同时需要您的计算机处理器支持AVX指令集,否则请选择[[最新Release安装包列表](./Tables.html/#ciwhls-release)`no_avx`的版本。
* 可以使用`uname -m && cat /etc/*release`查看本机的操作系统和位数信息
* 可以使用`pip -V`(Python版本为2.7)或`pip3 -V`(Python版本为3.5/3.6/3.7),确认pip/pip3版本是否满足要求
* 默认提供的安装包需要计算机支持AVX指令集和MKL。如果您对机器环境不了解,请下载使用[快速安装脚本](https://fast-install.bj.bcebos.com/fast_install.sh),配套说明请参考[这里](https://github.com/PaddlePaddle/FluidDoc/tree/develop/doc/fluid/beginners_guide/install/install_script.md)。或者您也可以使用`cat /proc/cpuinfo | grep avx`来检测您的处理器是否支持该指令集,如不支持,请在[这里](./Tables.html/#ciwhls-release)下载`no_avx`版本的安装包
CentOS系统下您可以使用`cat /proc/cpuinfo | grep avx`来检测您的处理器是否支持AVX指令集
## 选择CPU/GPU
* *CentOS 6 / 7*
* 如果您的计算机没有 NVIDIA® GPU,请安装CPU版本的PaddlePaddle
## 确定要安装的版本
* 仅支持CPU的PaddlePaddle。如果您的计算机没有 NVIDIA® GPU,则只能安装此版本。如果您的计算机有GPU,
推荐您先安装CPU版本的PaddlePaddle,来检测您本地的环境是否适合。
* 支持GPU的PaddlePaddle,为了使PaddlePaddle程序运行的更加迅速,我们通过GPU对PaddlePaddle程序进行加速,但安装GPU版本的PaddlePaddle需要先拥有满足以下条件的NVIDIA® GPU(具体安装流程和配置请务必参见NVIDIA官方文档:[For CUDA](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/)[For cuDNN](https://docs.nvidia.com/deeplearning/sdk/cudnn-install/)
* 如果您的计算机有NVIDIA® GPU,并且满足以下条件,推荐安装GPU版PaddlePaddle
* *CUDA 工具包9.0配合cuDNN v7*
* *CUDA 工具包8.0配合cuDNN v7*
* *CUDA 工具包8.0配合cuDNN v5*
* *GPU运算能力超过1.0的硬件设备*
您可参考NVIDIA官方文档了解CUDA和CUDNN的安装流程和配置方法,请见[CUDA](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/)[cuDNN](https://docs.nvidia.com/deeplearning/sdk/cudnn-install/)
## 安装方式
## 选择如何安装
在CentOS的系统下我们提供4种安装方式:
* pip安装
* Docker安装(不支持GPU版本)(镜像中python的版本为2.7)
* 源码编译安装(不支持CentOS 6的所有版本以及CentOS 7的GPU版本)
* Docker源码编译安装(不支持GPU版本)(镜像中的python版本为2.7,3.5,3.6,3.7)
**使用pip安装**(最便捷的安装方式),我们为您提供pip安装方法,但它更依赖您的本机环境,可能会出现和您本机环境相关的一些问题。
**使用Docker进行安装**(最保险的安装方式),因为我们在把工具和配置都安装在一个 Docker image 里,这样如果遇到问题,其他人可以复现问题以便帮助。另外,对于习惯使用Windows和MacOS的开发者来说,使用Docker就不用配置交叉编译环境了。需要强调的是:Docker 不会虚拟任何硬件,Docker container 里运行的编译工具实际上都是在本机的 CPU 和操作系统上直接运行的,性能和把编译工具安装在本机运行一样。
[**源码编译安装**](#ct_source)以及[**使用Docker进行源码编译安装**](#ct_docker),这是一种通过将PaddlePaddle源代码编译成为二进制文件,然后在安装这个二进制文件的过程,相比使用我们为您编译过的已经通过测试的二进制文件形式的PaddlePaddle,手动编译更为复杂,我们将在说明的最后详细为您解答。
<br/><br/>
### ***使用pip安装PaddlePaddle***
首先,我们使用以下指令来**检测本机的环境**是否适合安装PaddlePaddle:
`uname -m && cat /etc/*release`
> 上面的命令将会显示本机的操作系统和位数信息,请确保您的计算机和本教程的要求一致。
其次,您的计算机需要满足以下要求:
* Python2.7.x (devel),Pip >= 9.0.1
> CentOS6需要编译Python2.7成[共享库](./FAQ.html/#FAQ)。
* Python3.5+.x (devel),Pip3 >= 9.0.1
> 您的CentOS上可能已经安装pip请使用pip -V来确认我们建议使用pip 9.0.1或更高版本来安装。
更新yum的源: `yum update` 并安装拓展源以安装pip: `yum install -y epel-release`
使用以下命令安装或升级Python和pip到需要的版本:
- For Python2: `sudo yum install python-devel python-pip`
- For Python3: (请参照Python官方流程安装,并注意pip3命令对应的python3版本是否一致,如果有多个python3版本,请指定pip版本如pip3.7,或者将pip3软链到您使用的python版本下)
> 即使您的环境中已经有`Python`也需要安装`python develop`套装。
下面将说明如何安装PaddlePaddle:
1. 使用pip install来安装PaddlePaddle:
* 对于需要**CPU版本PaddlePaddle**的用户:`pip install paddlepaddle` 或 `pip3 install paddlepaddle`
* 对于需要**GPU版本PaddlePaddle**的用户: `pip install paddlepaddle-gpu` 或 `pip3 install paddlepaddle-gpu`
CentOS系统下有4种安装方式:
> 1. 为防止出现nccl.h找不到的问题请首先按照NVIDIA[官方网站](https://developer.nvidia.com/nccl/nccl-download)的指示正确安装nccl2
> 2. 如果您不规定pypi包版本号,我们默认为您提供支持Cuda 9/cuDNN v7的PaddlePaddle版本。
* pip安装(推荐)
* [Docker安装](./install_Docker.html)
* [源码编译安装](./compile/compile_CentOS.html/#ct_source)
* [Docker源码编译安装](./compile/compile_CentOS.html/#ct_docker)
* 对于出现`Cannot uninstall 'six'.`问题的用户,可是由于您的系统中已有的Python安装问题造 成的,请使用`pip install paddlepaddle --ignore-installed six`(CPU)或`pip install paddlepaddle-gpu --ignore-installed six`(GPU)解决。
这里为您介绍pip安装方式
* 对于有**其他要求**的用户:`pip install paddlepaddle==[版本号]` 或 `pip3 install paddlepaddle==[版本号]`
## 安装步骤
> `版本号`参见[最新Release安装包列表](./Tables.html/#whls)或者您如果需要获取并安装**最新的PaddlePaddle开发分支**,可以从[[最新dev安装包列表](./Tables.html/#ciwhls)或者我们的[CI系统](https://paddleci.ngrok.io/project.html?projectId=Manylinux1&tab=projectOverview) 中下载最新的whl安装包和c-api开发包并安装。如需登录,请点击“Log in as guest”。
* CPU版PaddlePaddle:`pip install paddlepaddle``pip3 install paddlepaddle`
* GPU版PaddlePaddle:`pip install paddlepaddle-gpu``pip3 install paddlepaddle-gpu`
您可[验证是否安装成功](#check),如有问题请查看[FAQ](./FAQ.html)
注:
* pip与python版本对应。如果是python2.7, 建议使用`pip`命令; 如果是python3.x, 则建议使用`pip3`命令
* `pip install paddlepaddle-gpu` 此命令将安装支持CUDA 9.0 cuDNN v7的PaddlePaddle,如您对CUDA或cuDNN版本有不同要求,可用`pip install paddlepaddle==[版本号]``pip3 install paddlepaddle==[版本号]`命令来安装,版本号请见[这里](https://pypi.org/project/paddlepaddle-gpu/#history)
* 默认下载最新稳定版的安装包,如需获取开发版安装包,请参考[这里](./Tables.html/#ciwhls)
现在您已经完成通过`pip install` 来安装的PaddlePaddle的过程。
<br/><br/>
### ***使用Docker进行安装***
<!-- 我们更加推荐**使用Docker进行安装**,因为我们在把工具和配置都安装在一个 Docker image 里,这样如果遇到问题,其他人可以复现问题以便帮助。另外,对于习惯使用Windows和MacOS的开发者来说,使用Docker就不用配置交叉编译环境了。需要强调的是:Docker 不会虚拟任何硬件,Docker container 里运行的编译工具实际上都是在本机的 CPU 和操作系统上直接运行的,性能和把编译工具安装在本机运行一样。-->
为了更好的使用Docker并避免发生问题,我们推荐使用**最高版本的Docker**,关于**安装和使用Docker**的细节请参阅Docker[官方文档](https://docs.docker.com/install/)
> 请注意,要安装和使用支持 GPU 的PaddlePaddle版本,您必须先安装[nvidia-docker](https://github.com/NVIDIA/nvidia-docker)
当您已经**正确安装Docker**后你就可以开始**使用Docker安装PaddlePaddle**
1. 使用以下指令拉取我们为您预安装好PaddlePaddle的镜像:
* 对于需要**CPU版本的PaddlePaddle**的用户请使用以下指令拉取我们为您预安装好*PaddlePaddle For CPU*的镜像:
`docker pull hub.baidubce.com/paddlepaddle/paddle:1.2`
* 您也可以通过以下指令拉取任意的我们提供的Docker镜像:
`docker pull hub.baidubce.com/paddlepaddle/paddle:[tag]`
> (请把[tag]替换为[镜像表](./Tables.html/#dockers)中的内容)
2. 使用以下指令用已经拉取的镜像构建并进入Docker容器:
`docker run --name [Name of container] -it -v $PWD:/paddle <imagename> /bin/bash`
> 上述命令中,--name [Name of container] 设定Docker的名称;-it 参数说明容器已和本机交互式运行; -v $PWD:/paddle 指定将当前路径(Linux中PWD变量会展开为当前路径的[绝对路径](https://baike.baidu.com/item/绝对路径/481185))挂载到容器内部的 /paddle 目录; `<imagename>` 指定需要使用的image名称,如果您需要使用我们的镜像请使用`hub.baidubce.com/paddlepaddle/paddle:[tag]` 注:tag的意义同第二步,/bin/bash是在Docker中要执行的命令。
3. (可选:当您需要第二次进入Docker容器中)使用如下命令使用PaddlePaddle:
`docker start [Name of container]`
> 启动之前创建的容器。
`docker attach [Name of container]`
> 进入启动的容器。
至此您已经成功使用Docker安装PaddlePaddle,您只需要进入Docker容器后运行PaddlePaddle即可,更多Docker使用请参见[Docker官方文档](https://docs.docker.com)
> 注:PaddlePaddle Docker镜像为了减小体积,默认没有安装`vim`,您可以在容器中执行 `apt-get install -y vim` 安装后,在容器中编辑代码。
<br/><br/>
<a name="check"></a>
## ***验证安装***
安装完成后您可以使用`python``python3` 进入Python解释器,然后使用`import paddle.fluid` 验证是否安装成功。
安装完成后您可以使用命令`python``python3` 进入python解释器,然后使用`import paddle.fluid` 验证是否安装成功。
<br/><br/>
## ***如何卸载***
请使用以下命令卸载PaddlePaddle(使用docker安装PaddlePaddle的用户请进入包含PaddlePaddle的容器中使用以下命令,请使用相应版本的pip)
请使用以下命令卸载PaddlePaddle:
* ***CPU版本的PaddlePaddle***: `pip uninstall paddlepaddle``pip3 uninstall paddlepaddle`
* ***GPU版本的PaddlePaddle***: `pip uninstall paddlepaddle-gpu``pip3 uninstall paddlepaddle-gpu`
# **使用Docker安装**
[Docker](https://docs.docker.com/install/)是一个开源的应用容器引擎。使用Docker,既可以将PaddlePaddle的安装&使用与系统环境隔离,也可以与主机共享GPU、网络等资源
## 环境准备
- 在本地主机上[安装Docker](https://hub.docker.com/search/?type=edition&offering=community)
- 如需在Linux开启GPU支持,请[安装nvidia-docker](https://github.com/NVIDIA/nvidia-docker)
## 安装步骤
1. 拉取PaddlePaddle镜像
* CPU版的PaddlePaddle: `docker pull hub.baidubce.com/paddlepaddle/paddle:[版本号]`
* GPU版的PaddlePaddle: `docker pull hub.baidubce.com/paddlepaddle/paddle:[版本号]-gpu-cuda9.0-cudnn7`
在`:`后请您填写PaddlePaddle版本号,例如1.2,更多请见[镜像简介](#dockers)
2. 构建、进入Docker容器
`docker run --name [Name of container] -it -v $PWD:/paddle <imagename> /bin/bash`
> 上述命令中,各项参数分别指: --name [Name of container] 设定Docker的名称;-it 参数说明容器已和本机交互式运行; -v $PWD:/paddle 指定将当前路径(Linux中PWD变量会展开为当前路径的绝对路径)挂载到容器内部的 /paddle 目录; `<imagename>` 指定需要使用的image名称,您可以通过`docker images`命令查看;/bin/bash是在Docker中要执行的命令
至此,您已经成功使用Docker安装PaddlePaddle,更多Docker使用请参见[Docker官方文档](https://docs.docker.com)
<a name="dockers"></a>
</br></br>
### **镜像简介**
<p align="center">
<table>
<thead>
<tr>
<th> 版本名称 </th>
<th> 版本说明 </th>
</tr>
</thead>
<tbody>
<tr>
<td> hub.baidubce.com/paddlepaddle/paddle:latest </td>
<td> 最新的预先安装好PaddlePaddle CPU版本的镜像 </td>
</tr>
<tr>
<td> hub.baidubce.com/paddlepaddle/paddle:[Version] </td>
<td> 将version换成具体的版本,历史版本的预安装好PaddlePaddle的镜像 </td>
</tr>
<tr>
<td> hub.baidubce.com/paddlepaddle/paddle:latest-gpu </td>
<td> 最新的预先安装好PaddlePaddle GPU版本的镜像 </td>
</tr>
<tr>
<td> hub.baidubce.com/paddlepaddle/paddle:latest-dev </td>
<td> 最新的PaddlePaddle的开发环境 </td>
</tr>
</tbody>
</table>
</p>
您可以在 [DockerHub](https://hub.docker.com/r/paddlepaddle/paddle/tags/) 中找到PaddlePaddle的各个发行的版本的docker镜像。
### 注意事项
* 镜像中Python版本为2.7
* PaddlePaddle Docker镜像为了减小体积,默认没有安装`vim`,您可以在容器中执行 `apt-get install -y vim` 安装后,在容器中编辑代码
### 补充说明
* 当您需要第二次进入Docker容器中,使用如下命令:
```
#启动之前创建的容器
docker start [Name of container]
#进入启动的容器
docker attach [Name of container]
```
* 如您是Docker新手,您可以参考互联网上的资料学习,例如[Docker教程](http://www.runoob.com/docker/docker-hello-world.html)
## 如何卸载
请您进入Docker容器后,执行如下命令
* ***CPU版本的PaddlePaddle***: `pip uninstall paddlepaddle``pip3 uninstall paddlepaddle`
* ***GPU版本的PaddlePaddle***: `pip uninstall paddlepaddle-gpu``pip3 uninstall paddlepaddle-gpu`
或通过`docker rm [Name of container]`来直接删除Docker容器
***
# **MacOS下安装**
本说明将介绍如何在*64位台式机或笔记本电脑*以及MacOS系统下安装PaddlePaddle,我们支持的MacOS系统需满足以下要求。
请注意:在其他系统上的尝试可能会导致安装失败。
* MacOS 10.11/10.12/10.13/10.14
## 确定要安装的版本
* 仅支持CPU的PaddlePaddle。
## 选择如何安装
在MacOS的系统下我们提供3种安装方式:
* pip安装(不支持GPU版本)(python3下不支持分布式)
* Docker安装(不支持GPU版本)(镜像中python的版本为2.7)
* Docker源码编译安装(不支持GPU版本)(镜像中的python版本为2.7,3.5,3.6,3.7)
**使用pip安装**(最便捷的安装方式),我们为您提供pip安装方法,但它更依赖您的本机环境,可能会出现和您本机环境相关的一些问题。
**使用Docker进行安装**(最保险的安装方式),因为我们在把工具和配置都安装在一个 Docker image 里,这样如果遇到问题,其他人可以复现问题以便帮助。另外,对于习惯使用Windows和MacOS的开发者来说,使用Docker就不用配置交叉编译环境了。需要强调的是:Docker 不会虚拟任何硬件,Docker container 里运行的编译工具实际上都是在本机的 CPU 和操作系统上直接运行的,性能和把编译工具安装在本机运行一样。
<br/><br/>
### ***使用pip安装***
由于在MacOS中的Python情况差别较大我们暂不提供快速安装的命令,请您按照以下步骤进行安装
首先,**检查您的计算机和操作系统**是否符合我们支持的编译标准: `uname -m` 并且在`关于本机`中查看系统版本。
其次,您的计算机需要满足以下要求:
> **请不要使用MacOS中自带python**,对于**Python2**,建议您使用[Homebrew](https://brew.sh)或[Python.org](https://www.python.org/ftp/python/2.7.15/python-2.7.15-macosx10.9.pkg)提供的python2.7.15;对于**Python3**,请使用[Python.org](https://www.python.org/downloads/mac-osx/)提供的python3.5.x、python3.6.x或python3.7.x。
For python2: brew install python@2 或 使用Python官方下载的python2.7.15
For python3: 使用Python官方下载的python3.5.x、python3.6.x或python3.7.x
* Python2.7.x,Pip >= 9.0.1
* Python3.5.x,Pip3 >= 9.0.1
* Python3.6.x,Pip3 >= 9.0.1
* Python3.7.x,Pip3 >= 9.0.1
> 注: 您的MacOS上可能已经安装pip请使用pip -V来确认我们建议使用pip 9.0.1或更高版本来安装。
下面将说明如何安装PaddlePaddle:
1. 使用pip install来安装PaddlePaddle:
* 对于需要**CPU版本PaddlePaddle**的用户:`pip install paddlepaddle` 或 `pip3 install paddlepaddle`
* 对于有**其他要求**的用户:`pip install paddlepaddle==[版本号]` 或 `pip3 install paddlepaddle==[版本号]`
> `版本号`参见[最新Release安装包列表](./Tables.html/#ciwhls-release)或者您如果需要获取并安装**最新的PaddlePaddle开发分支**,可以从[CI系统](https://paddleci.ngrok.io/project.html?projectId=Manylinux1&tab=projectOverview) 中下载最新的whl安装包和c-api开发包并安装。如需登录,请点击“Log in as guest”。
现在您已经完成通过`pip install` 来安装的PaddlePaddle的过程。
<br/><br/>
### ***使用Docker安装***
<!-- 我们更加推荐**使用Docker进行安装**,因为我们在把工具和配置都安装在一个 Docker image 里,这样如果遇到问题,其他人可以复现问题以便帮助。另外,对于习惯使用Windows和MacOS的开发者来说,使用Docker就不用配置交叉编译环境了。需要强调的是:Docker 不会虚拟任何硬件,Docker container 里运行的编译工具实际上都是在本机的 CPU 和操作系统上直接运行的,性能和把编译工具安装在本机运行一样。-->
为了更好的使用Docker并避免发生问题,我们推荐使用**最高版本的Docker**,关于**安装和使用Docker**的细节请参阅Docker[官方文档](https://docs.docker.com/install/)
> 请注意,在MacOS系统下登陆docker需要使用您的dockerID进行登录,否则将出现`Authenticate Failed`错误。
如果已经**正确安装Docker**,即可以开始**使用Docker安装PaddlePaddle**
1. 使用以下指令拉取我们为您预安装好PaddlePaddle的镜像:
* 对于需要**CPU版本的PaddlePaddle**的用户请使用以下指令拉取我们为您预安装好*PaddlePaddle For CPU*的镜像:
`docker pull hub.baidubce.com/paddlepaddle/paddle:1.2`
* 您也可以通过以下指令拉取任意的我们提供的Docker镜像:
`docker pull hub.baidubce.com/paddlepaddle/paddle:[tag]`
> (请把[tag]替换为[镜像表](./Tables.html/#dockers)中的内容)
## 环境准备
2. 使用以下指令用已经拉取的镜像构建并进入Docker容器:
* *64位操作系统*
* *MacOS 10.11/10.12/10.13/10.14*
* *Python 2.7/3.5/3.6/3.7*
* *pip或pip3 >= 9.0.1*
`docker run --name [Name of container] -it -v $PWD:/paddle <imagename> /bin/bash`
### 注意事项
> 上述命令中,--name [Name of container] 设定Docker的名称;-it 参数说明容器已和本机交互式运行; -v $PWD:/paddle 指定将当前路径(Linux中PWD变量会展开为当前路径的[绝对路径](https://baike.baidu.com/item/绝对路径/481185))挂载到容器内部的 /paddle 目录; `<imagename>` 指定需要使用的image名称,如果您需要使用我们的镜像请使用`hub.baidubce.com/paddlepaddle/paddle:[tag]` 注:tag的意义同第二步;/bin/bash是在Docker中要执行的命令。
* 可以使用`pip -V`(Python版本为2.7)或`pip3 -V`(Python版本为3.5/3.6/3.7),确认pip/pip3版本是否满足要求
* 默认提供的安装包需要计算机支持AVX指令集
3. (可选:当您需要第二次进入Docker容器中)使用如下命令使用PaddlePaddle:
## 选择CPU/GPU
`docker start [Name of container]`
* 目前在MacOS环境仅支持CPU版PaddlePaddle
> 启动之前创建的容器。
## 安装方式
`docker attach [Name of container]`
MacOS系统下有4种安装方式:
> 进入启动的容器。
* pip安装(推荐)
* [Docker安装](./install_Docker.html)
* [源码编译安装](./compile/compile_MacOS.html/#mac_source)
* [Docker源码编译安装](./compile/compile_MacOS.html/#mac_docker)
这里为您介绍pip安装方式
至此您已经成功使用Docker安装PaddlePaddle,您只需要进入Docker容器后运行PaddlePaddle即可,更多Docker使用请参见[Docker官方文档](https://docs.docker.com)
## 安装步骤
> 注:PaddlePaddle Docker镜像为了减小体积,默认没有安装`vim`,您可以在容器中执行 `apt-get install -y vim` 安装后,在容器中编辑代码。
* CPU版PaddlePaddle:`pip install paddlepaddle``pip3 install paddlepaddle`
<!--TODO: When we support pip install mode on MacOS, we can write on this part -->
您可[验证是否安装成功](#check),如有问题请查看[FAQ](./FAQ.html)
注:
* pip与python版本对应。如果是python2.7, 建议使用`pip`命令; 如果是python3.x, 则建议使用`pip3`命令
* 默认下载最新稳定版的安装包,如需获取开发版安装包,请参考[这里](./Tables.html/#ciwhls)
* 使用MacOS中自带Python可能会导致安装失败。对于**Python2**,建议您使用[Homebrew](https://brew.sh)[Python.org](https://www.python.org/ftp/python/2.7.15/python-2.7.15-macosx10.9.pkg)提供的python2.7.15;对于**Python3**,请使用[Python.org](https://www.python.org/downloads/mac-osx/)提供的python3.5.x、python3.6.x或python3.7.x。
<br/><br/>
## ***验证安装***
<a name="check"></a>
## 验证安装
安装完成后您可以使用:`python``python3` 进入python解释器,然后使用`import paddle.fluid` 验证是否安装成功。
<br/><br/>
## ***如何卸载***
请使用以下命令卸载PaddlePaddle(使用docker安装PaddlePaddle的用户请进入包含PaddlePaddle的容器中使用以下命令,请使用相应版本的pip):
## 如何卸载
* ***CPU版本的PaddlePaddle***: `pip uninstall paddlepaddle``pip3 uninstall paddlepaddle`
请使用以下命令卸载PaddlePaddle:
* `pip uninstall paddlepaddle``pip3 uninstall paddlepaddle`
***
# **Ubuntu下安装**
本说明将介绍如何在*64位台式机或笔记本电脑*以及Ubuntu系统下安装PaddlePaddle,我们支持的Ubuntu系统需满足以下要求:
## 环境准备
请注意:在其他系统上的尝试可能会导致安装失败。请确保您的环境满足以上条件,我们默认提供的安装同时需要您的计算机处理器支持AVX指令集,否则请选择[最新Release安装包列表](./Tables.html/#ciwhls-release)`no_avx`的版本。
* *64位操作系统*
* *Ubuntu 14.04 /16.04 /18.04*
* *Python 2.7/3.5/3.6/3.7*
* *pip或pip3 >= 9.0.1*
Ubuntu系统下您可以使用`cat /proc/cpuinfo | grep avx`来检测您的处理器是否支持AVX指令集
### 注意事项
* *Ubuntu 14.04 /16.04 /18.04*
* 可以使用`uname -m && cat /etc/*release`查看本机的操作系统和位数信息
* 可以使用`pip -V`(Python版本为2.7)或`pip3 -V`(Python版本为3.5/3.6/3.7),确认pip/pip3版本是否满足要求
* 默认提供的安装包需要计算机支持AVX指令集和MKL。如果您对机器环境不了解,请下载使用[快速安装脚本](https://fast-install.bj.bcebos.com/fast_install.sh),配套说明请参考[这里](https://github.com/PaddlePaddle/FluidDoc/tree/develop/doc/fluid/beginners_guide/install/install_script.md)。或者您也可以使用`cat /proc/cpuinfo | grep avx`来检测您的处理器是否支持该指令集,如不支持,请在[这里](./Tables.html/#ciwhls-release)下载`no_avx`版本的安装包
## 确定要安装的版本
## 选择CPU/GPU
* 仅支持CPU的PaddlePaddle。如果您的计算机没有 NVIDIA® GPU,则只能安装此版本。如果您的计算机有GPU,
也推荐您先安装CPU版本的PaddlePaddle,来检测您本地的环境是否适合。
* 如果您的计算机没有 NVIDIA® GPU,请安装CPU版的PaddlePaddle
* 支持GPU的PaddlePaddle。为了使PaddlePaddle程序运行更加迅速,我们通过GPU对PaddlePaddle程序进行加速,但安装GPU版本的PaddlePaddle需要先拥有满足以下条件的NVIDIA® GPU(具体安装流程和配置请务必参见NVIDIA官方文档:[For CUDA](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/)[For cuDNN](https://docs.nvidia.com/deeplearning/sdk/cudnn-install/)
* 如果您的计算机有 NVIDIA® GPU,并且满足以下条件,推荐安装GPU版的PaddlePaddle
* *CUDA 工具包9.0配合cuDNN v7*
* *CUDA 工具包8.0配合cuDNN v7*
* *CUDA 工具包8.0配合cuDNN v5*
* *GPU运算能力超过1.0的硬件设备*
您可参考NVIDIA官方文档了解CUDA和CUDNN的安装流程和配置方法,请见[CUDA](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/)[cuDNN](https://docs.nvidia.com/deeplearning/sdk/cudnn-install/)
## 安装方式
## 选择如何安装
在Ubuntu的系统下我们提供4种安装方式:
* pip安装
* Docker安装(镜像中python的版本为2.7)
* 源码编译安装
* Docker源码编译安装(镜像中的python版本为2.7,3.5,3.6,3.7)
**使用pip安装**(最便捷的安装方式),我们为您提供pip安装方法,但它更依赖您的本机环境,可能会出现和您本机环境相关的一些问题。
**使用Docker进行安装**(最保险的安装方式),因为我们在把工具和配置都安装在一个 Docker image 里,这样如果遇到问题,其他人可以复现问题以便帮助。另外,对于习惯使用Windows和MacOS的开发者来说,使用Docker就不用配置交叉编译环境了。需要强调的是:Docker 不会虚拟任何硬件,Docker container 里运行的编译工具实际上都是在本机的 CPU 和操作系统上直接运行的,性能和把编译工具安装在本机运行一样。
[**源码编译安装**](#ubt_source)以及[**使用Docker进行源码编译安装**](#ubt_docker),这是一种通过将PaddlePaddle源代码编译成为二进制文件,然后在安装这个二进制文件的过程,相比使用我们为您编译过的已经通过测试的二进制文件形式的PaddlePaddle,手动编译更为复杂,我们将在说明的最后详细为您解答。
<br/><br/>
### ***使用pip安装***
首先,我们使用以下指令来**检测本机的环境**是否适合安装PaddlePaddle:
uname -m && cat /etc/*release
> 上面的命令将会显示本机的操作系统和位数信息,请确保您的计算机和本教程的要求一致。
其次,您的电脑需要满足以下任一要求:
* Python2.7.x (dev),Pip >= 9.0.1
* Python3.5+.x (dev),Pip3 >= 9.0.1
> 您的Ubuntu上可能已经安装pip请使用pip -V或pip3 -V来确认我们建议使用pip 9.0.1或更高版本来安装
更新apt的源: `apt update`
使用以下命令安装或升级Python和pip到需要的版本:(python3.6、python3.7安装pip和dev在不同Ubuntu版本下差别较大,不一一描述)
- For python2: `sudo apt install python-dev python-pip`
- For python3.5:`sudo apt install python3.5-dev` and `curl https://bootstrap.pypa.io/get-pip.py -o - | python3.5 && easy_install pip`
- For python3.6、python3.7: 我们默认您应准备好python3.6(3.7)以及对应版本的dev和pip3
> 即使您的环境中已经有Python2或Python3也需要安装Python-dev或Python3.5(3.6、3.7)-dev。
现在,让我们来安装PaddlePaddle:
1. 使用pip install来安装PaddlePaddle
* 对于需要**CPU版本PaddlePaddle**的用户:`pip install paddlepaddle` 或 `pip3 install paddlepaddle`
* 对于需要**GPU版本PaddlePaddle**的用户:`pip install paddlepaddle-gpu` 或 `pip3 install paddlepaddle-gpu`
> 1. 为防止出现nccl.h找不到的问题请首先按照以下命令安装nccl2(这里提供的是ubuntu 16.04,CUDA9,cuDNN v7下nccl2的安装指令),更多版本的安装信息请参考NVIDIA[官方网站](https://developer.nvidia.com/nccl/nccl-download):
i. `wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb`
ii. `dpkg -i nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb`
iii. `sudo apt-get install -y libnccl2=2.2.13-1+cuda9.0 libnccl-dev=2.2.13-1+cuda9.0`
> 2. 如果您不规定pypi包版本号,我们默认为您提供支持Cuda 9/cuDNN v7的PaddlePaddle版本。
Ubuntu系统下有4种安装方式:
* 对于出现`Cannot uninstall 'six'.`问题的用户,可是由于您的系统中已有的Python安装问题造成的,请使用`pip install paddlepaddle --ignore-installed six`(CPU)或`pip install paddlepaddle --ignore-installed six`(GPU)解决。
* pip安装(推荐)
* [Docker安装](./install_Docker.html)
* [源码编译安装](./compile/compile_Ubuntu.html/#ubt_source)
* [Docker源码编译安装](./compile/compile_Ubuntu.html/#ubt_docker)
* 对于有**其他要求**的用户:`pip install paddlepaddle==[版本号]` 或 `pip3 install paddlepaddle==[版本号]`
这里为您介绍pip安装方式
> `版本号`参见[最新Release安装包列表](./Tables.html/#whls)或者您如果需要获取并安装**最新的PaddlePaddle开发分支**,可以从[最新dev安装包列表](./Tables.html/#ciwhls)或者我们的[CI系统](https://paddleci.ngrok.io/project.html?projectId=Manylinux1&tab=projectOverview) 中下载最新的whl安装包和c-api开发包并安装。如需登录,请点击“Log in as guest”。
## 安装步骤
* CPU版PaddlePaddle:`pip install paddlepaddle``pip3 install paddlepaddle`
* GPU版PaddlePaddle:`pip install paddlepaddle-gpu``pip3 install paddlepaddle-gpu`
您可[验证是否安装成功](#check),如有问题请查看[FAQ](./FAQ.html)
注:
* pip与python版本对应。如果是python2.7, 建议使用`pip`命令; 如果是python3.x, 则建议使用`pip3`命令
* `pip install paddlepaddle-gpu` 此命令将安装支持CUDA 9.0 cuDNN v7的PaddlePaddle,如您对CUDA或cuDNN版本有不同要求,可用`pip install paddlepaddle==[版本号]``pip3 install paddlepaddle==[版本号]`命令来安装,版本号请见[这里](https://pypi.org/project/paddlepaddle-gpu/#history)
* 默认下载最新稳定版的安装包,如需获取开发版安装包,请参考[这里](./Tables.html/#ciwhls)
现在您已经完成使用`pip install` 来安装的PaddlePaddle的过程。
<a name="check"></a>
## 验证安装
安装完成后您可以使用命令`python``python3` 进入python解释器,然后使用`import paddle.fluid` 验证是否安装成功。
<br/><br/>
### ***使用Docker安装***
<!-- TODO: uncomment it when the offical website can split it to different pages我们更加推荐**使用Docker进行安装**,因为我们在把工具和配置都安装在一个 Docker image 里,这样如果遇到问题,其他人可以复现问题以便帮助。另外,对于习惯使用Windows和MacOS的开发者来说,使用Docker就不用配置交叉编译环境了。需要强调的是:Docker 不会虚拟任何硬件,Docker container 里运行的编译工具实际上都是在本机的 CPU 和操作系统上直接运行的,性能和把编译工具安装在本机运行一样。-->
为了更好的使用Docker并避免发生问题,我们推荐使用**最高版本的Docker**,关于**安装和使用Docker**的细节请参阅Docker[官方文档](https://docs.docker.com/install/)
> 请注意,要安装和使用支持 GPU 的PaddlePaddle版本,您必须先安装[nvidia-docker](https://github.com/NVIDIA/nvidia-docker)
如果已经**正确安装Docker**,即可以开始**使用Docker安装PaddlePaddle**
1. 使用以下指令拉取我们为您预安装好PaddlePaddle的镜像:
* 对于需要**CPU版本的PaddlePaddle**的用户请使用以下指令拉取我们为您预安装好*PaddlePaddle For CPU*的镜像:
`docker pull hub.baidubce.com/paddlepaddle/paddle:1.2`
* 对于需要**GPU版本的PaddlePaddle**的用户请使用以下指令拉取我们为您预安装好*PaddlePaddle For GPU*的镜像:
`docker pull hub.baidubce.com/paddlepaddle/paddle:1.2-gpu-cuda9.0-cudnn7`
* 您也可以通过以下指令拉取任意的我们提供的Docker镜像:
`docker pull hub.baidubce.com/paddlepaddle/paddle:[tag]`
> (请把[tag]替换为[镜像表](./Tables.html/#dockers)中的内容)
2. 使用以下指令用已经拉取的镜像构建并进入Docker容器:
`docker run --name [Name of container] -it -v $PWD:/paddle <imagename> /bin/bash`
> 上述命令中,--name [Name of container] 设定Docker的名称;-it 参数说明容器已和本机交互式运行; -v $PWD:/paddle 指定将当前路径(Linux中PWD变量会展开为当前路径的绝对路径)挂载到容器内部的 /paddle 目录; `<imagename>` 指定需要使用的image名称,如果您需要使用我们的镜像请使用`hub.baidubce.com/paddlepaddle/paddle:[tag]` 注:tag的意义同第二步;/bin/bash是在Docker中要执行的命令。
3. (可选:当您需要第二次进入Docker容器中)使用如下命令使用PaddlePaddle:
`docker start [Name of container]`
> 启动之前创建的容器。
`docker attach [Name of container]`
> 进入启动的容器。
至此您已经成功使用Docker安装PaddlePaddle,您只需要进入Docker容器后运行PaddlePaddle即可,更多Docker使用请参见[Docker官方文档](https://docs.docker.com)
> 注:PaddlePaddle Docker镜像为了减小体积,默认没有安装`vim`,您可以在容器中执行 `apt-get install -y vim` 安装后,在容器中编辑代码。
<br/><br/>
## ***验证安装***
安装完成后您可以使用:`python``python3` 进入python解释器,然后使用`import paddle.fluid` 验证是否安装成功。
<br/><br/>
## ***如何卸载***
请使用以下命令卸载PaddlePaddle(使用docker安装PaddlePaddle的用户请进入包含PaddlePaddle的容器中使用以下命令,请使用相应版本的pip):
## 如何卸载
请使用以下命令卸载PaddlePaddle:
* ***CPU版本的PaddlePaddle***: `pip uninstall paddlepaddle``pip3 uninstall paddlepaddle`
* ***GPU版本的PaddlePaddle***: `pip uninstall paddlepaddle-gpu``pip3 uninstall paddlepaddle-gpu`
***
# **Windows下安装**
本文将介绍如何在Windows系统下安装PaddlePaddle,您的计算机需要满足以下要求:
* *64位台式机或笔记本电脑*
## 环境准备
* *64位操作系统*
* *Windows 7/8 ,Windows 10 专业版/企业版*
* *Python 2.7/3.5/3.6/3.7*
* *pip或pip3 >= 9.0.1*
注:
### 注意事项
* 默认提供的安装包需要计算机支持AVX指令集和MKL
* 当前版本暂不支持NCCL,分布式等相关功能
## 安装步骤
## 选择CPU/GPU
### ***使用pip安装***
* 如果您的计算机没有 NVIDIA® GPU,请安装CPU版的PaddlePaddle
* 对Python版本的要求
* 如果您的计算机有 NVIDIA® GPU,并且满足以下条件,推荐安装GPU版的PaddlePaddle
* *CUDA 工具包8.0配合cuDNN v7*
* *GPU运算能力超过1.0的硬件设备*
我们支持[Python官方提供](https://www.python.org/downloads/)的Python2.7.15,Python3.5.x,Python3.6.x,Python3.7.x
您可参考NVIDIA官方文档了解CUDA和CUDNN的安装流程和配置方法,请见[CUDA](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/)[cuDNN](https://docs.nvidia.com/deeplearning/sdk/cudnn-install/)
* 对pip版本的要求
## 安装方式
您的pip或pip3版本号需不低于9.0.1。pip与python版本是对应的, 如果是python2.7, 建议使用`pip`命令; 如果是python3.x, 则建议使用`pip3`命令。
Windows系统下有3种安装方式:
* 开始安装
* pip安装(推荐)
* [Docker安装](./install_Docker.html)
* [源码编译安装](./compile/compile_Windows.html/#win_source)
* ***CPU版本的PaddlePaddle***:
执行如下命令:`pip install paddlepaddle`(python2.7) 或 `pip3 install paddlepaddle`(python3.x) 安装PaddlePaddle
这里为您介绍pip安装方式
* ***GPU版本的PaddlePaddle***:
执行如下命令:`pip install paddlepaddle-gpu`(python2.7) 或 `pip3 install paddlepaddle-gpu`(python3.x) 安装PaddlePaddle
## 安装步骤
## ***验证安装***
安装完成后您可以使用 `python``python3` 进入python解释器,然后使用`import paddle.fluid` 验证是否安装成功。
* CPU版PaddlePaddle:`pip install paddlepaddle``pip3 install paddlepaddle`
* GPU版PaddlePaddle:`pip install paddlepaddle-gpu``pip3 install paddlepaddle-gpu`
## ***如何卸载***
您可[验证是否安装成功](#check),如有问题请查看[FAQ](./FAQ.html)
注:
* pip与python版本对应。如果是python2.7, 建议使用`pip`命令; 如果是python3.x, 则建议使用`pip3`命令
* `pip install paddlepaddle-gpu` 此命令将安装支持CUDA 8.0 cuDNN v7的PaddlePaddle,目前windows环境下暂不支持其他版本的CUDA和cuDNN。
<a name="check"></a>
## 验证安装
安装完成后您可以使用 `python``python3` 进入python解释器,然后使用`import paddle.fluid` 验证是否安装成功。
* ***CPU版本的PaddlePaddle***:
请使用以下命令:`pip uninstall paddlepaddle``pip3 uninstall paddlepaddle` 卸载PaddlePaddle
## 如何卸载
* ***GPU版本的PaddlePaddle***:
请使用以下命令:`pip uninstall paddlepaddle-gpu``pip3 uninstall paddlepaddle-gpu` 卸载PaddlePaddle
* ***CPU版本的PaddlePaddle***: `pip uninstall paddlepaddle``pip3 uninstall paddlepaddle`
* ***GPU版本的PaddlePaddle***: `pip uninstall paddlepaddle-gpu``pip3 uninstall paddlepaddle-gpu`
# 辅助安装脚本
## 使用方法
下载脚本至本地后,使用命令`/bin/bash fast_install.sh`启动脚本
### Ubuntu和CentOS
脚本会执行以下几步:
1. GPU检测
检测您的机器是否含有我们支持的GPU,如果有,会安装GPU版本的PaddlePaddle,否则会安装CPU版本。
(PaddlePaddle目前支持NVIDIA[官网](https://developer.nvidia.com/cuda-gpus#collapseOne)列出的,算力7.0以下的GPU和v100系列的GPU)
2. CUDA,cuDNN检测
检测您的机器是否安装我们支持的CUDA,cuDNN,具体地:
1. 在`/usr/local/` 及其子目录下寻找 `cuda/cuda8/cuda9` 目录下的`version.txt`文件(通常如果您以默认方式安装了CUDA)。 如果提示未找到CUDA请使用命令`find / -name version.txt`找到您所需要的CUDA目录下的“version.txt”路径,然后按照提示输入。
2. 在`/usr` 及其子目录下寻找文件 `cudnn.h` , 如果您的cuDNN未安装在默认路径请使用命令`find / -name cudnn.h`寻找您希望使用的cuDNN版本的`cudnn.h`路径并按提示输入
如果未找到相应文件,则会安装CPU版本的PaddlePaddle
3. 选择数学库
脚本默认会为您安装支持[MKL](https://software.intel.com/en-us/mkl)数学库的PaddlePaddle,如果您的机器不支持`MKL`,请选择安装支持[OPENBLAS](https://www.openblas.net)的PaddlePaddle
4. 选择PaddlePaddle版本
我们为您提供2种版本:开发版和稳定版,推荐您选择测试验证过的稳定版
5. 选择Python版本
脚本默认会使用您机器中的Python,您也可以输入您希望使用的Python的路径
6. 检查[AVX](https://zh.wikipedia.org/zh-hans/AVX指令集)指令集
7. 使用[Python virtualenv](https://virtualenv.pypa.io/en/latest/)
脚本也支持按您的需求创建Python的虚拟环境
以上检查完成后就会为您安装对应您系统的PaddlePaddle了,安装一般需要1~2分钟会根据您的网络来决定,请您耐心等待。
### MacOS
脚本会执行以下几步:
1. 选择PaddlePaddle版本
我们为您提供2种版本:开发版和稳定版,推荐您选择测试验证过的稳定版
2. 检查Python版本
由于MacOS自带的Python通常依赖于系统环境,因此我们不支持MacOS自带的Python环境,请重新从Python.org安装Python,然后根据提示输入您希望使用的Python的路径
3. 检查是否支持[AVX](https://zh.wikipedia.org/zh-hans/AVX指令集)指令集
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册