aclnnApplyAdamWV2
支持的产品型号
- Atlas A2训练系列产品/Atlas 800I A2推理产品
接口原型
每个算子分为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)
功能描述
算子功能:实现adamW优化器功能。
aclnnApplyAdamWV2GetWorkspaceSize
参数说明:
- varRef(aclTensor*, 计算输入/计算输出):待计算的权重输入同时也是输出,数据类型支持FLOAT16、BFLOAT16(仅Atlas A2训练系列产品/Atlas 800I A2推理产品支持)、FLOAT32。支持undefined,undefined支持ND。
- mRef(aclTensor*, 计算输入/计算输出):adamw优化器中m参数,数据类型支持FLOAT16、BFLOAT16(仅Atlas A2训练系列产品/Atlas 800I A2推理产品支持)、FLOAT32,shape要求与“varRef”参数一致。支持undefined,undefined支持ND。
- vRef(aclTensor*, 计算输入/计算输出):adamw优化器中v参数,数据类型支持FLOAT16、BFLOAT16(仅Atlas A2训练系列产品/Atlas 800I A2推理产品支持)、FLOAT32,shape要求与“varRef”参数一致,支持undefined,undefined支持ND。
- maxGradNormOptionalRef(aclTensor*, 计算输入/计算输出):保存v参数的最大值,数据类型支持FLOAT16、BFLOAT16(仅Atlas A2训练系列产品/Atlas 800I A2推理产品支持)、FLOAT32,shape要求与“varRef”参数一致,此参数在amsgrad参数为true时必选,在amsgrad参数为false时可选。支持undefined,undefined支持ND。
- grad(const aclTensor*, 计算输入):梯度数据,数据类型支持FLOAT16、BFLOAT16(仅Atlas A2训练系列产品/Atlas 800I A2推理产品支持)、FLOAT32,shape要求与“varRef”参数一致。支持undefined,undefined支持ND。
- step(const aclTensor*, 计算输入):迭代次数,数据类型支持INT64、FLOAT32,元素个数为1,支持undefined,undefined支持ND。
- lr(float*, 计算输入):输入参数,学习率,数据类型支持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*, 出参):返回op执行器,包含了算子计算流程。
返回值:
aclnnStatus: 返回状态码,具体参见undefined。
[object Object]
aclnnApplyAdamWV2
参数说明:
- workspace(void *, 入参): 在Device侧申请的workspace内存地址。
- workspaceSize(uint64_t, 入参): 在Device侧申请的workspace大小,由第一段接口aclnnApplyAdamWV2GetWorkspaceSize获取。
- executor(aclOpExecutor *, 入参): op执行器,包含了算子计算流程。
- stream(aclrtStream, 入参): 指定执行任务的AscendCL Stream流。
返回值:
aclnnStatus: 返回状态码,具体参见undefined。
约束与限制
- 输入张量varRef、mRef、vRef、grad、maxGradNormOptionalRef数据类型一致时,数据类型支持FLOAT16、BFLOAT16(仅Atlas A2训练系列产品/Atlas 800I A2推理产品支持)、FLOAT32。
调用示例
示例代码如下,仅供参考,具体编译和执行过程请参考undefined。
[object Object]