FFNToAttention
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | × |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | × |
| Atlas 200I/500 A2 推理产品 | × |
| Atlas 推理系列产品 | × |
| Atlas 训练系列产品 | × |
功能说明
- 算子功能:将FFN节点上的数据发往Attention节点。
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x | 输入 | 本卡发送的token数据,2D Tensor,shape为 (Y, H)(H=hidden size)。 |
FLOAT16、BFLOAT16 | ND |
| sessionIds | 输入 | 每个token的Attention Worker节点索引,1D Tensor,shape为 (Y, )sessionIds取值区间为[0, attnRankNum-1] |
INT32 | ND |
| microBatchIds | 输入 | 每个token的microBatch索引,1D Tensor,shape为 (Y, ),microBatchIds取值区间为[0, MircoBatchNum-1] |
INT32 | ND |
| tokenIds | 输入 | 每个token在microBatch中的token索引,1D Tensor,shape为 (Y, ),tokenIds取值区间为[0, Bs-1] |
INT32 | ND |
| expertOffsets | 输入 | 每个token在tokenInfoTableShape中PerTokenExpertNum的索引,1D Tensor,shape为 (Y, ),expertOffsets取值区间为[0, ExpertNumPerToken-1]。 |
INT32 | ND |
| actualTokenNum | 输入 | 本卡发送的实际token总数,1D Tensor,shape为 (1, ),actualTokenNum的取值为[0, Y]。。 |
INT64 | ND |
| attnRankTableOptional | 可选输入 | 映射每一个Attention Worker对应的卡Id。
Attention Worker必须从0卡开始连续部署; 若输入空指针,采用默认策略:每张卡的Id作为对应Attention Worker的Id,取值区间为[0, attnRankNum-1]。 |
INT32 | ND(支持非连续Tensor) |
| group | 属性 | 通信域名称(专家并行),字符串长度[1, 128)。 | STRING | - |
| worldSize | 属性 | 通信域大小:取值区间[2, 768]。 | INT64 | - |
| tokenInfoTableShape | 属性 | Token信息列表大小,包含microBatch的大小(MircoBatchNum)、BatchSize大小(Bs)、以及每个Token对应的Expert数量(ExpertNumPerToken)。 | INT32 | - |
| tokenDataShape | 属性 | Token数据列表大小,包含microBatch的大小(MircoBatchNum)、BatchSize大小(Bs)、每个Token对应的Expert数量(ExpertNumPerToken)、以及token和scale长度(HS)。 | INT32 | - |
约束说明
-
调用算子过程中使用的
group、worldSize、tokenInfoTableShape、tokenDataShape参数及HCCL_BUFFSIZE取值所有卡需保持一致,网络中不同层中也需保持一致。 -
参数说明里shape格式说明:
Y:表示本卡需要分发的最大token数量。BS:示各Attention节点上的发送token数,取值范围为0 <BS≤ 512。H:表示hidden size隐藏层大小,取值范围为1024 ≤H≤ 8192。HS:表示hidden与scale 隐藏层大小,取值范围为1152 ≤HS≤ 8320。ffnRankNum:表示选取ffnRankNum个卡作为FFnWorker,取值范围为0 <ffnRankNum<worldSize。attnRankNum:表示选取attnRankNum个卡作为AttnWorker,取值范围为0 <attnRankNum<worldSize。sharedExpertNum:表示共享专家数量(一个共享专家可以复制部署到多个ffnRank卡上),取值范围为0 ≤sharedExpertNum≤ 4。
-
通信域使用约束:
- FFNToAttention算子的通信域中不允许有其他算子。
-
Atlas A3 训练系列产品/Atlas A3 推理系列产品:
- 该场景下单卡包含双DIE(简称为“晶粒”或“裸片”),因此参数说明里的“本卡”均表示单DIE。
调用说明
| 调用方式 | 样例代码 | 说明 |
|---|---|---|
| aclnn接口 | test_aclnn_ffn_to_attention.cpp | 通过aclnnFFNToAttention接口方式调用FFNToAttention算子。 |