Transformers 文件
XGLM
並獲得增強的文件體驗
開始使用
XGLM
概述
XGLM 模型由 Xi Victoria Lin, Todor Mihaylov, Mikel Artetxe, Tianlu Wang, Shuohui Chen, Daniel Simig, Myle Ott, Naman Goyal, Shruti Bhosale, Jingfei Du, Ramakanth Pasunuru, Sam Shleifer, Punit Singh Koura, Vishrav Chaudhary, Brian O’Horo, Jeff Wang, Luke Zettlemoyer, Zornitsa Kozareva, Mona Diab, Veselin Stoyanov, Xian Li 在多語言語言模型的小樣本學習中提出。
論文摘要如下:
大規模自迴歸語言模型,如 GPT-3,是小樣本學習器,無需微調即可執行各種語言任務。雖然這些模型已知能夠共同表示多種不同的語言,但它們的訓練資料主要以英語為主,這可能會限制它們的跨語言泛化能力。在這項工作中,我們在一個包含多種語言的平衡語料庫上訓練了多語言自迴歸語言模型,並研究了它們在各種任務中的小樣本和零樣本學習能力。我們引數量最大的模型擁有 75 億個引數,在 20 多種代表性語言的小樣本學習中創造了新的 SOTA,在多語言常識推理(零樣本設定下絕對準確率提高 7.4%,四樣本設定下提高 9.4%)和自然語言推理(零樣本和四樣本設定下均提高 5.4%)方面優於同等大小的 GPT-3。在 FLORES-101 機器翻譯基準測試中,我們的模型在 182 個翻譯方向中有 171 個方向表現優於 GPT-3(使用 32 個訓練示例),同時在 45 個方向上超越了官方的有監督基線。我們詳細分析了模型的成功和失敗之處,特別是它在某些任務上實現了跨語言的上下文學習,但在表面形式的魯棒性和對沒有自然完形填空形式的任務的適應性方面仍有改進空間。最後,我們評估了我們的模型在社會價值任務(如五種語言的仇恨言論檢測)中的表現,發現它與同等大小的 GPT-3 模型存在相似的侷限性。
資源
XGLMConfig
class transformers.XGLMConfig
< 源 >( vocab_size = 256008 max_position_embeddings = 2048 d_model = 1024 ffn_dim = 4096 num_layers = 24 attention_heads = 16 activation_function = 'gelu' dropout = 0.1 attention_dropout = 0.1 activation_dropout = 0.0 layerdrop = 0.0 init_std = 0.02 scale_embedding = True use_cache = True decoder_start_token_id = 2 pad_token_id = 1 bos_token_id = 0 eos_token_id = 2 **kwargs )
引數
- vocab_size (
int
, 可選, 預設為 256008) — XGLM 模型的詞彙表大小。定義了呼叫 XGLMModel 或 FlaxXGLMModel 時傳入的inputs_ids
可以表示的不同詞元數量。 - max_position_embeddings (
int
, 可選, 預設為 2048) — 此模型可能使用的最大序列長度。通常設定為一個較大的值以備不時之需(例如,512、1024 或 2048)。 - d_model (
int
, 可選, 預設為 1024) — 層和池化層的維度。 - ffn_dim (
int
, 可選, 預設為 4096) — 解碼器中“中間”(通常稱為前饋)層的維度。 - num_layers (
int
, 可選, 預設為 24) — Transformer 解碼器的隱藏層數量。 - attention_heads (
int
, 可選, 預設為 16) — Transformer 解碼器中每個注意力層的注意力頭數。 - activation_function (
str
或function
, 可選, 預設為"gelu"
) — 編碼器和池化器中的非線性啟用函式(函式或字串)。如果為字串,則支援"gelu"
、"relu"
、"silu"
和"gelu_new"
。 - dropout (
float
, 可選, 預設為 0.1) — 嵌入、編碼器和池化器中所有全連線層的 dropout 機率。 - attention_dropout (
float
, 可選, 預設為 0.1) — 注意力機率的 dropout 比率。 - activation_dropout (
float
, 可選, 預設為 0.0) — 全連線層內部啟用的 dropout 比率。 - layerdrop (
float
, 可選, 預設為 0.0) — 編碼器的 LayerDrop 機率。更多詳細資訊請參見 [LayerDrop 論文](參見 https://huggingface.co/papers/1909.11556)。 - init_std (
float
, 可選, 預設為 0.02) — 用於初始化所有權重矩陣的 truncated_normal_initializer 的標準差。 - scale_embedding (
bool
, 可選, 預設為True
) — 透過除以 sqrt(d_model) 來縮放嵌入。 - use_cache (
bool
, 可選, 預設為True
) — 模型是否應返回最後一個鍵/值注意力(並非所有模型都使用)。
這是用於儲存 XGLMModel 配置的配置類。它用於根據指定引數例項化 XGLM 模型,定義模型架構。使用預設引數例項化配置將生成與 XGLM facebook/xglm-564M 架構相似的配置。
配置物件繼承自 PretrainedConfig,可用於控制模型輸出。有關更多資訊,請閱讀 PretrainedConfig 的文件。
示例
>>> from transformers import XGLMModel, XGLMConfig
>>> # Initializing a XGLM facebook/xglm-564M style configuration
>>> configuration = XGLMConfig()
>>> # Initializing a model from the facebook/xglm-564M style configuration
>>> model = XGLMModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
XGLMTokenizer
class transformers.XGLMTokenizer
< 源 >( vocab_file bos_token = '<s>' eos_token = '</s>' sep_token = '</s>' cls_token = '<s>' unk_token = '<unk>' pad_token = '<pad>' sp_model_kwargs: typing.Optional[dict[str, typing.Any]] = None **kwargs )
引數
- vocab_file (
str
) — 詞彙表文件的路徑。 - bos_token (
str
, 可選, 預設為"<s>"
) — 預訓練期間使用的序列開始詞元。可用作序列分類器詞元。當使用特殊詞元構建序列時,這不是用於序列開始的詞元。使用的詞元是
cls_token
。 - eos_token (
str
, 可選, 預設為"</s>"
) — 序列結束詞元。當使用特殊詞元構建序列時,這不是用於序列結束的詞元。使用的詞元是
sep_token
。 - sep_token (
str
, 可選, 預設為"</s>"
) — 分隔符詞元,用於從多個序列構建序列,例如用於序列分類的兩個序列或用於問答的文字和問題。它也用作使用特殊詞元構建的序列的最後一個詞元。 - cls_token (
str
, 可選, 預設為"<s>"
) — 分類器詞元,用於序列分類(對整個序列進行分類而非按詞元分類)。使用特殊詞元構建時,它是序列的第一個詞元。 - unk_token (
str
, 可選, 預設為"<unk>"
) — 未知詞元。不在詞彙表中的詞元不能轉換為 ID,而是設定為此詞元。 - pad_token (
str
, optional, defaults to"<pad>"
) — 用於填充的令牌,例如當批次處理不同長度的序列時。 - sp_model_kwargs (
dict
, optional) — 將傳遞給SentencePieceProcessor.__init__()
方法。SentencePiece 的 Python 包裝器可用於設定(其中包括):-
enable_sampling
: 啟用子詞正則化。 -
nbest_size
: Unigram 取樣引數。對 BPE-Dropout 無效。nbest_size = {0,1}
: 不執行取樣。nbest_size > 1
: 從 nbest_size 結果中取樣。nbest_size < 0
: 假定 nbest_size 是無限的,並使用前向過濾和後向取樣演算法從所有假設(格)中取樣。
-
alpha
: 用於 unigram 取樣的平滑引數,以及用於 BPE-dropout 的合併操作的 dropout 機率。
-
- sp_model (
SentencePieceProcessor
) — 用於所有轉換(字串、詞元和 ID)的 SentencePiece 處理器。
改編自 RobertaTokenizer 和 XLNetTokenizer。基於 SentencePiece。
此分詞器繼承自 PreTrainedTokenizer,其中包含大部分主要方法。使用者應參閱此超類以獲取有關這些方法的更多資訊。
build_inputs_with_special_tokens
< 源 >( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None ) → list[int]
透過連線和新增特殊 token,為序列分類任務從序列或序列對構建模型輸入。XLM-RoBERTa 序列的格式如下:
- 單個序列:
<s> X </s>
- 序列對:
<s> A </s></s> B </s>
get_special_tokens_mask
< 源 >( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None already_has_special_tokens: bool = False ) → list[int]
從沒有新增特殊標記的標記列表中檢索序列ID。此方法在使用分詞器prepare_for_model
方法新增特殊標記時呼叫。
create_token_type_ids_from_sequences
< 源 >( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None ) → list[int]
根據傳入的兩個序列建立用於序列對分類任務的掩碼。XLM-RoBERTa 不使用 token 型別 ID,因此返回一個全零列表。
XGLMTokenizerFast
class transformers.XGLMTokenizerFast
< 源 >( vocab_file = None tokenizer_file = None bos_token = '<s>' eos_token = '</s>' sep_token = '</s>' cls_token = '<s>' unk_token = '<unk>' pad_token = '<pad>' **kwargs )
引數
- vocab_file (
str
) — 詞彙表文件的路徑。 - bos_token (
str
, optional, defaults to"<s>"
) — 預訓練期間使用的序列開始詞元。可用作序列分類器詞元。使用特殊詞元構建序列時,這不是序列開頭使用的詞元。使用的詞元是
cls_token
。 - eos_token (
str
, optional, defaults to"</s>"
) — 序列結束詞元。使用特殊詞元構建序列時,這不是序列末尾使用的詞元。使用的詞元是
sep_token
。 - sep_token (
str
, optional, defaults to"</s>"
) — 分隔符詞元,用於從多個序列構建序列時,例如用於序列分類的兩個序列或用於問答的文字和問題。它也用作使用特殊詞元構建的序列的最後一個詞元。 - cls_token (
str
, optional, defaults to"<s>"
) — 分類器詞元,用於進行序列分類(對整個序列進行分類,而不是對每個詞元進行分類)。使用特殊詞元構建時,它是序列的第一個詞元。 - unk_token (
str
, optional, defaults to"<unk>"
) — 未知詞元。詞彙表中沒有的詞元不能轉換為 ID,而是設定為此詞元。 - pad_token (
str
, optional, defaults to"<pad>"
) — 用於填充的詞元,例如當批次處理不同長度的序列時。 - additional_special_tokens (
list[str]
, optional, defaults to["<s>NOTUSED", "</s>NOTUSED"]
) — 分詞器使用的其他特殊詞元。
構建一個“快速”XGLM 分詞器(由 HuggingFace 的 tokenizers 庫支援)。改編自 RobertaTokenizer 和 XLNetTokenizer。基於 BPE。
此分詞器繼承自 PreTrainedTokenizerFast,其中包含大部分主要方法。使用者應參閱此超類以獲取有關這些方法的更多資訊。
build_inputs_with_special_tokens
< 源 >( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None ) → list[int]
透過連線和新增特殊 token,為序列分類任務從序列或序列對構建模型輸入。XLM-RoBERTa 序列的格式如下:
- 單個序列:
<s> X </s>
- 序列對:
<s> A </s></s> B </s>
create_token_type_ids_from_sequences
< 源 >( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None ) → list[int]
根據傳入的兩個序列建立用於序列對分類任務的掩碼。XLM-RoBERTa 不使用 token 型別 ID,因此返回一個全零列表。
XGLMModel
class transformers.XGLMModel
< 源 >( config: XGLMConfig embed_tokens: typing.Optional[torch.nn.modules.sparse.Embedding] = None )
引數
- config (XGLMConfig) — 包含模型所有引數的模型配置類。使用配置檔案初始化不會載入與模型相關的權重,僅載入配置。請檢視 from_pretrained() 方法以載入模型權重。
- embed_tokens (
nn.Embedding
, optional) — 輸出嵌入
裸露的 Xglm 模型,輸出原始隱藏狀態,頂部沒有任何特定頭部。
此模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。
此模型也是 PyTorch torch.nn.Module 子類。將其作為常規 PyTorch 模組使用,並參閱 PyTorch 文件中與一般用法和行為相關的所有事項。
forward
< 源 >( input_ids: typing.Optional[torch.Tensor] = None attention_mask: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.Tensor] = None encoder_hidden_states: typing.Optional[torch.Tensor] = None encoder_attention_mask: typing.Optional[torch.Tensor] = None head_mask: typing.Optional[torch.Tensor] = None cross_attn_head_mask: typing.Optional[torch.Tensor] = None past_key_values: typing.Optional[list[torch.FloatTensor]] = None 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 ) → transformers.modeling_outputs.BaseModelOutputWithPastAndCrossAttentions 或 tuple(torch.FloatTensor)
引數
- input_ids (
torch.Tensor
, shape(batch_size, sequence_length)
, optional) — 輸入序列詞元在詞彙表中的索引。預設情況下會忽略填充。可以使用 AutoTokenizer 獲取索引。有關詳細資訊,請參見 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (
torch.Tensor
, shape(batch_size, sequence_length)
, optional) — 用於避免對填充詞元索引執行注意力操作的掩碼。掩碼值選擇範圍為[0, 1]
:- 1 表示詞元未被掩碼,
- 0 表示詞元已被掩碼。
- position_ids (
torch.Tensor
, shape(batch_size, sequence_length)
, optional) — 每個輸入序列詞元在位置嵌入中的位置索引。選擇範圍為[0, config.n_positions - 1]
。 - encoder_hidden_states (
torch.FloatTensor
, shape(batch_size, encoder_sequence_length, hidden_size)
, optional) — 編碼器最後一層輸出的隱藏狀態序列。用於解碼器的交叉注意力。 - encoder_attention_mask (
torch.LongTensor
, shape(batch_size, encoder_sequence_length)
, optional) — 用於避免對編碼器輸入 ID 的填充詞元索引執行交叉注意力操作的掩碼。掩碼值選擇範圍為[0, 1]
:- 1 表示詞元未被掩碼,
- 0 表示詞元已被掩碼。
- head_mask (
torch.Tensor
, shape(num_heads,)
或(num_layers, num_heads)
, optional) — 用於使自注意力模組的選定頭部無效的掩碼。掩碼值選擇範圍為[0, 1]
:- 1 表示頭部未被掩碼,
- 0 表示頭部已被掩碼。
- cross_attn_head_mask (
torch.Tensor
, shape(num_layers, attention_heads)
, optional) — 用於使交叉注意力模組的選定頭部無效的掩碼。掩碼值選擇範圍為[0, 1]
:- 1 表示頭部未被掩碼,
- 0 表示頭部已被掩碼。
- past_key_values (
list[torch.FloatTensor]
, optional) — 預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於加速順序解碼。這通常包括模型在解碼上一階段返回的past_key_values
,當use_cache=True
或config.use_cache=True
時。允許兩種格式:
- Cache 例項,請參閱我們的 kv 快取指南;
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
(那些沒有將其過去的鍵值狀態提供給此模型的詞元),其形狀為(batch_size, 1)
,而不是所有input_ids
,其形狀為(batch_size, sequence_length)
。 - inputs_embeds (
torch.Tensor
, shape(batch_size, sequence_length, hidden_size)
, optional) — 可選地,除了傳遞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 而不是普通的元組。
返回
transformers.modeling_outputs.BaseModelOutputWithPastAndCrossAttentions 或 tuple(torch.FloatTensor)
一個 transformers.modeling_outputs.BaseModelOutputWithPastAndCrossAttentions 或一個 torch.FloatTensor
元組(如果傳遞了 return_dict=False
或當 config.return_dict=False
時),包含根據配置(XGLMConfig)和輸入的不同元素。
-
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 後的注意力權重,用於計算自注意力頭中的加權平均值。
-
cross_attentions (
tuple(torch.FloatTensor)
, 可選, 當傳遞output_attentions=True
和config.add_cross_attention=True
或當config.output_attentions=True
時返回) —torch.FloatTensor
元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。解碼器交叉注意力層的注意力權重,在注意力 softmax 之後,用於計算交叉注意力頭中的加權平均。
XGLMModel 的前向方法,重寫了 __call__
特殊方法。
儘管前向傳播的實現需要在該函式中定義,但在此之後應呼叫 Module
例項而不是直接呼叫此函式,因為前者會處理執行預處理和後處理步驟,而後者會默默忽略它們。
XGLMForCausalLM
class transformers.XGLMForCausalLM
< 原始檔 >( config )
引數
- config (XGLMForCausalLM) — 模型的配置類,包含模型的所有引數。使用配置檔案初始化並不會載入與模型相關的權重,只加載配置。請查閱 from_pretrained() 方法以載入模型權重。
XGLM 模型轉換器,頂部帶有一個語言建模頭(權重與輸入嵌入繫結在一起的線性層)。
此模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。
此模型也是 PyTorch torch.nn.Module 子類。將其作為常規 PyTorch 模組使用,並參閱 PyTorch 文件中與一般用法和行為相關的所有事項。
forward
< 原始檔 >( input_ids: typing.Optional[torch.Tensor] = None attention_mask: typing.Optional[torch.Tensor] = None position_ids: typing.Optional[torch.Tensor] = None encoder_hidden_states: typing.Optional[torch.Tensor] = None encoder_attention_mask: typing.Optional[torch.Tensor] = None head_mask: typing.Optional[torch.Tensor] = None cross_attn_head_mask: typing.Optional[torch.Tensor] = None past_key_values: typing.Optional[list[torch.FloatTensor]] = 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 **kwargs ) → transformers.modeling_outputs.CausalLMOutputWithCrossAttentions 或 tuple(torch.FloatTensor)
引數
- input_ids (形狀為
(batch_size, sequence_length)
的torch.Tensor
, 可選) — 詞彙表中輸入序列標記的索引。填充將預設被忽略。索引可以使用 AutoTokenizer 獲取。詳情請參閱 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (形狀為
(batch_size, sequence_length)
的torch.Tensor
, 可選) — 用於避免對填充標記索引執行注意力的掩碼。掩碼值選擇在[0, 1]
之間:- 1 表示未被掩碼的標記,
- 0 表示被掩碼的標記。
- position_ids (形狀為
(batch_size, sequence_length)
的torch.Tensor
, 可選) — 每個輸入序列標記在位置嵌入中的位置索引。選擇範圍為[0, config.n_positions - 1]
。 - encoder_hidden_states (形狀為
(batch_size, encoder_sequence_length, hidden_size)
的torch.FloatTensor
, 可選) — 編碼器最後一層輸出的隱藏狀態序列。用於解碼器的交叉注意力。 - encoder_attention_mask (形狀為
(batch_size, encoder_sequence_length)
的torch.LongTensor
, 可選) — 用於避免對編碼器 input_ids 的填充標記索引執行交叉注意力的掩碼。掩碼值選擇在[0, 1]
之間:- 1 表示未被掩碼的標記,
- 0 表示被掩碼的標記。
- head_mask (形狀為
(num_heads,)
或(num_layers, num_heads)
的torch.Tensor
, 可選) — 用於置空自注意力模組中選定頭部的掩碼。掩碼值選擇在[0, 1]
之間:- 1 表示頭部未被掩碼,
- 0 表示頭部被掩碼。
- cross_attn_head_mask (形狀為
(num_layers, attention_heads)
的torch.Tensor
, 可選) — 用於置空交叉注意力模組中選定頭部的掩碼。掩碼值選擇在[0, 1]
之間:- 1 表示頭部未被掩碼,
- 0 表示頭部被掩碼。
- past_key_values (
list[torch.FloatTensor]
, 可選) — 預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於加速順序解碼。這通常包括模型在解碼上一階段返回的past_key_values
,當use_cache=True
或config.use_cache=True
時。允許兩種格式:
- 一個 Cache 例項,請參閱我們的 kv 快取指南;
- 長度為
config.n_layers
的tuple(torch.FloatTensor)
元組,每個元組包含兩個形狀為(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 (形狀為
(batch_size, sequence_length, hidden_size)
的torch.Tensor
, 可選) — 可選地,除了傳遞input_ids
,您還可以直接傳遞嵌入表示。如果您希望對如何將input_ids
索引轉換為相關向量有比模型內部嵌入查詢矩陣更多的控制,這很有用。 - labels (形狀為
(batch_size, sequence_length)
的torch.LongTensor
, 可選) — 用於計算掩碼語言建模損失的標籤。索引應在[0, ..., config.vocab_size]
或 -100 之間(參見input_ids
文件字串)。索引設定為-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 而不是普通的元組。
返回
transformers.modeling_outputs.CausalLMOutputWithCrossAttentions 或 tuple(torch.FloatTensor)
一個 transformers.modeling_outputs.CausalLMOutputWithCrossAttentions 或一個 torch.FloatTensor
元組(如果傳遞了 return_dict=False
或當 config.return_dict=False
時),包含根據配置(XGLMConfig)和輸入的不同元素。
-
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=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 後的注意力權重,用於計算自注意力頭中的加權平均值。
-
cross_attentions (
tuple(torch.FloatTensor)
, 可選, 當傳遞output_attentions=True
或當config.output_attentions=True
時返回) —torch.FloatTensor
元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 後的交叉注意力權重,用於計算交叉注意力頭中的加權平均。
-
past_key_values (
Cache
, 可選, 當傳遞use_cache=True
或config.use_cache=True
時返回) — 這是一個 Cache 例項。更多詳細資訊請參閱我們的 kv 快取指南。包含預先計算的隱藏狀態(注意力塊中的鍵和值),可用於(參見
past_key_values
輸入)加速順序解碼。
XGLMForCausalLM 的前向方法,重寫了 __call__
特殊方法。
儘管前向傳播的實現需要在該函式中定義,但在此之後應呼叫 Module
例項而不是直接呼叫此函式,因為前者會處理執行預處理和後處理步驟,而後者會默默忽略它們。
TFXGLMModel
class transformers.TFXGLMModel
< 原始檔 >( config: XGLMConfig embed_tokens: Optional[TFSharedEmbeddings] = None *inputs: Any **kwargs: Any )
引數
- config (XGLMConfig) — 模型的配置類,包含模型的所有引數。使用配置檔案初始化並不會載入與模型相關的權重,只加載配置。請查閱 from_pretrained() 方法以載入模型權重。
- config — XGLMConfig
- embed_tokens — [TFSharedEmbeddings]: 輸出嵌入
純 XGLM 模型轉換器,輸出原始隱藏狀態,頂部沒有任何特定頭部。該模型繼承自 TFPreTrainedModel。請查閱超類文件,瞭解庫為所有模型實現的通用方法(如下載或儲存、調整輸入嵌入大小、修剪頭部等)。
該模型也是 keras.Model 的子類。將其作為常規 TF 2.0 Keras 模型使用,並參考 TF 2.0 文件瞭解所有與通用用法和行為相關的事項。
transformers
中的 TensorFlow 模型和層接受兩種輸入格式
- 所有輸入作為關鍵字引數(如 PyTorch 模型),或
- 所有輸入作為第一個位置引數中的列表、元組或字典。
支援第二種格式的原因是 Keras 方法在將輸入傳遞給模型和層時更喜歡這種格式。由於這種支援,當使用 model.fit()
等方法時,一切都應該“正常工作”——只需以 model.fit()
支援的任何格式傳遞您的輸入和標籤即可!但是,如果您想在 Keras 方法(如 fit()
和 predict()
)之外使用第二種格式,例如在使用 Keras Functional
API 建立自己的層或模型時,您可以使用三種可能性將所有輸入張量收集到第一個位置引數中。
- 只有一個
input_ids
的單個張量,沒有其他:model(input_ids)
- 長度可變的列表,包含一個或多個輸入張量,按文件字串中給出的順序:
model([input_ids, attention_mask])
或model([input_ids, attention_mask, token_type_ids])
- 一個字典,其中包含一個或多個與文件字串中給出的輸入名稱關聯的輸入張量:
model({"input_ids": input_ids, "token_type_ids": token_type_ids})
請注意,當使用子類化建立模型和層時,您無需擔心這些,因為您可以像呼叫任何其他 Python 函式一樣傳遞輸入!
由 *config.num_layers* 層組成的 Transformer 解碼器。每層都是一個 TFXGLMDecoderLayer
呼叫
< 原始檔 >( input_ids: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None position_ids: np.ndarray | tf.Tensor | None = None encoder_hidden_states: np.ndarray | tf.Tensor | None = None encoder_attention_mask: np.ndarray | tf.Tensor | None = None head_mask: np.ndarray | tf.Tensor | None = None cross_attn_head_mask: np.ndarray | tf.Tensor | None = None past_key_values: Optional[tuple[tuple[Union[np.ndarray, tf.Tensor]]]] = None inputs_embeds: np.ndarray | tf.Tensor | None = None use_cache: Optional[bool] = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: Optional[bool] = False **kwargs: Any ) → transformers.modeling_tf_outputs.TFBaseModelOutputWithPastAndCrossAttentions 或 tuple(tf.Tensor)
引數
- input_ids (形狀為
({0})
的tf.Tensor
) — 詞彙表中輸入序列標記的索引。索引可以使用 AutoTokenizer 獲取。詳情請參閱 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (形狀為
({0})
的tf.Tensor
, 可選) — 用於避免對填充標記索引執行注意力的掩碼。掩碼值選擇在[0, 1]
之間:- 1 表示未被掩碼的標記,
- 0 表示被掩碼的標記。
- position_ids (形狀為
(batch_size, sequence_length)
的tf.Tensor
或Numpy array
, 可選) — 每個輸入序列標記在位置嵌入中的位置索引。選擇範圍為[0, config.max_position_embeddings - 1]
。 - encoder_hidden_states (形狀為
(batch_size, encoder_sequence_length, hidden_size)
的tf.Tensor
, 可選) — 編碼器最後一層輸出的隱藏狀態序列。用於解碼器的交叉注意力。 - encoder_attention_mask (形狀為
(batch_size, encoder_sequence_length)
的tf.Tensor
, 可選) — 用於避免對編碼器 input_ids 的填充標記索引執行交叉注意力的掩碼。掩碼值選擇在[0, 1]
之間:- 1 表示未被掩碼的標記,
- 0 表示被掩碼的標記。
- head_mask (形狀為
(num_layers, attention_heads)
的tf.Tensor
, 可選) — 用於置空編碼器中注意力模組選定頭部的掩碼。掩碼值選擇在[0, 1]
之間:- 1 表示頭部未被掩碼,
- 0 表示頭部被掩碼。
- cross_attn_head_mask (形狀為
(num_layers, attention_heads)
的tf.Tensor
, 可選) — 用於置空交叉注意力模組中選定頭部的掩碼。掩碼值選擇在[0, 1]
之間:- 1 表示頭部未被掩碼,
- 0 表示頭部被掩碼。
- past_key_values (長度為
config.num_layers
的tuple[tuple[tf.Tensor]]
) — 包含預先計算的注意力塊的鍵和值隱藏狀態。可用於加速解碼。如果使用了past_key_values
,使用者可以選擇僅輸入最後一個decoder_input_ids
(那些沒有將其過去的鍵值狀態提供給此模型的)形狀為(batch_size, 1)
,而不是所有decoder_input_ids
形狀為(batch_size, sequence_length)
。 - inputs_embeds (形狀為
(batch_size, sequence_length, hidden_size)
的tf.Tensor
, 可選) — 可選地,除了傳遞input_ids
,您還可以直接傳遞嵌入表示。如果您希望對如何將input_ids
索引轉換為相關向量有比模型內部嵌入查詢矩陣更多的控制,這很有用。 - use_cache (
bool
, 可選, 預設為True
) — 如果設定為True
,將返回past_key_values
鍵值狀態,可用於加速解碼(參見past_key_values
)。訓練時設定為False
,生成時設定為True
。 - output_attentions (
bool
, 可選) — 是否返回所有注意力層的注意力張量。更多詳細資訊請參閱返回張量下的attentions
。該引數只能在即時模式下使用,在圖模式下將使用配置中的值。 - output_hidden_states (
bool
, 可選) — 是否返回所有層的隱藏狀態。更多詳細資訊請參閱返回張量下的hidden_states
。該引數只能在即時模式下使用,在圖模式下將使用配置中的值。 - return_dict (
bool
, 可選) — 是否返回 ModelOutput 而不是普通的元組。該引數可在即時模式下使用,在圖模式下其值將始終設定為 True。 - training (
bool
, 可選, 預設為False
) — 是否在訓練模式下使用模型(某些模組,如 Dropout 模組在訓練和評估之間的行為不同)。
返回
transformers.modeling_tf_outputs.TFBaseModelOutputWithPastAndCrossAttentions 或 tuple(tf.Tensor)
一個 transformers.modeling_tf_outputs.TFBaseModelOutputWithPastAndCrossAttentions 或一個 tf.Tensor
元組(如果傳遞了 return_dict=False
或當 config.return_dict=False
時),包含根據配置(XGLMConfig)和輸入的不同元素。
-
last_hidden_state (
tf.Tensor
of shape(batch_size, sequence_length, hidden_size)
) — 模型最後一層輸出的隱藏狀態序列。如果使用了
past_key_values
,則只輸出形狀為(batch_size, 1, hidden_size)
的序列的最後一個隱藏狀態。 -
past_key_values (
list[tf.Tensor]
, 可選, 當傳遞use_cache=True
或當config.use_cache=True
時返回) — 長度為config.n_layers
的tf.Tensor
列表,每個張量的形狀為(2, batch_size, num_heads, sequence_length, embed_size_per_head)
)。包含預先計算的隱藏狀態(注意力塊中的鍵和值),可用於(參見
past_key_values
輸入)加速順序解碼。 -
hidden_states (
tuple(tf.FloatTensor)
, 可選, 當傳遞output_hidden_states=True
或當config.output_hidden_states=True
時返回) —tf.Tensor
元組(一個用於嵌入層輸出 + 每個層的輸出一個),形狀為(batch_size, sequence_length, hidden_size)
。模型在每個層輸出的隱藏狀態加上初始嵌入輸出。
-
attentions (
tuple(tf.Tensor)
, 可選, 當傳遞output_attentions=True
或當config.output_attentions=True
時返回) —tf.Tensor
元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。
-
cross_attentions (
tuple(tf.Tensor)
, 可選, 當傳遞output_attentions=True
或當config.output_attentions=True
時返回) —tf.Tensor
元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。解碼器交叉注意力層的注意力權重,在注意力 softmax 之後,用於計算交叉注意力頭中的加權平均。
TFXGLMModel 的前向方法,重寫了 __call__
特殊方法。
儘管前向傳播的實現需要在該函式中定義,但在此之後應呼叫 Module
例項而不是直接呼叫此函式,因為前者會處理執行預處理和後處理步驟,而後者會默默忽略它們。
示例
>>> from transformers import AutoTokenizer, TFXGLMModel
>>> import tensorflow as tf
>>> tokenizer = AutoTokenizer.from_pretrained("facebook/xglm-564M")
>>> model = TFXGLMModel.from_pretrained("facebook/xglm-564M")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="tf")
>>> outputs = model(inputs)
>>> last_hidden_states = outputs.last_hidden_state
TFXGLMForCausalLM
class transformers.TFXGLMForCausalLM
< 原始檔 >( config: XGLMConfig embed_tokens: Optional[TFSharedEmbeddings] = None *inputs: Any **kwargs: Any )
引數
- config (XGLMConfig) — 模型的配置類,包含模型的所有引數。用配置檔案進行初始化不會載入與模型相關的權重,只會載入配置。要載入模型權重,請檢視 from_pretrained() 方法。
XGLM 模型轉換器,頂部帶有一個語言建模頭(權重與輸入嵌入繫結在一起的線性層)。
該模型繼承自 TFPreTrainedModel。有關庫為所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭等),請檢視超類文件。
該模型也是 keras.Model 的子類。將其作為常規 TF 2.0 Keras 模型使用,並參考 TF 2.0 文件瞭解所有與通用用法和行為相關的事項。
transformers
中的 TensorFlow 模型和層接受兩種輸入格式
- 所有輸入作為關鍵字引數(如 PyTorch 模型),或
- 所有輸入作為第一個位置引數中的列表、元組或字典。
支援第二種格式的原因是 Keras 方法在將輸入傳遞給模型和層時更喜歡這種格式。由於這種支援,當使用 model.fit()
等方法時,一切都應該“正常工作”——只需以 model.fit()
支援的任何格式傳遞您的輸入和標籤即可!但是,如果您想在 Keras 方法(如 fit()
和 predict()
)之外使用第二種格式,例如在使用 Keras Functional
API 建立自己的層或模型時,您可以使用三種可能性將所有輸入張量收集到第一個位置引數中。
- 只有一個
input_ids
的單個張量,沒有其他:model(input_ids)
- 長度可變的列表,包含一個或多個輸入張量,按文件字串中給出的順序:
model([input_ids, attention_mask])
或model([input_ids, attention_mask, token_type_ids])
- 一個字典,其中包含一個或多個與文件字串中給出的輸入名稱關聯的輸入張量:
model({"input_ids": input_ids, "token_type_ids": token_type_ids})
請注意,當使用子類化建立模型和層時,您無需擔心這些,因為您可以像呼叫任何其他 Python 函式一樣傳遞輸入!
呼叫
< 來源 >( input_ids: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None position_ids: np.ndarray | tf.Tensor | None = None encoder_hidden_states: np.ndarray | tf.Tensor | None = None encoder_attention_mask: np.ndarray | tf.Tensor | None = None head_mask: np.ndarray | tf.Tensor | None = None cross_attn_head_mask: np.ndarray | tf.Tensor | None = None past_key_values: Optional[tuple[tuple[Union[np.ndarray, tf.Tensor]]]] = None inputs_embeds: np.ndarray | tf.Tensor | None = None labels: np.ndarray | tf.Tensor | None = None use_cache: Optional[bool] = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: Optional[bool] = False **kwargs: Any ) → transformers.modeling_tf_outputs.TFCausalLMOutputWithCrossAttentions 或 tuple(tf.Tensor)
引數
- input_ids (
tf.Tensor
,形狀為({0})
) — 詞彙表中輸入序列標記的索引。索引可以使用 AutoTokenizer 獲取。有關詳細資訊,請參閱 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (
tf.Tensor
,形狀為({0})
,可選) — 掩碼,用於避免對填充標記索引執行注意力。掩碼值選擇範圍為[0, 1]
:- 1 表示標記 未被掩蓋,
- 0 表示標記 已被掩蓋。
- position_ids (
tf.Tensor
或Numpy array
,形狀為(batch_size, sequence_length)
,可選) — 每個輸入序列標記在位置嵌入中的位置索引。選擇範圍為[0, config.max_position_embeddings - 1]
。 - encoder_hidden_states (
tf.Tensor
,形狀為(batch_size, encoder_sequence_length, hidden_size)
,可選) — 編碼器最後一層輸出的隱藏狀態序列。用於解碼器的交叉注意力。 - encoder_attention_mask (
tf.Tensor
,形狀為(batch_size, encoder_sequence_length)
,可選) — 掩碼,用於避免對編碼器 input_ids 的填充標記索引執行交叉注意力。掩碼值選擇範圍為[0, 1]
:- 1 表示標記 未被掩蓋,
- 0 表示標記 已被掩蓋。
- head_mask (
tf.Tensor
,形狀為(num_layers, attention_heads)
,可選) — 用於使編碼器中注意力模組的選定頭無效的掩碼。掩碼值選擇範圍為[0, 1]
:- 1 表示頭部 未被掩蓋,
- 0 表示頭部 已被掩蓋。
- cross_attn_head_mask (
tf.Tensor
,形狀為(num_layers, attention_heads)
,可選) — 用於使交叉注意力模組的選定頭無效的掩碼。掩碼值選擇範圍為[0, 1]
:- 1 表示頭部 未被掩蓋,
- 0 表示頭部 已被掩蓋。
- past_key_values (
tuple[tuple[tf.Tensor]]
,長度為config.num_layers
) — 包含注意力塊的預計算鍵值隱藏狀態。可用於加速解碼。如果使用past_key_values
,使用者可以選擇只輸入形狀為(batch_size, 1)
的最後decoder_input_ids
(那些沒有將其過去的鍵值狀態提供給此模型的),而不是所有形狀為(batch_size, sequence_length)
的decoder_input_ids
。 - inputs_embeds (
tf.Tensor
,形狀為(batch_size, sequence_length, hidden_size)
,可選) — 可選地,您可以選擇直接傳遞嵌入表示,而不是傳遞input_ids
。如果您希望對如何將input_ids
索引轉換為關聯向量有比模型內部嵌入查詢矩陣更多的控制,這將很有用。 - use_cache (
bool
,可選,預設為True
) — 如果設定為True
,則返回past_key_values
鍵值狀態,可用於加速解碼(參見past_key_values
)。在訓練期間設定為False
,生成期間設定為True
- output_attentions (
bool
,可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量下的attentions
。此引數只能在即時模式下使用,在圖模式下將使用配置中的值。 - output_hidden_states (
bool
,可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的hidden_states
。此引數只能在即時模式下使用,在圖模式下將使用配置中的值。 - return_dict (
bool
,可選) — 是否返回 ModelOutput 而不是普通元組。此引數可在即時模式下使用,在圖模式下該值將始終設定為 True。 - training (
bool
,可選,預設為False
) — 是否在訓練模式下使用模型(某些模組,如 dropout 模組,在訓練和評估之間有不同的行為)。 - labels (
np.ndarray
或tf.Tensor
,形狀為(batch_size, sequence_length)
,可選) — 用於語言建模的標籤。請注意,標籤在模型內部是偏移的,即您可以設定labels = input_ids
。索引選擇範圍為[-100, 0, ..., config.vocab_size]
。所有設定為-100
的標籤都將被忽略(被掩蓋),損失僅針對[0, ..., config.vocab_size]
中的標籤計算。
返回
transformers.modeling_tf_outputs.TFCausalLMOutputWithCrossAttentions 或 tuple(tf.Tensor)
一個 transformers.modeling_tf_outputs.TFCausalLMOutputWithCrossAttentions 或一個 tf.Tensor
的元組(如果傳入 return_dict=False
或當 config.return_dict=False
時),包含根據配置(XGLMConfig)和輸入的不同元素。
-
loss (形狀為
(n,)
的tf.Tensor
,可選,其中n是非掩碼標籤的數量,當提供了labels
時返回) — 語言建模損失(用於下一標記預測)。 -
logits (
tf.Tensor
of shape(batch_size, sequence_length, config.vocab_size)
) — 語言模型頭部的預測分數(SoftMax 之前每個詞彙標記的分數)。 -
hidden_states (
tuple(tf.Tensor)
,可選,當傳入output_hidden_states=True
或當config.output_hidden_states=True
時返回) —tf.Tensor
的元組(一個用於嵌入的輸出 + 一個用於每層的輸出),形狀為(batch_size, sequence_length, hidden_size)
。模型在每個層輸出的隱藏狀態加上初始嵌入輸出。
-
attentions (
tuple(tf.Tensor)
, 可選, 當傳遞output_attentions=True
或當config.output_attentions=True
時返回) —tf.Tensor
元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。
-
cross_attentions (
tuple(tf.Tensor)
, 可選, 當傳遞output_attentions=True
或當config.output_attentions=True
時返回) —tf.Tensor
元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。解碼器交叉注意力層的注意力權重,在注意力 softmax 之後,用於計算交叉注意力頭中的加權平均。
-
past_key_values (
list[tf.Tensor]
, 可選, 當傳遞use_cache=True
或當config.use_cache=True
時返回) — 長度為config.n_layers
的tf.Tensor
列表,每個張量的形狀為(2, batch_size, num_heads, sequence_length, embed_size_per_head)
)。包含預先計算的隱藏狀態(注意力塊中的鍵和值),可用於(參見
past_key_values
輸入)加速順序解碼。
transformers.modeling_tf_outputs.TFCausalLMOutputWithCrossAttentions 或 tuple(tf.Tensor)
:一個 transformers.modeling_tf_outputs.TFCausalLMOutputWithCrossAttentions 或一個 tf.Tensor
的元組(如果傳入 return_dict=False
或當 config.return_dict=False
時),包含根據配置(XGLMConfig)和輸入的不同元素。
-
loss (形狀為
(n,)
的tf.Tensor
,可選,其中n是非掩碼標籤的數量,當提供了labels
時返回) — 語言建模損失(用於下一標記預測)。 -
logits (
tf.Tensor
of shape(batch_size, sequence_length, config.vocab_size)
) — 語言模型頭部的預測分數(SoftMax 之前每個詞彙標記的分數)。 -
hidden_states (
tuple(tf.Tensor)
,可選,當傳入output_hidden_states=True
或當config.output_hidden_states=True
時返回) —tf.Tensor
的元組(一個用於嵌入的輸出 + 一個用於每層的輸出),形狀為(batch_size, sequence_length, hidden_size)
。模型在每個層輸出的隱藏狀態加上初始嵌入輸出。
-
attentions (
tuple(tf.Tensor)
, 可選, 當傳遞output_attentions=True
或當config.output_attentions=True
時返回) —tf.Tensor
元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。
-
cross_attentions (
tuple(tf.Tensor)
, 可選, 當傳遞output_attentions=True
或當config.output_attentions=True
時返回) —tf.Tensor
元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。解碼器交叉注意力層的注意力權重,在注意力 softmax 之後,用於計算交叉注意力頭中的加權平均。
-
past_key_values (
list[tf.Tensor]
, 可選, 當傳遞use_cache=True
或當config.use_cache=True
時返回) — 長度為config.n_layers
的tf.Tensor
列表,每個張量的形狀為(2, batch_size, num_heads, sequence_length, embed_size_per_head)
)。包含預先計算的隱藏狀態(注意力塊中的鍵和值),可用於(參見
past_key_values
輸入)加速順序解碼。
TFXGLMForCausalLM 前向方法,覆蓋了 __call__
特殊方法。
儘管前向傳播的實現需要在該函式中定義,但在此之後應呼叫 Module
例項而不是直接呼叫此函式,因為前者會處理執行預處理和後處理步驟,而後者會默默忽略它們。
示例
>>> from transformers import AutoTokenizer, TFXGLMForCausalLM
>>> import tensorflow as tf
>>> tokenizer = AutoTokenizer.from_pretrained("facebook/xglm-564M")
>>> model = TFXGLMForCausalLM.from_pretrained("facebook/xglm-564M")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="tf")
>>> outputs = model(inputs)
>>> logits = outputs.logits
FlaxXGLMModel
class transformers.FlaxXGLMModel
< 來源 >( config: XGLMConfig input_shape: tuple = (1, 1) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True **kwargs )
引數
- config (XGLMConfig) — 模型的配置類,包含模型的所有引數。用配置檔案進行初始化不會載入與模型相關的權重,只會載入配置。要載入模型權重,請檢視 from_pretrained() 方法。
- dtype (
jax.numpy.dtype
,可選,預設為jax.numpy.float32
) — 計算的資料型別。可以是jax.numpy.float32
、jax.numpy.float16
(在 GPU 上)和jax.numpy.bfloat16
(在 TPU 上)之一。這可用於在 GPU 或 TPU 上啟用混合精度訓練或半精度推理。如果指定,所有計算都將使用給定的
dtype
執行。請注意,這僅指定計算的資料型別,不影響模型引數的資料型別。
裸 XGLM 模型轉換器,輸出原始隱藏狀態,頂部沒有任何特定頭部。該模型繼承自 FlaxPreTrainedModel。有關庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等),請檢視超類文件。
此模型也是 Flax Linen flax.nn.Module 子類。將其作為常規 Flax 模組使用,並參考 Flax 文件以瞭解所有與一般使用和行為相關的事項。
最後,此模型支援固有的 JAX 功能,例如
__call__
< 來源 >( input_ids: Array attention_mask: typing.Optional[jax.Array] = None position_ids: typing.Optional[jax.Array] = None encoder_hidden_states: typing.Optional[jax.Array] = None encoder_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 past_key_values: typing.Optional[dict] = None dropout_rng: <function PRNGKey at 0x7effc7ad3a30> = None ) → transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPastAndCrossAttentions 或 tuple(torch.FloatTensor)
引數
- input_ids (
jnp.ndarray
,形狀為(batch_size, sequence_length)
) — 詞彙表中輸入序列標記的索引。如果您提供填充,則預設情況下會忽略填充。索引可以使用 AutoTokenizer 獲取。有關詳細資訊,請參閱 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (
jnp.ndarray
,形狀為(batch_size, sequence_length)
,可選) — 掩碼,用於避免對填充標記索引執行注意力。掩碼值選擇範圍為[0, 1]
:- 1 表示標記 未被掩蓋,
- 0 表示標記 已被掩蓋。
- position_ids (
numpy.ndarray
,形狀為(batch_size, sequence_length)
,可選) — 每個輸入序列標記在位置嵌入中的位置索引。選擇範圍為[0, config.max_position_embeddings - 1]
。 - output_attentions (
bool
,可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量下的attentions
。 - output_hidden_states (
bool
,可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的hidden_states
。 - return_dict (
bool
,可選) — 是否返回 ModelOutput 而不是普通元組。
返回
transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPastAndCrossAttentions 或 tuple(torch.FloatTensor)
一個 transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPastAndCrossAttentions 或一個 torch.FloatTensor
的元組(如果傳入 return_dict=False
或當 config.return_dict=False
時),包含根據配置(XGLMConfig)和輸入的不同元素。
-
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=True
或當config.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=True
或當config.output_hidden_states=True
時返回) —jnp.ndarray
的元組(一個用於嵌入的輸出 + 一個用於每層的輸出),形狀為(batch_size, sequence_length, hidden_size)
。模型在每個層輸出的隱藏狀態加上初始嵌入輸出。
-
attentions (
tuple(jnp.ndarray)
,可選,當傳入output_attentions=True
或當config.output_attentions=True
時返回) —jnp.ndarray
的元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。
-
cross_attentions (
tuple(jnp.ndarray)
,可選,當傳入output_attentions=True
和config.add_cross_attention=True
或當config.output_attentions=True
時返回) —jnp.ndarray
的元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。解碼器交叉注意力層的注意力權重,在注意力 softmax 之後,用於計算交叉注意力頭中的加權平均。
FlaxXGLMPreTrainedModel
前向方法,覆蓋了 __call__
特殊方法。
儘管前向傳播的實現需要在該函式中定義,但在此之後應呼叫 Module
例項而不是直接呼叫此函式,因為前者會處理執行預處理和後處理步驟,而後者會默默忽略它們。
示例
>>> from transformers import AutoTokenizer, FlaxXGLMModel
>>> tokenizer = AutoTokenizer.from_pretrained("facebook/xglm-564M")
>>> model = FlaxXGLMModel.from_pretrained("facebook/xglm-564M")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="jax")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_state
FlaxXGLMForCausalLM
class transformers.FlaxXGLMForCausalLM
< 來源 >( config: XGLMConfig input_shape: tuple = (1, 1) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True **kwargs )
引數
- config (XGLMConfig) — 模型的配置類,包含模型的所有引數。用配置檔案進行初始化不會載入與模型相關的權重,只會載入配置。要載入模型權重,請檢視 from_pretrained() 方法。
- dtype (
jax.numpy.dtype
,可選,預設為jax.numpy.float32
) — 計算的資料型別。可以是jax.numpy.float32
、jax.numpy.float16
(在 GPU 上)和jax.numpy.bfloat16
(在 TPU 上)之一。這可用於在 GPU 或 TPU 上啟用混合精度訓練或半精度推理。如果指定,所有計算都將使用給定的
dtype
執行。請注意,這僅指定計算的資料型別,不影響模型引數的資料型別。
XGLM 模型轉換器,頂部帶有一個語言建模頭(權重與輸入嵌入繫結在一起的線性層)。
該模型繼承自 FlaxPreTrainedModel。有關庫為所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭等),請檢視超類文件。
此模型也是 Flax Linen flax.nn.Module 子類。將其作為常規 Flax 模組使用,並參考 Flax 文件以瞭解所有與一般使用和行為相關的事項。
最後,此模型支援固有的 JAX 功能,例如
__call__
< 來源 >( input_ids: Array attention_mask: typing.Optional[jax.Array] = None position_ids: typing.Optional[jax.Array] = None encoder_hidden_states: typing.Optional[jax.Array] = None encoder_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 past_key_values: typing.Optional[dict] = None dropout_rng: <function PRNGKey at 0x7effc7ad3a30> = None ) → transformers.modeling_flax_outputs.FlaxCausalLMOutputWithCrossAttentions 或 tuple(torch.FloatTensor)
引數
- input_ids (
jnp.ndarray
,形狀為(batch_size, sequence_length)
) — 詞彙表中輸入序列標記的索引。如果您提供填充,則預設情況下會忽略填充。索引可以使用 AutoTokenizer 獲取。有關詳細資訊,請參閱 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (
jnp.ndarray
,形狀為(batch_size, sequence_length)
,可選) — 掩碼,用於避免對填充標記索引執行注意力。掩碼值選擇範圍為[0, 1]
:- 1 表示標記 未被掩蓋,
- 0 表示標記 已被掩蓋。
- position_ids (
numpy.ndarray
,形狀為(batch_size, sequence_length)
,可選) — 每個輸入序列標記在位置嵌入中的位置索引。選擇範圍為[0, config.max_position_embeddings - 1]
。 - output_attentions (
bool
,可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量下的attentions
。 - output_hidden_states (
bool
,可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的hidden_states
。 - return_dict (
bool
,可選) — 是否返回 ModelOutput 而不是普通元組。
返回
transformers.modeling_flax_outputs.FlaxCausalLMOutputWithCrossAttentions 或 tuple(torch.FloatTensor)
一個 transformers.modeling_flax_outputs.FlaxCausalLMOutputWithCrossAttentions 或一個 torch.FloatTensor
的元組(如果傳入 return_dict=False
或當 config.return_dict=False
時),包含根據配置(XGLMConfig)和輸入的不同元素。
-
logits (形狀為
(batch_size, sequence_length, config.vocab_size)
的jnp.ndarray
) — 語言建模頭的預測分數(SoftMax 之前每個詞彙 token 的分數)。 -
hidden_states (
tuple(jnp.ndarray)
,可選,當傳入output_hidden_states=True
或當config.output_hidden_states=True
時返回) —jnp.ndarray
的元組(一個用於嵌入的輸出 + 一個用於每層的輸出),形狀為(batch_size, sequence_length, hidden_size)
。模型在每個層輸出的隱藏狀態加上初始嵌入輸出。
-
attentions (
tuple(jnp.ndarray)
,可選,當傳入output_attentions=True
或當config.output_attentions=True
時返回) —jnp.ndarray
的元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。
-
cross_attentions (
tuple(jnp.ndarray)
,可選,當傳入output_attentions=True
或當config.output_attentions=True
時返回) —jnp.ndarray
的元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 後的交叉注意力權重,用於計算交叉注意力頭中的加權平均。
-
past_key_values (
tuple(tuple(jnp.ndarray))
,可選,當傳入use_cache=True
或當config.use_cache=True
時返回) —jnp.ndarray
元組的元組,長度為config.n_layers
,每個元組包含自注意力和交叉注意力層的快取鍵值狀態(如果模型在編碼器-解碼器設定中使用)。僅當config.is_decoder = True
時相關。包含預先計算的隱藏狀態(注意力塊中的鍵和值),可用於(參見
past_key_values
輸入)加速順序解碼。
FlaxXGLMPreTrainedModel
前向方法,覆蓋了 __call__
特殊方法。
儘管前向傳播的實現需要在該函式中定義,但在此之後應呼叫 Module
例項而不是直接呼叫此函式,因為前者會處理執行預處理和後處理步驟,而後者會默默忽略它們。
示例
>>> from transformers import AutoTokenizer, FlaxXGLMForCausalLM
>>> tokenizer = AutoTokenizer.from_pretrained("facebook/xglm-564M")
>>> model = FlaxXGLMForCausalLM.from_pretrained("facebook/xglm-564M")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="np")
>>> outputs = model(**inputs)
>>> # retrieve logts for next token
>>> next_token_logits = outputs.logits[:, -1]