昇腾社区首页
中文
注册

输入输出

当参数type为LINEAR_ALL_REDUCE、LINEAR_REDUCE_SCATTER、ALL_GATHER_LINEAR、PURE_LINEAR、ALL_GATHER_LINEAR_REDUCE_SCATTER时输入输出。

输入

参数

维度

数据类型

格式

描述

input

[m, k]/[batch, m, k]

  • 浮点:float16/bf16
  • 量化:
    • “quantType”“per_group”时:float16/bf16
    • 其它场景:int8

ND

矩阵乘运算的A矩阵。

当type为ALL_GATHER_LINEAR_REDUCE_SCATTER时,不支持量化。

weight

ND:[k, n]

NZ:非量化:[1,n/16, k,16];量化:[1,n/32, k, 32]

  • 浮点:float16/bf16
  • 量化:int8

ND/NZ

权重,矩阵乘的B矩阵。

  • “backend”为“lcoc”时,type为LINEAR_ALL_REDUCE,
    • 非量化场景float16/bf16支持NZ。
    • 量化场景支持NZ时,input的数据类型必须为int8,bias和deqScale必须为W8A8场景。
  • “backend”为“hccl”或“lccl”时仅float16支持NZ。
  • NZ格式时:
    • k需要为16的倍数。
    • hasResidual不支持配置为true。
    • 不支持“quantType”“为”“per_group”
    • 不支持“keepIntermediate”“true”的场景。
  • ALL_GATHER_LINEAR_REDUCE_SCATTER时,不支持量化。

bias

  • “quantType”“per_tensor”时支持:[1]
  • “quantType”“per_channel”时支持:[1, n]/[n]
  • “quantType”“为”“per_group”时支持:[k/quantGroupSize, n]
  • “quantType”“为”“per_token”时支持:[1,n]/[n]
  • W8A16量化场景:float16/bf16
  • W8A8量化场景:int32

ND

叠加的偏置矩阵。

ALL_GATHER_LINEAR_REDUCE_SCATTER时,不支持。

deqScale

  • “quantType”“per_tensor”时支持:[1]
  • “quantType”“per_channel”时支持:[1, n]/[n]
  • “quantType”“per_group”时支持:[k/quantGroupSize, n]
  • “quantType”“per_token”时支持:[1, n]/[n]
  • W8A16量化场景:float16/bf16
  • W8A8量化场景:
    • 输出是float16的时候,deqScale为int64
    • 输出是bf16的时候,同时支持int64和float

ND

反量化的scale。

仅量化时需要此参数。

当type为ALL_GATHER_LINEAR_REDUCE_SCATTER时不支持。

allgatherV2不支持量化,allgatherV2是指type为ALL_GATHER_LINEAR,keepIntermediate参数为true的场景。

residual

[n]

float16/bf16

ND

残差,用于叠加到最后的输出结果上。

当type为ALL_GATHER_LINEAR_REDUCE_SCATTER时不支持。

perTokenScale

[m]

float

ND

perToken反量化scale,量化时输入,只有当quantType是QUANT_TYPE_PER_TOKEN的时候才需要。

输出

参数

维度

数据类型

格式

描述

output

  • 当type为linear_all_reduce/pure_linear:[m, n]/[batch, m, n]
  • 当type为linear_reduce_scatter:[m/rankSize, n]/[batch/rankSize, m, n]
  • 当type为all_gather_linear:[m*rankSize, n]/[batch*rankSize, m, n];
  • 当type为ALL_GATHER_LINEAR_REDUCE_SCATTER:[m*agDim/rsDim, n]

float16/bf16

ND

输出tensor,维度数与x一致。

intermediateOutput

[m*rankSize, n]/[batch*rankSize, m, n]

float16/bf16

ND

输出tensor,维度数与x一致。

“keepIntermediate”为true且“ParallelType”使用“ALL_GATHER_LINEAR”时生效。