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

this is a mp_layer api inference clarification #5236

Open
wants to merge 7 commits into
base: develop
Choose a base branch
from
171 changes: 171 additions & 0 deletions docs/api/paddle/distributed/fleet/Mp_layer.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
Mp_layers
-----------------


..Fleet:mp_layers

Mp_layers是飞桨的分布式训练统一API中的fleet中的一个方法,其主要分为以下几个部分:嵌入式表示, 矩阵乘

嵌入式表示:

方法
........
........
init(num_embeddings, embedding_dim, weight_attr=None, mp_group=None, name=None)
''''''''

初始化嵌入式类。

**参数**

- **num_embeddings** (int) 词典的大小尺寸
- **embedding_dim** (Tensor) 词典中每个词的向量维度
- **weight_attr** (Tenosr) 指定权重参数的属性
- **mp_group** (bool) 表示是否采用模型并行的集群
- **name** (string) 神经网络模型输出的前缀标识

**返回**
None


create_parameter(weight_attr, shape, dtype, is_bias)
''''''''

创建参数模型的权重参数


**参数**

- **weight_attr** (Tensor) 指定权重参数的属性
- **shape** (Tensor)模型参数的形状(请注意这里的形状是由词典的大小尺寸整除以GPU数目与embedding_dim的维度连接而成)
- **dtype** 参数的数据类型
- **is_bias** (bool) 是否存在偏置项,以简单的W=AX+B为例,此处的B即为偏置项
**返回**
Tensor

**代码示例**
code-block::python
self.weight = self.create_parameter(attr=self._weight_attr,
shape=self._size,
dtype=self._dtype,
is_bias=False)



c_lookup_table(table, index, start_index, name)
''''''''

根据序列号查找表

**参数**

- **table** (Tensor) 输入的张量矩阵
- **index** (Tensor) 查找表的序列号
- **start_index** (int) 查重表的初始位置
- **name** (string) 调用的api名称
**返回**
Tensor

**代码示例**
code-block::python
output_parallel = paddle.distributed.collective._c_lookup_table(
self.weight,
x,
start_index=self.vocab_start_index,
name=self._name)



mp_allreduce (output, group, use_cal_stram, use_model_parallel)
..........

对矩阵张量进行聚合

**参数**
- **output** (Tensor) 输入的张量矩阵
- **group** (int) 分布式并行的群组节点ID
- **use_cal_stream** (bool)是否使用流水线
- **use_model_parallel** (bool)是否采用模型并行
**返回**
Tensor

**代码示例**
code-block::python
output_parallel = paddle.distributed.collective._c_lookup_table(
self.weight,
x,
start_index=self.vocab_start_index,
name=self._name)


embedding (input, weight, padding_index, sparse, name)
''''''''''''

对张量进行嵌入式运行

**参数**
- **input** (Tensor) 输入的张量
- **weight** (Tensor) 模型权重参数
- **padding_index** (int) 该位置下的向量用0补齐
- **sparse** (bool) 在前向传播和后向传播的过程中不考虑全为0的向量
- **name** (string) 张量名称等
**返回**
Tensor


矩阵乘:

方法
........
........
init(in_feature, out_feature, weight_attr=None, has_bias, gather_output, fuse_matmul_bias, mp_group, name)
''''''''

对矩阵分片运算进行初始化

**参数**
- **in_feature** (Tensor) 输入的张量
- **out_feature** (Tensor) 输出的张量
- **weight_attr** (Tensor) 指定权重参数的属性
- **has_bias** (bool) 是否拥有偏置项
- **gater_output** (bool) 是否将本地结果进行聚合
- **fuse_matmul_bias** (bool) 分片向量进行融合时是否存在偏置
- **mp_group** (bool) 表示是否采用模型并行的集群
- **name** (string) 张量名称等


c_concat(x, group)
'''''''

对分片后的张量进行切片

**参数**
- **x** 输入的张量
- **group** (int) 分布式并行的群组节点ID
**返回**
Tensor


**代码示例**
code-block::python
output = paddle.distributed.collective._c_concat(
output_parallel, group=self.model_parallel_group)


c_split(x, group)
'''''''

对分片后的张量进行连接

**参数**
- **x** (Tensor) 输入的张量
- **group** (int) 分布式并行的群组节点ID
**返回**
Tensor

**代码示例**
code-block::python
input_parallel = paddle.distributed.collective._c_split(
x, group=self.model_parallel_group)


Loading