aclnnApplyAdamWV2
支持的产品型号
- Atlas A2训练系列产品。
接口原型
每个算子分为,必须先调用“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训练系列产品支持)、FLOAT32。支持,支持ND。
- mRef(aclTensor*, 计算输入/计算输出): adamw优化器中m参数,数据类型支持FLOAT16、BFLOAT16(仅Atlas A2训练系列产品支持)、FLOAT32,shape要求与“varRef”参数一致。支持,支持ND。
- vRef(aclTensor*, 计算输入/计算输出): adamw优化器中v参数,数据类型支持FLOAT16、BFLOAT16(仅Atlas A2训练系列产品支持)、FLOAT32,shape要求与“varRef”参数一致。支持,支持ND。
- maxGradNormOptionalRef(aclTensor*, 计算输入/计算输出): 保存v参数的最大值,数据类型支持FLOAT16、BFLOAT16(仅Atlas A2训练系列产品支持)、FLOAT32,shape要求与“varRef”参数一致。此参数在amsgrad参数为true时必选,在amsgrad参数为false时可选。支持,支持ND。
- grad(const aclTensor*, 计算输入): 梯度数据,数据类型支持FLOAT16、BFLOAT16(仅Atlas A2训练系列产品支持)、FLOAT32,shape要求与“varRef”参数一致。支持,支持ND。
- step(const aclTensor*, 计算输入): 迭代次数,数据类型支持INT64、FLOAT32,shape为(1,)。支持,支持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执行器,包含了算子计算流程。
返回值:
[object Object]
aclnnApplyAdamWV2
参数说明:
- workspace(void *, 入参): 在Device侧申请的workspace内存地址。
- workspaceSize(uint64_t, 入参): 在Device侧申请的workspace大小,由第一段接口aclnnApplyAdamWV2GetWorkspaceSize获取。
- executor(aclOpExecutor *, 入参): op执行器,包含了算子计算流程。
- stream(aclrtStream, 入参): 指定执行任务的 AscendCL Stream流。
返回值:
约束与限制
- 输入张量varRef、mRef、vRef、grad、maxGradNormOptionalRef数据类型一致时,数据类型支持FLOAT16、BFLOAT16(仅Atlas A2训练系列产品支持)、FLOAT32。
- 输入张量varRef、mRef、vRef的数据类型必须一致,例如当varRef为FLOAT16时,mRef和vRef也必须为FLOAT16。
- 输入张量grad、maxGradNormOptionalRef的数据类型必须一致,例如当grad为FLOAT16时,maxGradNormOptionalRef也必须为FLOAT16。
- 当输入张量varRef、mRef、vRef、grad、maxGradNormOptionalRef数据类型不一致时,varRef、mRef、vRef的数据类型仅支持FLOAT32,grad、maxGradNormOptionalRef的数据类型只能为FLOAT16、BFLOAT16(仅Atlas A2训练系列产品支持)。
调用示例
[object Object]