嵌入
嵌入类用于存储和检索单词嵌入及其索引。Bitsandbytes 中有两种类型的嵌入,标准 PyTorch 的 Embedding
类和 StableEmbedding
类。
StableEmbedding
类是在 通过分块量化实现 8 位优化器 论文中引入的,以减少由于输入标记的非均匀分布导致的梯度方差。此类旨在支持量化。
嵌入
类 bitsandbytes.nn.Embedding
< 源代码 >( num_embeddings: int embedding_dim: int padding_idx: Optional = None max_norm: Optional = None norm_type: float = 2.0 scale_grad_by_freq: bool = False sparse: bool = False _weight: Optional = None device: Optional = None )
嵌入类,用于存储和检索单词嵌入及其索引。
__init__
< 源代码 >( num_embeddings: int embedding_dim: int padding_idx: Optional = None max_norm: Optional = None norm_type: float = 2.0 scale_grad_by_freq: bool = False sparse: bool = False _weight: Optional = None device: Optional = None )
参数
- num_embeddings (
int
) — 唯一嵌入的数量(词汇量)。 - embedding_dim (
int
) — 嵌入的维度。 - padding_idx (
Optional[int]
) — 在给定索引处用零填充输出。 - max_norm (
Optional[float]
) — 将嵌入重新归一化,使其具有最大 L2 范数。 - norm_type (
float
, defaults to2.0
) — 为max_norm
选项计算的 p 范数。 - scale_grad_by_freq (
bool
, defaults toFalse
) — 在反向传播期间按频率缩放梯度。 - sparse (
bool
, defaults toFalse
) — 计算密集梯度。设置为True
以改为计算稀疏梯度。 - _weight (
Optional[Tensor]
) — 预训练的嵌入。
StableEmbedding
类 bitsandbytes.nn.StableEmbedding
< 源代码 >( num_embeddings: int embedding_dim: int padding_idx: Optional = None max_norm: Optional = None norm_type: float = 2.0 scale_grad_by_freq: bool = False sparse: bool = False _weight: Optional = None device = None dtype = None )
专为 NLP 任务设计的自定义嵌入层,通过使用 32 位优化器状态来提高训练过程中的稳定性。它旨在减少量化可能导致的梯度变化。此嵌入层使用 Xavier 均匀初始化进行初始化,然后进行层归一化。
示例
# Initialize StableEmbedding layer with vocabulary size 1000, embedding dimension 300
embedding_layer = StableEmbedding(num_embeddings=1000, embedding_dim=300)
# Reset embedding parameters
embedding_layer.reset_parameters()
# Perform a forward pass with input tensor
input_tensor = torch.tensor([1, 2, 3])
output_embedding = embedding_layer(input_tensor)
方法:reset_parameters(): 使用 Xavier 均匀初始化重置嵌入参数。forward(input: Tensor) -> Tensor: 通过稳定的嵌入层进行前向传递。
__init__
< 源代码 >( num_embeddings: int embedding_dim: int padding_idx: Optional = None max_norm: Optional = None norm_type: float = 2.0 scale_grad_by_freq: bool = False sparse: bool = False _weight: Optional = None device = None dtype = None )
参数
- num_embeddings (
int
) — 唯一嵌入的数量(词汇量)。 - embedding_dim (
int
) — 嵌入的维度。 - padding_idx (
Optional[int]
) — 在给定索引处用零填充输出。 - max_norm (
Optional[float]
) — 将嵌入重新归一化以具有最大 L2 范数。 - norm_type (
float
,默认为2.0
) — 为max_norm
选项计算的 p 范数。 - scale_grad_by_freq (
bool
,默认为False
) — 在反向传播期间按频率缩放梯度。 - sparse (
bool
,默认为False
) — 计算密集 - _weight (
Optional[Tensor]
) — 预训练的嵌入。