LAMB
LAMB (层自适应大型批量优化)是一个旨在用于大批量训练的适应力优化器,以加速训练,结合了LARS
和Adam
的思想,以自动调整每层的学习率
- 计算一层中权重和梯度范数之间的信任比,并将该比率剪裁以防止更新过大或过小
- 使用一阶和二阶矩更新权重
LAMB
类 bitsandbytes.optim.LAMB
< source >( params lr = 0.001 bias_correction = True betas = (0.9, 0.999) eps = 1e-08 weight_decay = 0 amsgrad = False adam_w_mode = True optim_bits = 32 args = None min_8bit_size = 4096 percentile_clipping = 100 block_wise = False max_unorm = 1.0 )
__init__
< 源 >( params lr = 0.001 bias_correction = True betas = (0.9, 0.999) eps = 1e-08 weight_decay = 0 amsgrad = False adam_w_mode = True optim_bits = 32 args = None min_8bit_size = 4096 percentile_clipping = 100 block_wise = False max_unorm = 1.0 )
参数
- params (
torch.tensor
) — 要优化的输入参数。 - lr (
float
, 默认为 1e-3) — 学习率。 - bias_correction (
bool
, 默认为True
) — 是否对一阶和二阶矩应用偏差校正。 - betas (
tuple(float, float)
, 默认为 (0.9, 0.999)) — 优化器一阶和二阶矩的衰减率。 - eps (
float
, 默认为 1e-8) — 在优化器中防止除以零的 epsilon 值。 - weight_decay (
float
, 默认为 1e-2) — 优化器的权重衰减值。 - amsgrad (
bool
, 默认为False
) — 是否使用使用过去平方梯度的最大值的 Adam 的 AMSGrad 变体。AMSGrad。 - adam_w_mode (
bool
, 默认为True
) — 是否使用 AdamW 变体。 - optim_bits (
int
, 默认为 32) — 优化器状态的位数。 - args (
object
,默认为None
) — 一个包含额外参数的对象。 - min_8bit_size (
int
,默认为4096) — 8位优化的参数张量元素的最小数量。 - percentile_clipping (
int
,默认为100) — 通过跟踪最近100个梯度范数来自动调整剪辑阈值,并在某个百分位数处剪辑梯度以改善稳定性。 - block_wise (
bool
,默认为True
) — 是否独立量化每个张量块以减少异常值的影响并提高稳定性。 - max_unorm (
float
,默认为1.0) — 最大梯度范数。
基础的LAMB优化器。
LAMB8bit
类 bitsandbytes.optim.LAMB8bit
< 源码 >( params lr = 0.001 bias_correction = True betas = (0.9, 0.999) eps = 1e-08 weight_decay = 0 amsgrad = False adam_w_mode = True args = None min_8bit_size = 4096 percentile_clipping = 100 block_wise = False max_unorm = 1.0 )
__init__
< source >( params lr = 0.001 bias_correction = True betas = (0.9, 0.999) eps = 1e-08 weight_decay = 0 amsgrad = False adam_w_mode = True args = None min_8bit_size = 4096 percentile_clipping = 100 block_wise = False max_unorm = 1.0 )
参数
- params (
torch.tensor
) — 要优化的输入参数。 - lr (
float
, 默认为 1e-3) — 学习率。 - bias_correction (布尔值,默认为
True
) — 是否应用偏差校正到一阶和二阶矩。 - betas (浮点数元组,默认为 (0.9, 0.999)) — 优化器一阶和二阶矩的衰减率。
- eps (浮点数,默认为 1e-8) — 在优化器中用来防止除以零的 epsilon 值。
- weight_decay (
float
,默认为 1e-2)——优化器的权重衰减值。 - amsgrad (
bool
,默认为False
)——是否使用 Adam 算法的 AMSGrad 变体,该变体使用过去平方梯度的最大值。 - adam_w_mode (
bool
,默认为True
)——是否使用 AdamW 变体。 - args (
object
,默认为None
)——包含附加参数的对象。 - min_8bit_size (
int
, 默认为 4096) — 8 位优化参数张量元素的最小数量。 - percentile_clipping (
int
, 默认为 100) — 通过跟踪最后 100 个梯度范数来自适应地调整剪裁阈值,通过在一定的百分位数处剪裁梯度来提高稳定性和结果。 - block_wise (
bool
, 默认为True
) — 是否独立量化每个张量块以减少异常值的影响并提高稳定性。 - max_unorm (
float
, 默认为 1.0) — 最大梯度范数。
8 位 LAMB 优化器。
LAMB32bit
类 bitsandbytes.optim.LAMB32bit
< 源 >( params lr = 0.001 bias_correction = True betas = (0.9, 0.999) eps = 1e-08 weight_decay = 0 amsgrad = False adam_w_mode = True args = None min_8bit_size = 4096 percentile_clipping = 100 block_wise = False max_unorm = 1.0 )
__init__
< 源 >( params lr = 0.001 bias_correction = True betas = (0.9, 0.999) eps = 1e-08 weight_decay = 0 amsgrad = False adam_w_mode = True args = None min_8bit_size = 4096 percentile_clipping = 100 block_wise = False max_unorm = 1.0 )
参数
- params (
torch.tensor
) — 要优化的输入参数。 - lr (
浮点数
,默认值为 1e-3) — 学习率。 - bias_correction (
布尔值
,默认为True
) — 是否对第一和二阶矩进行偏差校正。 - betas (
浮点数元组
,默认为 (0.9, 0.999)) — 优化器第一和二阶矩的衰减率。 - eps (
浮点数
,默认值为 1e-8) — epsilon值用于防止优化器中除以零。 - weight_decay(
float
,默认为 1e-2)——优化器中的权重衰减值。 - amsgrad(
bool
,默认为False
)——是否使用 Adam 的 AMSGrad 变体,该变体使用过去平方梯度的最大值。 - adam_w_mode(
bool
,默认为True
)——是否使用 AdamW 变体。 - args(
object
,默认为None
)——带有额外参数的对象。 - min_8bit_size(《int》类型,默认为4096)——8位优化参数张量元素的最小数量。
- percentile_clipping(《int》类型,默认为100)——自动调整剪裁阈值,通过跟踪最后的100个梯度规范,并在某个百分位处剪裁梯度以提高稳定性。
- block_wise(《bool》类型,默认为True)——是否独立量化每个张量块以减少异常值的影响并提高稳定性。
- max_unorm(《float》类型,默认为1.0)——最大梯度规范。
32位LAMB优化器。