Bitsandbytes 文件
嵌入
並獲得增強的文件體驗
開始使用
嵌入
嵌入類用於從索引中儲存和檢索詞嵌入。bitsandbytes 中有兩種型別的嵌入,標準的 PyTorch Embedding
類和 StableEmbedding
類。
StableEmbedding
類是在透過分塊量化的 8 位最佳化器論文中引入的,旨在減少因輸入詞元分佈不均而導致的梯度方差。該類設計用於支援量化。
Embedding
class bitsandbytes.nn.Embedding
< 原始碼 >( num_embeddings: int embedding_dim: int padding_idx: typing.Optional[int] = None max_norm: typing.Optional[float] = None norm_type: float = 2.0 scale_grad_by_freq: bool = False sparse: bool = False _weight: typing.Optional[torch.Tensor] = None device: typing.Optional[torch.device] = None )
用於從索引中儲存和檢索詞嵌入的嵌入類。
__init__
< 原始碼 >( num_embeddings: int embedding_dim: int padding_idx: typing.Optional[int] = None max_norm: typing.Optional[float] = None norm_type: float = 2.0 scale_grad_by_freq: bool = False sparse: bool = False _weight: typing.Optional[torch.Tensor] = None device: typing.Optional[torch.device] = 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
) — 計算密集梯度。設定為True
以計算稀疏梯度。 - _weight (
Optional[Tensor]
) — 預訓練的嵌入。
StableEmbedding
class bitsandbytes.nn.StableEmbedding
< 原始碼 >( num_embeddings: int embedding_dim: int padding_idx: typing.Optional[int] = None max_norm: typing.Optional[float] = None norm_type: float = 2.0 scale_grad_by_freq: bool = False sparse: bool = False _weight: typing.Optional[torch.Tensor] = None device = None dtype = None )
自定義嵌入層,旨在使用 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: typing.Optional[int] = None max_norm: typing.Optional[float] = None norm_type: float = 2.0 scale_grad_by_freq: bool = False sparse: bool = False _weight: typing.Optional[torch.Tensor] = 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
) — 計算密集梯度。設定為True
以計算稀疏梯度。 - _weight (
Optional[Tensor]
) — 預訓練的嵌入。