Adam
Adam (自适应动量估计)是一种自适应学习率优化器,结合了SGD
的动量与RMSprop
的概念来自动缩放学习率
- 历史梯度的加权平均值提供方向(一阶矩)
- 历史平方梯度的加权平均值以适应每个参数的学习率(二阶矩)
bitsandbytes还支持分页优化器,利用CUDA的统一内存,在GPU内存耗尽时将内存从GPU传输到CPU。
Adam
类 bitsandbytes.optim.Adam
< 源码 >params(参数),lr(学习率) = 0.001,betas(Beta值) = (0.9, 0.999),eps(epsilon值) = 1e-08,weight_decay(权重衰减) = 0,amsgrad(AmsGrad标志) = False,optim_bits(优化位宽度) = 32,args(额外参数) = None,min_8bit_size(最小8位精度大小) = 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)) — 优化器的一阶和二阶动量的衰减率。 - 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
类 bitsandbytes.optim.Adam8bit
< source >params(参数),lr(学习率) = 0.001,betas(Beta值) = (0.9, 0.999),eps(epsilon值) = 1e-08,weight_decay(权重衰减) = 0,amsgrad(AmsGrad标志) = False,optim_bits(优化位宽度) = 32,args(额外参数) = None,min_8bit_size(最小8位精度大小) = 4096,percentile_clipping(百分位数裁减) = 100,block_wise(块级优化) = True,is_paged(分页优化) = False
__init__
< source >( 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(《元组(float, float)》默认为(0.9, 0.999))——这些beta值是优化器第一和第二阶矩的衰减率。
- eps(《float》默认为1e-8)——防止优化器中除以零的epsilon值。
- weight_decay(《float》默认为0.0)——优化器的权重衰减值。
- amsgrad(《bool》默认为False)——是否使用使用过去平方梯度最大值的AMSGrad变体Adma。
- 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
类 bitsandbytes.optim.Adam32bit
< source >params(参数),lr(学习率) = 0.001,betas(Beta值) = (0.9, 0.999),eps(epsilon值) = 1e-08,weight_decay(权重衰减) = 0,amsgrad(AmsGrad标志) = False,optim_bits(优化位宽度) = 32,args(额外参数) = None,min_8bit_size(最小8位精度大小) = 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
, defaults to 1e-3) — 学习率。 - betas (
tuple(float, float)
, defaults to (0.9, 0.999)) — 优化器的一阶和二阶矩的衰减率。 - eps (
float
, 默认值为 1e-8) — 这个 epsilon 值可以防止优化器中除以零的情况。 - weight_decay (
float
, 默认值为 0.0) — 优化器的权重衰减值。 - amsgrad (
bool
, 默认值为False
) — 是否使用使用过去平方梯度的最大值的 AMSGrad 变体。 - optim_bits (
int
, 默认值为 32) — 优化器状态的位数。 - 参数(
object
,默认为None
)——一个包含额外参数的对象。 - 最小_8位大小(
int
,默认为 4096)——8位优化参数张量元素的最小数量。 - 百分位剪裁(
int
,默认为 100)——通过跟踪最后的100个梯度范数来自动调整剪裁阈值,并在某个百分位数处剪裁梯度以改进稳定性。 - 块级(
bool
,默认为True
)——是否独立量化每个张量块以减少异常值影响并提高稳定性。 - is_paged (
bool
, 默认为False
) — 是否为分页优化器。
32位Adam优化器。
PagedAdam
类 bitsandbytes.optim.PagedAdam
< 源代码 >params(参数),lr(学习率) = 0.001,betas(Beta值) = (0.9, 0.999),eps(epsilon值) = 1e-08,weight_decay(权重衰减) = 0,amsgrad(AmsGrad标志) = False,optim_bits(优化位宽度) = 32,args(额外参数) = None,min_8bit_size(最小8位精度大小) = 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
) — 是否使用使用过去平方梯度的最大值的 AMSGrad 变体 Adam。 - 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
类 bitsandbytes.optim.PagedAdam8bit
< 源代码 >params(参数),lr(学习率) = 0.001,betas(Beta值) = (0.9, 0.999),eps(epsilon值) = 1e-08,weight_decay(权重衰减) = 0,amsgrad(AmsGrad标志) = False,optim_bits(优化位宽度) = 32,args(额外参数) = None,min_8bit_size(最小8位精度大小) = 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)) — 优化器的第一和第二阶矩的衰减率。 - 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
类 bitsandbytes.optim.PagedAdam32bit
< 源代码 >params(参数),lr(学习率) = 0.001,betas(Beta值) = (0.9, 0.999),eps(epsilon值) = 1e-08,weight_decay(权重衰减) = 0,amsgrad(AmsGrad标志) = False,optim_bits(优化位宽度) = 32,args(额外参数) = None,min_8bit_size(最小8位精度大小) = 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 (
float元组(float, float)
,默认为(0.9,0.999))——betas 值是优化器的一阶和二阶矩的衰减率。 - eps (
float
,默认为 1e-8)——epsilon 值防止优化器中除以零。 - weight_decay (
float
,默认为 0.0)——优化器的权重衰减值。 - amsgrad (
布尔值
,默认为False
) — 是否使用带有过去平方梯度的最大值的Adam
变体,即AMSGrad。 - optim_bits (
整数
,默认为32) — 优化器状态的位数。 - args (
对象
,默认为None
) — 带有附加参数的对象。 - min_8bit_size (
整数
,默认为4096) — 8位优化参数张量元素的最小数量。 - percentile_clipping (
int
, 默认值 100) — 通过跟踪最后 100 个梯度范数来自动调整截断阈值,并在一定百分位数处截断梯度以提高稳定性。 - block_wise (
bool
, 默认值True
) — 是否独立量化每个张量块以减少异常值影响并提高稳定性。 - is_paged (
bool
, 默认值False
) — 指示优化器是否为分页优化器。
分页 32 位 Adam 优化器。