文件最后提交记录最后更新时间
1 个月前
17 天前
6 个月前
17 天前
17 天前
17 天前
6 个月前
21 天前
README

aclnnApplyAdamWQuant

产品支持情况

产品 是否支持
Ascend 950PR/Ascend 950DT x
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品
Atlas 200I/500 A2 推理产品 ×
Atlas 推理系列产品 ×
Atlas 训练系列产品 ×

功能说明

  • 算子功能:

    对优化器输入的m和v作为索引,取出各自qmap中的值,乘以每个blockSize对应的absmax进行反量化,而后实现adamW优化器功能,更新后的m和v每blockSize中取一个最大值,每blockSize个m和v对应一个absmax,进行一次norm归一化,利用二分法找到对应m和v对应qmap中的索引作为输出,absmax也作为下一轮量化的输入

  • 计算公式:

    mt=β1mt−1+(1−β1)gtm_{t}=\beta_{1} m_{t-1}+\left(1-\beta_{1}\right) g_{t} \\

    vt=β2vt−1+(1−β2)gt2v_{t}=\beta_{2} v_{t-1}+\left(1-\beta_{2}\right) g_{t}^{2}

    m^t=mt1−β1t\hat{m}_{t}=\frac{m_{t}}{1-\beta_{1}^{t}} \\

    v^t=vt1−β2t\hat{v}_{t}=\frac{v_{t}}{1-\beta_{2}^{t}} \\

    θt+1=θt−ηv^t+ϵm^t−η⋅λ⋅θt−1\theta_{t+1}=\theta_{t}-\frac{\eta}{\sqrt{\hat{v}_{t}}+\epsilon} \hat{m}_{t}-\eta \cdot \lambda \cdot \theta_{t-1}

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
var 输入/输出 公式中的theta,待计算的权重输入同时也是输出。 FLOAT、FLOAT16、BFLOAT16 ND
grad 输入 公式中的输入gt。 FLOAT16、BFLOAT16、FLOAT32 ND
m 输入/输出 公式中m参数量化前的索引值。 UINT8 ND
v 输入/输出 公式中v参数量化前的索引值。 UINT8 ND
qmap_m 输入 公式中m参数量化映射表升序排列。 FLOAT32 ND
qmap_v 输入 公式中v参数量化映射表升序排列。 FLOAT32 ND
absmax_m 输入/输出 计算输入为本次反量化阶段将分位数反归一化(乘以absmaxMRef),计算输出为本次量化和下一轮反量化的参数。 FLOAT32 ND
absmax_v 输入/输出 计算输入为本次反量化阶段将分位数反归一化(乘以absmaxVRef),计算输出为本次量化和下一轮反量化的参数。 FLOAT32 ND
step 属性
  • 迭代次数,公式中的t。
  • 取值范围是大于1的正整数。
INT64 -
lr 属性
  • 学习率,公式中的eta。
  • 取值范围是0~1。
FLOAT32 -
beta1 属性
  • 公式中beta1参数。
  • 取值范围是0~1。
FLOAT32 -
beta2 属性
  • 公式中beta2参数。
  • 取值范围是0~1。
FLOAT32 -
weight_decay 属性
  • 权重衰减系数,公式中lambda参数。
  • 取值范围是0~1。
FLOAT32 -
eps 属性
  • 公式中epsilon参数,加在分母中用来防止除0。
  • 取值范围是1e-8。
FLOAT32 -
gnorm_scale 属性
  • 对输入参数grad进行缩放的参数。
  • 取值范围是0~1。
FLOAT32 -
block_size 属性
  • 每个block的大小。
  • 取值范围固定为256。
INT64 -
quant_mode 属性
  • 保留参数。
  • 保留参数。
- -

约束说明

调用说明

调用方式 调用样例 说明
aclnn调用 test_aclnn_apply_adam_w_quant 通过aclnnApplyAdamWQuant接口方式调用ApplyAdamWQuant算子。