Bitsandbytes 文档

嵌入

Hugging Face's logo
加入 Hugging Face 社区

并获得增强文档体验的访问权限

开始

嵌入

嵌入类用于存储和检索单词嵌入及其索引。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 to 2.0) — 为 max_norm 选项计算的 p 范数。
  • scale_grad_by_freq (bool, defaults to False) — 在反向传播期间按频率缩放梯度。
  • sparse (bool, defaults to False) — 计算密集梯度。设置为 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 )

参数

  • norm (torch.nn.LayerNorm) — 嵌入层之后应用的层归一化。

专为 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]) — 预训练的嵌入。
< > 在 GitHub 上更新