aclnnApplyAdamWV2
产品支持情况
产品 | 是否支持 |
---|---|
[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object] | √ |
[object Object]Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件[object Object] | √ |
[object Object]Atlas 200I/500 A2 推理产品[object Object] | × |
[object Object]Atlas 推理系列产品 [object Object] | × |
[object Object]Atlas 训练系列产品[object Object] | × |
功能说明
算子功能: 实现adamW优化器功能。
计算公式:
函数原型
每个算子分为undefined,必须先调用“aclnnApplyAdamWV2GetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnApplyAdamWV2”接口执行计算。
aclnnStatus aclnnApplyAdamWV2GetWorkspaceSize(aclTensor *varRef, aclTensor *mRef, aclTensor *vRef, aclTensor *maxGradNormOptionalRef, const aclTensor *grad, const aclTensor *step, float lr, float beta1, float beta2, float weightDecay, float eps, bool amsgrad, bool maximize, uint64_t *workspaceSize, aclOpExecutor **executor)
aclnnStatus aclnnApplyAdamWV2(void *workspace, uint64_t workspaceSize, aclOpExecutor *executor, aclrtStream stream)
aclnnApplyAdamWV2GetWorkspaceSize
参数说明:
- varRef(aclTensor*, 计算输入/计算输出):待计算的权重输入同时也是输出,公式中的theta,Device侧的aclTensor,数据类型支持FLOAT16、BFLOAT16、FLOAT32。支持undefined,undefined支持ND。
- mRef(aclTensor*, 计算输入/计算输出):adamw优化器中m参数,公式中的m,Device侧的aclTensor,数据类型支持FLOAT16、BFLOAT16、FLOAT32,shape、dtype要求与“varRef”参数一致。支持undefined,undefined支持ND。
- vRef(aclTensor*, 计算输入/计算输出):adamw优化器中v参数,公式中的v,Device侧的aclTensor,数据类型支持FLOAT16、BFLOAT16、FLOAT32,shape、dtype要求与“varRef”参数一致,支持undefined,undefined支持ND。
- maxGradNormOptionalRef(aclTensor*, 计算输入/计算输出):保存v参数的最大值,公式中的v,Device侧的aclTensor,数据类型支持FLOAT16、BFLOAT16、FLOAT32,shape要求与“varRef”参数一致,此参数在amsgrad参数为true时必选,在amsgrad参数为false时可选。支持undefined,undefined支持ND。
- grad(aclTensor*, 计算输入):梯度数据,公式中的gt,Device侧的aclTensor,数据类型支持FLOAT16、BFLOAT16、FLOAT32,shape要求与“varRef”参数一致。支持undefined,undefined支持ND。
- step(aclTensor*, 计算输入):迭代次数,公式中的t,Device侧的aclTensor,数据类型支持INT64、FLOAT32,元素个数为1,支持undefined,undefined支持ND。
- lr(float*, 计算输入):学习率,公式中的eta,数据类型支持FLOAT。
- beta1(float*, 计算输入):beta1参数,数据类型支持FLOAT。
- beta2(float*, 计算输入):beta2参数,数据类型支持FLOAT。
- weightDecay(float*, 计算输入):权重衰减系数,数据类型支持FLOAT。
- eps(float*, 计算输入):防止除数为0,数据类型支持FLOAT。
- amsgrad(bool, 计算输入):是否使用算法的AMSGrad变量,数据类型为BOOL。
- maximize(bool, 计算输入):是否最大化参数,数据类型为BOOL。
- workspaceSize(uint64_t*, 出参):返回需要在Device侧申请的workspace大小。
- executor(aclOpExecutor**, 出参):内存地址。
返回值:
aclnnStatus:返回状态码,具体参见undefined。
[object Object]
aclnnApplyAdamWV2
参数说明:
- workspace(void *, 入参): 在Device侧申请的workspace内存地址。
- workspaceSize(uint64_t, 入参): 在Device侧申请的workspace大小,由第一段接口aclnnApplyAdamWV2GetWorkspaceSize获取。
- executor(aclOpExecutor *, 入参): op执行器,包含了算子计算流程。
- stream(aclrtStream, 入参): 指定执行任务的Stream。
返回值:
aclnnStatus:返回状态码,具体参见undefined。
约束说明
- 输入张量中varRef、mRef、vRef的数据类型一致时,数据类型支持FLOAT16、BFLOAT16、FLOAT32。
调用示例
示例代码如下,仅供参考,具体编译和执行过程请参考undefined。
[object Object]