配置
基类 PretrainedConfig 实现了从本地文件或目录,或者从库提供的预训练模型配置(从 HuggingFace 的 AWS S3 存储库下载)加载/保存配置的常用方法。
每个派生配置类都实现了模型特定的属性。所有配置类中都存在一些共同的属性:hidden_size
、num_attention_heads
和 num_hidden_layers
。文本模型还实现了:vocab_size
。
PretrainedConfig
类 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 中重新创建正确的对象。 - is_composition (
bool
) — 配置类是否由多个子配置组成。在这种情况下,配置必须从两个或多个 PretrainedConfig 类型的配置初始化,例如:EncoderDecoderConfig 或 ~RagConfig。 - keys_to_ignore_at_inference (
List[str]
) — 在推理期间查看模型的字典输出时默认忽略的键列表。 - attribute_map (
Dict[str, 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: Optional = None commit_message: Optional = None private: Optional = None token: Union = None max_shard_size: Union = '5GB' create_pr: bool = False safe_serialization: bool = True revision: str = None commit_description: str = None tags: Optional = None **deprecated_kwargs )
参数
- repo_id (
str
) — 您要将配置推送到哪个仓库的名称。当推送到指定的组织时,它应该包含您的组织名称。 - use_temp_dir (
bool
,可选) — 是否使用临时目录来存储保存的文件,然后再将它们推送到 Hub。如果不存在名为repo_id
的目录,则默认为True
,否则默认为False
。 - commit_message (
str
,可选) — 推送时提交的消息。默认为"Upload config"
。 - private (
bool
,可选) — 创建的仓库是否应该是私有的。 - token (
bool
或str
,可选) — 用作远程文件 HTTP Bearer 授权的令牌。如果为True
,将使用运行huggingface-cli login
时生成的令牌(存储在~/.huggingface
中)。如果未指定repo_url
,则默认为True
。 - max_shard_size (
int
或str
,可选,默认为"5GB"
) — 仅适用于模型。检查点分片前的最大大小。然后,每个检查点分片的大小都将小于此大小。如果表示为字符串,则需要是数字后跟一个单位(例如"5MB"
)。我们将其默认为"5GB"
,以便用户可以在免费层的 Google Colab 实例上轻松加载模型,而不会出现任何 CPU OOM 问题。 - create_pr (
bool
,可选,默认为False
) — 是否使用上传的文件创建 PR 或直接提交。 - 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: Union ) → PretrainedConfig
从参数的 JSON 文件路径实例化 PretrainedConfig。
from_pretrained
< 源代码 >( pretrained_model_name_or_path: Union cache_dir: Union = None force_download: bool = False local_files_only: bool = False token: Union = 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 持有者授权的令牌。如果为True
或未指定,将使用运行huggingface-cli login
时生成的令牌(存储在~/.huggingface
中)。 - revision (
str
,可选,默认为"main"
) — 要使用的特定模型版本。它可以是分支名称、标签名称或提交 ID,因为我们使用基于 git 的系统在 huggingface.co 上存储模型和其他工件,因此revision
可以是 git 允许的任何标识符。要测试您在 Hub 上提出的拉取请求,您可以传递 `revision=“refs/pr/
“。 - 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
< 源代码 >( pretrained_model_name_or_path: Union **kwargs ) → Tuple[Dict, Dict]
从 pretrained_model_name_or_path
解析为参数字典,用于使用 from_dict
实例化 PretrainedConfig。
返回用于文本IO的配置。在大多数模型上,它是原始配置实例本身。在特定的复合模型上,它位于一组有效名称下。
如果将decoder
设置为True
,则仅搜索解码器配置名称。
register_for_auto_class
< 源代码 >( auto_class = 'AutoConfig' )
将此类注册到给定的自动类。这应该仅用于自定义配置,因为库中的配置已经映射到AutoConfig
。
此API是实验性的,在下一版本中可能会有一些轻微的突破性变化。
save_pretrained
< 源代码 >( save_directory: Union 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 字典。
从配置中删除与默认配置属性对应的所有属性,以便于阅读并将序列化为 Python 字典。
to_json_file
< 源代码 >( json_file_path: Union use_diff: bool = True )
将此实例保存到 JSON 文件。
to_json_string
< 源代码 >( 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”
要更改的键必须已存在于配置对象中。