昇腾社区首页
中文
注册
开发者
下载

torch_npu.contrib.module.LinearQuant

产品支持情况

[object Object]undefined

功能说明

LinearQuant是对torch_npu.npu_quant_matmul接口的封装类,完成A8W8、A4W4量化算子的矩阵乘计算。

函数原型

[object Object]

参数说明

计算参数

  • in_features[object Object]):matmul计算中k轴的值。
  • out_features[object Object]):matmul计算中n轴的值。
  • bias[object Object]):代表是否需要bias计算参数。如果设置成False,则bias不会加入量化matmul的计算。
  • offset[object Object]):代表是否需要offset计算参数。如果设置成False,则offset不会加入量化matmul的计算。
  • pertoken_scale[object Object]):可选参数,代表是否需要pertoken_scale计算参数。如果设置成False,则pertoken_scale不会加入量化matmul的计算。[object Object]Atlas 推理系列产品[object Object]当前不支持pertoken_scale。
  • device:默认值为None。预留参数,暂未使用
  • dtype:默认值为None。预留参数,暂未使用
  • output_dtype[object Object]):表示输出Tensor的数据类型。默认值为None,代表输出Tensor数据类型为[object Object]
    • [object Object]Atlas 推理系列产品[object Object]:支持输入[object Object][object Object]
    • [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]/[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:支持输入[object Object][object Object][object Object][object Object]

计算输入

x1[object Object]):数据格式支持NDND,shape最少是2维,最多是6维。

  • [object Object]Atlas 推理系列产品[object Object]:数据类型支持[object Object]
  • [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]/[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:数据类型支持[object Object][object Object],其中[object Object]表示使用本接口进行[object Object]类型矩阵乘计算,[object Object]类型承载的是[object Object]数据,每个[object Object]数据存放8个[object Object]数据。

变量说明

  • weight([object Object]):与[object Object]的数据类型须保持一致。数据格式支持NDND,shape需要在2-6维范围。当数据类型为[object Object]时,shape必须为2维。

    • [object Object]Atlas 推理系列产品[object Object]:数据类型支持[object Object],需要调用torchair.experimental.inference.use_internal_format_weight或torch_npu.npu_format_cast完成weight(batch, n, k)高性能数据排布功能。
    • [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]/[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:数据类型支持[object Object][object Object](同[object Object],表示[object Object]的数据计算),需要调用torch_npu.npu_format_cast完成weight(batch, n, k)高性能数据排布功能,但不推荐使用该module方式,推荐torch_npu.npu_quant_matmul。
  • scale([object Object]):量化计算的scale。数据格式支持NDND,shape需要是1维(t,),t=1或n,其中n与[object Object]的n一致。如需传入[object Object]数据类型的scale,需要提前调用torch_npu.npu_trans_quant_param接口来获取[object Object]数据类型的scale。

    • [object Object]Atlas 推理系列产品[object Object]:数据类型支持[object Object][object Object]
    • [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]/[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:数据类型支持[object Object][object Object][object Object]
  • offset([object Object]):量化计算的offset。可选参数。数据类型支持[object Object],数据格式支持NDND,shape需要是1维(t,),t=1或n,其中n与[object Object]的n一致。

  • pertoken_scale([object Object]):可选参数,量化计算的pertoken。数据类型支持[object Object],数据格式支持NDND,shape需要是1维(m,),其中m与[object Object]的m一致。[object Object]Atlas 推理系列产品[object Object]当前不支持pertoken_scale。

  • bias([object Object]):可选参数。矩阵乘中的bias。数据格式支持NDND,shape支持1维(n,)或3维(batch, 1, n),n与[object Object]的n一致,同时batch值需要等于x1,weight broadcast后推导出的batch值。当输出为2、4、5、6维情况下,bias shape为1维;当输出为3维情况下,bias shape为1维或3维。

    • [object Object]Atlas 推理系列产品[object Object]:数据类型支持[object Object]
    • [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]/[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:数据类型支持[object Object][object Object][object Object][object Object]
  • output_dtype([object Object]):可选参数。表示输出Tensor的数据类型。默认值为None,代表输出Tensor数据类型为[object Object]

    • [object Object]Atlas 推理系列产品[object Object]:支持输入[object Object][object Object]
    • [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]/[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:支持输入[object Object][object Object][object Object][object Object]

返回值说明

[object Object]

代表量化matmul的计算结果:

  • 如果output_dtype为[object Object]或者None,输出的数据类型为[object Object]
  • 如果output_dtype为[object Object],输出的数据类型为[object Object]
  • 如果output_dtype为[object Object],输出的数据类型为[object Object]
  • 如果output_dtype为[object Object],输出的数据类型为[object Object]

约束说明

  • 该接口支持推理场景下使用。

  • 该接口支持图模式。

  • [object Object][object Object][object Object]不能是空。

  • [object Object][object Object]最后一维的shape大小不能超过65535。

  • int4类型计算的额外约束:

    [object Object][object Object]的数据类型均为[object Object],每个[object Object]类型的数据存放8个[object Object]数据。输入shape需要将数据原本[object Object]类型时的最后一维shape缩小8倍。[object Object]数据的最后一维shape应为8的倍数,例如:进行(m, k)乘(k, n)的[object Object]类型矩阵乘计算时,需要输入[object Object]类型,shape为(m, k//8)、(k, n//8)的数据,其中k与n都应是8的倍数。[object Object]只能接受shape为(m, k//8)且数据排布连续的数据,[object Object]只能接受shape为(n, k//8)且数据排布连续的数据。

    [object Object]
  • 输入参数或变量间支持的数据类型组合情况如下:

    表1 [object Object]Atlas 推理系列产品[object Object]

    [object Object][object Object]

    [object Object]

    表2 [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]、[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]

    [object Object][object Object]

    [object Object]

调用示例

  • 单算子模式调用

    • int8类型输入场景,示例代码如下:

      [object Object]
    • int32类型输入场景,示例代码如下,仅支持如下产品:

      • [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]
      • [object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]
      [object Object]
  • 图模式调用,示例代码如下,仅支持如下产品:

    [object Object]