Bitsandbytes 文档
Adam
并获得增强的文档体验
开始使用
Adam
Adam(自适应矩估计)是一种自适应学习率优化器,结合了 `SGD` 的动量和 `RMSprop` 的思想来自动缩放学习率。
- 使用过去梯度的加权平均值来提供方向(一阶矩)
- 使用过去梯度的*平方*的加权平均值来为每个参数调整学习率(二阶矩)
bitsandbytes 还支持分页优化器,当 GPU 内存耗尽时,该优化器利用 CUDA 的统一内存将内存从 GPU 转移到 CPU。
Adam
class bitsandbytes.optim.Adam
< 来源 >( params lr = 0.001 betas = (0.9, 0.999) eps = 1e-08 weight_decay = 0 amsgrad = False optim_bits = 32 args = None min_8bit_size = 4096 percentile_clipping = 100 block_wise = True is_paged = False )
__init__
< 来源 >( params lr = 0.001 betas = (0.9, 0.999) eps = 1e-08 weight_decay = 0 amsgrad = False optim_bits = 32 args = None min_8bit_size = 4096 percentile_clipping = 100 block_wise = True is_paged = False )
参数
- params (
torch.tensor
) — 用于优化的输入参数。 - lr (
float
, 默认为 1e-3) — 学习率。 - betas (
tuple(float, float)
, 默认为 (0.9, 0.999)) — Beta 值是优化器一阶和二阶矩的衰减率。 - eps (
float
, 默认为 1e-8) — Epsilon 值用于防止优化器中出现除以零的情况。 - weight_decay (
float
, 默认为 0.0) — 优化器的权重衰减值。 - amsgrad (
bool
, 默认为False
) — 是否使用 Adam 的 AMSGrad 变体,该变体使用过去平方梯度的最大值。 - optim_bits (
int
, 默认为 32) — 优化器状态的位数。 - args (
object
, 默认为 `None`) — 包含附加参数的对象。 - min_8bit_size (
int
, 默认为 4096) — 进行 8 位优化的参数张量的最小元素数量。 - percentile_clipping (
int
, 默认为 100) — 通过跟踪最近 100 个梯度范数并在特定百分位数处裁剪梯度,自动调整裁剪阈值以提高稳定性。 - block_wise (
bool
, 默认为True
) — 是否独立量化每个张量块,以减少异常值影响并提高稳定性。 - is_paged (
bool
, 默认为False
) — 优化器是否是分页优化器。
基础 Adam 优化器。
Adam8bit
class bitsandbytes.optim.Adam8bit
< 来源 >( params lr = 0.001 betas = (0.9, 0.999) eps = 1e-08 weight_decay = 0 amsgrad = False optim_bits = 32 args = None min_8bit_size = 4096 percentile_clipping = 100 block_wise = True is_paged = False )
__init__
< 来源 >( params lr = 0.001 betas = (0.9, 0.999) eps = 1e-08 weight_decay = 0 amsgrad = False optim_bits = 32 args = None min_8bit_size = 4096 percentile_clipping = 100 block_wise = True is_paged = False )
参数
- params (
torch.tensor
) — 用于优化的输入参数。 - lr (
float
, 默认为 1e-3) — 学习率。 - betas (
tuple(float, float)
, 默认为 (0.9, 0.999)) — Beta 值是优化器一阶和二阶矩的衰减率。 - eps (
float
, 默认为 1e-8) — Epsilon 值用于防止优化器中出现除以零的情况。 - weight_decay (
float
, 默认为 0.0) — 优化器的权重衰减值。 - amsgrad (
bool
, 默认为False
) — 是否使用 Adam 的 AMSGrad 变体,该变体使用过去平方梯度的最大值。 - optim_bits (
int
, 默认为 32) — 优化器状态的位数。 - args (
object
, 默认为 `None`) — 包含附加参数的对象。 - min_8bit_size (
int
, 默认为 4096) — 进行 8 位优化的参数张量的最小元素数量。 - percentile_clipping (
int
, 默认为 100) — 通过跟踪最近 100 个梯度范数并在特定百分位数处裁剪梯度,自动调整裁剪阈值以提高稳定性。 - block_wise (
bool
, 默认为True
) — 是否独立量化每个张量块,以减少异常值影响并提高稳定性。 - is_paged (
bool
, 默认为False
) — 优化器是否是分页优化器。
8 位 Adam 优化器。
Adam32bit
class bitsandbytes.optim.Adam32bit
< 来源 >( params lr = 0.001 betas = (0.9, 0.999) eps = 1e-08 weight_decay = 0 amsgrad = False optim_bits = 32 args = None min_8bit_size = 4096 percentile_clipping = 100 block_wise = True is_paged = False )
__init__
< 来源 >( params lr = 0.001 betas = (0.9, 0.999) eps = 1e-08 weight_decay = 0 amsgrad = False optim_bits = 32 args = None min_8bit_size = 4096 percentile_clipping = 100 block_wise = True is_paged = False )
参数
- params (
torch.tensor
) — 用于优化的输入参数。 - lr (
float
, 默认为 1e-3) — 学习率。 - betas (
tuple(float, float)
, 默认为 (0.9, 0.999)) — Beta 值是优化器一阶和二阶矩的衰减率。 - eps (
float
, 默认为 1e-8) — Epsilon 值用于防止优化器中出现除以零的情况。 - weight_decay (
float
, 默认为 0.0) — 优化器的权重衰减值。 - amsgrad (
bool
, 默认为False
) — 是否使用 Adam 的 AMSGrad 变体,该变体使用过去平方梯度的最大值。 - optim_bits (
int
, 默认为 32) — 优化器状态的位数。 - args (
object
, 默认为 `None`) — 包含附加参数的对象。 - min_8bit_size (
int
, 默认为 4096) — 进行 8 位优化的参数张量的最小元素数量。 - percentile_clipping (
int
, 默认为 100) — 通过跟踪最近 100 个梯度范数并在特定百分位数处裁剪梯度,自动调整裁剪阈值以提高稳定性。 - block_wise (
bool
, 默认为True
) — 是否独立量化每个张量块,以减少异常值影响并提高稳定性。 - is_paged (
bool
, 默认为False
) — 优化器是否是分页优化器。
32 位 Adam 优化器。
PagedAdam
class bitsandbytes.optim.PagedAdam
< 来源 >( params lr = 0.001 betas = (0.9, 0.999) eps = 1e-08 weight_decay = 0 amsgrad = False optim_bits = 32 args = None min_8bit_size = 4096 percentile_clipping = 100 block_wise = True is_paged = False )
__init__
< 来源 >( params lr = 0.001 betas = (0.9, 0.999) eps = 1e-08 weight_decay = 0 amsgrad = False optim_bits = 32 args = None min_8bit_size = 4096 percentile_clipping = 100 block_wise = True is_paged = False )
参数
- params (
torch.tensor
) — 用于优化的输入参数。 - lr (
float
, 默认为 1e-3) — 学习率。 - betas (
tuple(float, float)
, 默认为 (0.9, 0.999)) — Beta 值是优化器一阶和二阶矩的衰减率。 - eps (
float
, 默认为 1e-8) — Epsilon 值用于防止优化器中出现除以零的情况。 - weight_decay (
float
, 默认为 0.0) — 优化器的权重衰减值。 - amsgrad (
bool
, 默认为False
) — 是否使用 Adam 的 AMSGrad 变体,该变体使用过去平方梯度的最大值。 - optim_bits (
int
, 默认为 32) — 优化器状态的位数。 - args (
object
, 默认为None
) — 包含附加参数的对象。 - min_8bit_size (
int
, 默认为 4096) — 进行 8 位优化的参数张量的最小元素数量。 - percentile_clipping (
int
, 默认为 100) — 通过跟踪最近 100 次的梯度范数,并在特定百分位数上裁剪梯度,从而自动调整裁剪阈值以提高稳定性。 - block_wise (
bool
, 默认为True
) — 是否对张量的每个块独立进行量化,以减少异常值效应并提高稳定性。 - is_paged (
bool
, 默认为False
) — 优化器是否为分页优化器。
分页 Adam 优化器。
PagedAdam8bit
class bitsandbytes.optim.PagedAdam8bit
< 源码 >( params lr = 0.001 betas = (0.9, 0.999) eps = 1e-08 weight_decay = 0 amsgrad = False optim_bits = 32 args = None min_8bit_size = 4096 percentile_clipping = 100 block_wise = True is_paged = False )
__init__
< 源码 >( params lr = 0.001 betas = (0.9, 0.999) eps = 1e-08 weight_decay = 0 amsgrad = False optim_bits = 32 args = None min_8bit_size = 4096 percentile_clipping = 100 block_wise = True is_paged = False )
参数
- params (
torch.tensor
) — 需要优化的输入参数。 - lr (
float
, 默认为 1e-3) — 学习率。 - betas (
tuple(float, float)
, 默认为 (0.9, 0.999)) — Beta 值是优化器一阶和二阶矩的衰减率。 - eps (
float
, 默认为 1e-8) — Epsilon 值用于防止优化器中出现除以零的情况。 - weight_decay (
float
, 默认为 0.0) — 优化器的权重衰减值。 - amsgrad (
bool
, 默认为False
) — 是否使用 Adam 的 AMSGrad 变体,该变体使用过去平方梯度的最大值。 - optim_bits (
int
, 默认为 32) — 优化器状态的位数。 - args (
object
, 默认为None
) — 包含附加参数的对象。 - min_8bit_size (
int
, 默认为 4096) — 进行 8 位优化的参数张量的最小元素数量。 - percentile_clipping (
int
, 默认为 100) — 通过跟踪最近 100 次的梯度范数,并在特定百分位数上裁剪梯度,从而自动调整裁剪阈值以提高稳定性。 - block_wise (
bool
, 默认为True
) — 是否对张量的每个块独立进行量化,以减少异常值效应并提高稳定性。 - is_paged (
bool
, 默认为False
) — 优化器是否为分页优化器。
8 位分页 Adam 优化器。
PagedAdam32bit
class bitsandbytes.optim.PagedAdam32bit
< 源码 >( params lr = 0.001 betas = (0.9, 0.999) eps = 1e-08 weight_decay = 0 amsgrad = False optim_bits = 32 args = None min_8bit_size = 4096 percentile_clipping = 100 block_wise = True is_paged = False )
__init__
< 源码 >( params lr = 0.001 betas = (0.9, 0.999) eps = 1e-08 weight_decay = 0 amsgrad = False optim_bits = 32 args = None min_8bit_size = 4096 percentile_clipping = 100 block_wise = True is_paged = False )
参数
- params (
torch.tensor
) — 需要优化的输入参数。 - lr (
float
, 默认为 1e-3) — 学习率。 - betas (
tuple(float, float)
, 默认为 (0.9, 0.999)) — Beta 值是优化器一阶和二阶矩的衰减率。 - eps (
float
, 默认为 1e-8) — Epsilon 值用于防止优化器中出现除以零的情况。 - weight_decay (
float
, 默认为 0.0) — 优化器的权重衰减值。 - amsgrad (
bool
, 默认为False
) — 是否使用 Adam 的 AMSGrad 变体,该变体使用过去平方梯度的最大值。 - optim_bits (
int
, 默认为 32) — 优化器状态的位数。 - args (
object
, 默认为None
) — 包含附加参数的对象。 - min_8bit_size (
int
, 默认为 4096) — 进行 8 位优化的参数张量的最小元素数量。 - percentile_clipping (
int
, 默认为 100) — 通过跟踪最近 100 次的梯度范数,并在特定百分位数上裁剪梯度,从而自动调整裁剪阈值以提高稳定性。 - block_wise (
bool
, 默认为True
) — 是否对张量的每个块独立进行量化,以减少异常值效应并提高稳定性。 - is_paged (
bool
, 默认为False
) — 优化器是否为分页优化器。
32 位分页 Adam 优化器。