SGD
随机梯度下降(SGD)是一种基本梯度下降优化器,给定一组模型参数以最小化损失,并通过与梯度相反的方向更新参数。更新是在从数据集随机采样的迷你批量数据上执行的。
bitsandbytes还支持动量和Nesterov动量,通过向当前梯度添加过去梯度的加权平均值来加速SGD。
SGD
类 bitsandbytes.optim.SGD
< source >( params lr momentum = 0 dampening = 0 weight_decay = 0 nesterov = False optim_bits = 32 args = None min_8bit_size = 4096 percentile_clipping = 100 block_wise = True )
__init__
< 源代码 >( params lr momentum = 0 dampening = 0 weight_decay = 0 nesterov = False optim_bits = 32 args = None min_8bit_size = 4096 percentile_clipping = 100 block_wise = True )
参数
- params (
torch.tensor
) — 要优化的输入参数。 - lr (
浮点数
) — 学习率。 - momentum (
浮点数
, 默认为 0) — 动量值,通过增加步长来加速优化器。 - dampening (
浮点数
, 默认为 0) — 减速值,减小优化器的动量。 - weight_decay (
浮点数
, 默认为 0.0) — 优化器的权重衰减值。 - nesterov (
bool
,默认为False
) — 是否使用Nesterov动量。 - optim_bits (
int
,默认为32) — 优化器状态的位数。 - args (
object
,默认为None
) — 包含额外参数的对象。 - min_8bit_size (
int
,默认为4096) — 8位优化参数张量元素的最小数量。 - percentile_clipping (
int
,默认为100)——通过跟踪最后100个梯度范数来自动调整剪裁阈值,并在一定百分位数处剪裁梯度以改善稳定性。 - block_wise (
bool
,默认为True
)——是否独立量化张量块以减少异常值影响并提高稳定性。
基本SGD优化器。
SGD8bit
类 bitsandbytes.optim.SGD8bit
< 源代码 >( 参数(params) 学习率(lr) 动量(momentum) = 0 阻尼系数(dampening) = 0 权重衰减(weight_decay) = 0 Nesterov(nesterov) = False 其它参数(args) = None 最小8位大小(min_8bit_size) = 4096 百分比裁剪(percentile_clipping) = 100 块级(block_wise) = True )
__init__
< 源代码 >( params lr momentum = 0 dampening = 0 weight_decay = 0 nesterov = False args = None min_8bit_size = 4096 percentile_clipping = 100 block_wise = True )
参数
- params (
torch.tensor
) — 优化输入的参数。 - lr (
float
) — 学习率。 - momentum (
float
,默认为0) — 动量值通过采取更大的步伐来加速优化器。 - dampening (
float
,默认为0) — 阻尼值降低优化器的动量。 - weight_decay (
float
,默认为0.0) — 优化器的权重衰减值。 - nesterov (
bool
,默认为False
) — 是否使用Nesterov动量。 - args (
对象
,默认为None
) — 一个包含额外参数的对象。 - min_8bit_size (
整数
,默认为 4096) — 8 位优化中参数张量的最小元素数量。 - percentile_clipping (
整数
,默认为 100) — 通过跟踪最后 100 个梯度的范数来自动调整裁剪阈值,在某个百分位数处裁剪梯度以改善稳定性。 - block_wise (
布尔值
,默认为True
) — 是否独立量化张量的每个块以减少异常值影响并提高稳定性。
8位SGD优化器。
SGD32bit
类 bitsandbytes.optim.SGD32bit
< source >( 参数(params) 学习率(lr) 动量(momentum) = 0 阻尼系数(dampening) = 0 权重衰减(weight_decay) = 0 Nesterov(nesterov) = False 其它参数(args) = None 最小8位大小(min_8bit_size) = 4096 百分比裁剪(percentile_clipping) = 100 块级(block_wise) = True )
__init__
< source >( params lr momentum = 0 dampening = 0 weight_decay = 0 nesterov = False args = None min_8bit_size = 4096 percentile_clipping = 100 block_wise = True )
参数
- params (
torch.tensor
) — 要优化的输入参数。 - lr (
float
) — 学习率。 - momentum (
float
, 默认 0) — 惯量值可以加快优化过程通过采取更大的步长。 - dampening (
float
, 默认 0) — 消 dampening 值可以减少优化器的动量。 - weight_decay (
float
, 默认 0.0) — 优化器的权重衰减值。 - nesterov (
bool
,默认为False
) — 是否使用Nesterov动量。 - args (
object
,默认为None
) — 包含额外参数的对象。 - min_8bit_size (
int
,默认为4096) — 8位优化参数张量的最小元素数。 - percentile_clipping (
int
,默认为100) — 通过跟踪最后100个梯度范数来自动调整剪切阈值,在一定的百分位数处剪切梯度以改善稳定性。 - 按块划分 (
布尔型
,默认为True
) — 是否独立地对每个张量块进行量化,以减少异常值影响并提高稳定性。
32位SGD优化器。