Transformers 文件
配置
並獲得增強的文件體驗
開始使用
配置
基類 PretrainedConfig 實現了從本地檔案或目錄,或從庫提供的預訓練模型配置(從 Hugging Face 的 AWS S3 儲存庫下載)載入/儲存配置的通用方法。
每個派生的配置類都實現了特定於模型的屬性。所有配置類中都存在的通用屬性是:`hidden_size`、`num_attention_heads` 和 `num_hidden_layers`。文字模型還實現了:`vocab_size`。
PretrainedConfig
class transformers.PretrainedConfig
< 來源 >( **kwargs )
引數
- name_or_path (
str
, 可選, 預設為""
) — 儲存傳遞給 PreTrainedModel.from_pretrained() 或 TFPreTrainedModel.from_pretrained() 的字串,作為 `pretrained_model_name_or_path`(如果配置是用這種方法建立的)。 - output_hidden_states (
bool
, 可選, 預設為False
) — 模型是否應返回所有隱藏狀態。 - output_attentions (
bool
, 可選, 預設為False
) — 模型是否應返回所有注意力權重。 - return_dict (
bool
, 可選, 預設為True
) — 模型是否應返回 ModelOutput 而不是普通的元組。 - is_encoder_decoder (
bool
, 可選, 預設為False
) — 模型是否用作編碼器/解碼器。 - is_decoder (
bool
, 可選, 預設為False
) — 在編碼器-解碼器架構中是否只使用解碼器,否則它對僅解碼器或僅編碼器架構沒有影響。 - cross_attention_hidden_size** (
bool
, 可選) — 當模型在編碼器-解碼器設定中用作解碼器,且交叉注意力隱藏維度與 `self.config.hidden_size` 不同時,交叉注意力層的隱藏大小。 - add_cross_attention (
bool
, 可選, 預設為False
) — 是否應向模型新增交叉注意力層。請注意,此選項僅與可在 EncoderDecoderModel 類中用作解碼器模型的模型相關,其中包括 `AUTO_MODELS_FOR_CAUSAL_LM` 中的所有模型。 - tie_encoder_decoder (
bool
, 可選, 預設為False
) — 是否應將所有編碼器權重與其等效的解碼器權重繫結。這要求編碼器和解碼器模型具有完全相同的引數名稱。 - prune_heads (
dict[int, list[int]]
, 可選, 預設為{}
) — 模型的剪枝頭。鍵是所選層的索引,關聯的值是要在該層中剪枝的頭的列表。例如,`{1: [0, 2], 2: [2, 3]}` 將在第 1 層剪枝頭 0 和 2,在第 2 層剪枝頭 2 和 3。
- chunk_size_feed_forward (
int
, 可選, 預設為0
) — 殘差注意力塊中所有前饋層的塊大小。塊大小為 `0` 意味著前饋層不分塊。塊大小為 n 意味著前饋層一次處理 `n` < sequence_length 個嵌入。有關前饋分塊的更多資訊,請參閱 前饋分塊如何工作?。
用於微調任務的引數
- architectures (
list[str]
, 可選) — 可與模型預訓練權重一起使用的模型架構。 - finetuning_task (
str
, 可選) — 用於微調模型的任務名稱。這可以在從原始(TensorFlow 或 PyTorch)檢查點轉換時使用。 - id2label (
dict[int, str]
, 可選) — 從索引(例如預測索引或目標索引)到標籤的對映。 - label2id (
dict[str, int]
, 可選) — 模型從標籤到索引的對映。 - num_labels (
int
, 可選) — 新增到模型的最後一層使用的標籤數,通常用於分類任務。 - task_specific_params (
dict[str, Any]
, 可選) — 用於儲存當前任務的額外關鍵字引數。 - problem_type (
str
, 可選) — `XxxForSequenceClassification` 模型的問題型別。可以是 `"regression"`、`"single_label_classification"` 或 `"multi_label_classification"` 之一。
與分詞器相關的引數
- tokenizer_class (
str
, 可選) — 要使用的關聯分詞器類的名稱(如果未設定,預設使用與模型關聯的分詞器)。 - prefix (
str
, 可選) — 在呼叫模型之前,應在每個文字開頭新增的特定提示。 - bos_token_id (
int
, 可選) — *序列開始* 標記的 ID。 - pad_token_id (
int
, 可選) — *填充* 標記的 ID。 - eos_token_id (
int
, 可選) — *序列結束* 標記的 ID。 - decoder_start_token_id (
int
, 可選) — 如果編碼器-解碼器模型使用不同於 *bos* 的標記開始解碼,則為該標記的 ID。 - sep_token_id (
int
, 可選) — *分隔* 標記的 ID。
PyTorch 特定引數
- torchscript (
bool
, 可選, 預設為False
) — 模型是否應與 TorchScript 一起使用。 - tie_word_embeddings (
bool
, 可選, 預設為True
) — 模型的輸入和輸出詞嵌入是否應該繫結。請注意,這僅在模型具有輸出詞嵌入層時才相關。 - torch_dtype (
str
, 可選) — 權重的 `dtype`。此屬性可用於將模型初始化為非預設的 `dtype`(通常是 `float32`),從而實現最佳的儲存分配。例如,如果儲存的模型是 `float16`,理想情況下我們希望使用載入 `float16` 權重所需的最小記憶體來載入它。由於配置物件以純文字形式儲存,因此此屬性僅包含浮點型別字串,不帶 `torch.` 字首。例如,對於 `torch.float16`,`torch_dtype` 是 `"float16"` 字串。此屬性目前在模型載入時未使用,但這可能會在未來版本中改變。但我們可以透過使用 save_pretrained 儲存 dtype 來為未來做準備。
TensorFlow 特定引數
所有配置類的基類。處理所有模型配置通用的幾個引數,以及載入/下載/儲存配置的方法。
配置檔案可以載入並儲存到磁碟。載入配置檔案並使用此檔案初始化模型並**不會**載入模型權重。它隻影響模型的配置。
類屬性(由派生類覆蓋)
- model_type (
str
) — 模型型別的識別符號,序列化到 JSON 檔案中,並用於在 AutoConfig 中重新建立正確的物件。 - has_no_defaults_at_init (
bool
) — 配置類是否可以在不提供輸入引數的情況下初始化。某些配置要求在初始化時定義輸入並且沒有預設值,通常這些是複合配置(但不一定),例如 EncoderDecoderConfig 或 ~RagConfig。它們必須從兩個或多個 PretrainedConfig 型別的配置中初始化。 - keys_to_ignore_at_inference (
list[str]
) — 在推理期間檢視模型字典輸出時預設忽略的鍵列表。 - attribute_map (
dict[str, str]
) — 將模型特定屬性名稱對映到屬性標準命名的字典。 - base_model_tp_plan (
dict[str, Any]
) — 一個字典,將基礎模型的子模組 FQN 對映到當呼叫 `model.tensor_parallel` 時應用於該子模組的張量並行計劃。 - base_model_pp_plan (
dict[str, tuple[list[str]]]
) — 一個字典,將基礎模型的子模組對映到流水線並行計劃,使使用者能夠將子模組放置在適當的裝置上。
通用屬性(存在於所有子類中)
- vocab_size (
int
) — 詞彙表中的詞元數量,也是嵌入矩陣的第一個維度(對於沒有文字模態的模型,如 ViT,此屬性可能缺失)。 - hidden_size (
int
) — 模型的隱藏層大小。 - num_attention_heads (
int
) — 模型的多頭注意力層中使用的注意力頭數量。 - num_hidden_layers (
int
) — 模型中的塊數。
在模型配置中設定序列生成引數已被棄用。為了向後相容,載入其中一些引數仍然是可能的,但嘗試覆蓋它們會引發異常 — 您應該在 [~transformers.GenerationConfig] 中設定它們。有關各個引數的更多資訊,請查閱 [~transformers.GenerationConfig] 的文件。
push_to_hub
< 來源 >( repo_id: str use_temp_dir: typing.Optional[bool] = None commit_message: typing.Optional[str] = None private: typing.Optional[bool] = None token: typing.Union[bool, str, NoneType] = None max_shard_size: typing.Union[str, int, NoneType] = '5GB' create_pr: bool = False safe_serialization: bool = True revision: typing.Optional[str] = None commit_description: typing.Optional[str] = None tags: typing.Optional[list[str]] = None **deprecated_kwargs )
引數
- repo_id (
str
) — 您想將配置推送到的儲存庫名稱。當推送到特定組織時,它應包含您的組織名稱。 - use_temp_dir (
bool
, 可選) — 是否使用臨時目錄來儲存推送到 Hub 之前儲存的檔案。如果沒有名為 `repo_id` 的目錄,則預設為 `True`,否則為 `False`。 - commit_message (
str
, 可選) — 推送時提交的訊息。預設為 `"Upload config"`。 - private (
bool
, 可選) — 是否將儲存庫設為私有。如果為 `None`(預設值),除非組織的預設設定是私有,否則儲存庫將是公開的。如果儲存庫已存在,則忽略此值。 - token (
bool
orstr
, 可選) — 用於遠端檔案 HTTP 持有者授權的令牌。如果為 `True`,將使用執行 `huggingface-cli login` 時生成的令牌(儲存在 `~/.huggingface` 中)。如果未指定 `repo_url`,則預設為 `True`。 - max_shard_size (
int
orstr
, 可選, 預設為"5GB"
) — 僅適用於模型。檢查點在分片前的最大大小。然後,每個檢查點分片的大小將低於此大小。如果表示為字串,則需要是數字後跟一個單位(如 `"5MB"`)。我們預設為 `"5GB"`,以便使用者可以在免費的 Google Colab 例項上輕鬆載入模型,而不會出現 CPU OOM 問題。 - create_pr (
bool
, 可選, 預設為False
) — 是建立包含上傳檔案的拉取請求還是直接提交。 - safe_serialization (
bool
, 可選, 預設為True
) — 是否將模型權重轉換為 safetensors 格式以進行更安全的序列化。 - revision (
str
, 可選) — 要將上傳檔案推送到的分支。 - commit_description (
str
, 可選) — 將建立的提交的描述 - tags (
list[str]
, 可選) — 要推送到 Hub 的標籤列表。
將配置檔案上傳到 🤗 Model Hub。
示例
from transformers import AutoConfig
config = AutoConfig.from_pretrained("google-bert/bert-base-cased")
# Push the config to your namespace with the name "my-finetuned-bert".
config.push_to_hub("my-finetuned-bert")
# Push the config to an organization with the name "my-finetuned-bert".
config.push_to_hub("huggingface/my-finetuned-bert")
檢查傳遞的字典及其巢狀字典是否具有 *torch_dtype* 鍵,如果它不為 None,則將 torch.dtype 轉換為僅包含型別的字串。例如,`torch.float32` 會被轉換為 *“float32”* 字串,然後可以以 json 格式儲存。
from_dict
< 來源 >( config_dict: dict **kwargs ) → PretrainedConfig
引數
- config_dict (
dict[str, Any]
) — 將用於例項化配置物件的字典。這樣的字典可以利用 get_config_dict() 方法從預訓練的檢查點中檢索。 - kwargs (
dict[str, Any]
) — 用於初始化配置物件的附加引數。
從這些引數例項化的配置物件。
從一個 Python 引數字典例項化一個 PretrainedConfig。
from_json_file
< 來源 >( json_file: typing.Union[str, os.PathLike] ) → PretrainedConfig
從一個引數的 JSON 檔案路徑例項化一個 PretrainedConfig。
from_pretrained
< source >( pretrained_model_name_or_path: typing.Union[str, os.PathLike] cache_dir: typing.Union[str, os.PathLike, NoneType] = None force_download: bool = False local_files_only: bool = False token: typing.Union[bool, str, NoneType] = None revision: str = 'main' **kwargs ) → PretrainedConfig
引數
- pretrained_model_name_or_path (
str
或os.PathLike
) — 這可以是以下任一項:- 一個字串,即託管在 huggingface.co 的模型倉庫中的預訓練模型配置的 模型 ID。
- 一個包含使用 save_pretrained() 方法儲存的配置檔案的 目錄 路徑,例如
./my_model_directory/
。 - 一個指向已儲存的配置 JSON 檔案 的路徑或 URL,例如
./my_model_directory/configuration.json
。
- cache_dir (
str
或os.PathLike
, 可選) — 如果不應使用標準快取,則為用於快取下載的預訓練模型配置的目錄路徑。 - force_download (
bool
, 可選, 預設為False
) — 是否強制(重新)下載配置檔案並覆蓋已存在的快取版本。 - resume_download — 已棄用並忽略。所有下載現在在可能的情況下都會預設斷點續傳。將在 Transformers v5 中移除。
- proxies (
dict[str, str]
, 可選) — 一個用於按協議或端點使用的代理伺服器字典,例如{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}
。代理將在每次請求時使用。 - token (
str
或bool
, 可選) — 用於遠端檔案的 HTTP Bearer 認證的令牌。如果為True
或未指定,將使用執行huggingface-cli login
時生成的令牌(儲存在~/.huggingface
)。 - revision (
str
, 可選, 預設為"main"
) — 要使用的特定模型版本。它可以是分支名稱、標籤名稱或提交 ID,因為我們在 huggingface.co 上使用基於 git 的系統來儲存模型和其他工件,所以revision
可以是 git 允許的任何識別符號。要測試你在 Hub 上建立的拉取請求,可以傳遞
revision="refs/pr/<pr_number>"
。 - return_unused_kwargs (
bool
, 可選, 預設為False
) — 如果為False
,則此函式僅返回最終的配置物件。如果為
True
,則此函式返回一個Tuple(config, unused_kwargs)
,其中 unused_kwargs 是一個由鍵/值對組成的字典,這些鍵/值對的鍵不是配置屬性:即,kwargs
中未用於更新config
且在其他情況下被忽略的部分。 - subfolder (
str
, 可選, 預設為""
) — 如果相關檔案位於 huggingface.co 上的模型倉庫的子資料夾中,可以在此處指定資料夾名稱。 - kwargs (
dict[str, Any]
, 可選) — kwargs 中任何作為配置屬性的鍵的值將用於覆蓋載入的值。對於鍵不是配置屬性的鍵/值對的行為,由return_unused_kwargs
關鍵字引數控制。
從此預訓練模型例項化的配置物件。
從預訓練模型的配置中例項化一個 PretrainedConfig(或其派生類)。
示例
# We can't instantiate directly the base class *PretrainedConfig* so let's show the examples on a
# derived class: BertConfig
config = BertConfig.from_pretrained(
"google-bert/bert-base-uncased"
) # Download configuration from huggingface.co and cache.
config = BertConfig.from_pretrained(
"./test/saved_model/"
) # E.g. config (or model) was saved using *save_pretrained('./test/saved_model/')*
config = BertConfig.from_pretrained("./test/saved_model/my_configuration.json")
config = BertConfig.from_pretrained("google-bert/bert-base-uncased", output_attentions=True, foo=False)
assert config.output_attentions == True
config, unused_kwargs = BertConfig.from_pretrained(
"google-bert/bert-base-uncased", output_attentions=True, foo=False, return_unused_kwargs=True
)
assert config.output_attentions == True
assert unused_kwargs == {"foo": False}
get_config_dict
< source >( pretrained_model_name_or_path: typing.Union[str, os.PathLike] **kwargs ) → tuple[Dict, Dict]
從一個 pretrained_model_name_or_path
解析出一個引數字典,用於使用 from_dict
例項化一個 PretrainedConfig。
get_text_config
< source >( decoder = False )
返回用於文字 IO 的配置。在大多數模型上,它就是原始的配置例項本身。在特定的複合模型上,它在一組有效的名稱下。
register_for_auto_class
< source >( auto_class = 'AutoConfig' )
將此類註冊到給定的自動類中。這應該只用於自定義配置,因為庫中的配置已經與 AutoConfig
對映。
save_pretrained
< source >( save_directory: typing.Union[str, os.PathLike] push_to_hub: bool = False **kwargs )
引數
- save_directory (
str
或os.PathLike
) — 配置 JSON 檔案將儲存到的目錄(如果不存在,則會建立)。 - push_to_hub (
bool
, 可選, 預設為False
) — 是否在儲存後將您的模型推送到 Hugging Face 模型中心。您可以使用repo_id
指定要推送到的倉庫(預設為您名稱空間中save_directory
的名稱)。 - kwargs (
dict[str, Any]
, 可選) — 傳遞給 push_to_hub() 方法的其他關鍵字引數。
將配置物件儲存到目錄 save_directory
中,以便可以使用 from_pretrained() 類方法重新載入它。
將此例項序列化為 Python 字典。
為了更好的可讀性,從配置中刪除所有對應於預設配置屬性的屬性,同時始終保留類中的 config
屬性。序列化為一個 Python 字典。
to_json_file
< source >( json_file_path: typing.Union[str, os.PathLike] use_diff: bool = True )
將此例項儲存到 JSON 檔案。
to_json_string
< source >( use_diff: bool = True ) → str
將此例項序列化為 JSON 字串。
用 config_dict
中的屬性更新此類的屬性。
用 update_str
中的屬性更新此類的屬性。
預期的格式是整數、浮點數和字串保持原樣,布林值使用 true
或 false
。例如:“n_embd=10,resid_pdrop=0.2,scale_attn_weights=false,summary_type=cls_index”
要更改的鍵必須已經存在於配置物件中。