Transformers 文档

配置

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

配置

基类 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 特定参数

  • use_bfloat16 (bool, 可选, 默认为 False) — 模型是否应使用 BFloat16 标量(仅由某些 TensorFlow 模型使用)。
  • tf_legacy_loss (bool, 可选, 默认为 False) — 模型是否应使用旧版 TensorFlow 损失。旧版损失具有可变的输出形状,可能与 XLA 不兼容。此选项用于向后兼容,并将在 Transformers v5 中移除。
  • loss_type (str, 可选) — 模型应使用的损失类型。它应为 `LOSS_MAPPING` 的键之一,否则将根据模型架构自动推断损失。

所有配置类的基类。处理所有模型配置通用的几个参数,以及加载/下载/保存配置的方法。

配置文件可以加载并保存到磁盘。加载配置文件并使用此文件初始化模型并**不会**加载模型权重。它只影响模型的配置。

类属性(由派生类覆盖)

  • 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 or str, 可选) — 用于远程文件 HTTP 持有者授权的令牌。如果为 `True`,将使用运行 `huggingface-cli login` 时生成的令牌(存储在 `~/.huggingface` 中)。如果未指定 `repo_url`,则默认为 `True`。
  • max_shard_size (int or str, 可选, 默认为 "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")

dict_torch_dtype_to_str

< >

( d: dict )

检查传递的字典及其嵌套字典是否具有 *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]) — 用于初始化配置对象的附加参数。

返回

PretrainedConfig

从这些参数实例化的配置对象。

从一个 Python 参数字典实例化一个 PretrainedConfig

from_json_file

< >

( json_file: typing.Union[str, os.PathLike] ) PretrainedConfig

参数

  • json_file (str or os.PathLike) — 包含参数的 JSON 文件的路径。

返回

PretrainedConfig

从该 JSON 文件实例化的配置对象。

从一个参数的 JSON 文件路径实例化一个 PretrainedConfig

from_pretrained

< >

( 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 (stros.PathLike) — 这可以是以下任一项:

    • 一个字符串,即托管在 huggingface.co 的模型仓库中的预训练模型配置的 模型 ID
    • 一个包含使用 save_pretrained() 方法保存的配置文件的 目录 路径,例如 ./my_model_directory/
    • 一个指向已保存的配置 JSON 文件 的路径或 URL,例如 ./my_model_directory/configuration.json
  • cache_dir (stros.PathLike, 可选) — 如果不应使用标准缓存,则为用于缓存下载的预训练模型配置的目录路径。
  • force_download (bool, 可选, 默认为 False) — 是否强制(重新)下载配置文件并覆盖已存在的缓存版本。
  • resume_download — 已弃用并忽略。所有下载现在在可能的情况下都会默认断点续传。将在 Transformers v5 中移除。
  • proxies (dict[str, str], 可选) — 一个用于按协议或端点使用的代理服务器字典,例如 {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}。代理将在每次请求时使用。
  • token (strbool, 可选) — 用于远程文件的 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

从此预训练模型实例化的配置对象。

从预训练模型的配置中实例化一个 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

< >

( pretrained_model_name_or_path: typing.Union[str, os.PathLike] **kwargs ) tuple[Dict, Dict]

参数

  • pretrained_model_name_or_path (stros.PathLike) — 我们想要获取其参数字典的预训练检查点的标识符。

返回

tuple[Dict, Dict]

将用于实例化配置对象的字典。

从一个 pretrained_model_name_or_path 解析出一个参数字典,用于使用 from_dict 实例化一个 PretrainedConfig

get_text_config

< >

( decoder = False )

参数

  • decoder (Optional[bool], 可选, 默认为 False) — 如果设置为 True,则只搜索解码器配置名称。

返回用于文本 IO 的配置。在大多数模型上,它就是原始的配置实例本身。在特定的复合模型上,它在一组有效的名称下。

register_for_auto_class

< >

( auto_class = 'AutoConfig' )

参数

  • auto_class (strtype, 可选, 默认为 "AutoConfig") — 要注册此新配置的自动类。

将此类注册到给定的自动类中。这应该只用于自定义配置,因为库中的配置已经与 AutoConfig 映射。

save_pretrained

< >

( save_directory: typing.Union[str, os.PathLike] push_to_hub: bool = False **kwargs )

参数

  • save_directory (stros.PathLike) — 配置 JSON 文件将保存到的目录(如果不存在,则会创建)。
  • push_to_hub (bool, 可选, 默认为 False) — 是否在保存后将您的模型推送到 Hugging Face 模型中心。您可以使用 repo_id 指定要推送到的仓库(默认为您命名空间中 save_directory 的名称)。
  • kwargs (dict[str, Any], 可选) — 传递给 push_to_hub() 方法的其他关键字参数。

将配置对象保存到目录 save_directory 中,以便可以使用 from_pretrained() 类方法重新加载它。

to_dict

< >

( ) dict[str, Any]

返回

dict[str, Any]

构成此配置实例的所有属性的字典。

将此实例序列化为 Python 字典。

to_diff_dict

< >

( ) dict[str, Any]

返回

dict[str, Any]

构成此配置实例的所有属性的字典。

为了更好的可读性,从配置中删除所有对应于默认配置属性的属性,同时始终保留类中的 config 属性。序列化为一个 Python 字典。

to_json_file

< >

( json_file_path: typing.Union[str, os.PathLike] use_diff: bool = True )

参数

  • json_file_path (stros.PathLike) — 此配置实例的参数将保存到的 JSON 文件的路径。
  • use_diff (bool, 可选, 默认为 True) — 如果设置为 True,则只有配置实例与默认 PretrainedConfig() 之间的差异会被序列化到 JSON 文件中。

将此实例保存到 JSON 文件。

to_json_string

< >

( use_diff: bool = True ) str

参数

  • use_diff (bool, 可选, 默认为 True) — 如果设置为 True,则只有配置实例与默认 PretrainedConfig() 之间的差异会被序列化为 JSON 字符串。

返回

字符串

包含此配置实例所有属性的 JSON 格式字符串。

将此实例序列化为 JSON 字符串。

update

< >

( config_dict: dict )

参数

  • config_dict (dict[str, Any]) — 应为此类更新的属性字典。

config_dict 中的属性更新此类的属性。

update_from_string

< >

( update_str: str )

参数

  • update_str (str) — 包含应为此类更新的属性的字符串。

update_str 中的属性更新此类的属性。

预期的格式是整数、浮点数和字符串保持原样,布尔值使用 truefalse。例如:“n_embd=10,resid_pdrop=0.2,scale_attn_weights=false,summary_type=cls_index”

要更改的键必须已经存在于配置对象中。

< > 在 GitHub 上更新