Transformers 文件

Falcon

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

PyTorch FlashAttention SDPA

Falcon

Falcon 是一個大型語言模型家族,提供 7B、40B 和 180B 引數的預訓練和指令微調變體。該模型側重於在效能、資料和硬體三個方面擴充套件預訓練規模。Falcon 使用多組注意力機制(multigroup attention)顯著減少推理記憶體需求,並採用旋轉位置嵌入(RoPE)。這些模型在 RefinedWeb 上進行預訓練,這是一個高質量且去重後的 5T 詞元(token)資料集。

你可以在 Falcon 合集中找到所有原始的 Falcon checkpoints。

點選右側邊欄中的 Falcon 模型,檢視更多關於如何將 Falcon 應用於不同語言任務的示例。

以下示例演示瞭如何使用 PipelineAutoModel 以及從命令列生成文字。

流水線
自動模型
Transformers CLI
import torch
from transformers import pipeline

pipeline = pipeline(
    task="text-generation",
    model="tiiuae/falcon-7b-instruct",
    torch_dtype=torch.bfloat16,
    device=0
)
pipeline(
    "Write a short poem about coding",
    max_length=100,
    do_sample=True,
    temperature=0.7
)

量化透過以較低精度表示權重來減少大型模型的記憶體負擔。有關更多可用量化後端,請參閱量化概述。

以下示例使用 bitsandbytes 僅將權重量化為 4 位。

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig

quantization_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_compute_dtype=torch.bfloat16,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_use_double_quant=True,
)

tokenizer = AutoTokenizer.from_pretrained("tiiuae/falcon-7b")
model = AutoModelForCausalLM.from_pretrained(
    "tiiuae/falcon-7b",
    torch_dtype=torch.bfloat16,
    device_map="auto",
    quantization_config=quantization_config,
)

inputs = tokenizer("In quantum physics, entanglement means", return_tensors="pt").to("cuda")
outputs = model.generate(**inputs, max_new_tokens=100)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

注意事項

  • 如果你正在從舊的自定義程式碼 checkpoint 升級,請記得使用位於 Falcon 模型目錄中的轉換指令碼將其轉換為官方 Transformers 格式,以獲得更好的穩定性和效能。

    python convert_custom_code_checkpoint.py --checkpoint_dir my_model

FalconConfig

class transformers.FalconConfig

< >

( vocab_size = 65024 hidden_size = 4544 num_hidden_layers = 32 num_attention_heads = 71 num_ln_in_parallel_attn = None layer_norm_epsilon = 1e-05 initializer_range = 0.02 use_cache = True hidden_dropout = 0.0 attention_dropout = 0.0 num_kv_heads = None alibi = False new_decoder_architecture = False multi_query = True parallel_attn = True bias = False max_position_embeddings = 2048 rope_theta = 10000.0 rope_scaling = None bos_token_id = 11 eos_token_id = 11 ffn_hidden_size = None activation = 'gelu' **kwargs )

引數

  • vocab_size (int可選,預設為 65024) — Falcon 模型的詞彙表大小。定義了在呼叫 FalconModel 時,`inputs_ids` 引數可以表示的不同詞元的數量。
  • hidden_size (int可選,預設為 4544) — 隱藏表示的維度。
  • num_hidden_layers (int可選,預設為 32) — Transformer 解碼器中的隱藏層數量。
  • num_attention_heads (int可選,預設為 71) — Transformer 編碼器中每個注意力層的注意力頭數量。
  • num_ln_in_parallel_attn (int可選) — 在使用並行注意力時,如果需要為 MLP 和注意力輸出使用單獨的層歸一化,則設定為 2,否則為 1。
  • layer_norm_epsilon (float可選,預設為 1e-05) — 層歸一化層使用的 epsilon 值。
  • initializer_range (float可選,預設為 0.02) — 用於初始化所有權重矩陣的 truncated_normal_initializer 的標準差。
  • use_cache (bool可選,預設為 `True`) — 模型是否應返回最後的鍵/值注意力(並非所有模型都使用)。僅在 `config.is_decoder=True` 時相關。
  • hidden_dropout (float可選,預設為 0.0) — MLP 層的 dropout 機率。
  • attention_dropout (float可選,預設為 0.0) — 注意力層的 dropout 機率。
  • num_kv_heads (int可選) — 每個注意力層要使用的鍵值(key-value)頭的數量。如果未設定,則預設為與 `num_attention_heads` 相同的值。
  • alibi (bool可選,預設為 `False`) — 是否在自注意力期間使用 ALiBi 位置偏差。
  • new_decoder_architecture (bool可選,預設為 `False`) — 是否使用新的(Falcon-40B)解碼器架構。如果為 `True`,則忽略 `multi_query` 和 `parallel_attn` 引數,因為新的解碼器總是使用並行注意力。
  • multi_query (bool可選,預設為 `True`) — 是否在解碼器中使用多查詢注意力(multi-query attention)。當 `new_decoder_architecture` 為 `True` 時忽略此引數。
  • parallel_attn (bool可選,預設為 `True`) — 是否與前饋層平行計算注意力。如果為 False,它們將按順序計算,如同原始的 Transformer 架構。當 `new_decoder_architecture` 為 `True` 時忽略此引數。
  • bias (bool可選,預設為 `False`) — 是否線上性層上使用偏置。
  • max_position_embeddings (int可選,預設為 2048) — 當 `alibi` 為 `False` 時,該模型可能使用的最大序列長度。預訓練的 Falcon 模型(使用 RoPE)支援最多 2048 個詞元。
  • rope_theta (float可選,預設為 10000.0) — RoPE 嵌入的基週期。
  • rope_scaling (`Dict`,*可選*) — 包含 RoPE 嵌入縮放配置的字典。注意:如果你應用了新的 RoPE 型別,並期望模型能處理更長的 `max_position_embeddings`,我們建議你相應地更新此值。預期內容:`rope_type` (`str`):要使用的 RoPE 子變體。可以是 ['default', 'linear', 'dynamic', 'yarn', 'longrope', 'llama3'] 中的一種,其中 'default' 是原始的 RoPE 實現。`factor` (`float`,*可選*):用於除 'default' 外的所有 RoPE 型別。應用於 RoPE 嵌入的縮放因子。在大多數縮放型別中,`factor` 為 x 將使模型能夠處理長度為 x * 原始最大預訓練長度的序列。`original_max_position_embeddings` (`int`,*可選*):用於 'dynamic'、'longrope' 和 'llama3'。預訓練期間使用的原始最大位置嵌入。`attention_factor` (`float`,*可選*):用於 'yarn' 和 'longrope'。應用於注意力計算的縮放因子。如果未指定,則預設為實現推薦的值,使用 `factor` 欄位推斷建議值。`beta_fast` (`float`,*可選*):僅用於 'yarn'。設定線性斜坡函式中外推(僅限)邊界的引數。如果未指定,則預設為 32。`beta_slow` (`float`,*可選*):僅用於 'yarn'。設定線性斜坡函式中插值(僅限)邊界的引數。如果未指定,則預設為 1。`short_factor` (`list[float]`,*可選*):僅用於 'longrope'。應用於短上下文(< `original_max_position_embeddings`)的縮放因子。必須是與隱藏大小除以注意力頭數再除以 2 長度相同的數字列表。`long_factor` (`list[float]`,*可選*):僅用於 'longrope'。應用於長上下文(> `original_max_position_embeddings`)的縮放因子。必須是與隱藏大小除以注意力頭數再除以 2 長度相同的數字列表。`low_freq_factor` (`float`,*可選*):僅用於 'llama3'。應用於 RoPE 低頻分量的縮放因子。`high_freq_factor` (`float`,*可選*):僅用於 'llama3'。應用於 RoPE 高頻分量的縮放因子。
  • bos_token_id (int可選,預設為 11) — “序列開始”詞元的 ID。
  • eos_token_id (int可選,預設為 11) — “序列結束”詞元的 ID。
  • ffn_hidden_size (int可選) — Transformer 解碼器中前饋層的隱藏大小。預設為隱藏維度的 4 倍。
  • activation (str可選,預設為 `"gelu"`) — 前饋層中使用的啟用函式。

這是一個配置類,用於儲存 FalconModel 的配置。它用於根據指定的引數例項化一個 Falcon 模型,定義模型架構。使用預設值例項化一個配置將產生與 tiiuae/falcon-7b 架構類似的配置。

配置物件繼承自 PretrainedConfig,可用於控制模型輸出。請閱讀 PretrainedConfig 的文件以獲取更多資訊。

示例

>>> from transformers import FalconModel, FalconConfig

>>> # Initializing a small (2-layer) Falcon configuration
>>> configuration = FalconConfig(num_hidden_layers=2)

>>> # Initializing a model from the small configuration
>>> model = FalconModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

FalconModel

class transformers.FalconModel

< >

( config: FalconConfig )

引數

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

裸 Falcon 模型,輸出原始的隱藏狀態,頂部沒有任何特定的頭(head)。

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

該模型也是 PyTorch torch.nn.Module 的子類。可以像常規 PyTorch 模組一樣使用它,並參考 PyTorch 文件瞭解所有與常規用法和行為相關的事項。

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = None past_key_values: typing.Union[transformers.cache_utils.Cache, tuple[tuple[torch.Tensor, torch.Tensor], ...], NoneType] = None attention_mask: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.LongTensor] = None inputs_embeds: 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 ) transformers.modeling_outputs.BaseModelOutputWithPastAndCrossAttentionstuple(torch.FloatTensor)

引數

  • input_ids (torch.LongTensor,形狀為 (batch_size, input_ids_length)) — 如果 past_key_valuesNone,則 input_ids_length = sequence_length;否則為 past_key_values[0][0].shape[2] (輸入過去鍵值狀態的 sequence_length)。詞彙表中輸入序列令牌的索引。

    如果使用了 past_key_values,則只有那些尚未計算其過去值的 input_ids 才應作為 input_ids 傳遞。

    索引可以使用 AutoTokenizer 獲得。詳情請參閱 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什麼是輸入 ID?

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

    允許兩種格式:

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

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

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

  • 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]

    什麼是位置 ID?

  • head_mask (torch.LongTensor,形狀為 (num_heads,)(num_layers, num_heads)可選) — 用於置零自注意力模組中選定頭的掩碼。掩碼值選自 [0, 1]

    • 1 表示頭未被遮蔽
    • 0 表示頭被遮蔽
  • inputs_embeds (torch.LongTensor,形狀為 (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)可選) — 描述輸入序列令牌在序列中位置的索引。與 position_ids 相反,此張量不受填充影響。它用於在正確的位置更新快取並推斷完整的序列長度。

返回

transformers.modeling_outputs.BaseModelOutputWithPastAndCrossAttentionstuple(torch.FloatTensor)

一個 transformers.modeling_outputs.BaseModelOutputWithPastAndCrossAttentions 或一個 torch.FloatTensor 元組(如果傳遞了 return_dict=False 或當 config.return_dict=False),根據配置(FalconConfig)和輸入包含各種元素。

  • 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=Trueconfig.use_cache=True 時返回) — 這是一個 Cache 例項。有關更多詳細資訊,請參閱我們的 kv 快取指南

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

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

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

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

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

  • cross_attentions (tuple(torch.FloatTensor)可選,在傳遞 output_attentions=Trueconfig.add_cross_attention=Trueconfig.output_attentions=True 時返回) — torch.FloatTensor 的元組(每層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

    解碼器交叉注意力層的注意力權重,在注意力 softmax 之後,用於計算交叉注意力頭中的加權平均。

FalconModel 的前向方法會覆蓋 __call__ 特殊方法。

儘管前向傳遞的流程需要在此函式內定義,但之後應呼叫 Module 例項而不是此函式,因為前者會處理執行前處理和後處理步驟,而後者會靜默忽略它們。

FalconForCausalLM

class transformers.FalconForCausalLM

< >

( config: FalconConfig )

引數

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

帶有一個語言建模頭(與輸入嵌入權重繫結的線性層)的 Falcon 模型 Transformer。

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

該模型也是 PyTorch torch.nn.Module 的子類。可以像常規 PyTorch 模組一樣使用它,並參考 PyTorch 文件瞭解所有與常規用法和行為相關的事項。

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = None past_key_values: typing.Union[transformers.cache_utils.Cache, tuple[tuple[torch.Tensor, torch.Tensor], ...], NoneType] = None attention_mask: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.Tensor] = None inputs_embeds: typing.Optional[torch.Tensor] = None labels: typing.Optional[torch.Tensor] = 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 **kwargs ) transformers.modeling_outputs.CausalLMOutputWithCrossAttentionstuple(torch.FloatTensor)

引數

  • input_ids (torch.LongTensor,形狀為 (batch_size, input_ids_length)) — 如果 past_key_valuesNone,則 input_ids_length = sequence_length;否則為 past_key_values[0][0].shape[2] (輸入過去鍵值狀態的 sequence_length)。詞彙表中輸入序列令牌的索引。

    如果使用了 past_key_values,則只有那些尚未計算其過去值的 input_ids 才應作為 input_ids 傳遞。

    索引可以使用 AutoTokenizer 獲得。詳情請參閱 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什麼是輸入 ID?

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

    允許兩種格式:

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

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

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

  • 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]

    什麼是位置 ID?

  • head_mask (torch.Tensor,形狀為 (num_heads,)(num_layers, num_heads)可選) — 用於置零自注意力模組中選定頭的掩碼。掩碼值選自 [0, 1]

    • 1 表示頭未被遮蔽
    • 0 表示頭被遮蔽
  • inputs_embeds (torch.Tensor,形狀為 (batch_size, sequence_length, hidden_size)可選) — 可選地,你可以選擇直接傳遞嵌入表示,而不是傳遞 input_ids。如果你想比模型內部的嵌入查詢矩陣有更多控制權來將 input_ids 索引轉換為相關向量,這將非常有用。
  • labels (torch.LongTensor,形狀為 (batch_size, sequence_length)可選) — 語言建模的標籤。請注意,標籤在模型內部被移動,即你可以設定 labels = input_ids。索引選自 [-100, 0, ..., config.vocab_size]。所有設定為 -100 的標籤都會被忽略(遮蔽),損失僅對 [0, ..., config.vocab_size] 中的標籤計算。
  • 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)可選) — 描述輸入序列令牌在序列中位置的索引。與 position_ids 相反,此張量不受填充影響。它用於在正確的位置更新快取並推斷完整的序列長度。
  • logits_to_keep (Union[int, torch.Tensor],預設為 0) — 如果是 int,則為最後的 logits_to_keep 個令牌計算 logits。如果是 0,則為所有 input_ids 計算 logits(特殊情況)。生成時只需要最後一個令牌的 logits,只為該令牌計算可以節省記憶體,這對於長序列或大詞彙表來說非常重要。如果是 torch.Tensor,則必須是一維的,對應於序列長度維度中要保留的索引。這在使用打包張量格式(批處理和序列長度使用單一維度)時非常有用。

返回

transformers.modeling_outputs.CausalLMOutputWithCrossAttentionstuple(torch.FloatTensor)

一個 transformers.modeling_outputs.CausalLMOutputWithCrossAttentions 或一個 torch.FloatTensor 元組(如果傳遞了 return_dict=False 或當 config.return_dict=False),根據配置(FalconConfig)和輸入包含各種元素。

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

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

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

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

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

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

  • cross_attentions (tuple(torch.FloatTensor)可選,在傳遞 output_attentions=Trueconfig.output_attentions=True 時返回) — torch.FloatTensor 的元組(每層一個),形狀為 (batch_size, num_heads, sequence_length, sequence_length)

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

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

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

FalconForCausalLM 的前向方法會覆蓋 __call__ 特殊方法。

儘管前向傳遞的流程需要在此函式內定義,但之後應呼叫 Module 例項而不是此函式,因為前者會處理執行前處理和後處理步驟,而後者會靜默忽略它們。

示例

FalconForSequenceClassification

class transformers.FalconForSequenceClassification

< >

( config: FalconConfig )

引數

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

帶有一個序列分類頭(線性層)的 Falcon 模型 Transformer。

FalconForSequenceClassification 使用最後一個令牌進行分類,與其他因果模型(如 GPT-1)一樣。

由於它在最後一個令牌上進行分類,因此需要知道最後一個令牌的位置。如果配置中定義了 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 past_key_values: typing.Optional[tuple[tuple[torch.Tensor, torch.Tensor], ...]] = None attention_mask: typing.Optional[torch.Tensor] = None head_mask: typing.Optional[torch.Tensor] = None inputs_embeds: typing.Optional[torch.Tensor] = None labels: typing.Optional[torch.Tensor] = 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, input_ids_length)) — 如果 past_key_valuesNone,則 input_ids_length = sequence_length;否則為 past_key_values[0][0].shape[2] (輸入過去鍵值狀態的 sequence_length)。詞彙表中輸入序列令牌的索引。

    如果使用了 past_key_values,則只有那些尚未計算其過去值的 input_ids 才應作為 input_ids 傳遞。

    索引可以使用 AutoTokenizer 獲得。詳情請參閱 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什麼是輸入 ID?

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

    允許兩種格式:

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

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

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

  • attention_mask (torch.Tensor,形狀為 (batch_size, sequence_length)可選) — 掩碼,用於避免在填充令牌索引上執行注意力。掩碼值選自 [0, 1]

    • 1 表示令牌未被遮蔽
    • 0 表示令牌被遮蔽

    什麼是注意力掩碼?

  • head_mask (torch.Tensor,形狀為 (num_heads,)(num_layers, num_heads)可選) — 用於置零自注意力模組中選定頭的掩碼。掩碼值選自 [0, 1]

    • 1 表示頭未被遮蔽
    • 0 表示頭被遮蔽
  • inputs_embeds (torch.Tensor,形狀為 (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),根據配置(FalconConfig)和輸入包含各種元素。

  • 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=Trueconfig.use_cache=True 時返回) — 這是一個 Cache 例項。有關更多詳細資訊,請參閱我們的 kv 快取指南

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

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

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

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

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

FalconForSequenceClassification 的前向方法會覆蓋 __call__ 特殊方法。

儘管前向傳遞的流程需要在此函式內定義,但之後應呼叫 Module 例項而不是此函式,因為前者會處理執行前處理和後處理步驟,而後者會靜默忽略它們。

單標籤分類示例

>>> import torch
>>> from transformers import AutoTokenizer, FalconForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("tiiuae/falcon-7b")
>>> model = FalconForSequenceClassification.from_pretrained("tiiuae/falcon-7b")

>>> 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 = FalconForSequenceClassification.from_pretrained("tiiuae/falcon-7b", num_labels=num_labels)

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

多標籤分類示例

>>> import torch
>>> from transformers import AutoTokenizer, FalconForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("tiiuae/falcon-7b")
>>> model = FalconForSequenceClassification.from_pretrained("tiiuae/falcon-7b", 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 = FalconForSequenceClassification.from_pretrained(
...     "tiiuae/falcon-7b", 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

FalconForTokenClassification

class transformers.FalconForTokenClassification

< >

( config: FalconConfig )

引數

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

帶有一個令牌分類頭(在隱藏狀態輸出之上加一個線性層)的 Falcon Transformer,例如用於命名實體識別(NER)任務。

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

該模型也是 PyTorch torch.nn.Module 的子類。可以像常規 PyTorch 模組一樣使用它,並參考 PyTorch 文件瞭解所有與常規用法和行為相關的事項。

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = None past_key_values: typing.Optional[tuple[tuple[torch.Tensor, torch.Tensor], ...]] = None attention_mask: typing.Optional[torch.Tensor] = None head_mask: typing.Optional[torch.Tensor] = None inputs_embeds: typing.Optional[torch.Tensor] = None labels: typing.Optional[torch.Tensor] = 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.TokenClassifierOutputtuple(torch.FloatTensor)

引數

  • input_ids (torch.LongTensor,形狀為 (batch_size, input_ids_length)) — input_ids_length = sequence_length,如果 past_key_valuesNone;否則為 past_key_values[0][0].shape[2] (輸入 past key value 狀態的 sequence_length)。詞彙表中輸入序列詞元的索引。

    如果使用了 `past_key_values`,則只有那些尚未計算其過去值的 `input_ids` 才應作為 `input_ids` 傳遞。

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

    什麼是輸入 ID?

  • past_key_values (tuple[tuple[torch.Tensor, torch.Tensor, ...]], 可選) — 預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於加速順序解碼。這通常包括在解碼的先前階段,當 `use_cache=True` 或 `config.use_cache=True` 時,模型返回的 `past_key_values`。

    允許兩種格式:

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

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

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

  • attention_mask (torch.Tensor,形狀為 `(batch_size, sequence_length)`,可選) — 用於避免在填充詞元索引上執行注意力的掩碼。掩碼值選自 `[0, 1]`:

    • 1 表示詞元未被掩碼
    • 0 表示詞元被掩碼

    什麼是注意力掩碼?

  • head_mask (torch.Tensor,形狀為 `(num_heads,)` 或 `(num_layers, num_heads)`,可選) — 用於使自注意力模組中選定的頭無效的掩碼。掩碼值選自 `[0, 1]`:

    • 1 表示頭未被掩碼
    • 0 表示頭被掩碼
  • inputs_embeds (torch.Tensor,形狀為 `(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.TokenClassifierOutputtuple(torch.FloatTensor)

一個 transformers.modeling_outputs.TokenClassifierOutput 或一個 `torch.FloatTensor` 的元組(如果傳遞了 `return_dict=False` 或當 `config.return_dict=False` 時),根據配置(FalconConfig)和輸入包含各種元素。

  • loss (形狀為 (1,)torch.FloatTensor可選,當提供 labels 時返回) — 分類損失。

  • logits (形狀為 (batch_size, sequence_length, config.num_labels)torch.FloatTensor) — 分類分數(SoftMax 之前)。

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

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

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

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

FalconForTokenClassification 的 forward 方法重寫了 `__call__` 特殊方法。

儘管前向傳遞的流程需要在此函式內定義,但之後應呼叫 Module 例項而不是此函式,因為前者會處理執行前處理和後處理步驟,而後者會靜默忽略它們。

示例

>>> from transformers import AutoTokenizer, FalconForTokenClassification
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("tiiuae/falcon-7b")
>>> model = FalconForTokenClassification.from_pretrained("tiiuae/falcon-7b")

>>> inputs = tokenizer(
...     "HuggingFace is a company based in Paris and New York", add_special_tokens=False, return_tensors="pt"
... )

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

>>> predicted_token_class_ids = logits.argmax(-1)

>>> # Note that tokens are classified rather then input words which means that
>>> # there might be more predicted token classes than words.
>>> # Multiple token classes might account for the same word
>>> predicted_tokens_classes = [model.config.id2label[t.item()] for t in predicted_token_class_ids[0]]
>>> predicted_tokens_classes
...

>>> labels = predicted_token_class_ids
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...

FalconForQuestionAnswering

class transformers.FalconForQuestionAnswering

< >

( config )

引數

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

Falcon Transformer,頂部帶有一個用於抽取式問答任務(如SQuAD)的跨度分類頭(在隱藏狀態輸出之上有一個線性層,用於計算 `span start logits` 和 `span end logits`)。

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

該模型也是 PyTorch torch.nn.Module 的子類。可以像常規 PyTorch 模組一樣使用它,並參考 PyTorch 文件瞭解所有與常規用法和行為相關的事項。

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None start_positions: typing.Optional[torch.LongTensor] = None end_positions: typing.Optional[torch.LongTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) transformers.modeling_outputs.QuestionAnsweringModelOutputtuple(torch.FloatTensor)

引數

  • input_ids (torch.LongTensor,形狀為 (batch_size, input_ids_length)) — input_ids_length = sequence_length,如果 past_key_valuesNone;否則為 past_key_values[0][0].shape[2] (輸入 past key value 狀態的 sequence_length)。詞彙表中輸入序列詞元的索引。

    如果使用了 `past_key_values`,則只有那些尚未計算其過去值的 `input_ids` 才應作為 `input_ids` 傳遞。

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

    什麼是輸入 ID?

  • attention_mask (torch.FloatTensor,形狀為 `(batch_size, sequence_length)`,可選) — 用於避免在填充詞元索引上執行注意力的掩碼。掩碼值選自 `[0, 1]`:

    • 1 表示詞元未被掩碼
    • 0 表示詞元被掩碼

    什麼是注意力掩碼?

  • head_mask (torch.FloatTensor,形狀為 `(num_heads,)` 或 `(num_layers, num_heads)`,可選) — 用於使自注意力模組中選定的頭無效的掩碼。掩碼值選自 `[0, 1]`:

    • 1 表示頭未被掩碼
    • 0 表示頭被掩碼
  • inputs_embeds (torch.FloatTensor,形狀為 `(batch_size, sequence_length, hidden_size)`,可選) — 可選地,你可以選擇直接傳遞嵌入表示,而不是傳遞 `input_ids`。如果你想比模型內部的嵌入查詢矩陣更好地控制如何將 `input_ids` 索引轉換為相關向量,這會很有用。
  • start_positions (torch.LongTensor,形狀為 `(batch_size,)`,可選) — 標記的跨度開始位置(索引)的標籤,用於計算詞元分類損失。位置被限制在序列長度(`sequence_length`)內。序列之外的位置在計算損失時將不被考慮。
  • end_positions (torch.LongTensor,形狀為 `(batch_size,)`,可選) — 標記的跨度結束位置(索引)的標籤,用於計算詞元分類損失。位置被限制在序列長度(`sequence_length`)內。序列之外的位置在計算損失時將不被考慮。
  • output_attentions (bool, 可選) — 是否返回所有注意力層的注意力張量。有關詳細資訊,請參閱返回張量下的 `attentions`。
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。有關詳細資訊,請參閱返回張量下的 `hidden_states`。
  • return_dict (bool, 可選) — 是否返回 ModelOutput 而不是普通的元組。

返回

transformers.modeling_outputs.QuestionAnsweringModelOutputtuple(torch.FloatTensor)

一個 transformers.modeling_outputs.QuestionAnsweringModelOutput 或一個 `torch.FloatTensor` 的元組(如果傳遞了 `return_dict=False` 或當 `config.return_dict=False` 時),根據配置(FalconConfig)和輸入包含各種元素。

  • loss (torch.FloatTensor of shape (1,), 可選, 當提供 labels 時返回) — 總範圍提取損失是起始位置和結束位置的交叉熵之和。

  • start_logits (torch.FloatTensor of shape (batch_size, sequence_length)) — 範圍起始分數(SoftMax 之前)。

  • end_logits (torch.FloatTensor of shape (batch_size, sequence_length)) — 範圍結束分數(SoftMax 之前)。

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

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

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

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

FalconForQuestionAnswering 的 forward 方法重寫了 `__call__` 特殊方法。

儘管前向傳遞的流程需要在此函式內定義,但之後應呼叫 Module 例項而不是此函式,因為前者會處理執行前處理和後處理步驟,而後者會靜默忽略它們。

示例

>>> from transformers import AutoTokenizer, FalconForQuestionAnswering
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("tiiuae/falcon-7b")
>>> model = FalconForQuestionAnswering.from_pretrained("tiiuae/falcon-7b")

>>> question, text = "Who was Jim Henson?", "Jim Henson was a nice puppet"

>>> inputs = tokenizer(question, text, return_tensors="pt")
>>> with torch.no_grad():
...     outputs = model(**inputs)

>>> answer_start_index = outputs.start_logits.argmax()
>>> answer_end_index = outputs.end_logits.argmax()

>>> predict_answer_tokens = inputs.input_ids[0, answer_start_index : answer_end_index + 1]
>>> tokenizer.decode(predict_answer_tokens, skip_special_tokens=True)
...

>>> # target is "nice puppet"
>>> target_start_index = torch.tensor([14])
>>> target_end_index = torch.tensor([15])

>>> outputs = model(**inputs, start_positions=target_start_index, end_positions=target_end_index)
>>> loss = outputs.loss
>>> round(loss.item(), 2)
...
< > 在 GitHub 上更新

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