Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Docathon][Add CN Doc No.30、No.31] #6416

Closed
wants to merge 10 commits into from
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
.. _cn_api_paddle_incubate_nn_functional_fused_rotary_position_embedding:

fused_rotary_position_embedding
-------------------------------

.. py:function:: paddle.incubate.nn.functional.fused_rotary_position_embedding(q, k=None, v=None, sin=None, cos=None, position_ids=None, use_neox_rotary_style=True)

融合旋转位置编码。

参数
::::::::::

- **q** (Tensor) - 输入张量。 数据类型可以是 bfloat16, float16, float32 或 float64. q 的形状必须是 [batch_size, seq_len, num_heads, head_dim] 并且 head_dim 必须是 2 的倍数。
- **k** (Tensor, 可选) - 输入张量。 数据类型可以是 bfloat16, float16, float32 或 float64. k 的形状必须是 [batch_size, seq_len, num_heads, head_dim] 并且 head_dim 必须是 2 的倍数。
- **v** (Tensor, 可选) - 输入张量。 数据类型可以是 bfloat16, float16, float32 或 float64. v 的形状必须是 [batch_size, seq_len, num_heads, head_dim] 并且 head_dim 必须是 2 的倍数。
- **sin** (Tensor, 可选) - 输入张量。 数据类型可以是 bfloat16, float16, float32 或 float64. sin 的形状必须是 [seq_len, head_dim] 或 [1, seq_len, 1, head_dim] 并且 head_dim 必须是 2 的倍数。
- **cos** (Tensor, 可选) - 输入张量。 数据类型可以是 bfloat16, float16, float32 或 float64. cos 的形状必须是 [seq_len, head_dim] 或 [1, seq_len, 1, head_dim] 并且 head_dim 必须是 2 的倍数。
- **position_ids** (Tensor, 可选) - 输入张量。 数据类型为 int64. position_ids 的形状为[batch_size, seq_len].
- **use_neox_rotary_style** (可选|bool) - 当 use_neox_rotary_style 为 True, 每两个相邻的数字计算一次。 当 use_neox_rotary_style 为 False, 计算与前半段和后半段位置相对应的数字。 默认值为 True.


返回
::::::::::

- out_q/out_k/out_v 表示融合旋转位置嵌入的张量,具有与 `q` 相同的形状和数据类型。


代码示例
::::::::::

COPY-FROM: paddle.incubate.nn.functional.fused_rotary_position_embedding
1 change: 1 addition & 0 deletions docs/api/paddle/nn/Overview_cn.rst
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,7 @@ Transformer 相关


" :ref:`paddle.nn.MultiHeadAttention <cn_api_paddle_nn_MultiHeadAttention>` ", "多头注意力机制"
" :ref:`paddle.nn.functional_scaled_dot_product_attention <cn_api_paddle_nn_functional_scaled_dot_product_attention>` ", "点乘注意力机制,并在此基础上加入了对注意力权重的缩放"
" :ref:`paddle.nn.Transformer <cn_api_paddle_nn_Transformer>` ", "Transformer 模型"
" :ref:`paddle.nn.TransformerDecoder <cn_api_paddle_nn_TransformerDecoder>` ", "Transformer 解码器"
" :ref:`paddle.nn.TransformerDecoderLayer <cn_api_paddle_nn_TransformerDecoderLayer>` ", "Transformer 解码器层"
Expand Down
53 changes: 53 additions & 0 deletions docs/api/paddle/nn/functional/scaled_dot_product_attention_cn.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
.. _cn_api_paddle_nn_functional_scaled_dot_product_attention:

scaled_dot_product_attention
-------------------------------

.. py:function:: paddle.nn.functional.scaled_dot_product_attention(query, key, value, attn_mask=None, dropout_p=0.0, is_causal=False, training=True, name=None)

计算公式为:

.. math::
result=softmax(\frac{ Q * K^T }{\sqrt{d}}) * V

其中, ``Q``、``K`` 和 ``V`` 表示注意力模块的三个输入参数。这三个参数的尺寸相同。``d`` 表示三个参数中最后一个维度的大小。

.. warning::
此 API 仅支持数据类型为 float16 和 bfloat16 的输入。


参数
::::::::::

- **query** (Tensor) - 注意力模块中的查询张量。
具有以下形状的四维张量:
[batch_size, seq_len, num_heads, head_dim]
数据类型可以是 float61 或 bfloat16。
- **key** (Tensor) - 注意力模块中的关键张量。
具有以下形状的四维张量:
[batch_size, seq_len, num_heads, head_dim]。
数据类型可以是 float61 或 bfloat16。
- **value** (Tensor) - 注意力模块中的值张量。
具有以下形状的四维张量:
[batch_size, seq_len, num_heads, head_dim]。
数据类型可以是 float61 或 bfloat16。
- **attn_mask** (Tensor, 可选) - 与添加到注意力分数的 ``query``、 ``key``、 ``value`` 类型相同的浮点掩码, 默认值为空。
- **dropout_p** (float) - ``dropout`` 的比例, 默认值为 0.00 即不进行正则化。
- **is_causal** (bool) - 是否启用因果关系, 默认值为 False 即不启用。
- **training** (bool): - 是否处于训练阶段, 默认值为 True 即处于训练阶段。
- **name** (str, 可选) - 默认值为 None。通常不需要用户设置此属性。欲了解更多信息, 请参阅
:ref:`api_guide_Name`。


返回
::::::::::

- ``out`` (Tensor): 形状为 ``[batch_size, seq_len, num_heads, head_dim]`` 的 4 维张量。
数据类型可以是 float16 或 bfloat16。
- ``softmax`` (Tensor): 如果 return_softmax 为 False,则为 None。


代码示例
::::::::::

COPY-FROM: paddle.nn.functional.scaled_dot_product_attention
1 change: 1 addition & 0 deletions docs/api/paddle/sparse/Overview_cn.rst
Original file line number Diff line number Diff line change
Expand Up @@ -94,3 +94,4 @@ paddle.sparse 目录包含飞桨框架支持稀疏数据存储和计算相关的
" :ref:`paddle.sparse.nn.functional.conv3d <cn_api_paddle_sparse_nn_functional_conv3d>` ", "三维卷积函数"
" :ref:`paddle.sparse.nn.functional.subm_conv3d <cn_api_paddle_sparse_nn_functional_subm_conv3d>` ", "子流形三维卷积函数"
" :ref:`paddle.sparse.nn.functional.max_pool3d <cn_api_paddle_sparse_nn_functional_max_pool3d>` ", "三维最大池化函数"
" :ref:`paddle.sparse.nn.functional.subm_conv2d <cn_api_paddle_sparse_nn_functional_subm_conv2d>` ", "稀疏子流形二维卷积"
66 changes: 66 additions & 0 deletions docs/api/paddle/sparse/nn/functional/subm_conv2d_cn.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
.. _cn_api_paddle_sparse_nn_functional_subm_conv2d_cn:

subm_conv2d_cn
-------------------------------

.. py:function:: paddle.sparse.nn.functional.subm_conv2d(x, weight, bias=None, stride=1, padding=0, dilation=1, groups=1, data_format='NHWC', key=None, name=None)

稀疏子流形二维卷积函数根据输入滤波器计算输出以及步幅、填充、扩张、组参数。
输入(Input)和输出(Output)是多维稀疏张量(SparseCooTensors), 其形状为 :math: `[N, H, W, C]` 。
其中 N 是批次大小, C 是通道数, H 是特征的高度, W 是特征的宽度。
如果提供了偏差归因,则将偏差添加到卷积的输出中。

对于每一个输入 :math: `X`, 其计算公式为:

.. math::
Out = \sigma (W \ast X + b)

在上面的等式中:

* :math:`X`: 输入值, NHWC 格式的张量。
* :math:`W`: 筛选值, NHWC 格式的张量。
* :math:`\\ast`:子流形卷积操作,参考论文: https://arxiv.org/abs/1706.01307.
* :math:`b`: Bias value, 形状为[M]的一维张量.
* :math:`Out`: Output value, the shape of :math:`Out` and :math:`X` may be different.


参数
::::::::::

- x (Tensor): 输入是形状为 [N, H, W, C] 的四维稀疏张量, 输入数据类型为 float16、float32 或 float64。
- weight (Tensor): 形状为 [kH, kW, C/g, M] 的卷积核,
其中 M 是滤波器(输出通道)的数量, g 是组的数量, kD、kH、kW 分别是滤波器的高度和宽度。
- bias (Tensor, optional): 偏差, 形状为 [M] 的张量。
- stride (int|list|tuple, optional): 步长大小, 意味着卷积的步长。如果步幅为 list/tuple, 它必须包含两个整数 (stride_height, stride_width)。
否则, stride_height = stride_width = stride。stride 的默认值为 1。
- padding (string|int|list|tuple, optional): 填充大小。它表示零填充在每个维度的两侧的数量。
如果 'padding' 是字符串,则 'VALID' 或 'SAME' 是填充算法。
如果填充大小是元组或列表,它可以有三种形式:'[pad_heigh, pad_width]' 或 '[pad_height_top, pad_height_bottom, pad_width_left, pad_width_right]',
当 'data_format' 为 'NHWC' 时, 'padding' 可以采用以下形式
'[[0,0], [pad_height_top, pad_height_bottom], [pad_width_left, pad_width_right], [0,0]]'。
padding 的默认值为 0。
- dilation (int|list|tuple, optional): 扩张大小。它表示内核点之间的间距。
如果 dilation 是列表/元组,则它必须包含两个整数 (dilation_height、dilation_width)。否则, dilation_height = dilation_width = dilation。
dilation 的默认值为 1。
- groups (int, optional): 二维卷积层的组号。根据 Alex Krizhevsky 的 Deep CNN 论文中的卷积分组:
当 group=2 时,滤波器的前半部分仅连接到前半部分的输入通道,而滤波器的后半部分仅连接到输入通道的后半部分。
groups 的默认值为 1。目前, 只有 support groups=1。
- data_format (str, optional): 指定输入的数据格式和输出的数据格式将与输入一致。来自 `"NHWC"` 的可选字符串。默认值为 `"NHWC"`。
当它是 `"NHWC"` 时, 数据按以下顺序存储:`[batch_size, input_height, input_width, input_channels]`。
- key(str, optional):用于保存或使用相同规则手册的密钥,
规则手册的定义和作用是指 https://pdfs.semanticscholar.org/5125/a16039cabc6320c908a4764f32596e018ad3.pdf。这
默认值为 None。
- name(str, optional):有关详细信息,请参阅到 :ref:`api_guide_Name`。
通常名称是不需要设置的, 并且默认情况下为空。


返回
::::::::::

- 表示二维卷积的多维稀疏张量(SparseCooTenstor), 其数据类型与输入相同。


代码示例
::::::::::

COPY-FROM: paddle.sparse.nn.functional.subm_conv2d