Transformers 文件

LongT5

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

LongT5

PyTorch Flax

概述

LongT5 模型由 Mandy Guo、Joshua Ainslie、David Uthus、Santiago Ontanon、Jianmo Ni、Yun-Hsuan Sung 和 Yinfei Yang 在論文 LongT5: Efficient Text-To-Text Transformer for Long Sequences 中提出。它是一個在文字到文字去噪生成設定中預訓練的編碼器-解碼器 Transformer。LongT5 模型是 T5 模型的擴充套件,它支援使用兩種不同的高效注意力機制之一——(1)區域性注意力(Local attention),或(2)瞬時全域性注意力(Transient-Global attention)。

論文摘要如下:

最近的研究表明,(1)增加輸入長度或(2)增加模型大小都可以提高基於 Transformer 的神經模型的效能。在本文中,我們提出了一個名為 LongT5 的新模型,用它來探索同時擴充套件輸入長度和模型大小的效果。具體來說,我們將長輸入 Transformer(ETC)的注意力思想整合進來,並將摘要預訓練(PEGASUS)的預訓練策略應用於可擴充套件的 T5 架構中。其結果是一種我們稱之為 {\em 瞬時全域性} (TGlobal) 的新注意力機制,它模擬了 ETC 的區域性/全域性注意力機制,但不需要額外的側輸入。我們在幾個摘要任務上取得了最先進的結果,並在問答任務上優於原始的 T5 模型。

此模型由 stancld 貢獻。原始程式碼可以在這裡找到。

使用技巧

  • LongT5ForConditionalGenerationT5ForConditionalGeneration 的一個擴充套件,它將傳統的編碼器*自注意力*層替換為高效的*區域性*注意力或*瞬時全域性*(*tglobal*)注意力。
  • 與 T5 模型不同,LongT5 不使用任務字首。此外,它使用了一種不同的預訓練目標,靈感來自於 PegasusForConditionalGeneration 的預訓練。
  • LongT5 模型設計用於高效且出色地處理長距離*序列到序列*任務,其輸入序列長度超過了常用的 512 個 token。它能夠處理長度最多為 16,384 個 token 的輸入序列。
  • 對於*區域性注意力*,稀疏的滑動視窗區域性注意力操作允許給定 token 只關注其左右各 `r` 個 token(預設 `r=127`)。*區域性注意力*不會給模型引入任何新引數。該機制的複雜度與輸入序列長度 `l` 呈線性關係:`O(l*r)`。
  • 瞬時全域性注意力是*區域性注意力*的擴充套件。它進一步允許每個輸入 token 與層中的所有其他 token 進行互動。這是透過將輸入序列分割成固定長度 `k`(預設 `k=16`)的塊來實現的。然後,透過對塊中每個 token 的嵌入進行求和和歸一化,得到該塊的全域性 token。因此,注意力機制允許每個 token 既像區域性注意力一樣關注附近的 token,也像標準全域性注意力一樣關注每個全域性 token(“瞬時”表示全域性 token 是在每個注意力操作中動態構建的)。因此,*TGlobal* 注意力引入了一些新引數——全域性相對位置偏置和用於全域性 token 嵌入的層歸一化。該機制的複雜度為 `O(l(r + l/k))`。
  • 下面是一個示例,展示瞭如何在 pubmed 資料集上評估一個微調過的 LongT5 模型。
>>> import evaluate
>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer, LongT5ForConditionalGeneration

>>> dataset = load_dataset("scientific_papers", "pubmed", split="validation")
>>> model = (
...     LongT5ForConditionalGeneration.from_pretrained("Stancld/longt5-tglobal-large-16384-pubmed-3k_steps")
...     .to("cuda")
...     .half()
... )
>>> tokenizer = AutoTokenizer.from_pretrained("Stancld/longt5-tglobal-large-16384-pubmed-3k_steps")


>>> def generate_answers(batch):
...     inputs_dict = tokenizer(
...         batch["article"], max_length=16384, padding="max_length", truncation=True, return_tensors="pt"
...     )
...     input_ids = inputs_dict.input_ids.to("cuda")
...     attention_mask = inputs_dict.attention_mask.to("cuda")
...     output_ids = model.generate(input_ids, attention_mask=attention_mask, max_length=512, num_beams=2)
...     batch["predicted_abstract"] = tokenizer.batch_decode(output_ids, skip_special_tokens=True)
...     return batch


>>> result = dataset.map(generate_answer, batched=True, batch_size=2)
>>> rouge = evaluate.load("rouge")
>>> rouge.compute(predictions=result["predicted_abstract"], references=result["abstract"])

資源

LongT5Config

class transformers.LongT5Config

< >

( vocab_size = 32128 d_model = 512 d_kv = 64 d_ff = 2048 num_layers = 6 num_decoder_layers = None num_heads = 8 local_radius = 127 global_block_size = 16 relative_attention_num_buckets = 32 relative_attention_max_distance = 128 dropout_rate = 0.1 layer_norm_epsilon = 1e-06 initializer_factor = 1.0 feed_forward_proj = 'relu' is_encoder_decoder = True encoder_attention_type = 'local' use_cache = True pad_token_id = 0 eos_token_id = 1 **kwargs )

引數

  • vocab_size (int, 可選, 預設為 32128) — LongT5 模型的詞彙表大小。定義了在呼叫 LongT5Model 時,`inputs_ids` 可以表示的不同 token 的數量。
  • d_model (int, 可選, 預設為 512) — 編碼器層和池化層的大小。
  • d_kv (int, 可選, 預設為 64) — 每個注意力頭的鍵、查詢、值投影的大小。`d_kv` 必須等於 `d_model // num_heads`。
  • d_ff (int, 可選, 預設為 2048) — 每個 `LongT5Block` 中中間前饋層的大小。
  • num_layers (int, 可選, 預設為 6) — Transformer 編碼器中的隱藏層數量。
  • num_decoder_layers (int, 可選) — Transformer 解碼器中的隱藏層數量。如果未設定,將使用與 `num_layers` 相同的值。
  • num_heads (int, 可選, 預設為 8) — Transformer 編碼器中每個注意力層的注意力頭數量。
  • local_radius (int, 可選, 預設為 127) — 在區域性注意力機制中,每個 token 左右兩側進行區域性自注意力計算的 token 數量。
  • global_block_size (int, 可選, 預設為 16) — 用於將輸入序列劃分為塊以進行全域性 token 表示的塊長度。僅用於 `encoder_attention_type = "transient-global"`。
  • relative_attention_num_buckets (int, 可選, 預設為 32) — 每個注意力層使用的桶的數量。
  • relative_attention_max_distance (int, 可選, 預設為 128) — 用於桶分離的較長序列的最大距離。
  • dropout_rate (float, 可選, 預設為 0.1) — 所有 dropout 層的比率。
  • layer_norm_eps (float, 可選, 預設為 1e-6) — 層歸一化層使用的 epsilon 值。
  • initializer_factor (float, 可選, 預設為 1) — 用於初始化所有權重矩陣的因子(應保持為 1,內部用於初始化測試)。
  • feed_forward_proj (string, 可選, 預設為 `"relu"`) — 要使用的前饋層型別。應為 `"relu"` 或 `"gated-gelu"` 之一。LongT5v1.1 使用 `"gated-gelu"` 前饋投影。原始 LongT5 實現使用 `"gated-gelu"`。
  • encoder_attention_type (string, 可選, 預設為 `"local"`) — 要使用的編碼器注意力型別。應為 `"local"` 或 `"transient-global"` 之一,這些是 LongT5 實現支援的型別。
  • use_cache (bool, 可選, 預設為 `True`) — 模型是否應返回最後的鍵/值注意力(並非所有模型都使用)。

這是一個配置類,用於儲存 LongT5ModelFlaxLongT5Model 的配置。它根據指定的引數例項化一個 LongT5 模型,定義模型架構。使用預設值例項化配置將產生與 LongT5 google/long-t5-local-base 架構類似的配置。

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

Pytorch
隱藏 Pytorch 內容

LongT5Model

class transformers.LongT5Model

< >

( config: LongT5Config )

引數

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

無任何特定頭部的 LongT5 裸模型,輸出原始隱藏狀態。

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

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

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = None decoder_input_ids: typing.Optional[torch.LongTensor] = None decoder_attention_mask: typing.Optional[torch.BoolTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None decoder_head_mask: typing.Optional[torch.FloatTensor] = None cross_attn_head_mask: typing.Optional[torch.Tensor] = None encoder_outputs: typing.Optional[tuple[tuple[torch.FloatTensor]]] = None past_key_values: typing.Optional[tuple[tuple[torch.FloatTensor]]] = None inputs_embeds: typing.Optional[torch.Tensor] = None decoder_inputs_embeds: 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 ) transformers.modeling_outputs.Seq2SeqModelOutput or tuple(torch.FloatTensor)

引數

  • input_ids (torch.LongTensor,形狀為 (batch_size, sequence_length)) — 詞彙表中輸入序列標記的索引。LongT5 是一個帶有相對位置嵌入的模型,因此你應該能夠在輸入的左側和右側進行填充。

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

    什麼是輸入 ID?

    要了解更多關於如何為預訓練準備 input_ids 的資訊,請參閱 LONGT5 訓練

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

    • 1 表示標記未被掩碼
    • 0 表示標記被掩碼

    什麼是注意力掩碼?

  • decoder_input_ids (torch.LongTensor,形狀為 (batch_size, target_sequence_length)可選) — 詞彙表中解碼器輸入序列標記的索引。

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

    什麼是解碼器輸入 ID?

    LONGT5 使用 pad_token_id 作為生成 decoder_input_ids 的起始標記。如果使用 past_key_values,則可以選擇只輸入最後一個 decoder_input_ids(參見 past_key_values)。

    要了解更多關於如何為預訓練準備 decoder_input_ids 的資訊,請參閱 LONGT5 訓練

  • decoder_attention_mask (torch.BoolTensor,形狀為 (batch_size, target_sequence_length)可選) — 預設行為:生成一個忽略 decoder_input_ids 中填充標記的張量。預設情況下也會使用因果掩碼。
  • head_mask (torch.FloatTensor,形狀為 (num_heads,)(num_layers, num_heads)可選) — 用於使自注意力模組中選定的頭無效的掩碼。掩碼值選自 [0, 1]

    • 1 表示頭部未被掩碼
    • 0 表示頭部被掩碼
  • decoder_head_mask (torch.FloatTensor,形狀為 (num_heads,)(num_layers, num_heads)可選) — 用於使解碼器中自注意力模組中選定的頭無效的掩碼。掩碼值選自 [0, 1]

    • 1 表示頭部未被掩碼
    • 0 表示頭部被掩碼
  • cross_attn_head_mask (torch.Tensor,形狀為 (num_heads,)(num_layers, num_heads)可選) — 用於使解碼器中交叉注意力模組中選定的頭無效的掩碼。掩碼值選自 [0, 1]

    • 1 表示頭部未被掩碼
    • 0 表示頭部被掩碼
  • encoder_outputs (tuple[tuple[torch.FloatTensor]]可選) — 元組包含 (last_hidden_state, 可選: hidden_states, 可選: attentions) last_hidden_state(形狀為 (batch_size, sequence_length, hidden_size)可選)是編碼器最後一層輸出的隱藏狀態序列。用於解碼器的交叉注意力。
  • past_key_values (tuple[tuple[torch.FloatTensor]]可選) — 預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於加速順序解碼。這通常包括模型在先前解碼階段返回的 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,使用者可以選擇只輸入形狀為 (batch_size, 1) 的最後一個 input_ids(那些沒有為其提供過去鍵值狀態的 ID),而不是形狀為 (batch_size, sequence_length) 的所有 input_ids

  • inputs_embeds (torch.Tensor,形狀為 (batch_size, sequence_length, hidden_size)可選) — 可選地,你可以選擇直接傳遞嵌入表示,而不是傳遞 input_ids。如果你想比模型內部的嵌入查詢矩陣更好地控制如何將 input_ids 索引轉換為相關向量,這將非常有用。
  • decoder_inputs_embeds (torch.Tensor,形狀為 (batch_size, target_sequence_length, hidden_size)可選) — 可選地,你可以選擇直接傳遞嵌入表示,而不是傳遞 decoder_input_ids。如果使用 past_key_values,可以選擇只輸入最後一個 decoder_inputs_embeds(參見 past_key_values)。如果你想比模型內部的嵌入查詢矩陣更好地控制如何將 decoder_input_ids 索引轉換為相關向量,這將非常有用。

    如果 decoder_input_idsdecoder_inputs_embeds 都未設定,decoder_inputs_embeds 將取 inputs_embeds 的值。

  • 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.Seq2SeqModelOutputtuple(torch.FloatTensor)

一個 transformers.modeling_outputs.Seq2SeqModelOutput 或一個 torch.FloatTensor 元組(如果傳遞了 return_dict=Falseconfig.return_dict=False),根據配置 (LongT5Config) 和輸入包含不同的元素。

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

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

  • past_key_values (EncoderDecoderCache可選,當傳遞 use_cache=Trueconfig.use_cache=True 時返回) — 這是一個 EncoderDecoderCache 例項。更多詳情請參閱我們的 kv 快取指南

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

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

    解碼器在每個層輸出的隱藏狀態,加上可選的初始嵌入輸出。

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

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

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

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

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

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

    編碼器在每個層輸出的隱藏狀態,加上可選的初始嵌入輸出。

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

    編碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。

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

雖然前向傳播的邏輯需要在此函式內定義,但之後應該呼叫 `Module` 例項而不是此函式,因為前者會處理預處理和後處理步驟,而後者會默默地忽略它們。

示例

>>> from transformers import AutoTokenizer, LongT5Model

>>> tokenizer = AutoTokenizer.from_pretrained("google/long-t5-local-base")
>>> model = LongT5Model.from_pretrained("google/long-t5-local-base")

>>> # Let's try a very long encoder input.
>>> input_ids = tokenizer(
...     100 * "Studies have been shown that owning a dog is good for you", return_tensors="pt"
... ).input_ids  # Batch size 1

>>> decoder_input_ids = tokenizer("Studies show that", return_tensors="pt").input_ids  # Batch size 1

>>> # forward pass
>>> outputs = model(input_ids=input_ids, decoder_input_ids=decoder_input_ids)
>>> last_hidden_states = outputs.last_hidden_state

LongT5ForConditionalGeneration

class transformers.LongT5ForConditionalGeneration

< >

( config: LongT5Config )

引數

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

帶有一個 `language modeling` 頭的 LONGT5 模型。

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

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

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = None decoder_input_ids: typing.Optional[torch.LongTensor] = None decoder_attention_mask: typing.Optional[torch.BoolTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None decoder_head_mask: typing.Optional[torch.FloatTensor] = None cross_attn_head_mask: typing.Optional[torch.Tensor] = None encoder_outputs: typing.Optional[tuple[tuple[torch.Tensor]]] = None past_key_values: typing.Optional[tuple[tuple[torch.Tensor]]] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None decoder_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 ) transformers.modeling_outputs.Seq2SeqLMOutput or tuple(torch.FloatTensor)

引數

  • input_ids (torch.LongTensor,形狀為 (batch_size, sequence_length)) — 詞彙表中輸入序列標記的索引。LongT5 是一個帶有相對位置嵌入的模型,因此你應該能夠在輸入的左側和右側進行填充。

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

    什麼是輸入 ID?

    要了解更多關於如何為預訓練準備 input_ids 的資訊,請參閱 LONGT5 訓練

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

    • 1 表示標記未被掩碼
    • 0 表示標記被掩碼

    什麼是注意力掩碼?

  • decoder_input_ids (torch.LongTensor,形狀為 (batch_size, target_sequence_length)可選) — 詞彙表中解碼器輸入序列標記的索引。

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

    什麼是解碼器輸入 ID?

    LONGT5 使用 pad_token_id 作為生成 decoder_input_ids 的起始標記。如果使用 past_key_values,則可以選擇只輸入最後一個 decoder_input_ids(參見 past_key_values)。

    要了解更多關於如何為預訓練準備 decoder_input_ids 的資訊,請參閱 LONGT5 訓練

  • decoder_attention_mask (torch.BoolTensor,形狀為 (batch_size, target_sequence_length)可選) — 預設行為:生成一個忽略 decoder_input_ids 中填充標記的張量。預設情況下也會使用因果掩碼。
  • head_mask (torch.FloatTensor,形狀為 (num_heads,)(num_layers, num_heads)可選) — 用於使自注意力模組中選定的頭無效的掩碼。掩碼值選自 [0, 1]

    • 1 表示頭部未被掩碼
    • 0 表示頭部被掩碼
  • decoder_head_mask (torch.FloatTensor,形狀為 (num_heads,)(num_layers, num_heads)可選) — 用於使解碼器中自注意力模組中選定的頭無效的掩碼。掩碼值選自 [0, 1]

    • 1 表示頭部未被掩碼
    • 0 表示頭部被掩碼
  • cross_attn_head_mask (torch.Tensor,形狀為 (num_heads,)(num_layers, num_heads)可選) — 用於使解碼器中交叉注意力模組中選定的頭無效的掩碼。掩碼值選自 [0, 1]

    • 1 表示頭部未被掩碼
    • 0 表示頭部被掩碼
  • encoder_outputs (tuple[tuple[torch.Tensor]]可選) — 元組包含 (last_hidden_state, 可選: hidden_states, 可選: attentions) last_hidden_state(形狀為 (batch_size, sequence_length, hidden_size)可選)是編碼器最後一層輸出的隱藏狀態序列。用於解碼器的交叉注意力。
  • past_key_values (tuple[tuple[torch.Tensor]]可選) — 預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於加速順序解碼。這通常包括模型在先前解碼階段返回的 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,使用者可以選擇只輸入形狀為 (batch_size, 1) 的最後一個 input_ids(那些沒有為其提供過去鍵值狀態的 ID),而不是形狀為 (batch_size, sequence_length) 的所有 input_ids

  • inputs_embeds (torch.FloatTensor,形狀為 (batch_size, sequence_length, hidden_size)可選) — 可選地,你可以選擇直接傳遞嵌入表示,而不是傳遞 input_ids。如果你想比模型內部的嵌入查詢矩陣更好地控制如何將 input_ids 索引轉換為相關向量,這將非常有用。
  • decoder_inputs_embeds (torch.FloatTensor,形狀為 (batch_size, target_sequence_length, hidden_size)可選) — 可選地,你可以選擇直接傳遞嵌入表示,而不是傳遞 decoder_input_ids。如果使用 past_key_values,可以選擇只輸入最後一個 decoder_inputs_embeds(參見 past_key_values)。如果你想比模型內部的嵌入查詢矩陣更好地控制如何將 decoder_input_ids 索引轉換為相關向量,這將非常有用。

    如果 decoder_input_idsdecoder_inputs_embeds 都未設定,decoder_inputs_embeds 將取 inputs_embeds 的值。

  • labels (torch.LongTensor,形狀為 (batch_size,)可選) — 用於計算序列分類/迴歸損失的標籤。索引應在 [-100, 0, ..., config.vocab_size - 1] 範圍內。所有設定為 -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 相反,此張量不受填充影響。它用於在正確的位置更新快取並推斷完整的序列長度。

返回

transformers.modeling_outputs.Seq2SeqLMOutputtuple(torch.FloatTensor)

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

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

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

  • past_key_values (EncoderDecoderCache可選,當傳遞 use_cache=Trueconfig.use_cache=True 時返回) — 這是一個 EncoderDecoderCache 例項。更多詳情請參閱我們的 kv 快取指南

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

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

    解碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。

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

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

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

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

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

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

    編碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。

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

    編碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。

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

雖然前向傳播的邏輯需要在此函式內定義,但之後應該呼叫 `Module` 例項而不是此函式,因為前者會處理預處理和後處理步驟,而後者會默默地忽略它們。

示例

>>> from transformers import AutoTokenizer, LongT5ForConditionalGeneration

>>> tokenizer = AutoTokenizer.from_pretrained("Stancld/longt5-tglobal-large-16384-pubmed-3k_steps")
>>> model = LongT5ForConditionalGeneration.from_pretrained(
...     "Stancld/longt5-tglobal-large-16384-pubmed-3k_steps"
... )

>>> # Let's try a very long input.
>>> inputs = tokenizer(100 * "studies have shown that owning a dog is good for you ", return_tensors="pt")
>>> input_ids = inputs.input_ids

>>> outputs = model.generate(input_ids)
>>> print(tokenizer.decode(outputs[0], skip_special_tokens=True))
abstractthe aim of this article is to provide an overview of the literature on the role of dog

LongT5EncoderModel

class transformers.LongT5EncoderModel

< >

( config: LongT5Config )

引數

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

無任何特定頭部的 LongT5 裸模型,輸出原始隱藏狀態。

該模型繼承自 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 output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) transformers.modeling_outputs.BaseModelOutputtuple(torch.FloatTensor)

引數

  • input_ids (torch.LongTensor,形狀為 (batch_size, sequence_length)) — 詞彙表中輸入序列詞元的索引。LongT5 是一個帶有相對位置嵌入的模型,因此你應該能夠對輸入的左右兩邊進行填充。

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

    要了解如何為預訓練準備 input_ids,請參閱 LONGT5 訓練

  • 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 索引轉換為關聯向量,這會很有用。
  • output_attentions (bool, 可選) — 是否返回所有注意力層的注意力張量。更多細節請參閱返回張量下的 attentions
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。更多細節請參閱返回張量下的 hidden_states
  • return_dict (bool, 可選) — 是否返回一個 ModelOutput 而不是一個普通的元組。

返回

transformers.modeling_outputs.BaseModelOutputtuple(torch.FloatTensor)

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

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

  • 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 後的注意力權重,用於計算自注意力頭中的加權平均值。

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

雖然前向傳播的邏輯需要在此函式內定義,但之後應該呼叫 `Module` 例項而不是此函式,因為前者會處理預處理和後處理步驟,而後者會默默地忽略它們。

示例

>>> from transformers import AutoTokenizer, LongT5ForConditionalGeneration

>>> tokenizer = AutoTokenizer.from_pretrained("google/long-t5-local-base")
>>> model = LongT5EncoderModel.from_pretrained("google/long-t5-local-base")
>>> input_ids = tokenizer(
...     100 * "Studies have been shown that owning a dog is good for you ", return_tensors="pt"
... ).input_ids  # Batch size 1
>>> outputs = model(input_ids=input_ids)
>>> last_hidden_states = outputs.last_hidden_state
JAX
隱藏 JAX 內容

FlaxLongT5Model

class transformers.FlaxLongT5Model

< >

( config: LongT5Config input_shape: tuple = (1, 1) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True **kwargs )

__call__

< >

( input_ids: Array attention_mask: typing.Optional[jax.Array] = None decoder_input_ids: Array = None decoder_attention_mask: typing.Optional[jax.Array] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None train: bool = False params: typing.Optional[dict] = None dropout_rng: <function PRNGKey at 0x7effc7ad3a30> = None ) transformers.modeling_flax_outputs.FlaxSeq2SeqLMOutputtuple(torch.FloatTensor)

引數

  • input_ids (jnp.ndarray,形狀為 (batch_size, sequence_length)) — 詞彙表中輸入序列詞元的索引。LongT5 是一個帶有相對位置嵌入的模型,因此你應該能夠對輸入的左右兩邊進行填充。

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

    什麼是輸入 ID?

    要了解如何為預訓練準備 input_ids,請參閱 LONGT5 訓練

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

    • 1 表示詞元未被遮蓋
    • 0 表示詞元被遮蓋

    什麼是注意力掩碼?

  • decoder_input_ids (jnp.ndarray,形狀為 (batch_size, target_sequence_length), 可選) — 解碼器輸入序列詞元在詞彙表中的索引。

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

    什麼是解碼器輸入 ID?

    LONGT5 使用 pad_token_id 作為生成 decoder_input_ids 的起始詞元。如果使用 past_key_values,可以選擇只輸入最後一個 decoder_input_ids(請參閱 past_key_values)。

    要了解如何為預訓練準備 decoder_input_ids,請參閱 LONGT5 訓練

  • decoder_attention_mask (jnp.ndarray,形狀為 (batch_size, target_sequence_length), 可選) — 預設行為:生成一個忽略 decoder_input_ids 中填充詞元的張量。預設情況下也會使用因果掩碼。
  • encoder_outputs (tuple(tuple(jnp.ndarray), 可選) — 元組包含(last_hidden_state, 可選: hidden_states, 可選: attentions)。形狀為 (batch_size, sequence_length, hidden_size)last_hidden_state 是編碼器最後一層輸出的隱藏狀態序列。用於解碼器的交叉注意力。
  • past_key_values (tuple(tuple(jnp.ndarray)),長度為 config.n_layers,每個元組包含 4 個形狀為 (batch_size, num_heads, sequence_length - 1, embed_size_per_head) 的張量) — 包含預先計算的注意力塊的鍵和值隱藏狀態。可用於加速解碼。

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

返回

transformers.modeling_flax_outputs.FlaxSeq2SeqLMOutputtuple(torch.FloatTensor)

一個 transformers.modeling_flax_outputs.FlaxSeq2SeqLMOutput 或一個 torch.FloatTensor 元組(如果傳遞了 return_dict=False 或當 config.return_dict=False 時),根據配置(LongT5Config)和輸入包含不同的元素。

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

  • past_key_values (tuple(tuple(jnp.ndarray)), 可選, 在傳遞 use_cache=Trueconfig.use_cache=True 時返回) — tuple(jnp.ndarray) 的元組,長度為 config.n_layers,每個元組包含 2 個形狀為 (batch_size, num_heads, sequence_length, embed_size_per_head) 的張量和 2 個額外的形狀為 (batch_size, num_heads, encoder_sequence_length, embed_size_per_head) 的張量。

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

  • decoder_hidden_states (tuple(jnp.ndarray), 可選, 在傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — jnp.ndarray 的元組(一個是嵌入層的輸出 + 每一層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    解碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。

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

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

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

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

  • encoder_last_hidden_state (形狀為 (batch_size, sequence_length, hidden_size)jnp.ndarray可選) — 模型編碼器最後一層輸出的隱藏狀態序列。

  • encoder_hidden_states (tuple(jnp.ndarray), 可選, 在傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — jnp.ndarray 的元組(一個是嵌入層的輸出 + 每一層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    編碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。

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

    編碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。

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

雖然前向傳播的邏輯需要在此函式內定義,但之後應該呼叫 `Module` 例項而不是此函式,因為前者會處理預處理和後處理步驟,而後者會默默地忽略它們。

示例

>>> from transformers import AutoTokenizer, FlaxLongT5Model

>>> tokenizer = AutoTokenizer.from_pretrained("google-t5/t5-base")
>>> model = FlaxLongT5Model.from_pretrained("google/long-t5-local-base")

>>> input_ids = tokenizer(
...     "Studies have been shown that owning a dog is good for you", return_tensors="np"
... ).input_ids
>>> decoder_input_ids = tokenizer("Studies show that", return_tensors="np").input_ids

>>> # forward pass
>>> outputs = model(input_ids=input_ids, decoder_input_ids=decoder_input_ids)
>>> last_hidden_states = outputs.last_hidden_state

編碼

< >

( input_ids: Array attention_mask: typing.Optional[jax.Array] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None train: bool = False params: typing.Optional[dict] = None dropout_rng: <function PRNGKey at 0x7effc7ad3a30> = None ) transformers.modeling_flax_outputs.FlaxBaseModelOutputtuple(torch.FloatTensor)

引數

  • input_ids (jnp.ndarray,形狀為 (batch_size, sequence_length)) — 詞彙表中輸入序列詞元的索引。LongT5 是一個帶有相對位置嵌入的模型,因此你應該能夠對輸入的左右兩邊進行填充。

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

    要了解如何為預訓練準備 input_ids,請參閱 LONGT5 訓練

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

    • 1 表示詞元未被遮蓋
    • 0 表示詞元被遮蓋

    什麼是注意力掩碼?

  • output_attentions (bool, 可選) — 是否返回所有注意力層的注意力張量。更多細節請參閱返回張量下的 attentions
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。更多細節請參閱返回張量下的 hidden_states
  • return_dict (bool, 可選) — 是否返回一個 ModelOutput 而不是一個普通的元組。

返回

transformers.modeling_flax_outputs.FlaxBaseModelOutputtuple(torch.FloatTensor)

一個 transformers.modeling_flax_outputs.FlaxBaseModelOutput 或一個 torch.FloatTensor 元組(如果傳遞了 return_dict=False 或當 config.return_dict=False 時),根據配置(<class 'transformers.models.longt5.configuration_longt5.LongT5Config'>)和輸入包含不同的元素。

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

  • hidden_states (tuple(jnp.ndarray), 可選, 在傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — jnp.ndarray 的元組(一個是嵌入層的輸出 + 每一層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態加上初始嵌入輸出。

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

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

示例

>>> from transformers import AutoTokenizer, FlaxLongT5ForConditionalGeneration

>>> tokenizer = AutoTokenizer.from_pretrained("google-t5/t5-base")
>>> model = FlaxLongT5ForConditionalGeneration.from_pretrained("google/long-t5-local-base")

>>> text = "My friends are cool but they eat too many carbs."
>>> inputs = tokenizer(text, return_tensors="np")
>>> encoder_outputs = model.encode(**inputs)

decode

< >

( decoder_input_ids encoder_outputs encoder_attention_mask: typing.Optional[jax.Array] = None decoder_attention_mask: typing.Optional[jax.Array] = None past_key_values: typing.Optional[dict] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None train: bool = False params: typing.Optional[dict] = None dropout_rng: <function PRNGKey at 0x7effc7ad3a30> = None ) transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPastAndCrossAttentionstuple(torch.FloatTensor)

引數

  • decoder_input_ids (jnp.ndarray,形狀為 (batch_size, target_sequence_length)) — 解碼器輸入序列詞元在詞彙表中的索引。

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

    什麼是解碼器輸入 ID?

    對於訓練,應提供 decoder_input_ids

  • encoder_outputs (tuple(tuple(jnp.ndarray)) — 元組包含(last_hidden_state, 可選: hidden_states, 可選: attentions)。形狀為 (batch_size, sequence_length, hidden_size)last_hidden_state 是編碼器最後一層輸出的隱藏狀態序列。用於解碼器的交叉注意力。
  • encoder_attention_mask (jnp.ndarray,形狀為 (batch_size, sequence_length), 可選) — 用於避免對填充詞元索引執行注意力的掩碼。掩碼值選自 [0, 1]

    • 1 表示詞元未被遮蓋
    • 0 表示詞元被遮蓋

    什麼是注意力掩碼?

  • decoder_attention_mask (jnp.ndarray,形狀為 (batch_size, target_sequence_length), 可選) — 預設行為:生成一個忽略 decoder_input_ids 中填充詞元的張量。預設情況下也會使用因果掩碼。

    如果你想改變填充行為,應根據你的需求進行修改。有關預設策略的更多資訊,請參閱論文中的圖 1。

  • past_key_values (Dict[str, np.ndarray], 可選, 由 init_cache 返回或在傳遞先前的 past_key_values 時返回) — 預先計算的隱藏狀態(注意力塊中的鍵和值)的字典,可用於快速自迴歸解碼。預先計算的鍵和值隱藏狀態的形狀為 [batch_size, max_length]
  • output_attentions (bool, 可選) — 是否返回所有注意力層的注意力張量。更多細節請參閱返回張量下的 attentions
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。更多細節請參閱返回張量下的 hidden_states
  • return_dict (bool, 可選) — 是否返回一個 ModelOutput 而不是一個普通的元組。

返回

transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPastAndCrossAttentionstuple(torch.FloatTensor)

一個 transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPastAndCrossAttentions 或一個 torch.FloatTensor 元組(如果傳遞了 return_dict=False 或當 config.return_dict=False 時),根據配置(<class 'transformers.models.longt5.configuration_longt5.LongT5Config'>)和輸入包含不同的元素。

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

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

  • past_key_values (tuple(tuple(jnp.ndarray)), 可選, 在傳遞 use_cache=Trueconfig.use_cache=True 時返回) — tuple(jnp.ndarray) 的元組,長度為 config.n_layers,每個元組包含 2 個形狀為 (batch_size, num_heads, sequence_length, embed_size_per_head) 的張量,如果 config.is_encoder_decoder=True,則還有 2 個額外的形狀為 (batch_size, num_heads, encoder_sequence_length, embed_size_per_head) 的張量。

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

  • hidden_states (tuple(jnp.ndarray), 可選, 在傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — jnp.ndarray 的元組(一個是嵌入層的輸出 + 每一層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態加上初始嵌入輸出。

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

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

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

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

示例

>>> from transformers import AutoTokenizer, FlaxLongT5ForConditionalGeneration
>>> import jax.numpy as jnp

>>> tokenizer = AutoTokenizer.from_pretrained("google-t5/t5-base")
>>> model = FlaxLongT5ForConditionalGeneration.from_pretrained("google/long-t5-local-base")

>>> text = "My friends are cool but they eat too many carbs."
>>> inputs = tokenizer(text, return_tensors="np")
>>> encoder_outputs = model.encode(**inputs)

>>> decoder_start_token_id = model.config.decoder_start_token_id
>>> decoder_input_ids = jnp.ones((inputs.input_ids.shape[0], 1), dtype="i4") * decoder_start_token_id

>>> outputs = model.decode(decoder_input_ids, encoder_outputs)
>>> logits = outputs.logits

FlaxLongT5ForConditionalGeneration

class transformers.FlaxLongT5ForConditionalGeneration

< >

( config: LongT5Config input_shape: tuple = (1, 1) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True **kwargs )

__call__

< >

( input_ids: Array attention_mask: typing.Optional[jax.Array] = None decoder_input_ids: Array = None decoder_attention_mask: typing.Optional[jax.Array] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None train: bool = False params: typing.Optional[dict] = None dropout_rng: <function PRNGKey at 0x7effc7ad3a30> = None ) transformers.modeling_flax_outputs.FlaxSeq2SeqLMOutputtuple(torch.FloatTensor)

引數

  • input_ids (jnp.ndarray,形狀為 (batch_size, sequence_length)) — 詞彙表中輸入序列詞元的索引。LongT5 是一個帶有相對位置嵌入的模型,因此你應該能夠對輸入的左右兩邊進行填充。

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

    什麼是輸入 ID?

    要了解如何為預訓練準備 input_ids,請參閱 LONGT5 訓練

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

    • 1 表示詞元未被遮蓋
    • 0 表示詞元被遮蓋

    什麼是注意力掩碼?

  • decoder_input_ids (jnp.ndarray,形狀為 (batch_size, target_sequence_length), 可選) — 解碼器輸入序列詞元在詞彙表中的索引。

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

    什麼是解碼器輸入 ID?

    LONGT5 使用 pad_token_id 作為生成 decoder_input_ids 的起始詞元。如果使用 past_key_values,可以選擇只輸入最後一個 decoder_input_ids(請參閱 past_key_values)。

    要了解如何為預訓練準備 decoder_input_ids,請參閱 LONGT5 訓練

  • decoder_attention_mask (jnp.ndarray,形狀為 (batch_size, target_sequence_length), 可選) — 預設行為:生成一個忽略 decoder_input_ids 中填充詞元的張量。預設情況下也會使用因果掩碼。
  • encoder_outputs (tuple(tuple(jnp.ndarray), 可選) — 元組包含 (last_hidden_state, 可選: hidden_states, 可選: attentions)。last_hidden_state 的形狀為 (batch_size, sequence_length, hidden_size),是編碼器最後一層輸出的一系列隱藏狀態。用於解碼器的交叉注意力機制。
  • past_key_values (tuple(tuple(jnp.ndarray)),長度為 config.n_layers,其中每個元組包含 4 個形狀為 (batch_size, num_heads, sequence_length - 1, embed_size_per_head) 的張量) — 包含注意力塊的預計算鍵(key)和值(value)隱藏狀態。可用於加速解碼。

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

返回

transformers.modeling_flax_outputs.FlaxSeq2SeqLMOutputtuple(torch.FloatTensor)

一個 transformers.modeling_flax_outputs.FlaxSeq2SeqLMOutput 或一個 torch.FloatTensor 元組(如果傳遞了 return_dict=False 或當 config.return_dict=False 時),根據配置(LongT5Config)和輸入包含不同的元素。

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

  • past_key_values (tuple(tuple(jnp.ndarray)), 可選, 在傳遞 use_cache=Trueconfig.use_cache=True 時返回) — tuple(jnp.ndarray) 的元組,長度為 config.n_layers,每個元組包含 2 個形狀為 (batch_size, num_heads, sequence_length, embed_size_per_head) 的張量和 2 個額外的形狀為 (batch_size, num_heads, encoder_sequence_length, embed_size_per_head) 的張量。

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

  • decoder_hidden_states (tuple(jnp.ndarray), 可選, 在傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — jnp.ndarray 的元組(一個是嵌入層的輸出 + 每一層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    解碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。

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

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

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

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

  • encoder_last_hidden_state (形狀為 (batch_size, sequence_length, hidden_size)jnp.ndarray可選) — 模型編碼器最後一層輸出的隱藏狀態序列。

  • encoder_hidden_states (tuple(jnp.ndarray), 可選, 在傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — jnp.ndarray 的元組(一個是嵌入層的輸出 + 每一層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    編碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。

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

    編碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。

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

雖然前向傳播的邏輯需要在此函式內定義,但之後應該呼叫 `Module` 例項而不是此函式,因為前者會處理預處理和後處理步驟,而後者會默默地忽略它們。

示例

>>> from transformers import AutoTokenizer, FlaxLongT5ForConditionalGeneration

>>> tokenizer = AutoTokenizer.from_pretrained("google-t5/t5-base")
>>> model = FlaxLongT5ForConditionalGeneration.from_pretrained("google/long-t5-local-base")

>>> ARTICLE_TO_SUMMARIZE = "summarize: My friends are cool but they eat too many carbs."
>>> inputs = tokenizer([ARTICLE_TO_SUMMARIZE], return_tensors="np")

>>> # Generate Summary
>>> summary_ids = model.generate(inputs["input_ids"]).sequences
>>> print(tokenizer.decode(summary_ids[0], skip_special_tokens=True, clean_up_tokenization_spaces=False))

編碼

< >

( input_ids: Array attention_mask: typing.Optional[jax.Array] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None train: bool = False params: typing.Optional[dict] = None dropout_rng: <function PRNGKey at 0x7effc7ad3a30> = None ) transformers.modeling_flax_outputs.FlaxBaseModelOutputtuple(torch.FloatTensor)

引數

  • input_ids (jnp.ndarray,形狀為 (batch_size, sequence_length)) — 詞彙表中輸入序列詞元的索引。LongT5 是一個帶有相對位置嵌入的模型,因此您應該能夠在輸入的左側和右側進行填充。

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

    要了解更多關於如何為預訓練準備 input_ids 的資訊,請參閱 LONGT5 訓練

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

    • 1 表示未被遮蔽的詞元,
    • 0 表示被遮蔽的詞元。

    什麼是注意力掩碼?

  • output_attentions (bool, 可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量下的 attentions
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的 hidden_states
  • return_dict (bool, 可選) — 是否返回一個 ModelOutput 而不是一個普通的元組。

返回

transformers.modeling_flax_outputs.FlaxBaseModelOutputtuple(torch.FloatTensor)

一個 transformers.modeling_flax_outputs.FlaxBaseModelOutput 或一個 torch.FloatTensor 元組(如果傳遞了 return_dict=False 或當 config.return_dict=False 時),根據配置(<class 'transformers.models.longt5.configuration_longt5.LongT5Config'>)和輸入包含不同的元素。

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

  • hidden_states (tuple(jnp.ndarray), 可選, 在傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — jnp.ndarray 的元組(一個是嵌入層的輸出 + 每一層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態加上初始嵌入輸出。

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

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

示例

>>> from transformers import AutoTokenizer, FlaxLongT5ForConditionalGeneration

>>> tokenizer = AutoTokenizer.from_pretrained("google-t5/t5-base")
>>> model = FlaxLongT5ForConditionalGeneration.from_pretrained("google/long-t5-local-base")

>>> text = "My friends are cool but they eat too many carbs."
>>> inputs = tokenizer(text, return_tensors="np")
>>> encoder_outputs = model.encode(**inputs)

decode

< >

( decoder_input_ids encoder_outputs encoder_attention_mask: typing.Optional[jax.Array] = None decoder_attention_mask: typing.Optional[jax.Array] = None past_key_values: typing.Optional[dict] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None train: bool = False params: typing.Optional[dict] = None dropout_rng: <function PRNGKey at 0x7effc7ad3a30> = None ) transformers.modeling_flax_outputs.FlaxCausalLMOutputWithCrossAttentionstuple(torch.FloatTensor)

引數

  • decoder_input_ids (jnp.ndarray,形狀為 (batch_size, target_sequence_length)) — 詞彙表中解碼器輸入序列詞元的索引。

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

    什麼是解碼器輸入 ID?

    對於訓練,應提供 decoder_input_ids

  • encoder_outputs (tuple(tuple(jnp.ndarray)) — 元組包含 (last_hidden_state, 可選: hidden_states, 可選: attentions)。last_hidden_state 的形狀為 (batch_size, sequence_length, hidden_size)可選) 是編碼器最後一層輸出的一系列隱藏狀態。用於解碼器的交叉注意力機制。
  • encoder_attention_mask (jnp.ndarray,形狀為 (batch_size, sequence_length)可選) — 用於避免對填充詞元索引執行注意力的掩碼。掩碼值選自 [0, 1]

    • 1 表示未被遮蔽的詞元,
    • 0 表示被遮蔽的詞元。

    什麼是注意力掩碼?

  • decoder_attention_mask (jnp.ndarray,形狀為 (batch_size, target_sequence_length)可選) — 預設行為:生成一個忽略 decoder_input_ids 中填充詞元的張量。預設情況下也會使用因果掩碼。

    如果您想更改填充行為,應根據您的需要進行修改。有關預設策略的更多資訊,請參閱論文中的圖 1。

  • past_key_values (Dict[str, np.ndarray], 可選,由 init_cache 返回或在傳遞先前的 past_key_values 時返回) — 預計算的隱藏狀態(注意力塊中的鍵和值)字典,可用於快速自迴歸解碼。預計算的鍵和值隱藏狀態的形狀為 [batch_size, max_length]
  • output_attentions (bool, 可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量下的 attentions
  • output_hidden_states (bool, 可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的 hidden_states
  • return_dict (bool, 可選) — 是否返回一個 ModelOutput 而不是一個普通的元組。

返回

transformers.modeling_flax_outputs.FlaxCausalLMOutputWithCrossAttentionstuple(torch.FloatTensor)

一個 transformers.modeling_flax_outputs.FlaxCausalLMOutputWithCrossAttentions 或一個 torch.FloatTensor 的元組(如果傳遞了 return_dict=False 或當 config.return_dict=False 時),根據配置(<class 'transformers.models.longt5.configuration_longt5.LongT5Config'>)和輸入,包含各種元素。

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

  • hidden_states (tuple(jnp.ndarray), 可選, 在傳遞 output_hidden_states=Trueconfig.output_hidden_states=True 時返回) — jnp.ndarray 的元組(一個是嵌入層的輸出 + 每一層的輸出),形狀為 (batch_size, sequence_length, hidden_size)

    模型在每個層輸出的隱藏狀態加上初始嵌入輸出。

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

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

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

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

  • past_key_values (tuple(tuple(jnp.ndarray)), 可選,在傳遞 use_cache=Trueconfig.use_cache=True 時返回) — 長度為 config.n_layersjnp.ndarray 元組的元組,其中每個元組包含自注意力和交叉注意力層的快取鍵、值狀態(如果模型在編碼器-解碼器設定中使用)。僅當 config.is_decoder = True 時相關。

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

示例

>>> from transformers import AutoTokenizer, FlaxLongT5ForConditionalGeneration
>>> import jax.numpy as jnp

>>> tokenizer = AutoTokenizer.from_pretrained("google-t5/t5-base")
>>> model = FlaxLongT5ForConditionalGeneration.from_pretrained("google/long-t5-local-base")

>>> text = "summarize: My friends are cool but they eat too many carbs."
>>> inputs = tokenizer(text, return_tensors="np")
>>> encoder_outputs = model.encode(**inputs)

>>> decoder_start_token_id = model.config.decoder_start_token_id
>>> decoder_input_ids = jnp.ones((inputs.input_ids.shape[0], 1), dtype="i4") * decoder_start_token_id

>>> outputs = model.decode(decoder_input_ids, encoder_outputs)
>>> logits = outputs.logits
< > 在 GitHub 上更新

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