aclnnApplyAdamW
产品支持情况
功能说明
算子功能: 实现adamW优化器功能。
计算公式:
函数原型
每个算子分为,必须先调用“aclnnApplyAdamWGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnApplyAdamW”接口执行计算。
[object Object][object Object]
aclnnApplyAdamWGetWorkspaceSize
参数说明:
- varRef(aclTensor*, 计算输入/计算输出):待计算的权重输入同时也是输出,公式中的theta,Device侧的aclTensor,shape支持1-8维度,数据类型支持FLOAT16、BFLOAT16、FLOAT32。支持,支持ND。
- mRef(aclTensor*, 计算输入/计算输出):adamw优化器中m参数,公式中的m,Device侧的aclTensor,数据类型支持FLOAT16、BFLOAT16、FLOAT32,shape、dtype要求与“varRef”参数一致。支持,支持ND。
- vRef(aclTensor*, 计算输入/计算输出):adamw优化器中v参数,公式中的v,Device侧的aclTensor,数据类型支持FLOAT16、BFLOAT16、FLOAT32,shape、dtype要求与“varRef”参数一致,支持,支持ND。
- beta1Power(aclTensor*, 计算输入):beta1^(t-1)参数,Device侧的aclTensor,数据类型支持FLOAT16、BFLOAT16、FLOAT32,shape要求为[1],dtype要求与“varRef”参数一致。支持,支持ND。
- beta2Power(aclTensor*, 计算输入):beta2^(t-1)参数,Device侧的aclTensor,数据类型支持FLOAT16、BFLOAT16、FLOAT32,shape要求为[1],dtype要求与“varRef”参数一致。支持,支持ND。
- lr(aclTensor*, 计算输入):学习率,公式中的eta,Device侧的aclTensor,数据类型支持FLOAT16、BFLOAT16、FLOAT32,shape要求为[1],dtype要求与“varRef”参数一致。支持,支持ND。
- weightDecay(aclTensor*, 计算输入):权重衰减系数,Device侧的aclTensor,数据类型支持FLOAT16、BFLOAT16、FLOAT32,shape要求为[1],dtype要求与“varRef”参数一致。支持,支持ND。
- beta1(aclTensor*, 计算输入):beta1参数,Device侧的aclTensor,数据类型支持FLOAT16、BFLOAT16、FLOAT32,shape要求为[1],dtype要求与“varRef”参数一致。支持,支持ND。
- beta2(aclTensor*, 计算输入):beta2参数,Device侧的aclTensor,数据类型支持FLOAT16、BFLOAT16、FLOAT32,shape要求为[1],dtype要求与“varRef”参数一致。支持,支持ND。
- eps(aclTensor*, 计算输入):防止除数为0,Device侧的aclTensor,数据类型支持FLOAT16、BFLOAT16、FLOAT32,shape要求为[1],dtype要求与“varRef”参数一致。支持,支持ND。
- grad(aclTensor*, 计算输入):梯度数据,公式中的g_t,Device侧的aclTensor,数据类型支持FLOAT16、BFLOAT16、FLOAT32,shape、dtype要求与“varRef”参数一致。支持,支持ND。
- maxGradNormOptional(aclTensor*, 计算输入):保存v参数的最大值,公式中的v,Device侧的aclTensor,数据类型支持FLOAT16、BFLOAT16、FLOAT32,shape、dtype要求与“varRef”参数一致,此参数在amsgrad参数为true时必选,在amsgrad参数为false时可选。支持,支持ND。
- amsgrad(bool, 计算输入):是否使用maxGradNormOptional变量,数据类型为BOOL。
- maximize(bool, 计算输入):是否对梯度grad取反,应用梯度上升方向优化权重使损失函数最大化,数据类型为BOOL。
- workspaceSize(uint64_t*, 出参):返回需要在Device侧申请的workspace大小。
- executor(aclOpExecutor**, 出参):内存地址。
返回值:
[object Object]
aclnnApplyAdamW
参数说明:
- workspace(void *, 入参): 在Device侧申请的workspace内存地址。
- workspaceSize(uint64_t, 入参): 在Device侧申请的workspace大小,由第一段接口aclnnApplyAdamWGetWorkspaceSize获取。
- executor(aclOpExecutor *, 入参): op执行器,包含了算子计算流程。
- stream(aclrtStream, 入参): 指定执行任务的Stream流。
返回值:
约束说明
输入张量的数据类型应保持一致,数据类型支持FLOAT16、BFLOAT16、FLOAT32。
输入张量beta1Power、beta2Power、lr、weightDecay、beta1、beta2、eps的shape大小应为1。
输入布尔值maximize为true时,maxGradNormOptional参数必选且数据类型和shape应与varRef一致时。
确定性计算:
- aclnnApplyAdamW默认确定性实现。
调用示例
[object Object]