昇腾社区首页
中文
注册

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。支持undefinedundefined支持ND。
    • mRef(aclTensor*, 计算输入/计算输出):adamw优化器中m参数,数据类型支持FLOAT16、BFLOAT16(仅Atlas A2训练系列产品/Atlas 800I A2推理产品支持)、FLOAT32,shape要求与“varRef”参数一致。支持undefinedundefined支持ND。
    • vRef(aclTensor*, 计算输入/计算输出):adamw优化器中v参数,数据类型支持FLOAT16、BFLOAT16(仅Atlas A2训练系列产品/Atlas 800I A2推理产品支持)、FLOAT32,shape要求与“varRef”参数一致,支持undefinedundefined支持ND。
    • maxGradNormOptionalRef(aclTensor*, 计算输入/计算输出):保存v参数的最大值,数据类型支持FLOAT16、BFLOAT16(仅Atlas A2训练系列产品/Atlas 800I A2推理产品支持)、FLOAT32,shape要求与“varRef”参数一致,此参数在amsgrad参数为true时必选,在amsgrad参数为false时可选。支持undefinedundefined支持ND。
    • grad(const aclTensor*, 计算输入):梯度数据,数据类型支持FLOAT16、BFLOAT16(仅Atlas A2训练系列产品/Atlas 800I A2推理产品支持)、FLOAT32,shape要求与“varRef”参数一致。支持undefinedundefined支持ND。
    • step(const aclTensor*, 计算输入):迭代次数,数据类型支持INT64、FLOAT32,元素个数为1,支持undefinedundefined支持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]