开发者
资源
[object Object][object Object][object Object]undefined
[object Object]
  • API功能:

    对输入的张量进行动态非对称量化。支持pertoken、pertensor和MoE(Mixture of Experts,混合专家模型)场景。

  • 计算公式:

    pertoken场景,rowMax、rowMin代表按行取最大值、按行取最小值,此处的“行”对应[object Object]最后一个维度的数据,即一个token。DST_MAX、DST_MIN分别对应量化后dtype的最大值和最小值,公式如下:

    scale=rowMax(x)rowMin(x)DST_MAXDST_MINoffset=DST_MAXrowMax(x)scaley=round(xscale+offset)\text{scale} = \frac{\text{rowMax}(\mathbf{x}) - \text{rowMin}(\mathbf{x})}{DST\_MAX - DST\_MIN}\\ \text{offset} = DST\_MAX - \frac{\text{rowMax}(\mathbf{x})}{\text{scale}}\\ y = \text{round}(\frac{\mathbf{x}}{\text{scale}} + \text{offset})
    • 若使用smooth quant,会引入[object Object]输入,其形状与[object Object]最后一个维度大小一致,在进行量化前,会先令[object Object]乘以[object Object],再按上述公式进行量化。
    • 若使用smooth quant,MoE(Mixture of Experts,混合专家模型)场景下会引入[object Object][object Object],此时[object Object]中包含多组smooth向量,按[object Object]中的数值作用到[object Object]的不同行上。具体地,假如[object Object]包含m个token,[object Object]有n行,[object Object]会作用到[object Object]上,[object Object]会作用到[object Object]上,[object Object]
    • 在pertensor场景下,rowMax、rowMin表示求整个tensor的最大值、最小值。
[object Object]
[object Object]
[object Object]
  • x ([object Object]):必选参数,需要进行量化的源数据张量,数据类型支持[object Object][object Object],数据格式支持ND,支持非连续的Tensor。输入[object Object]的维度必须大于1。进行int4量化时,要求x形状的最后一维是8的整数倍。
  • [object Object]*[object Object]:必选参数,代表其之前的变量是位置相关的,必须按照顺序输入;之后的变量是可选参数,位置无关,需要使用键值对赋值,不赋值会使用默认值。
  • smooth_scales ([object Object]):可选参数,对[object Object]进行scales的张量,数据类型支持[object Object][object Object],数据格式支持NDND,支持非连续的Tensor。
    • 在非MoE场景shape必须是1维,和[object Object]的最后一维相等。
    • 在MoE场景shape是2维[E, H]。其中E是专家数,取值范围在[1, 1024]且与group_index的第一维相同;H是x的最后一维。
    • 单算子模式下[object Object]的dtype必须和[object Object]保持一致,图模式下可以不一致。
  • group_index ([object Object]):可选参数,对[object Object]进行分组下标(代表[object Object]的行数索引),仅在MoE场景下生效。数据类型支持[object Object],数据格式支持NDND,支持非连续的Tensor。[object Object]的shape为[E,],E的取值范围在[1, 1024]且与smooth_scales第一维相同。tensor的取值必须递增且范围为[1, S],最后一个值必须等于S(S代表输入[object Object]的行数,是[object Object]的shape除最后一维度外的乘积)。
  • dst_type ([object Object]):可选参数,指定量化输出的类型,传None时当作[object Object]处理。
    • [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:数据类型支持[object Object][object Object]
    • [object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:数据类型支持[object Object][object Object]
  • quant_mode ([object Object]):可选参数,量化模式,支持"pertoken"、"pertensor"。默认值为"pertoken"。若[object Object]不为None,只支持"pertoken"。
[object Object]
  • y ([object Object]):量化后的输出,数据类型由[object Object]指定。当[object Object][object Object]时,[object Object]的数据类型为[object Object],形状最后一维为[object Object]最后一维除以8,其余维度与[object Object]一致,每个[object Object]元素包含8个[object Object]结果。其他场景下[object Object]形状与输入[object Object]一致,数据类型由[object Object]指定。
  • scale ([object Object]):非对称动态量化过程中计算出的缩放系数,数据类型为[object Object]。如果[object Object]是"pertoken",shape为[object Object]的形状剔除最后一维。如果[object Object]是"pertensor",shape为(1,)。
  • offset ([object Object]):非对称动态量化过程中计算出的偏移系数,数据类型为[object Object],shape和[object Object]一致。
[object Object]
  • 该接口支持推理场景下使用。
  • 该接口支持图模式。
  • 使用可选参数[object Object][object Object][object Object]时,必须使用关键字传参。
[object Object]
  • 单算子模式调用

    • 只有一个输入[object Object],进行[object Object]量化

      [object Object]
    • 只有一个输入[object Object],进行[object Object]量化

      [object Object]
    • 使用[object Object]输入,非MoE场景(不使用[object Object]),进行[object Object]量化

      [object Object]
    • 使用[object Object]输入,MoE场景(使用[object Object]),进行[object Object]量化

      [object Object]
  • 图模式调用

    [object Object]