文件最后提交记录最后更新时间
17 天前
1 天前
28 天前
17 天前
9 天前
17 天前
28 天前
9 天前
README

SparseApplyAdadelta

产品支持情况

产品 是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品 ×
Atlas A2 训练系列产品/Atlas A2 推理系列产品 ×
Atlas 200I/500 A2 推理产品 ×
Atlas 推理系列产品 ×
Atlas 训练系列产品 ×

功能说明

  • 算子功能:SparseApplyAdadelta是AdaDelta优化算法的稀疏版本,用于在训练过程中对Embedding等稀疏参数进行自适应学习率更新。仅更新indices指定的行,适用于Embedding层等大规模稀疏参数的梯度更新场景。

  • 计算公式:

accum[i]=ρ×accum[i]+(1−ρ)×grad[i]2\text{accum}[i] = \rho \times \text{accum}[i] + (1 - \rho) \times \text{grad}[i]^2

update=accum_update[i]+ϵaccum[i]+ϵ×grad[i]\text{update} = \sqrt{\frac{\text{accum\_update}[i] + \epsilon}{\text{accum}[i] + \epsilon}} \times \text{grad}[i]

var[i]=var[i]−update×lr\text{var}[i] = \text{var}[i] - \text{update} \times \text{lr}

accum_update[i]=ρ×accum_update[i]+(1−ρ)×update2\text{accum\_update}[i] = \rho \times \text{accum\_update}[i] + (1 - \rho) \times \text{update}^2

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
var 输入 待更新的参数张量,第一维为稀疏维度。 FLOAT ND
accum 输入 梯度平方的指数移动平均,与var同shape同dtype。 FLOAT ND
accum_update 输入 更新量平方的指数移动平均,与var同shape同dtype。 FLOAT ND
lr 输入 学习率,标量。 FLOAT ND
rho 输入 衰减率,标量,取值范围[0, 1]。 FLOAT ND
epsilon 输入 数值稳定性参数,标量,通常很小(如1e-6)。 FLOAT ND
grad 输入 梯度张量,第一维N为indices的长度。 FLOAT ND
indices 输入 索引向量,指定需要更新的行。取值范围[0, var的第一维大小),值必须唯一,不支持越界索引。 INT32、INT64 ND
var 输出 更新后的参数张量,与输入var同shape同dtype。 FLOAT ND
accum 输出 更新后的梯度累积器。 FLOAT ND
accum_update 输出 更新后的更新量累积器。 FLOAT ND
use_locking 属性 是否使用锁保护变量更新(NPU上未实现锁机制),默认false。 Bool -

约束说明

  • var、accum、accum_update三者shape必须一致。
  • grad的第一维(N)等于indices的长度,其余维度与var的后续维度一致。
  • indices值必须唯一,不支持越界索引。
  • 仅支持float32数值类型,indices支持int32和int64。

调用说明

调用方式 调用样例 说明
图模式调用 test_geir_sparse_apply_adadelta 在host侧通过GE IR构图方式调用sparse_apply_adadelta算子。