Bitsandbytes 文档
随机梯度下降
并获得增强的文档体验
开始使用
SGD
随机梯度下降 (SGD) 是一种基本的梯度下降优化器,用于最小化损失,给定一组模型参数,并沿梯度相反的方向更新参数。更新是在从数据集中随机抽样的小批量数据上执行的。
bitsandbytes 还支持动量和 Nesterov 动量,通过将过去梯度的加权平均值添加到当前梯度来加速 SGD。
SGD
class 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__
< 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 )
参数
- params (
torch.tensor
) — 要优化的输入参数。 - lr (
float
) — 学习率。 - momentum (
float
, 默认为 0) — 动量值通过采取更大的步长来加速优化器。 - dampening (
float
, 默认为 0) — 阻尼值减少优化器的动量。 - weight_decay (
float
, 默认为 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
class bitsandbytes.optim.SGD8bit
< source >( params lr momentum = 0 dampening = 0 weight_decay = 0 nesterov = False args = None 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
, defaults to 0) — 动量值通过采取更大的步长来加速优化器。 - dampening (
float
, defaults to 0) — 衰减值会降低优化器的动量。 - weight_decay (
float
, defaults to 0.0) — 优化器的权重衰减值。 - nesterov (
bool
, defaults toFalse
) — 是否使用Nesterov动量。 - args (
object
, defaults toNone
) — 包含附加参数的对象。 - min_8bit_size (
int
, defaults to 4096) — 参数张量中元素的最小数量,以便进行 8 位优化。 - percentile_clipping (
int
, defaults to 100) — 通过跟踪最近 100 个梯度范数并在某个百分位数处裁剪梯度来自动调整裁剪阈值,以提高稳定性。 - block_wise (
bool
, defaults toTrue
) — 是否独立量化张量的每个块,以减少异常值影响并提高稳定性。
8 位 SGD 优化器。
SGD32bit
class bitsandbytes.optim.SGD32bit
< source >( params lr momentum = 0 dampening = 0 weight_decay = 0 nesterov = False args = None 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
, defaults to 0) — 动量值通过采取更大的步长来加速优化器。 - dampening (
float
, defaults to 0) — 衰减值会降低优化器的动量。 - weight_decay (
float
, defaults to 0.0) — 优化器的权重衰减值。 - nesterov (
bool
, defaults toFalse
) — 是否使用Nesterov动量。 - args (
object
, defaults toNone
) — 包含附加参数的对象。 - min_8bit_size (
int
, defaults to 4096) — 参数张量中元素的最小数量,以便进行 8 位优化。 - percentile_clipping (
int
, defaults to 100) — 通过跟踪最近 100 个梯度范数并在某个百分位数处裁剪梯度来自动调整裁剪阈值,以提高稳定性。 - block_wise (
bool
, defaults toTrue
) — 是否独立量化张量的每个块,以减少异常值影响并提高稳定性。
32 位 SGD 优化器。