Transformers 文件

Zamba

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

Zamba

PyTorch

Zamba 是由 Zyphra 訓練的大型語言模型 (LLM),並以 Apache 2.0 許可證提供。請參閱 Zyphra Hugging Face 儲存庫獲取模型權重。

該模型由 pglo 貢獻。

模型詳情

Zamba-7B-v1 是狀態空間模型(特別是 Mamba)和 Transformer 的混合體,並使用下一個令牌預測進行訓練。Zamba 在每 6 個 Mamba 塊後使用一個共享的 Transformer 層。它使用 Mistral v0.1 分詞器。我們在一系列小規模消融實驗後得出這種架構。Zamba-7B-v1 在 1T 個文字和程式碼令牌上進行了預訓練。

快速入門

前提條件

Zamba 要求您使用 transformers 4.46.0 或更高版本

pip install transformers>=4.45.0

為了執行最佳化的 Mamba 實現,您首先需要安裝 mamba-ssmcausal-conv1d

pip install mamba-ssm causal-conv1d>=1.2.0

您還需要將模型放在 CUDA 裝置上。

您可以不使用最佳化的 Mamba 核心來執行模型,但**不**建議這樣做,因為它會導致顯著降低延遲。為此,您需要在載入模型時指定 use_mamba_kernels=False

推理

from transformers import AutoTokenizer, AutoModelForCausalLM
import torch

tokenizer = AutoTokenizer.from_pretrained("Zyphra/Zamba-7B-v1")
model = AutoModelForCausalLM.from_pretrained("Zyphra/Zamba-7B-v1", device_map="auto", torch_dtype=torch.bfloat16)

input_text = "A funny prompt would be "
input_ids = tokenizer(input_text, return_tensors="pt").to("cuda")

outputs = model.generate(**input_ids, max_new_tokens=100)
print(tokenizer.decode(outputs[0]))

模型卡片

模型卡片可在以下地址找到

問題

有關模型輸出的問題或社群討論,請使用 Hugging Face 社群 論壇

許可證

模型權重透過 Apache 2.0 許可證開源。

ZambaConfig

class transformers.ZambaConfig

< >

( vocab_size = 32000 tie_word_embeddings = True hidden_size = 3712 attention_hidden_size = None intermediate_size = 14848 num_hidden_layers = 76 num_attention_heads = 16 attention_head_dim = None num_key_value_heads = 16 n_mamba_heads = 2 hidden_act = 'gelu' hidden_mamba_act = 'silu' initializer_range = 0.02 rms_norm_eps = 1e-05 use_cache = True num_logits_to_keep = 1 pad_token_id = 0 bos_token_id = 1 eos_token_id = 2 max_position_embeddings = 4096 attention_dropout = 0.0 attn_layer_period = 6 attn_layer_offset = 4 use_mamba_kernels = True mamba_d_state = 16 mamba_d_conv = 4 mamba_expand = 2 mamba_dt_rank = 'auto' time_step_min = 0.001 time_step_max = 0.1 time_step_floor = 0.0001 mamba_conv_bias = True mamba_proj_bias = False **kwargs )

引數

  • vocab_size (int, 可選, 預設為 32000) — Zamba 模型的詞彙表大小。定義了呼叫 ZambaModel 時傳遞的 inputs_ids 可以表示的不同令牌的數量。
  • tie_word_embeddings (bool, 可選, 預設為 True) — 模型輸入和輸出詞嵌入是否應該繫結。請注意,這僅在模型具有輸出詞嵌入層時才相關。
  • hidden_size (int, 可選, 預設為 3712) — 隱藏表示的維度。
  • attention_hidden_size (int, 可選) — 注意力層輸入的隱藏表示維度。
  • intermediate_size (int, 可選, 預設為 14848) — MLP 表示的維度。
  • num_hidden_layers (int, 可選, 預設為 76) — 模型中的隱藏層數量。
  • num_attention_heads (int, 可選, 預設為 16) — Transformer 解碼器中每個注意力層的注意力頭數量。
  • attention_head_dim (int, 可選) — Transformer 解碼器中注意力頭的維度。
  • num_key_value_heads (int, 可選, 預設為 16) — 用於實現分組查詢注意力(Grouped Query Attention)的 key_value 頭數量。如果 num_key_value_heads=None,模型將使用多頭注意力(MHA);如果 num_key_value_heads=1,模型將使用多查詢注意力(MQA),否則使用 GQA。將多頭檢查點轉換為 GQA 檢查點時,每個組的 key 和 value 頭應透過對其組內的所有原始頭進行平均池化來構建。更多詳情,請檢視 此論文
  • n_mamba_heads (int, 可選, 預設為 2) — 每個 Mamba 層的 Mamba 頭數量。
  • hidden_act (strfunction, 可選, 預設為 "gelu") — 解碼器中的非線性啟用函式(函式或字串)。
  • hidden_mamba_act (strfunction, 可選, 預設為 "silu") — Mamba 層中的非線性啟用函式(函式或字串)。
  • initializer_range (float, 可選, 預設為 0.02) — 用於初始化所有權重矩陣的截斷正態分佈初始化器的標準差。
  • rms_norm_eps (float, 可選, 預設為 1e-05) — rms 歸一化層使用的 epsilon 值。
  • use_cache (bool, 可選, 預設為 True) — 模型是否應返回上次鍵/值注意力(並非所有模型都使用)。僅當 config.is_decoder=True 時相關。
  • num_logits_to_keep (intNone, 可選, 預設為 1) — 生成過程中要計算的提示詞 logits 數量。如果為 None,則計算所有 logits。如果為整數值,則僅計算最後 num_logits_to_keep 個 logits。預設值為 1,因為生成只需要最後一個提示詞標記的 logits。對於長序列,整個序列的 logits 可能會佔用大量記憶體,因此,設定 num_logits_to_keep=1 將顯著減少記憶體佔用。
  • pad_token_id (int, 可選, 預設為 0) — 填充標記的 ID。
  • bos_token_id (int, 可選, 預設為 1) — “序列開始”標記的 ID。
  • eos_token_id (int, 可選, 預設為 2) — “序列結束”標記的 ID。
  • max_position_embeddings (int, 可選, 預設為 4096) — 此值沒有實際效果。此模型預期使用的最大序列長度。它可用於更長的序列,但效能可能會下降。
  • attention_dropout (float, 可選, 預設為 0.0) — 注意力機率的 dropout 比率。
  • attn_layer_period (int, 可選, 預設為 6) — 每隔這麼多層,我們將有一個共享注意力層
  • attn_layer_offset (int, 可選, 預設為 4) — 共享注意力層的偏移量
  • use_mamba_kernels (bool, 可選, 預設為 True) — 指示是否使用快速 mamba 核心的標誌。僅當安裝了 mamba-ssmcausal-conv1d 且 mamba 模組在 CUDA 裝置上執行時才可用。如果設定為 True 且核心不可用,則引發 ValueError。
  • mamba_d_state (int, 可選, 預設為 16) — mamba 狀態空間潛變數的維度
  • mamba_d_conv (int, 可選, 預設為 4) — mamba 卷積核的大小
  • mamba_expand (int, 可選, 預設為 2) — 用於確定 mamba 中間大小的擴充套件因子(相對於 hidden_size)
  • mamba_dt_rank (Union[int,str], 可選, 預設為 "auto") — mamba 離散化投影矩陣的秩。"auto" 表示將預設為 math.ceil(self.hidden_size / 16)
  • time_step_min (float, 可選, 預設為 0.001) — 用於限制 dt_proj_bias 的最小 time_step
  • time_step_max (float, 可選, 預設為 0.1) — 用於限制 dt_proj_bias 的最大 time_step
  • time_step_floor (float, 可選, 預設為 0.0001) — dt_proj.bias 層初始化的最小鉗制值。
  • mamba_conv_bias (bool, 可選, 預設為 True) — 指示 mamba 混合器塊的卷積層是否使用偏置的標誌。
  • mamba_proj_bias (bool, 可選, 預設為 False) — 指示 mamba 混合器塊的輸入和輸出投影([“in_proj”, “out_proj”])是否使用偏置的標誌

這是用於儲存 ZambaModel 配置的配置類。它用於根據指定引數例項化 Zamba 模型,定義模型架構。使用預設值例項化配置將生成與 Zamba-v0.1 模型類似的配置。

Zyphra/Zamba-7B-v1

配置物件繼承自 PretrainedConfig,可用於控制模型輸出。有關更多資訊,請參閱 PretrainedConfig 文件。

ZambaModel

class transformers.ZambaModel

< >

( config: ZambaConfig )

引數

  • config (ZambaConfig) — 模型的配置類,包含模型的所有引數。使用配置檔案初始化並不會載入與模型相關的權重,只加載配置。請檢視 from_pretrained() 方法載入模型權重。

裸 Zamba 模型輸出原始隱藏狀態,不帶任何特定頭部。

此模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。

此模型也是 PyTorch torch.nn.Module 子類。將其用作常規 PyTorch 模組,並參考 PyTorch 文件中與一般用法和行為相關的所有事項。

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.LongTensor] = None past_key_values: typing.Optional[transformers.models.zamba.modeling_zamba.ZambaHybridDynamicCache] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None use_cache: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None cache_position: typing.Optional[torch.LongTensor] = None ) transformers.modeling_outputs.BaseModelOutputWithPasttuple(torch.FloatTensor)

引數

  • input_ids (torch.LongTensor 形狀為 (batch_size, sequence_length), 可選) — 詞彙表中輸入序列 token 的索引。預設情況下會忽略填充。

    可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參閱 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什麼是輸入 ID?

  • attention_mask (torch.Tensor 形狀為 (batch_size, sequence_length), 可選) — 掩碼,用於避免對填充 token 索引執行注意力操作。掩碼值選擇範圍為 [0, 1]

    • 1 表示 未被掩碼 的 token,
    • 0 表示 被掩碼 的 token。

    什麼是注意力掩碼?

  • position_ids (torch.LongTensor 形狀為 (batch_size, sequence_length), 可選) — 每個輸入序列 token 在位置嵌入中的位置索引。選擇範圍為 [0, config.n_positions - 1]

    什麼是位置 ID?

  • past_key_values (~models.zamba.modeling_zamba.ZambaHybridDynamicCache, 可選) — 預計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於加速序列解碼。這通常由模型在解碼的先前階段返回的 past_key_values 組成,當 use_cache=Trueconfig.use_cache=True 時。

    允許兩種格式:

    • Cache 例項,請參閱我們的 kv 快取指南
    • 長度為 config.n_layerstuple(torch.FloatTensor) 元組,每個元組包含 2 個形狀為 (batch_size, num_heads, sequence_length, embed_size_per_head) 的張量)。這也被稱為舊版快取格式。

    模型將輸出與輸入相同的快取格式。如果未傳遞 past_key_values,則將返回舊版快取格式。

    如果使用 past_key_values,使用者可以選擇僅輸入最後一個 input_ids(那些沒有將其過去的鍵值狀態提供給此模型的)形狀為 (batch_size, 1),而不是所有 input_ids 形狀為 (batch_size, sequence_length)

  • inputs_embeds (torch.FloatTensor 形狀為 (batch_size, sequence_length, hidden_size), 可選) — 可選地,你可以選擇直接傳遞嵌入表示,而不是傳遞 input_ids。如果你想對如何將 input_ids 索引轉換為關聯向量有更多控制,而不是使用模型的內部嵌入查詢矩陣,這會很有用。
  • use_cache (bool, 可選) — 如果設定為 True,則返回 past_key_values 鍵值狀態,可用於加速解碼(參見 past_key_values)。
  • output_attentions (bool, 可選) — 是否返回所有注意力層的注意力張量。有關詳細資訊,請參閱返回張量下的 attentions
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。有關詳細資訊,請參閱返回張量下的 hidden_states
  • return_dict (bool, 可選) — 是否返回 ModelOutput 而不是普通元組。
  • cache_position (torch.LongTensor 形狀為 (sequence_length), 可選) — 描述輸入序列 token 在序列中位置的索引。與 position_ids 不同,此張量不受填充影響。它用於在正確位置更新快取並推斷完整的序列長度。

返回

transformers.modeling_outputs.BaseModelOutputWithPasttuple(torch.FloatTensor)

transformers.modeling_outputs.BaseModelOutputWithPasttorch.FloatTensor 元組(如果傳遞 return_dict=False 或當 config.return_dict=False 時),包含根據配置 (ZambaConfig) 和輸入的不同元素。

  • last_hidden_state (torch.FloatTensor, 形狀為 (batch_size, sequence_length, hidden_size)) — 模型最後一層輸出的隱藏狀態序列。

    如果使用了 past_key_values,則只輸出形狀為 (batch_size, 1, hidden_size) 的序列的最後一個隱藏狀態。

  • past_key_values (Cache, 可選, 當傳遞 use_cache=True 或當 config.use_cache=True 時返回) — 這是一個 Cache 例項。有關詳細資訊,請參閱我們的 kv 快取指南

    包含預先計算的隱藏狀態(自注意力塊中的鍵和值,以及如果 config.is_encoder_decoder=True 則可選地在交叉注意力塊中),可用於(參見 past_key_values 輸入)加速順序解碼。

  • hidden_states (tuple(torch.FloatTensor), 可選, 當傳遞 output_hidden_states=True 或當 config.output_hidden_states=True 時返回) — torch.FloatTensor 元組(如果模型有嵌入層,則一個用於嵌入輸出,加上每個層的一個用於輸出),形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。

  • attentions (tuple(torch.FloatTensor), 可選, 當傳遞 output_attentions=True 或當 config.output_attentions=True 時返回) — torch.FloatTensor 元組(每個層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。

ZambaModel 的 forward 方法,覆蓋了 __call__ 特殊方法。

儘管 forward pass 的配方需要在此函式中定義,但之後應該呼叫 Module 例項,而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。

ZambaForCausalLM

class transformers.ZambaForCausalLM

< >

( config: ZambaConfig )

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.LongTensor] = None past_key_values: typing.Optional[transformers.models.zamba.modeling_zamba.ZambaHybridDynamicCache] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.LongTensor] = None use_cache: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None cache_position: typing.Optional[torch.LongTensor] = None logits_to_keep: typing.Union[int, torch.Tensor] = 0 **loss_kwargs ) transformers.modeling_outputs.CausalLMOutputWithPasttuple(torch.FloatTensor)

引數

  • input_ids (torch.LongTensor 形狀為 (batch_size, sequence_length), 可選) — 詞彙表中輸入序列 token 的索引。預設情況下會忽略填充。

    可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參閱 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什麼是輸入 ID?

  • attention_mask (torch.Tensor 形狀為 (batch_size, sequence_length), 可選) — 掩碼,用於避免對填充 token 索引執行注意力操作。掩碼值選擇範圍為 [0, 1]

    • 1 表示 未被掩碼 的 token,
    • 0 表示 被掩碼 的 token。

    什麼是注意力掩碼?

  • position_ids (torch.LongTensor 形狀為 (batch_size, sequence_length), 可選) — 每個輸入序列 token 在位置嵌入中的位置索引。選擇範圍為 [0, config.n_positions - 1]

    什麼是位置 ID?

  • past_key_values (~models.zamba.modeling_zamba.ZambaHybridDynamicCache, 可選) — 預計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於加速序列解碼。這通常由模型在解碼的先前階段返回的 past_key_values 組成,當 use_cache=Trueconfig.use_cache=True 時。

    允許兩種格式:

    • Cache 例項,請參閱我們的 kv 快取指南
    • 長度為 config.n_layerstuple(torch.FloatTensor) 元組,每個元組包含 2 個形狀為 (batch_size, num_heads, sequence_length, embed_size_per_head) 的張量)。這也被稱為舊版快取格式。

    模型將輸出與輸入相同的快取格式。如果未傳遞 past_key_values,則將返回舊版快取格式。

    如果使用 past_key_values,使用者可以選擇僅輸入最後一個 input_ids(那些沒有將其過去的鍵值狀態提供給此模型的)形狀為 (batch_size, 1),而不是所有 input_ids 形狀為 (batch_size, sequence_length)

  • inputs_embeds (torch.FloatTensor 形狀為 (batch_size, sequence_length, hidden_size), 可選) — 可選地,你可以選擇直接傳遞嵌入表示,而不是傳遞 input_ids。如果你想對如何將 input_ids 索引轉換為關聯向量有更多控制,而不是使用模型的內部嵌入查詢矩陣,這會很有用。
  • labels (torch.LongTensor 形狀為 (batch_size, sequence_length), 可選) — 用於計算掩碼語言建模損失的標籤。索引應為 [0, ..., config.vocab_size] 或 -100(參見 input_ids docstring)。索引設定為 -100 的 token 將被忽略(掩碼),損失僅針對標籤在 [0, ..., config.vocab_size] 中的 token 計算。
  • use_cache (bool, 可選) — 如果設定為 True,則返回 past_key_values 鍵值狀態,可用於加速解碼(參見 past_key_values)。
  • output_attentions (bool, 可選) — 是否返回所有注意力層的注意力張量。有關詳細資訊,請參閱返回張量下的 attentions
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。有關詳細資訊,請參閱返回張量下的 hidden_states
  • return_dict (bool, 可選) — 是否返回 ModelOutput 而不是普通元組。
  • cache_position (torch.LongTensor 形狀為 (sequence_length), 可選) — 描述輸入序列 token 在序列中位置的索引。與 position_ids 不同,此張量不受填充影響。它用於在正確位置更新快取並推斷完整的序列長度。
  • logits_to_keep (Union[int, torch.Tensor], 預設為 0) — 如果是 int,則計算最後 logits_to_keep 個 token 的 logits。如果是 0,則計算所有 input_ids 的 logits(特殊情況)。生成時只需要最後一個 token 的 logits,只計算該 token 可以節省記憶體,對於長序列或大詞彙量來說,這會變得相當重要。如果是 torch.Tensor,則必須是 1D,對應於序列長度維度中要保留的索引。這在使用 packed tensor 格式(批處理和序列長度的單維度)時很有用。

返回

transformers.modeling_outputs.CausalLMOutputWithPasttuple(torch.FloatTensor)

transformers.modeling_outputs.CausalLMOutputWithPasttorch.FloatTensor 元組(如果傳遞 return_dict=False 或當 config.return_dict=False 時),包含根據配置 (ZambaConfig) 和輸入的不同元素。

  • loss (torch.FloatTensor 形狀為 (1,)可選,當提供 labels 時返回) — 語言建模損失(用於下一個 token 預測)。

  • logits (形狀為 (batch_size, sequence_length, config.vocab_size)torch.FloatTensor) — 語言建模頭部的預測分數(SoftMax 之前的每個詞彙標記的分數)。

  • past_key_values (Cache, 可選, 當傳遞 use_cache=True 或當 config.use_cache=True 時返回) — 這是一個 Cache 例項。有關詳細資訊,請參閱我們的 kv 快取指南

    包含預計算的隱藏狀態(自注意力塊中的鍵和值),可用於(參見 past_key_values 輸入)加速順序解碼。

  • hidden_states (tuple(torch.FloatTensor), 可選, 當傳遞 output_hidden_states=True 或當 config.output_hidden_states=True 時返回) — torch.FloatTensor 元組(如果模型有嵌入層,則一個用於嵌入輸出,加上每個層的一個用於輸出),形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。

  • attentions (tuple(torch.FloatTensor), 可選, 當傳遞 output_attentions=True 或當 config.output_attentions=True 時返回) — torch.FloatTensor 元組(每個層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。

ZambaForCausalLM 的 forward 方法,覆蓋了 __call__ 特殊方法。

儘管 forward pass 的配方需要在此函式中定義,但之後應該呼叫 Module 例項,而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。

示例

>>> from transformers import AutoTokenizer, ZambaForCausalLM

>>> model = ZambaForCausalLM.from_pretrained("Zyphra/Zamba-7B-v1")
>>> tokenizer = AutoTokenizer.from_pretrained("Zyphra/Zamba-7B-v1")

>>> prompt = "Hey, are you conscious? Can you talk to me?"
>>> inputs = tokenizer(prompt, return_tensors="pt")

>>> # Generate
>>> generate_ids = model.generate(inputs.input_ids, max_length=30)
>>> tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"Hey, are you conscious? Can you talk to me?\nI'm not conscious, but I can talk to you."

ZambaForSequenceClassification

class transformers.ZambaForSequenceClassification

< >

( config )

引數

  • config (ZambaForSequenceClassification) — 模型的配置類,包含模型的所有引數。使用配置檔案初始化並不會載入與模型相關的權重,只加載配置。請檢視 from_pretrained() 方法載入模型權重。

帶有序列分類頭部(線性層)的 Zamba 模型。

ZambaForSequenceClassification 像其他因果模型(如 GPT-2)一樣,使用最後一個 token 進行分類。

由於它對最後一個標記進行分類,因此需要知道最後一個標記的位置。如果在配置中定義了 pad_token_id,它會在每一行中找到不是填充標記的最後一個標記。如果沒有定義 pad_token_id,它會簡單地取批處理中每一行的最後一個值。由於在傳入 inputs_embeds 而不是 input_ids 時無法猜測填充標記,因此它也這樣做(取批處理中每一行的最後一個值)。

此模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。

此模型也是 PyTorch torch.nn.Module 子類。將其用作常規 PyTorch 模組,並參考 PyTorch 文件中與一般用法和行為相關的所有事項。

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.LongTensor] = None past_key_values: typing.Union[transformers.cache_utils.Cache, list[torch.FloatTensor], NoneType] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.LongTensor] = None use_cache: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) transformers.modeling_outputs.SequenceClassifierOutputWithPasttuple(torch.FloatTensor)

引數

  • input_ids (torch.LongTensor,形狀為 (batch_size, sequence_length)可選) — 詞彙表中輸入序列標記的索引。預設情況下會忽略填充。

    可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參閱 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什麼是 input ID?

  • attention_mask (torch.Tensor,形狀為 (batch_size, sequence_length)可選) — 掩碼,用於避免對填充標記索引執行注意力操作。掩碼值選擇在 [0, 1] 之間:

    • 1 表示未被掩蓋的標記,
    • 0 表示被掩蓋的標記。

    什麼是注意力掩碼?

  • position_ids (torch.LongTensor,形狀為 (batch_size, sequence_length)可選) — 每個輸入序列標記在位置嵌入中的位置索引。選擇範圍為 [0, config.n_positions - 1]

    什麼是 position ID?

  • past_key_values (Union[~cache_utils.Cache, list[torch.FloatTensor], NoneType]) — 預計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於加速序列解碼。這通常包括模型在解碼上一階段返回的 past_key_values,當 use_cache=Trueconfig.use_cache=True 時。

    允許兩種格式:

    • 一個 Cache 例項,請參閱我們的 kv 快取指南
    • 長度為 config.n_layerstuple(torch.FloatTensor) 元組,每個元組包含兩個形狀為 (batch_size, num_heads, sequence_length, embed_size_per_head) 的張量)。這也被稱為傳統快取格式。

    模型將輸出與輸入相同的快取格式。如果沒有傳入 past_key_values,將返回傳統快取格式。

    如果使用 past_key_values,使用者可以選擇只輸入形狀為 (batch_size, 1) 的最後一個 input_ids(那些沒有將其過去的鍵值狀態提供給此模型的),而不是形狀為 (batch_size, sequence_length) 的所有 input_ids

  • inputs_embeds (torch.FloatTensor,形狀為 (batch_size, sequence_length, hidden_size)可選) — 可選地,您可以選擇直接傳入嵌入表示,而不是傳入 input_ids。如果您希望對如何將 input_ids 索引轉換為關聯向量有比模型內部嵌入查詢矩陣更多的控制,這會很有用。
  • labels (torch.LongTensor,形狀為 (batch_size,)可選) — 用於計算序列分類/迴歸損失的標籤。索引應在 [0, ..., config.num_labels - 1] 之間。如果 config.num_labels == 1,則計算迴歸損失(均方損失),如果 config.num_labels > 1,則計算分類損失(交叉熵)。
  • use_cache (bool, 可選) — 如果設定為 True,將返回 past_key_values 鍵值狀態,可用於加速解碼(參見 past_key_values)。
  • output_attentions (bool, 可選) — 是否返回所有注意力層的注意力張量。更多詳細資訊請參見返回張量下的 attentions
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。更多詳細資訊請參見返回張量下的 hidden_states
  • return_dict (bool, 可選) — 是否返回 ModelOutput 而不是純元組。

返回

transformers.modeling_outputs.SequenceClassifierOutputWithPasttuple(torch.FloatTensor)

一個 transformers.modeling_outputs.SequenceClassifierOutputWithPast 或一個 torch.FloatTensor 元組(如果傳入 return_dict=False 或當 config.return_dict=False 時),其中包含根據配置 (ZambaConfig) 和輸入而定的各種元素。

  • loss (形狀為 (1,)torch.FloatTensor可選,當提供 labels 時返回) — 分類損失(如果 config.num_labels==1,則為迴歸損失)。

  • logits (形狀為 (batch_size, config.num_labels)torch.FloatTensor) — 分類(如果 config.num_labels==1,則為迴歸)分數(SoftMax 之前)。

  • past_key_values (Cache, 可選, 當傳遞 use_cache=True 或當 config.use_cache=True 時返回) — 這是一個 Cache 例項。有關詳細資訊,請參閱我們的 kv 快取指南

    包含預計算的隱藏狀態(自注意力塊中的鍵和值),可用於(參見 past_key_values 輸入)加速順序解碼。

  • hidden_states (tuple(torch.FloatTensor), 可選, 當傳遞 output_hidden_states=True 或當 config.output_hidden_states=True 時返回) — torch.FloatTensor 元組(如果模型有嵌入層,則一個用於嵌入輸出,加上每個層的一個用於輸出),形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。

  • attentions (tuple(torch.FloatTensor), 可選, 當傳遞 output_attentions=True 或當 config.output_attentions=True 時返回) — torch.FloatTensor 元組(每個層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。

ZambaForSequenceClassification 的 forward 方法覆蓋了 __call__ 特殊方法。

儘管 forward pass 的配方需要在此函式中定義,但之後應該呼叫 Module 例項,而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。

單標籤分類示例

>>> import torch
>>> from transformers import AutoTokenizer, ZambaForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("Zyphra/Zamba-7B-v1")
>>> model = ZambaForSequenceClassification.from_pretrained("Zyphra/Zamba-7B-v1")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_id = logits.argmax().item()
>>> model.config.id2label[predicted_class_id]
...

>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = ZambaForSequenceClassification.from_pretrained("Zyphra/Zamba-7B-v1", num_labels=num_labels)

>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...

多標籤分類示例

>>> import torch
>>> from transformers import AutoTokenizer, ZambaForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("Zyphra/Zamba-7B-v1")
>>> model = ZambaForSequenceClassification.from_pretrained("Zyphra/Zamba-7B-v1", problem_type="multi_label_classification")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_ids = torch.arange(0, logits.shape[-1])[torch.sigmoid(logits).squeeze(dim=0) > 0.5]

>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = ZambaForSequenceClassification.from_pretrained(
...     "Zyphra/Zamba-7B-v1", num_labels=num_labels, problem_type="multi_label_classification"
... )

>>> labels = torch.sum(
...     torch.nn.functional.one_hot(predicted_class_ids[None, :].clone(), num_classes=num_labels), dim=1
... ).to(torch.float)
>>> loss = model(**inputs, labels=labels).loss
< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.