mindformers.core.Came ===================== .. image:: https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/r2.4.0/resource/_static/logo_source.svg :target: https://gitee.com/mindspore/mindformers/blob/v1.3.0/docs/api/api_python/core/mindformers.core.Came.rst :alt: 查看源文件 .. py:class:: mindformers.core.Came(params, learning_rate=None, eps=(1e-30, 1e-3, 1e-16), clip_threshold=1.0, decay_rate=0.8, beta1=0.9, beta3=0.99, weight_decay=0.0, scale_parameter=False, relative_step=False, warmup_init=False, compression=False, loss_scale=1) 通过Confidence-guided Adaptive Memory Efficient Optimization (Came)算法更新梯度。 请参阅论文 `CAME: Confidence-guided Adaptive Memory Efficient Optimization <https://arxiv.org/abs/2307.02047>`_ 。 参数: - **params** (Union[list[Parameter], list[dict]]) - 当 `params` 是将要更新的 `Parameter` 列表时,`params` 中的元素必须是 `Parameter` 类。 - **learning_rate** (Union[float, Tensor]) - 学习率。当 `learning_rate` 是一维 `Tensor` 时。如果 `learning_rate` 是 `int` 类型,将被转换为 `float`。默认值: ``None`` 。 - **eps** (Union[list, tuple]) - 分别为平方梯度、参数比例和不稳定矩阵的正则化常数。默认值: ``(1e-30, 1e-3, 1e-16)`` 。 - **clip_threshold** (float) - 最终梯度更新的均方根阈值。默认值: ``1.0`` 。 - **decay_rate** (float) - 用于计算平方梯度的运行平均值的系数。应在 [0.0, 1.0] 范围内。默认值: ``0.8`` 。 - **beta1** (float) - 计算梯度运行平均值的系数。应在 [0.0, 1.0] 范围内。默认值: ``0.9`` 。 - **beta3** (float) - 计算梯度运行平均值的系数。应在 [0.0, 1.0] 范围内。默认值: ``0.99`` 。 - **weight_decay** (float) - 权重衰减 (L2 惩罚)。必须大于或等于 0。应在 [0.0, 1.0] 范围内。默认值: ``0.0`` 。 - **scale_parameter** (bool) - 如果为 ``True``,则学习率按参数的均方根缩放。默认值: ``False`` 。 - **relative_step** (bool) - 如果为 ``True``,则计算时间相关学习率,而不是外部学习率。默认值: ``False`` 。 - **warmup_init** (bool) - 时间相关学习率计算取决于是否使用预热初始化。默认值: ``False`` 。 - **compression** (bool) - 如果为 ``True``,则运行平均指数的数据类型将压缩为 float16。默认值: ``False`` 。 - **loss_scale** (int) - 损失缩放的整数值。应大于 0。通常使用默认值。仅当使用 `FixedLossScaleManager` 进行训练且 `FixedLossScaleManager` 中的 `drop_overflow_update` 设置为 ``False`` 时,此值需要与 `FixedLossScaleManager` 中的 `loss_scale` 相同。有关更多详细信息,请参阅类 `mindspore.amp.FixedLossScaleManager`。默认值: ``1`` 。 输入: - **gradients** (tuple[Tensor]) - `params` 的梯度,形状与 `params` 相同。 输出: Tensor[bool],值为 `True` 。 异常: - **TypeError** - 如果 `learning_rate` 不是 int、float、Tensor、Iterable 或 LearningRateSchedule 中的一种。 - **TypeError** - 如果 `parameters` 的元素既不是 Parameter 也不是 dict。 - **TypeError** - 如果 `decay_rate`、`weight_decay`、`beta1`、`beta3`、`eps` 或 `loss_scale` 不是 float。 - **TypeError** - 如果 `use_locking` 或 `use_nesterov` 不是 bool。 - **ValueError** - 如果 `loss_scale` 或 `eps` 小于或等于 0。 - **ValueError** - 如果 `decay_rate`、`weight_decay`、`beta1` 或 `beta3` 不在 [0.0, 1.0] 范围内。