开发者
下载
[object Object][object Object][object Object]
  • [object Object]Ascend 950PR/Ascend 950DT[object Object]:支持
[object Object][object Object]
  • [object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]:支持
[object Object][object Object]
  • [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:支持
[object Object][object Object]
  • [object Object]Atlas 200I/500 A2 推理产品[object Object]:不支持
[object Object][object Object]
  • [object Object]Atlas 推理系列产品[object Object]:不支持
[object Object][object Object]
  • [object Object]Atlas 训练系列产品[object Object]:不支持
[object Object][object Object]
  • 接口功能:实现AMP(Automatic Mixed Precision)训练中的动态Scale更新逻辑。根据当前scale值、growth tracker计数器以及是否发现Inf/NaN,动态调整loss scale大小。

  • 计算公式:

    updated_scale={current_scale×backoff_factorif found_inf0current_scale×growth_factorif growth_tracker + 1 = growth_interval and new_scale is finitecurrent_scaleotherwise\text{updated\_scale} = \begin{cases} \text{current\_scale} \times \text{backoff\_factor} & \text{if found\_inf} \neq 0 \\ \text{current\_scale} \times \text{growth\_factor} & \text{if growth\_tracker + 1 = growth\_interval and new\_scale is finite} \\ \text{current\_scale} & \text{otherwise} \end{cases} updated_growth_tracker={0if found_inf0 or growth triggeredgrowth_tracker+1otherwise\text{updated\_growth\_tracker} = \begin{cases} 0 & \text{if found\_inf} \neq 0 \text{ or growth triggered} \\ \text{growth\_tracker} + 1 & \text{otherwise} \end{cases}

    说明:

    • 当found_inf不为0时,scale乘以backoff_factor回退,growth_tracker重置为0
    • 当found_inf为0且growth_tracker + 1等于growth_interval时,scale乘以growth_factor增长
    • 如果增长后的new_scale溢出(inf/nan),则保持当前scale不变,growth_tracker重置为0
    • 其他情况下,scale保持不变,growth_tracker递增1
  • 使用场景:AMP训练中的动态损失缩放(Dynamic Loss Scaling),用于在FP16/BF16混合精度训练中防止梯度下溢。

[object Object]

每个算子分为,必须先调用"aclnnAmpUpdateScaleGetWorkspaceSize"接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用"aclnnAmpUpdateScale"接口执行计算。

[object Object]
[object Object]
[object Object]
  • 参数说明:

    [object Object]
  • 返回值:

    aclnnStatus: 返回状态码,具体参见.

    第一段接口完成入参校验,出现以下场景时报错:

    [object Object]
[object Object]
  • 参数说明:

    [object Object]
  • 返回值:

    aclnnStatus:返回状态码,具体参见

[object Object]
  • 确定性计算:

    • aclnnAmpUpdateScale默认确定性实现。
  • 数据类型约束:current_scale与found_inf的数据类型必须一致;updated_scale的数据类型必须与current_scale一致。

  • shape约束:所有输入输出张量均为标量,shape为 [1]。

  • growthInterval约束:growthInterval取值范围为[1, 2147483647]。

  • Inf/NaN优先级:found_inf不为0时,直接执行回退逻辑,忽略growth_tracker状态。

  • 溢出保护:当scale增长后的新值溢出(inf/nan)时,保持当前scale不变,growth_tracker重置为0。

[object Object]

示例代码如下,仅供参考,具体编译和执行过程请参考

[object Object]