Skip to content

Commit dc8a42e

Browse files
author
zhangkaihuo
authored
【cherry-pick】新增fused transformer encoder 中文文档 #4022 (#4026)
* 新增一个融合算子:fused_feedforward (#3999) * 修改错别字 * 备注CPU不支持float16 * update example * add fused_feedforward * add fused_feedforward * add fused_feedforward * opt the description * update docs * update docs * update doc * move fused_feedforward docs position * 新增fused transformer encoder 中文文档 (#4022) * 修改错别字 * 备注CPU不支持float16 * update example * add fused_feedforward * add fused_feedforward * add fused_feedforward * opt the description * update docs * update docs * update doc * move fused_feedforward docs position * add incubate/nn/layer * move fused transfomrer doc to incubate/nn/ * modify the doc * modify fused transformer encoder layer doc
1 parent a21cc79 commit dc8a42e

File tree

3 files changed

+91
-10
lines changed

3 files changed

+91
-10
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
.. _cn_api_incubate_nn_FusedFeedForward:
2+
3+
FusedFeedForward
4+
-------------------------------
5+
.. py:class:: paddle.incubate.nn.FusedFeedForward(d_model, dim_feedforward, dropout_rate=0.1, activation='relu', act_dropout_rate=None, normalize_before=False, weight_attr=None, bias_attr=None)
6+
7+
这是一个调用融合算子fused_feedforward(参考 :ref:`cn_api_incubate_nn_functional_fused_feedforward` )。
8+
9+
10+
参数
11+
:::::::::
12+
- **d_model** (int) - 输入输出的维度。
13+
- **dim_feedforward** (int) - 前馈神经网络中隐藏层的大小。
14+
- **dropout_rate** (float,可选) - 对本层的输出进行处理的dropout值, 置零的概率。默认值:0.1。
15+
- **activation** (str,可选) - 激活函数。默认值:``relu``。
16+
- **act_dropout_rate** (float,可选) - 激活函数后的dropout置零的概率。如果为 ``None`` 则 ``act_dropout_rate = dropout_rate`` 。默认值: ``None`` 。
17+
- **normalize_before** (bool, 可选) - 设置对输入输出的处理。如果为 ``True`` ,则对输入进行层标准化(Layer Normalization),否则(即为 ``False`` ),则对输入不进行处理,而是在输出前进行标准化。默认值: ``False`` 。
18+
- **weight_attr** (ParamAttr,可选) - 指定权重参数属性的对象。默认值: ``None`` ,表示使用默认的权重参数属性,即使用0进行初始化。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。
19+
- **bias_attr** (ParamAttr|bool,可选)- 指定偏置参数属性的对象。如果该参数值是 ``ParamAttr`` ,则使用 ``ParamAttr`` 。如果该参数为 ``bool`` 类型,只支持为 ``False`` ,表示没有偏置参数。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。
20+
21+
返回
22+
:::::::::
23+
- Tensor, 输出Tensor,数据类型与 ``x`` 一样。
24+
25+
代码示例
26+
::::::::::
27+
28+
.. code-block:: python
29+
30+
# required: gpu
31+
import paddle
32+
from paddle.incubate.nn import FusedFeedForward
33+
34+
fused_feedforward_layer = FusedFeedForward(8, 8)
35+
x = paddle.rand((1, 8, 8))
36+
out = fused_feedforward_layer(x)
37+
print(out.numpy().shape)
38+
# (1, 8, 8)
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
.. _cn_api_incubate_nn_FusedTransformerEncoderLayer:
2+
3+
FusedTransformerEncoderLayer
4+
-------------------------------
5+
.. py:class:: paddle.incubate.nn.FusedTransformerEncoderLayer(d_model, nhead, dim_feedforward, dropout_rate=0.1, activation='relu', attn_dropout_rate=None, act_dropout_rate=None, normalize_before=False, weight_attr=None, bias_attr=None)
6+
7+
8+
FusedTransformer编码器层由两个子层组成:多头自注意力机制和前馈神经网络。如果 ``normalize_before`` 为 ``True`` ,则对每个子层的输入进行层标准化(Layer Normalization),对每个子层的输出进行dropout和残差连接(residual connection)。否则(即 ``normalize_before`` 为 ``False`` ),则对每个子层的输入不进行处理,只对每个子层的输出进行dropout、残差连接(residual connection)和层标准化(Layer Normalization)。
9+
10+
11+
参数
12+
:::::::::
13+
- **d_model** (int) - 输入输出的维度。
14+
- **nhead** (int) - multi-head attention(MHA)的Head数量。
15+
- **dim_feedforward** (int) - 前馈神经网络中隐藏层的大小。
16+
- **dropout_rate** (float,可选) - 对两个子层的输出进行处理的dropout值, 置零的概率。默认值:0.1。
17+
- **activation** (str,可选) - 前馈神经网络的激活函数。默认值:``relu``。
18+
- **attn_dropout_rate** (float,可选) - MHA中对注意力目标的随机失活率。如果为 `None` 则 ``attn_dropout = dropout`` 。默认值: ``None`` 。
19+
- **act_dropout_rate** (float,可选) - 前馈神经网络的激活函数后的dropout置零的概率。如果为 ``None`` 则 ``act_dropout_rate = dropout_rate`` 。默认值: ``None`` 。
20+
- **normalize_before** (bool, 可选) - 设置对每个子层的输入输出的处理。如果为 ``True`` ,则对每个子层的输入进行层标准化(Layer Normalization),否则(即为 ``False`` ),则对每个子层的输入不进行处理,而是在子层的输出前进行标准化。默认值: ``False`` 。
21+
- **weight_attr** (ParamAttr|tuple,可选) - 指定权重参数属性的对象。如果是 ``tuple`` ,MHA的权重参数属性使用 ``weight_attr[0]`` ,前馈神经网络的权重参数属性使用 ``weight_attr[1]`` 。如果参数值是 ``ParamAttr`` ,则MHA和前馈神经网络的权重参数属性都使用 ``ParamAttr`` 。默认值: ``None`` ,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。
22+
- **bias_attr** (ParamAttr|tuple|bool,可选)- 指定偏置参数属性的对象。如果是 ``tuple`` ,MHA的偏置参数属性使用 ``bias_attr[0]`` ,前馈神经网络的偏置参数属性使用 ``bias_attr[1]`` 。如果该参数值是 ``ParamAttr`` ,则MHA和前馈神经网络的偏置参数属性都使用 ``ParamAttr`` 。如果该参数为 ``bool`` 类型,只支持为 ``False`` ,表示没有偏置参数。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。
23+
24+
25+
返回
26+
:::::::::
27+
- Tensor, 输出Tensor,数据类型与 ``x`` 一样。
28+
29+
代码示例
30+
::::::::::
31+
32+
.. code-block:: python
33+
34+
# required: gpu
35+
import paddle
36+
from paddle.incubate.nn import FusedTransformerEncoderLayer
37+
38+
# encoder input: [batch_size, src_len, d_model]
39+
enc_input = paddle.rand((2, 4, 128))
40+
# self attention mask: [batch_size, n_head, src_len, src_len]
41+
attn_mask = paddle.rand((2, 2, 4, 4))
42+
encoder_layer = FusedTransformerEncoderLayer(128, 2, 512)
43+
enc_output = encoder_layer(enc_input, attn_mask) # [2, 4, 128]

docs/api/paddle/incubate/nn/functional/fused_feedforward_cn.rst

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,15 @@ fused_feedforward
1818
1919
参数
2020
:::::::::
21-
- **x** (Tensor) - 输入Tensor,数据类型支持float16, float32 和float64, 输入的形状是`[batch_size, sequence_length, d_model]`。
22-
- **linear1_weight** (Tensor) - 第一个linear算子的权重数据,数据类型与`x`一样,形状是`[d_model, dim_feedforward]`。
23-
- **linear2_weight** (Tensor) - 第二个linear算子的权重数据,数据类型与`x`一样,形状是`[dim_feedforward, d_model]`。
24-
- **linear1_bias** (Tensor, 可选) - 第一个linear算子的偏置数据,数据类型与`x`一样,形状是`[dim_feedforward]`。默认值为None。
25-
- **linear2_bias** (Tensor, 可选) - 第二个linear算子的偏置数据,数据类型与`x`一样,形状是`[d_model]`。默认值为None。
26-
- **ln1_scale** (Tensor, 可选) - 第一个layer_norm算子的权重数据,数据类型可以是float32或者float64,形状和`x`一样。默认值为None。
27-
- **ln1_bias** (Tensor, 可选) - 第一个layer_norm算子的偏置数据,数据类型和`ln1_scale`一样, 形状是`[d_model]`。默认值为None。
28-
- **ln2_scale** (Tensor, 可选) - 第二个layer_norm算子的权重数据,数据类型可以是float32或者float64,形状和`x`一样。默认值为None。
29-
- **ln2_bias** (Tensor, 可选) - 第二个layer_norm算子的偏置数据,数据类型和`ln2_scale`一样, 形状是`[d\_model]`。默认值为None。
21+
- **x** (Tensor) - 输入Tensor,数据类型支持float16, float32 和float64, 输入的形状是 ``[batch_size, sequence_length, d_model]``
22+
- **linear1_weight** (Tensor) - 第一个linear算子的权重数据,数据类型与 ``x`` 一样,形状是 ``[d_model, dim_feedforward]``
23+
- **linear2_weight** (Tensor) - 第二个linear算子的权重数据,数据类型与 ``x`` 一样,形状是 ``[dim_feedforward, d_model]``
24+
- **linear1_bias** (Tensor, 可选) - 第一个linear算子的偏置数据,数据类型与 ``x`` 一样,形状是 ``[dim_feedforward]`` 。默认值为None。
25+
- **linear2_bias** (Tensor, 可选) - 第二个linear算子的偏置数据,数据类型与 ``x`` 一样,形状是 ``[d_model]`` 。默认值为None。
26+
- **ln1_scale** (Tensor, 可选) - 第一个layer_norm算子的权重数据,数据类型可以是float32或者float64,形状和 ``x`` 一样。默认值为None。
27+
- **ln1_bias** (Tensor, 可选) - 第一个layer_norm算子的偏置数据,数据类型和 ``ln1_scale`` 一样, 形状是 ``[d_model]`` 。默认值为None。
28+
- **ln2_scale** (Tensor, 可选) - 第二个layer_norm算子的权重数据,数据类型可以是float32或者float64,形状和 ``x`` 一样。默认值为None。
29+
- **ln2_bias** (Tensor, 可选) - 第二个layer_norm算子的偏置数据,数据类型和 ``ln2_scale`` 一样, 形状是 ``[d_model]`` 。默认值为None。
3030
- **dropout1_rate** (float, 可选) - 第一个dropout算子置零的概率。默认是0.5。
3131
- **dropout2_rate** (float, 可选) - 第二个dropout算子置零的概率。默认是0.5。
3232
- **activation** (string, 可选) - 激活函数。默认值是relu。
@@ -37,7 +37,7 @@ fused_feedforward
3737

3838
返回
3939
:::::::::
40-
- Tensor, 输出Tensor,数据类型与`x`一样。
40+
- Tensor, 输出Tensor,数据类型与 ``x`` 一样。
4141

4242
代码示例
4343
::::::::::

0 commit comments

Comments
 (0)