Transformers 文档

模型

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

模型

基类 PreTrainedModelTFPreTrainedModelFlaxPreTrainedModel 实现了从本地文件或目录加载/保存模型,或者从库提供的预训练模型配置(从 HuggingFace 的 AWS S3 仓库下载)加载/保存模型的常用方法。

PreTrainedModelTFPreTrainedModel 还实现了一些所有模型通用的方法,用于

  • 当词汇表添加新 tokens 时调整输入 token 嵌入的大小
  • 剪枝模型的注意力头。

每个模型通用的其他方法在 ModuleUtilsMixin(对于 PyTorch 模型)和 ~modeling_tf_utils.TFModuleUtilsMixin(对于 TensorFlow 模型)中定义,或者对于文本生成,在 GenerationMixin(对于 PyTorch 模型)、TFGenerationMixin(对于 TensorFlow 模型)和 FlaxGenerationMixin(对于 Flax/JAX 模型)中定义。

PreTrainedModel

class transformers.PreTrainedModel

< >

( config: PretrainedConfig *inputs **kwargs )

所有模型的基础类。

PreTrainedModel 负责存储模型的配置,并处理加载、下载和保存模型的方法,以及所有模型通用的一些方法,用于

  • 调整输入嵌入的大小,
  • 剪枝自注意力头中的头。

类属性(被派生类覆盖)

  • config_class (PretrainedConfig) — PretrainedConfig 的子类,用作此模型架构的配置类。

  • load_tf_weights (Callable) — 用于在 PyTorch 模型中加载 TensorFlow 检查点的 python 方法,接受以下参数

    • model (PreTrainedModel) — 要在其上加载 TensorFlow 检查点的模型实例。
    • config (PreTrainedConfig) — 与模型关联的配置实例。
    • path (str) — TensorFlow 检查点的路径。
  • base_model_prefix (str) — 一个字符串,指示与基模型关联的属性,在同一架构的派生类中,基模型之上添加模块。

  • is_parallelizable (bool) — 一个标志,指示此模型是否支持模型并行化。

  • main_input_name (str) — 模型主要输入的名称(对于 NLP 模型通常为 input_ids,对于视觉模型为 pixel_values,对于语音模型为 input_values)。

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[int, str, NoneType] = '5GB' create_pr: bool = False safe_serialization: bool = True revision: str = None commit_description: str = None tags: typing.Optional[typing.List[str]] = None **deprecated_kwargs )

参数

  • repo_id (str) — 您要将模型推送到的仓库名称。当推送到给定的组织时,应包含您的组织名称。
  • use_temp_dir (bool, optional) — 是否使用临时目录来存储在推送到 Hub 之前保存的文件。如果不存在像 repo_id 这样的目录,则默认为 True,否则为 False
  • commit_message (str, optional) — 推送时要提交的消息。默认为 "Upload model"
  • private (bool, optional) — 是否将仓库设为私有。如果为 None(默认),则仓库将是公开的,除非组织的默认设置为私有。如果仓库已存在,则忽略此值。
  • token (boolstr, optional) — 用作远程文件的 HTTP bearer 授权的令牌。如果为 True,将使用运行 huggingface-cli login 时生成的令牌(存储在 ~/.huggingface 中)。如果未指定 repo_url,则默认为 True
  • max_shard_size (intstr, optional, 默认为 "5GB") — 仅适用于模型。分片之前的检查点最大大小。检查点分片将小于此大小。如果表示为字符串,则需要是数字后跟单位(如 "5MB")。我们将其默认为 "5GB",以便用户可以在免费层的 Google Colab 实例上轻松加载模型,而不会出现任何 CPU OOM 问题。
  • create_pr (bool, optional, 默认为 False) — 是否创建包含上传文件的 PR 或直接提交。
  • safe_serialization (bool, optional, 默认为 True) — 是否将模型权重转换为 safetensors 格式以实现更安全的序列化。
  • revision (str, optional) — 将上传的文件推送到的分支。
  • commit_description (str, optional) — 将要创建的提交的描述
  • tags (List[str], optional) — 要推送到 Hub 上的标签列表。

将模型文件上传到 🤗 Model Hub。

示例

from transformers import AutoModel

model = AutoModel.from_pretrained("google-bert/bert-base-cased")

# Push the model to your namespace with the name "my-finetuned-bert".
model.push_to_hub("my-finetuned-bert")

# Push the model to an organization with the name "my-finetuned-bert".
model.push_to_hub("huggingface/my-finetuned-bert")

add_model_tags

< >

( tags: typing.Union[typing.List[str], str] )

参数

  • tags (Union[List[str], str]) — 要注入到推送到 Hugging Face Hub 的模型中的所需标签

将自定义标签添加到推送到 Hugging Face Hub 的模型中。不会覆盖模型中已有的标签。

示例

from transformers import AutoModel

model = AutoModel.from_pretrained("google-bert/bert-base-cased")

model.add_model_tags(["custom", "custom-bert"])

# Push the model to your namespace with the name "my-custom-bert".
model.push_to_hub("my-custom-bert")

can_generate

< >

( ) bool

返回

bool

此模型是否可以使用 .generate() 生成序列。

返回此模型是否可以从 GenerationMixin 中使用 .generate() 生成序列。

在底层,对于此函数返回 True 的类,会触发一些特定于生成的更改:例如,模型实例将具有填充的 generation_config 属性。

dequantize

< >

( )

如果模型通过支持反量化的量化方法进行了量化,则可能对模型进行反量化。

disable_input_require_grads

< >

( )

移除 _require_grads_hook

enable_input_require_grads

< >

( )

启用输入嵌入的梯度。这对于在保持模型权重固定的同时微调适配器权重非常有用。

from_pretrained

< >

( pretrained_model_name_or_path: typing.Union[str, os.PathLike, NoneType] *model_args config: typing.Union[transformers.configuration_utils.PretrainedConfig, str, os.PathLike, NoneType] = None cache_dir: typing.Union[str, os.PathLike, NoneType] = None ignore_mismatched_sizes: bool = False force_download: bool = False local_files_only: bool = False token: typing.Union[str, bool, NoneType] = None revision: str = 'main' use_safetensors: typing.Optional[bool] = None weights_only: bool = True **kwargs )

参数

  • pretrained_model_name_or_path (stros.PathLike, 可选) — 可以是以下之一:

    • 一个字符串,托管在 huggingface.co 上的模型仓库中的预训练模型的模型 ID
    • 一个目录的路径,其中包含使用 save_pretrained() 保存的模型权重,例如,./my_model_directory/
    • 一个指向tensorflow 索引检查点文件的路径或 URL(例如,./tf_model/model.ckpt.index)。在这种情况下,from_tf 应设置为 True,并且应将配置对象作为 config 参数提供。此加载路径比使用提供的转换脚本将 TensorFlow 检查点转换为 PyTorch 模型并随后加载 PyTorch 模型要慢。
    • 一个指向模型文件夹的路径或 URL,该文件夹包含 .msgpack 格式的 flax 检查点文件(例如,./flax_model/ 包含 flax_model.msgpack)。在这种情况下,from_flax 应设置为 True
    • None,如果您同时提供配置和状态字典(分别使用关键字参数 configstate_dict)。
  • model_args (位置参数序列, 可选) — 所有剩余的位置参数将传递给底层模型的 __init__ 方法。
  • config (Union[PretrainedConfig, str, os.PathLike], 可选) — 可以是以下之一:

    用于模型的配置,而不是自动加载的配置。当以下情况时,可以自动加载配置:

    • 模型是库提供的模型(使用预训练模型的模型 ID 字符串加载)。
    • 模型使用 save_pretrained() 保存,并通过提供保存目录重新加载。
    • 模型通过提供本地目录作为 pretrained_model_name_or_path 加载,并且在目录中找到名为 config.json 的配置 JSON 文件。
  • state_dict (Dict[str, torch.Tensor], 可选) — 一个状态字典,用于代替从保存的权重文件加载的状态字典。

    如果您想从预训练配置创建模型但加载您自己的权重,则可以使用此选项。但在这种情况下,您应该检查使用 save_pretrained()from_pretrained() 是否不是更简单的选择。

  • cache_dir (Union[str, os.PathLike], 可选) — 缓存下载的预训练模型配置的目录路径,如果不想使用标准缓存。
  • from_tf (bool, 可选, 默认为 False) — 从 TensorFlow 检查点保存文件加载模型权重(请参阅 pretrained_model_name_or_path 参数的文档字符串)。
  • from_flax (bool, 可选, 默认为 False) — 从 Flax 检查点保存文件加载模型权重(请参阅 pretrained_model_name_or_path 参数的文档字符串)。
  • ignore_mismatched_sizes (bool, 可选, 默认为 False) — 如果检查点中的某些权重与模型的权重大小不一致(例如,如果您要从具有 3 个标签的检查点实例化具有 10 个标签的模型),是否引发错误。
  • force_download (bool, 可选, 默认为 False) — 是否强制(重新)下载模型权重和配置文件,覆盖缓存的版本(如果存在)。
  • resume_download — 已弃用且被忽略。现在,所有下载在可能的情况下默认恢复。将在 Transformers v5 中删除。
  • proxies (Dict[str, str], 可选) — 要按协议或端点使用的代理服务器字典,例如,{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}。代理用于每个请求。
  • output_loading_info(bool, 可选, 默认为 False) — 是否也返回包含缺失键、意外键和错误消息的字典。
  • local_files_only(bool, 可选, 默认为 False) — 是否仅查看本地文件(即,不尝试下载模型)。
  • token (strbool, 可选) — 用作远程文件的 HTTP Bearer 授权的令牌。如果为 True 或未指定,将使用运行 huggingface-cli login 时生成的令牌(存储在 ~/.huggingface 中)。
  • revision (str, 可选, 默认为 "main") — 要使用的特定模型版本。它可以是分支名称、标签名称或提交 ID,因为我们使用基于 git 的系统在 huggingface.co 上存储模型和其他工件,因此 revision 可以是 git 允许的任何标识符。

    要测试您在 Hub 上创建的拉取请求,您可以传递 revision="refs/pr/<pr_number>"

  • _fast_init(bool, 可选, 默认为 True) — 是否禁用快速初始化。

    应该只禁用 _fast_init 以确保与 transformers.__version__ < 4.6.0 的向后兼容性,用于种子模型初始化。此参数将在下一个主要版本中删除。有关更多信息,请参阅 pull request 11471

  • attn_implementation (str, 可选) — 模型中要使用的注意力实现(如果相关)。可以是 "eager"(注意力的手动实现)、"sdpa"(使用 F.scaled_dot_product_attention)或 "flash_attention_2"(使用 Dao-AILab/flash-attention)中的任何一个。默认情况下,如果可用,SDPA 将用于 torch>=2.1.1。否则,默认设置为手动 "eager" 实现。

大型模型推理的参数

  • low_cpu_mem_usage(bool, optional) — 尝试在加载模型时,CPU 内存使用量不超过模型大小的 1 倍(包括峰值内存)。通常应与 device_map(例如 "auto")结合使用以获得最佳效果。这是一个实验性功能,随时可能更改。

    如果模型权重与加载的模型精度相同,则 `low_cpu_mem_usage`(不带 `device_map`)是冗余的,并且在 CPU 内存使用方面不会提供任何好处。但是,如果您传入 `device_map`,则仍应启用此选项。
  • torch_dtype (strtorch.dtype, optional) — 覆盖默认的 torch.dtype,并以指定的 dtype 加载模型。不同的选项如下:

    1. torch.float16torch.bfloat16torch.float:以指定的 dtype 加载,忽略模型的 config.torch_dtype(如果存在)。如果未指定

      • 模型将以 torch.float (fp32) 加载。
    2. "auto" - 将尝试使用模型 config.json 文件中的 torch_dtype 条目。如果未找到此条目,则接下来检查检查点中第一个浮点类型的权重的 dtype,并将其用作 dtype。这将使用模型在训练结束时保存的 dtype 加载模型。它不能用作模型训练方式的指标。因为它可能以半精度 dtype 之一进行训练,但以 fp32 保存。

    3. 作为有效 torch.dtype 的字符串。例如,“float32”以 torch.float32 加载模型,“float16”以 torch.float16 加载模型,依此类推。

    对于某些模型,它们训练时使用的 dtype 是未知的 - 您可以尝试查看模型的论文或联系作者,要求他们将此信息添加到模型的卡片中,并在 Hub 上将 torch_dtype 条目插入到 config.json 中。

  • device_map (strDict[str, Union[int, str, torch.device]]inttorch.device, optional) — 用于指定每个子模块应放置位置的映射。无需细化到每个参数/缓冲区名称,一旦给定的模块名称包含在内,它的每个子模块都将被发送到同一设备。如果我们仅传递模型将分配到的设备(例如"cpu""cuda:1""mps" 或 GPU 序号,如 1),则设备映射会将整个模型映射到此设备。传递 device_map = 0 意味着将整个模型放在 GPU 0 上。

    要让 Accelerate 自动计算出最优化的 device_map,请设置 device_map="auto"。有关每个选项的更多信息,请参阅 设计设备映射

  • max_memory (Dict, optional) — 如果使用 device_map,则此字典用于指定设备标识符到最大内存的映射。如果未设置,则默认为每个 GPU 的最大可用内存和可用的 CPU RAM。
  • tp_plan (str, optional) — Torch 张量并行计划,请参阅此处。目前,它仅接受 tp_plan="auto" 以使用基于模型的预定义计划。请注意,如果使用它,则应使用 torchrun [args] script.py 相应地启动脚本。这将比使用 device_map 快得多,但有一些限制。
  • offload_folder (stros.PathLike, optional) — 如果 device_map 包含任何值 "disk",则为我们将要卸载权重的文件夹。
  • offload_state_dict (bool, optional) — 如果为 True,则会临时将 CPU 状态字典卸载到硬盘驱动器,以避免在 CPU 状态字典的权重 + 检查点的最大分片不适合时耗尽 CPU RAM。当存在一些磁盘卸载时,默认为 True
  • offload_buffers (bool, optional) — 是否卸载带有模型参数的缓冲区。
  • quantization_config (Union[QuantizationConfigMixin,Dict], optional) — 量化配置参数字典或 QuantizationConfigMixin 对象,用于量化(例如 bitsandbytes、gptq)。可能还有其他与量化相关的 kwargs,包括 load_in_4bitload_in_8bit,它们由 QuantizationConfigParser 解析。仅支持 bitsandbytes 量化,不推荐使用。考虑将所有此类参数插入到 quantization_config 中。
  • subfolder (str, optional, 默认为 "") — 如果相关文件位于 huggingface.co 上的模型仓库的子文件夹中,您可以在此处指定文件夹名称。
  • variant (str, optional) — 如果指定,则从 variant 文件名加载权重,例如 pytorch_model..bin。当使用 from_tffrom_flax 时,variant 将被忽略。
  • use_safetensors (bool, optional, 默认为 None) — 是否使用 safetensors 检查点。默认为 None。如果未指定且未安装 safetensors,则将其设置为 False
  • weights_only (bool, optional, 默认为 True) — 指示 unpickler 是否应仅限于加载张量、原始类型、字典以及通过 torch.serialization.add_safe_globals() 添加的任何类型。当设置为 False 时,我们可以加载包装器张量子类权重。
  • key_mapping (Dict[str, str], optional) — 如果在 Hub 上使用与 Transformers 架构兼容的模型,但未进行相应转换,则可以使用权重名称的潜在映射。
  • kwargs (剩余的关键字参数字典, optional) — 可用于更新配置对象(加载后)并初始化模型(例如,output_attentions=True)。行为取决于是否提供了 config 或自动加载了 config

    • 如果使用 config 提供了配置,则 **kwargs 将直接传递给底层模型的 __init__ 方法(我们假设已完成对配置的所有相关更新)
    • 如果未提供配置,则 kwargs 将首先传递给配置类初始化函数 (from_pretrained())。与配置属性对应的 kwargs 的每个键将用于使用提供的 kwargs 值覆盖所述属性。不对应于任何配置属性的剩余键将传递给底层模型的 __init__ 函数。

从预训练模型配置实例化预训练的 pytorch 模型。

默认情况下,模型通过 model.eval() 设置为评估模式(Dropout 模块被禁用)。要训练模型,您应首先使用 model.train() 将其设置回训练模式。

警告Weights from XXX not initialized from pretrained model 表示 XXX 的权重不是与模型的其余部分一起预训练的。您需要使用下游微调任务来训练这些权重。

警告Weights from XXX not used in YYY 表示层 XXX 未被 YYY 使用,因此这些权重将被丢弃。

如果模型权重与基础模型具有相同的精度(并且是受支持的模型),则无论 low_cpu_mem_usage 如何,权重都将使用 meta 设备延迟加载,并在输入通过该层后加载到内存中。

激活特殊的 “离线模式”,以便在防火墙环境中使用此方法。

示例

>>> from transformers import BertConfig, BertModel

>>> # Download model and configuration from huggingface.co and cache.
>>> model = BertModel.from_pretrained("google-bert/bert-base-uncased")
>>> # Model was saved using *save_pretrained('./test/saved_model/')* (for example purposes, not runnable).
>>> model = BertModel.from_pretrained("./test/saved_model/")
>>> # Update configuration during loading.
>>> model = BertModel.from_pretrained("google-bert/bert-base-uncased", output_attentions=True)
>>> assert model.config.output_attentions == True
>>> # Loading from a TF checkpoint file instead of a PyTorch model (slower, for example purposes, not runnable).
>>> config = BertConfig.from_json_file("./tf_model/my_tf_model_config.json")
>>> model = BertModel.from_pretrained("./tf_model/my_tf_checkpoint.ckpt.index", from_tf=True, config=config)
>>> # Loading from a Flax checkpoint file instead of a PyTorch model (slower)
>>> model = BertModel.from_pretrained("google-bert/bert-base-uncased", from_flax=True)
  • low_cpu_mem_usage 算法

这是一个实验性函数,它使用约 1 倍模型大小的 CPU 内存加载模型

以下是它的工作原理

  1. 保存我们拥有的 state_dict 键
  2. 在创建模型之前删除 state_dict,因为后者占用 1 倍模型大小的 CPU 内存
  3. 在实例化模型后,切换到 meta 设备,所有将从加载的 state_dict 替换的参数/缓冲区
  4. 第二次加载 state_dict
  5. 从 state_dict 替换参数/缓冲区

目前,它无法处理 deepspeed ZeRO stage 3,并忽略加载错误

get_compiled_call

< >

( compile_config: CompileConfig )

返回 self.__call__torch.compile'd 版本。这对于在推理期间动态选择非编译/编译的 forward 非常有用,特别是用于在预填充(我们不想使用编译版本以避免使用新形状重新计算图)和迭代解码(我们希望编译版本具有静态形状的速度提升)之间切换。

get_input_embeddings

< >

( ) nn.Module

返回

nn.Module

一个将词汇表映射到隐藏状态的 torch 模块。

返回模型的输入嵌入。

get_memory_footprint

< >

( return_buffers = True )

参数

获取模型的内存占用量。这将返回当前模型内存占用量(以字节为单位)。有助于基准测试当前模型的内存占用量并设计一些测试。解决方案灵感来自 PyTorch 讨论:https://discuss.pytorch.org/t/gpu-memory-that-model-uses/56822/2

get_output_embeddings

< >

( ) nn.Module

返回

nn.Module

一个将隐藏状态映射到词汇表的 torch 模块。

返回模型的输出嵌入。

get_parameter_or_buffer

< >

( target: str )

如果存在,则返回由 target 给出的参数或缓冲区,否则抛出错误。这在一个方便的函数中组合了 get_parameter()get_buffer()。请注意,它仅在 target 是模型的叶节点时才有效。

gradient_checkpointing_disable

< >

( )

禁用当前模型的梯度检查点。

请注意,在其他框架中,此功能可以称为“激活检查点”或“检查点激活”。

gradient_checkpointing_enable

< >

( gradient_checkpointing_kwargs = None )

参数

  • gradient_checkpointing_kwargs (dict, optional) — 传递给 torch.utils.checkpoint.checkpoint 函数的附加关键字参数。

为当前模型激活梯度检查点。

请注意,在其他框架中,此功能可以称为“激活检查点”或“检查点激活”。

我们传递模块的 __call__ 方法而不是 forward,因为 __call__ 附加了模块的所有钩子。https://discuss.pytorch.org/t/any-different-between-model-input-and-model-forward-input/3690/2

init_weights

< >

( )

如果需要,进行剪枝并可能初始化权重。如果使用自定义的 PreTrainedModel,则需要在 _init_weights 中实现任何初始化逻辑。

post_init

< >

( )

在每个 Transformer 模型初始化结束时执行的方法,用于执行需要模型模块正确初始化的代码(例如权重初始化)。

prune_heads

< >

( heads_to_prune: typing.Dict[int, typing.List[int]] )

参数

  • heads_to_prune (Dict[int, List[int]]) — 字典,键是选定的层索引 (int),关联的值是要在所述层中剪枝的头的列表(int 的列表)。例如 {1: [0, 2], 2: [2, 3]} 将剪枝第 1 层的头 0 和 2,以及第 2 层的头 2 和 3。

剪枝基础模型的头。

register_for_auto_class

< >

( auto_class = 'AutoModel' )

参数

  • auto_class (strtype, 可选, 默认为 "AutoModel") — 用于注册此新模型的自动类。

将此类注册到给定的自动类。这应该仅用于自定义模型,因为库中的模型已经映射到自动类。

此 API 是实验性的,并且在接下来的版本中可能会有一些小的破坏性更改。

resize_token_embeddings

< >

( new_num_tokens: typing.Optional[int] = None pad_to_multiple_of: typing.Optional[int] = None mean_resizing: bool = True ) torch.nn.Embedding

参数

  • new_num_tokens (int, 可选) — 嵌入矩阵中的新 token 数量。增加大小时,将在末尾添加新初始化的向量。减小大小时,将从末尾删除向量。如果未提供或为 None,则仅返回指向模型的输入 token torch.nn.Embedding 模块的指针,而不执行任何操作。
  • pad_to_multiple_of (int, 可选) — 如果设置,则将嵌入矩阵填充为所提供值的倍数。如果 new_num_tokens 设置为 None,则仅将嵌入填充为 pad_to_multiple_of 的倍数。

    这对于在 NVIDIA 硬件上启用 Tensor Cores(计算能力 >= 7.5 (Volta))或在 TPU 上非常有用,TPU 受益于序列长度为 128 的倍数。有关此的更多详细信息,或有关选择正确调整大小的值的帮助,请参阅本指南: https://docs.nvda.net.cn/deeplearning/performance/dl-performance-matrix-multiplication/index.html#requirements-tc

  • mean_resizing (bool) — 是否从具有旧嵌入的均值和协方差的多元正态分布初始化添加的嵌入,或者使用均值为零且 std 等于 config.initializer_range 的正态分布初始化它们。

    当增加因果语言模型的嵌入大小时,将 mean_resizing 设置为 True 非常有用,其中生成的 token 的概率不会受到添加的嵌入的影响,因为使用旧嵌入的均值初始化新嵌入将减少添加新嵌入之前和之后的下一个 token 概率之间的 kl 散度。有关更多信息,请参阅这篇文章: https://nlp.stanford.edu/~johnhew/vocab-expansion.html

返回

torch.nn.Embedding

指向模型的输入 token 嵌入模块的指针。

如果 new_num_tokens != config.vocab_size,则调整模型的输入 token 嵌入矩阵的大小。

如果在模型类中存在 tie_weights() 方法,则在之后处理权重嵌入的绑定。

reverse_bettertransformer

< >

( ) PreTrainedModel

返回

PreTrainedModel

转换回原始建模的模型。

还原从 to_bettertransformer() 的转换,以便使用原始建模,例如为了保存模型。

save_pretrained

< >

( save_directory: typing.Union[str, os.PathLike] is_main_process: bool = True state_dict: typing.Optional[dict] = None save_function: typing.Callable = <function save at 0x7f79c4b67760> push_to_hub: bool = False max_shard_size: typing.Union[int, str] = '5GB' safe_serialization: bool = True variant: typing.Optional[str] = None token: typing.Union[str, bool, NoneType] = None save_peft_format: bool = True **kwargs )

参数

  • save_directory (stros.PathLike) — 要保存到的目录。如果不存在,将创建该目录。
  • is_main_process (bool, 可选, 默认为 True) — 调用此方法的进程是否为主进程。在像 TPU 这样的分布式训练中很有用,并且需要在所有进程上调用此函数。在这种情况下,仅在主进程上设置 is_main_process=True,以避免竞争条件。
  • state_dict (torch.Tensor 的嵌套字典) — 要保存的模型的 state dictionary。默认为 self.state_dict(),但可以用于仅保存模型的部分,或者在恢复模型的 state dictionary 时需要采取特殊预防措施(例如,当使用模型并行性时)。
  • save_function (Callable) — 用于保存 state dictionary 的函数。在像 TPU 这样的分布式训练中很有用,当需要用另一种方法替换 torch.save 时。
  • push_to_hub (bool, 可选, 默认为 False) — 是否在保存模型后将其推送到 Hugging Face 模型中心。您可以使用 repo_id 指定要推送到的存储库(默认为您命名空间中 save_directory 的名称)。
  • max_shard_size (intstr, 可选, 默认为 "5GB") — 分片前的检查点的最大大小。检查点分片的大小将小于此大小。如果表示为字符串,则需要是数字后跟单位(如 "5MB")。我们默认设置为 5GB,以便模型能够在免费层级的 Google Colab 实例上轻松运行,而不会出现 CPU OOM 问题。

    如果模型的单个权重大于 max_shard_size,它将位于其自己的检查点分片中,该分片将大于 max_shard_size

  • safe_serialization (bool, 可选, 默认为 True) — 是否使用 safetensors 或传统的 PyTorch 方式(使用 pickle)保存模型。
  • variant (str, 可选) — 如果指定,权重将以 pytorch_model..bin 格式保存。
  • token (strbool, 可选) — 用作远程文件 HTTP 承载授权的 token。如果为 True 或未指定,将使用运行 huggingface-cli login 时生成的 token(存储在 ~/.huggingface 中)。
  • save_peft_format (bool, 可选, 默认为 True) — 为了向后兼容 PEFT 库,如果适配器权重附加到模型,则适配器的 state dict 的所有键都需要以 base_model.model 开头。高级用户可以通过将 save_peft_format 设置为 False 来禁用此行为。
  • kwargs (Dict[str, Any], 可选) — 传递给 push_to_hub() 方法的其他关键字参数。

将模型及其配置文件保存到目录,以便可以使用 from_pretrained() 类方法重新加载它。

set_input_embeddings

< >

( value: Module )

参数

  • value (nn.Module) — 一个将词汇表映射到隐藏状态的模块。

设置模型的输入嵌入。

tie_weights

< >

( )

连接输入嵌入和输出嵌入之间的权重。

如果在配置中设置了 torchscript 标志,则无法处理参数共享,因此我们改为克隆权重。

to_bettertransformer

< >

( ) PreTrainedModel

返回

PreTrainedModel

转换为 BetterTransformer 的模型。

转换模型以使用 PyTorch 的原生注意力实现,通过 Optimum 库集成到 Transformers 中。仅支持所有 Transformers 模型的一个子集。

PyTorch 的注意力快速路径允许通过内核融合和使用嵌套张量来加速推理。详细的基准测试可以在这篇博客文章中找到。

warn_if_padding_and_no_attention_mask

< >

( input_ids attention_mask )

如果 input_ids 似乎包含填充,并且没有给出 attention mask,则显示一次性警告。

自定义模型还应包含 _supports_assign_param_buffer,它确定 superfast init 是否可以应用于特定模型。如果 test_save_and_load_from_pretrained 失败,则表明您的模型需要此项。如果是这样,请将其设置为 False

ModuleUtilsMixin

class transformers.modeling_utils.ModuleUtilsMixin

< >

( )

一些用于 torch.nn.Modules 的实用程序,用作 mixin。

add_memory_hooks

< >

( )

在每个子模块前向传递前后添加一个内存钩子,以记录内存消耗的增加。

内存消耗的增加存储在每个模块的 mem_rss_diff 属性中,可以使用 model.reset_memory_hooks_state() 重置为零。

estimate_tokens

< >

( input_dict: typing.Dict[str, typing.Union[torch.Tensor, typing.Any]] ) int

参数

  • inputs (dict) — 模型输入。

返回

int

token 的总数。

辅助函数,用于根据模型输入估计 token 的总数。

floating_point_ops

< >

( input_dict: typing.Dict[str, typing.Union[torch.Tensor, typing.Any]] exclude_embeddings: bool = True ) int

参数

  • batch_size (int) — 前向传递的批次大小。
  • sequence_length (int) — 批次中每行 token 的数量。
  • exclude_embeddings (bool, 可选, 默认为 True) — 是否计算嵌入和 softmax 操作。

返回

int

浮点运算的数量。

获取此 transformer 模型在批次的前向和后向传递中的浮点运算次数(可选地,非嵌入)。默认近似值忽略了 token 数量的二次依赖性(如果 12 * d_model << sequence_length 则有效),如本文第 2.1 节所述。对于具有参数重用(例如 Albert 或 Universal Transformers)的 transformer,或者如果使用非常高的序列长度进行远程建模,则应覆盖此值。

get_extended_attention_mask

< >

( attention_mask: Tensor input_shape: typing.Tuple[int] device: device = None dtype: torch.float32 = None )

参数

  • attention_mask (torch.Tensor) — Mask,其中 1 表示要关注的 token,0 表示要忽略的 token。
  • input_shape (Tuple[int]) — 模型输入的形状。

使 attention mask 和因果 mask 可广播,以便忽略未来和被 mask 的 token。

get_head_mask

< >

( head_mask: typing.Optional[torch.Tensor] num_hidden_layers: int is_attention_chunked: bool = False )

参数

  • head_mask (torch.Tensor,形状为 [num_heads][num_hidden_layers x num_heads]可选) — 指示我们是否应保留 head 的 mask(1.0 表示保留,0.0 表示丢弃)。
  • num_hidden_layers (int) — 模型中隐藏层的数量。
  • is_attention_chunked (bool, 可选, 默认为 False) — 注意力分数是否分块计算。

如果需要,准备 head mask。

invert_attention_mask

< >

( encoder_attention_mask: Tensor ) torch.Tensor

参数

  • encoder_attention_mask (torch.Tensor) — 一个 attention mask。

返回

torch.Tensor

反转的 attention mask。

反转 attention mask(例如,切换 0. 和 1.)。

num_parameters

< >

( only_trainable: bool = False exclude_embeddings: bool = False ) int

参数

  • only_trainable (bool, 可选, 默认为 False) — 是否仅返回可训练参数的数量
  • exclude_embeddings (bool, 可选, 默认为 False) — 是否仅返回非嵌入参数的数量

返回

int

参数的数量。

获取模块中(可选地,可训练或非嵌入)参数的数量。

reset_memory_hooks_state

< >

( )

重置每个模块的 mem_rss_diff 属性 (参见 add_memory_hooks())。

TFPreTrainedModel

transformers.TFPreTrainedModel

< >

( config *inputs **kwargs )

所有 TF 模型的基础类。

TFPreTrainedModel 负责存储模型的配置,并处理加载、下载和保存模型的方法,以及所有模型通用的一些方法以

  • 调整输入嵌入的大小,
  • 剪枝自注意力头中的头。

类属性(被派生类覆盖)

  • config_class (PretrainedConfig) — PretrainedConfig 的子类,用作此模型架构的配置类。
  • base_model_prefix (str) — 一个字符串,指示与基模型关联的属性,在同一架构的派生类中,基模型之上添加模块。
  • main_input_name (str) — 模型主要输入的名称(对于 NLP 模型通常为 input_ids,对于视觉模型为 pixel_values,对于语音模型为 input_values)。

push_to_hub

< >

( repo_id: str use_temp_dir: Optional[bool] = None commit_message: Optional[str] = None private: Optional[bool] = None max_shard_size: Optional[Union[int, str]] = '10GB' token: Optional[Union[bool, str]] = None use_auth_token: Optional[Union[bool, str]] = None create_pr: bool = False **base_model_card_args )

参数

  • repo_id (str) — 您想要将模型推送到的仓库的名称。当推送到给定组织时,它应包含您的组织名称。
  • use_temp_dir (bool, 可选) — 是否使用临时目录来存储在推送到 Hub 之前保存的文件。如果不存在像 repo_id 这样的目录,则默认为 True,否则为 False
  • commit_message (str, 可选) — 推送时提交的消息。默认为 "Upload model"
  • private (bool, 可选) — 是否将仓库设为私有。如果为 None (默认),则仓库将是公开的,除非组织的默认设置为私有。如果仓库已存在,则此值将被忽略。
  • token (boolstr, 可选) — 用作远程文件的 HTTP Bearer 授权的令牌。如果为 True,将使用运行 huggingface-cli login 时生成的令牌(存储在 ~/.huggingface 中)。如果未指定 repo_url,则默认为 True
  • max_shard_size (intstr, 可选, 默认为 "10GB") — 仅适用于模型。分片前检查点的最大大小。检查点分片的大小将小于此大小。如果表示为字符串,则需要是数字后跟单位(例如 "5MB")。
  • create_pr (bool, 可选, 默认为 False) — 是否使用上传的文件创建 PR 或直接提交。

将模型文件上传到 🤗 Model Hub,同时在 repo_path_or_name 中同步仓库的本地克隆。

示例

from transformers import TFAutoModel

model = TFAutoModel.from_pretrained("google-bert/bert-base-cased")

# Push the model to your namespace with the name "my-finetuned-bert".
model.push_to_hub("my-finetuned-bert")

# Push the model to an organization with the name "my-finetuned-bert".
model.push_to_hub("huggingface/my-finetuned-bert")

can_generate

< >

( ) bool

返回

bool

此模型是否可以使用 .generate() 生成序列。

返回此模型是否可以使用 .generate() 生成序列。

compile

< >

( optimizer = 'rmsprop' loss = 'auto_with_warning' metrics = None loss_weights = None weighted_metrics = None run_eagerly = None steps_per_execution = None **kwargs )

这是一个轻量级的包装器,如果用户自己未指定损失函数,则将模型的损失输出头设置为损失。

create_model_card

< >

( output_dir model_name: str language: Optional[str] = None license: Optional[str] = None tags: Optional[str] = None finetuned_from: Optional[str] = None tasks: Optional[str] = None dataset_tags: Optional[Union[str, List[str]]] = None dataset: Optional[Union[str, List[str]]] = None dataset_args: Optional[Union[str, List[str]]] = None )

参数

  • output_dir (stros.PathLike) — 在其中创建模型卡片的文件夹。
  • model_name (str, 可选) — 模型的名称。
  • language (str, 可选) — 模型的语言(如果适用)
  • license (str, 可选) — 模型的许可证。如果提供给 Trainer 的原始模型来自 Hub 上的仓库,则默认为所用预训练模型的许可证。
  • tags (strList[str], 可选) — 要包含在模型卡片元数据中的一些标签。
  • finetuned_from (str, 可选) — 用于微调此模型的模型的名称(如果适用)。如果提供给 Trainer 的原始模型来自 Hub,则默认为原始模型的仓库名称。
  • tasks (strList[str], 可选) — 一个或多个任务标识符,包含在模型卡的元数据中。
  • dataset_tags (strList[str], 可选) — 一个或多个数据集标签,包含在模型卡的元数据中。
  • dataset (strList[str], 可选) — 一个或多个数据集标识符,包含在模型卡的元数据中。
  • dataset_args (strList[str], 可选) — 一个或多个数据集参数,包含在模型卡的元数据中。

使用 Trainer 中可用的信息创建模型卡的草稿。

from_pretrained

< >

( pretrained_model_name_or_path: Optional[Union[str, os.PathLike]] *model_args config: Optional[Union[PretrainedConfig, str, os.PathLike]] = None cache_dir: Optional[Union[str, os.PathLike]] = None ignore_mismatched_sizes: bool = False force_download: bool = False local_files_only: bool = False token: Optional[Union[str, bool]] = None revision: str = 'main' use_safetensors: bool = None **kwargs )

参数

  • pretrained_model_name_or_path (str, 可选) — 可以是以下之一:

    • 一个字符串,即托管在 huggingface.co 模型仓库中的预训练模型的模型 ID
    • 一个目录的路径,其中包含使用 save_pretrained() 保存的模型权重,例如, ./my_model_directory/
    • 一个指向 PyTorch state_dict 保存文件 的路径或 URL (例如, ./pt_model/pytorch_model.bin)。在这种情况下,from_pt 应该设置为 True,并且应该提供一个配置对象作为 config 参数。这种加载路径比使用提供的转换脚本将 PyTorch 模型转换为 TensorFlow 模型,然后再加载 TensorFlow 模型要慢。
    • None,如果您同时提供配置和状态字典 (分别使用关键字参数 configstate_dict)。
  • model_args (位置参数序列, 可选) — 所有剩余的位置参数将传递给底层模型的 __init__ 方法。
  • config (Union[PretrainedConfig, str], 可选) — 可以是以下之一:

    用于模型的配置,以代替自动加载的配置。在以下情况下,可以自动加载配置:

    • 该模型是由库提供的模型(使用预训练模型的模型 ID 字符串加载)。
    • 该模型是使用 save_pretrained() 保存的,并通过提供保存目录重新加载。
    • 通过提供本地目录作为 pretrained_model_name_or_path 加载模型,并且在目录中找到名为 config.json 的配置 JSON 文件。
  • from_pt (bool, 可选, 默认为 False) — 从 PyTorch state_dict 保存文件加载模型权重(请参阅 pretrained_model_name_or_path 参数的文档字符串)。
  • ignore_mismatched_sizes (bool, 可选, 默认为 False) — 是否在检查点中的某些权重与模型的权重大小不一致时引发错误(例如,如果您从具有 3 个标签的检查点实例化具有 10 个标签的模型)。
  • cache_dir (str, 可选) — 缓存下载的预训练模型配置的目录路径,如果不想使用标准缓存。
  • force_download (bool, 可选, 默认为 False) — 是否强制(重新)下载模型权重和配置文件,覆盖缓存的版本(如果存在)。
  • resume_download — 已弃用且被忽略。现在,所有下载在可能的情况下默认恢复。将在 Transformers v5 中删除。
  • proxies — (Dict[str, str], optional): 要按协议或端点使用的代理服务器字典,例如, {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}。代理用于每个请求。 output_loading_info(bool, *optional*, defaults to False`): 是否也返回一个字典,其中包含缺失的键、意外的键和错误消息。
  • local_files_only(bool, 可选, 默认为 False) — 是否仅查看本地文件(例如,不尝试下载模型)。
  • token (strbool, 可选) — 用作远程文件的 HTTP Bearer 授权的令牌。如果为 True,或未指定,将使用运行 huggingface-cli login 时生成的令牌(存储在 ~/.huggingface 中)。
  • revision (str, 可选, 默认为 "main") — 要使用的特定模型版本。它可以是分支名称、标签名称或提交 ID,因为我们使用基于 git 的系统来存储 huggingface.co 上的模型和其他工件,因此 revision 可以是 git 允许的任何标识符。

从预训练模型配置实例化预训练的 TF 2.0 模型。

警告Weights from XXX not initialized from pretrained model 表示 XXX 的权重不是与模型的其余部分一起预训练的。您需要使用下游微调任务来训练这些权重。

警告Weights from XXX not used in YYY 表示层 XXX 未被 YYY 使用,因此这些权重将被丢弃。

示例

>>> from transformers import BertConfig, TFBertModel

>>> # Download model and configuration from huggingface.co and cache.
>>> model = TFBertModel.from_pretrained("google-bert/bert-base-uncased")
>>> # Model was saved using *save_pretrained('./test/saved_model/')* (for example purposes, not runnable).
>>> model = TFBertModel.from_pretrained("./test/saved_model/")
>>> # Update configuration during loading.
>>> model = TFBertModel.from_pretrained("google-bert/bert-base-uncased", output_attentions=True)
>>> assert model.config.output_attentions == True
>>> # Loading from a Pytorch model file instead of a TensorFlow checkpoint (slower, for example purposes, not runnable).
>>> config = BertConfig.from_json_file("./pt_model/my_pt_model_config.json")
>>> model = TFBertModel.from_pretrained("./pt_model/my_pytorch_model.bin", from_pt=True, config=config)

get_bias

< >

( ) tf.Variable

返回

tf.Variable

表示偏置的权重,如果不是 LM 模型,则为 None。

附加到 LM 头的偏置字典。键表示偏置属性的名称。

get_head_mask

< >

( head_mask: tf.Tensor | None num_hidden_layers: int )

参数

  • head_mask (形状为 [num_heads][num_hidden_layers x num_heads]tf.Tensor, 可选) — 指示我们是否应保留头的掩码(1.0 表示保留,0.0 表示丢弃)。
  • num_hidden_layers (int) — 模型中隐藏层的数量。

如果需要,准备 head mask。

get_input_embeddings

< >

( ) tf.Variable

返回

tf.Variable

将词汇表映射到隐藏状态的嵌入层。

返回模型的输入嵌入层。

get_lm_head

< >

( ) keras.layers.Layer

返回

keras.layers.Layer

如果模型有 LM 头,则为 LM 头层;否则为 None。

LM Head 层。此方法必须由所有具有 lm 头的模型覆盖。

get_output_embeddings

< >

( ) tf.Variable

返回

tf.Variable

将词汇表映射到隐藏状态的新权重。

返回模型的输出嵌入。

get_output_layer_with_bias

< >

( ) keras.layers.Layer

返回

keras.layers.Layer

处理偏置的层,如果不是 LM 模型,则为 None。

获取处理偏置属性的层,以防模型具有 LM 头,其权重与嵌入层相关联

get_prefix_bias_name

< >

( ) str

返回

str

偏置的 _prefix 名称。

从模型名称到父层获取偏置的连接的 _prefix 名称

prepare_tf_dataset

< >

( dataset: 'datasets.Dataset' batch_size: int = 8 shuffle: bool = True tokenizer: Optional['PreTrainedTokenizerBase'] = None collate_fn: Optional[Callable] = None collate_fn_args: Optional[Dict[str, Any]] = None drop_remainder: Optional[bool] = None prefetch: bool = True ) Dataset

参数

  • dataset (Any) — 作为 tf.data.Dataset 封装的 [~datasets.Dataset]。
  • batch_size (int, 可选, 默认为 8) — 返回批次的大小。
  • shuffle (bool, 默认为 True) — 是否以随机顺序从数据集中返回样本。通常,训练数据集为 True,验证/测试数据集为 False
  • tokenizer (PreTrainedTokenizerBase, 可选) — 一个 PreTrainedTokenizer,将用于填充样本以创建批次。如果传递了特定的 collate_fn,则无效。
  • collate_fn (Callable, 可选) — 一个函数,用于将数据集中的样本整理成单个批次。如果没有提供 tokenizer,则默认为 DefaultDataCollator;如果传递了 tokenizer,则默认为 DataCollatorWithPadding
  • collate_fn_args (Dict[str, Any], 可选) — 一个字典,其中包含要传递给 collate_fn 的参数以及样本列表。
  • drop_remainder (bool, 可选) — 如果 batch_size 不能整除数据集长度,是否删除最后一个批次。默认为与 shuffle 相同的设置。
  • prefetch (bool, 默认为 True) — 是否在 tf.data 管道的末尾添加预取。这几乎总是有利于性能,但在极端情况下可以禁用。

返回

Dataset

一个 tf.data.Dataset,可以准备传递给 Keras API。

将 HuggingFace Dataset 封装为具有整理和批处理功能的 tf.data.Dataset。此方法旨在创建一个“即用型”数据集,可以直接传递给 Keras 方法(如 fit())而无需进一步修改。如果数据集中的列与模型的输入名称不匹配,则该方法将删除这些列。如果要指定要返回的列名,而不是使用与此模型匹配的名称,我们建议改用 Dataset.to_tf_dataset()

prune_heads

< >

( heads_to_prune )

参数

  • heads_to_prune (Dict[int, List[int]]) — 字典,键为选定的层索引 (int),关联的值是要在所述层中修剪的头的列表(int 列表)。例如,{1: [0, 2], 2: [2, 3]} 将修剪第 1 层的头 0 和 2,以及第 2 层的头 2 和 3。

剪枝基础模型的头。

register_for_auto_class

< >

( auto_class = 'TFAutoModel' )

参数

  • auto_class (strtype, 可选, 默认为 "TFAutoModel") — 用于注册此新模型的自动类。

将此类注册到给定的自动类。这应该仅用于自定义模型,因为库中的模型已经映射到自动类。

此 API 是实验性的,并且在接下来的版本中可能会有一些小的破坏性更改。

resize_token_embeddings

< >

( new_num_tokens: Optional[int] = None ) tf.Variablekeras.layers.Embedding

参数

  • new_num_tokens (int, 可选) — 嵌入矩阵中的新 token 数量。增加大小将在末尾添加新初始化的向量。减小大小将从末尾删除向量。如果未提供或为 None,则仅返回指向输入 token 的指针,而不执行任何操作。

返回

tf.Variablekeras.layers.Embedding

指向模型的输入 token 的指针。

如果 new_num_tokens != config.vocab_size,则调整模型的输入 token 嵌入矩阵的大小。

如果在模型类中存在 tie_weights() 方法,则在之后处理权重嵌入的绑定。

save_pretrained

< >

( save_directory saved_model = False version = 1 push_to_hub = False signatures = None max_shard_size: Union[int, str] = '5GB' create_pr: bool = False safe_serialization: bool = False token: Optional[Union[str, bool]] = None **kwargs )

参数

  • save_directory (str) — 要保存到的目录。如果目录不存在,则将创建该目录。
  • saved_model (bool, 可选, 默认为 False) — 模型是否也必须以 saved model 格式保存。
  • version (int, 可选, 默认为 1) — saved model 的版本。 saved model 需要进行版本控制,以便 TensorFlow Serving 正确加载,详见官方文档 https://tensorflowcn.cn/tfx/serving/serving_basic
  • push_to_hub (bool, 可选, 默认为 False) — 是否在保存模型后将其推送到 Hugging Face 模型 Hub。您可以使用 repo_id 指定要推送到的存储库(默认为您命名空间中 save_directory 的名称)。
  • signatures (dicttf.function, 可选) — 用于 serving 的模型签名。这将传递给 model.save() 的 signatures 参数。
  • max_shard_size (intstr, 可选, 默认为 "10GB") — 分片之前的检查点最大大小。检查点分片的大小将小于此大小。如果表示为字符串,则需要是数字后跟单位(例如 "5MB")。

    如果模型的单个权重大于 max_shard_size,它将位于自己的检查点分片中,该分片将大于 max_shard_size

  • create_pr (bool, 可选, 默认为 False) — 是否使用上传的文件创建 PR 或直接提交。
  • safe_serialization (bool, 可选, 默认为 False) — 是否使用 safetensors 或传统的 TensorFlow 方式(使用 h5)保存模型。
  • token (strbool, 可选) — 用作远程文件的 HTTP 持票人授权的 token。 如果为 True 或未指定,将使用运行 huggingface-cli login 时生成的 token(存储在 ~/.huggingface 中)。
  • kwargs (Dict[str, Any], 可选) — 传递给 push_to_hub() 方法的其他关键字参数。

将模型及其配置文件保存到目录,以便可以使用 from_pretrained() 类方法重新加载。

serving

( inputs )

参数

  • Method 用于模型 serving 的方法。没有特定的签名,但将被专门化为具体的 —
  • functions 当使用 save_pretrained 保存时。— inputs (Dict[str, tf.Tensor]): 保存模型的输入,以 tensors 字典的形式。

serving_output

< >

( output )

准备已保存模型的输出。如果需要特定的 serving 修改,可以重写此方法。

set_bias

< >

( value )

参数

  • value (Dict[tf.Variable]) — 所有附加到 LM 头的新的 bias。

设置 LM head 中的所有 bias。

set_input_embeddings

< >

( value )

参数

  • value (tf.Variable) — 将隐藏状态映射到词汇表的新权重。

设置模型的输入 embeddings

set_output_embeddings

< >

( value )

参数

  • value (tf.Variable) — 将隐藏状态映射到词汇表的新权重。

设置模型的输出 embeddings

test_step

< >

( data )

Keras 默认 train_step 的修改版本,可以正确处理模型输出与标签的匹配,并支持直接在 loss 输出头进行训练。此外,它确保在适当的情况下将输入键复制到标签。当使用虚拟 loss 时,它还会将标签键复制到输入字典中,以确保它们在正向传播期间可用于模型。

train_step

< >

( data )

Keras 默认 train_step 的修改版本,可以正确处理模型输出与标签的匹配,并支持直接在 loss 输出头进行训练。此外,它确保在适当的情况下将输入键复制到标签。当使用虚拟 loss 时,它还会将标签键复制到输入字典中,以确保它们在正向传播期间可用于模型。

TFModelUtilsMixin

class transformers.modeling_tf_utils.TFModelUtilsMixin

< >

( )

一些用于 keras.Model 的实用工具,用作 mixin。

num_parameters

< >

( only_trainable: bool = False ) int

参数

  • only_trainable (bool, 可选, 默认为 False) — 是否仅返回可训练参数的数量

返回

int

参数的数量。

获取模型中(可选地,可训练的)参数的数量。

FlaxPreTrainedModel

class transformers.FlaxPreTrainedModel

< >

( config: PretrainedConfig module: Module input_shape: typing.Tuple = (1, 1) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True )

所有模型的基础类。

FlaxPreTrainedModel 负责存储模型的配置,并处理加载、下载和保存模型的方法。

类属性(被派生类覆盖)

  • config_class (PretrainedConfig) — PretrainedConfig 的子类,用作此模型架构的配置类。
  • base_model_prefix (str) — 一个字符串,指示与基模型关联的属性,在同一架构的派生类中,基模型之上添加模块。
  • main_input_name (str) — 模型主要输入的名称(对于 NLP 模型通常为 input_ids,对于视觉模型为 pixel_values,对于语音模型为 input_values)。

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[int, str, NoneType] = '5GB' create_pr: bool = False safe_serialization: bool = True revision: str = None commit_description: str = None tags: typing.Optional[typing.List[str]] = None **deprecated_kwargs )

参数

  • repo_id (str) — 你想要将模型推送到的仓库的名称。当推送到给定的组织时,它应该包含你的组织名称。
  • use_temp_dir (bool, 可选) — 是否使用临时目录来存储保存的文件,然后再将其推送到 Hub。 如果没有像 repo_id 这样的目录,则默认为 True,否则为 False
  • commit_message (str, 可选) — 推送时提交的消息。 将默认为 "Upload model"
  • private (bool, 可选) — 是否将仓库设为私有。 如果为 None(默认值),则仓库将是公开的,除非组织的默认设置为私有。 如果仓库已存在,则忽略此值。
  • token (boolstr, 可选) — 用作远程文件的 HTTP Bearer 授权的 token。 如果为 True,将使用运行 huggingface-cli login 时生成的 token (存储在 ~/.huggingface 中)。 如果未指定 repo_url,则默认为 True
  • max_shard_size (intstr, 可选, 默认为 "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 FlaxAutoModel

model = FlaxAutoModel.from_pretrained("google-bert/bert-base-cased")

# Push the model to your namespace with the name "my-finetuned-bert".
model.push_to_hub("my-finetuned-bert")

# Push the model to an organization with the name "my-finetuned-bert".
model.push_to_hub("huggingface/my-finetuned-bert")

can_generate

< >

( )

返回此模型是否可以使用 .generate() 生成序列。 返回: bool: 此模型是否可以使用 .generate() 生成序列。

from_pretrained

< >

( pretrained_model_name_or_path: typing.Union[str, os.PathLike] dtype: dtype = <class 'jax.numpy.float32'> *model_args config: typing.Union[transformers.configuration_utils.PretrainedConfig, str, os.PathLike, NoneType] = None cache_dir: typing.Union[str, os.PathLike, NoneType] = None ignore_mismatched_sizes: bool = False force_download: bool = False local_files_only: bool = False token: typing.Union[str, bool, NoneType] = None revision: str = 'main' **kwargs )

参数

  • pretrained_model_name_or_path (stros.PathLike) — 可以是以下之一:

    • 一个字符串,huggingface.co 上模型仓库中托管的预训练模型的模型 ID
    • 一个目录的路径,其中包含使用 save_pretrained() 保存的模型权重,例如,./my_model_directory/
    • 一个 pt 索引检查点文件的路径或 URL (例如,./tf_model/model.ckpt.index)。在这种情况下,应将 from_pt 设置为 True
  • dtype (jax.numpy.dtype, 可选, 默认为 jax.numpy.float32) — 计算的数据类型。 可以是 jax.numpy.float32, jax.numpy.float16 (在 GPU 上) 和 jax.numpy.bfloat16 (在 TPU 上) 之一。

    这可以用于在 GPU 或 TPU 上启用混合精度训练或半精度推理。 如果指定,则所有计算将使用给定的 dtype 执行。

    请注意,这仅指定计算的 dtype,不影响模型参数的 dtype。

    如果您希望更改模型参数的 dtype,请参阅 to_fp16()to_bf16()

  • model_args (位置参数序列, 可选) — 所有剩余的位置参数将传递给底层模型的 __init__ 方法。
  • config (Union[PretrainedConfig, str, os.PathLike], 可选) — 可以是以下之一:

    用于模型的配置,以代替自动加载的配置。 当以下情况时,可以自动加载配置:

    • 模型是由库提供的模型(使用预训练模型的模型 ID 字符串加载)。
    • 模型是使用 save_pretrained() 保存的,并通过提供保存目录重新加载。
    • 模型通过提供本地目录作为 pretrained_model_name_or_path 加载,并且在目录中找到名为 config.json 的配置 JSON 文件。
  • cache_dir (Union[str, os.PathLike], 可选) — 如果应避免使用标准缓存,则预训练模型配置应缓存到的目录的路径。
  • from_pt (bool, 可选, 默认为 False) — 从 PyTorch 检查点保存文件加载模型权重 (请参阅 pretrained_model_name_or_path 参数的文档字符串)。
  • ignore_mismatched_sizes (bool, 可选, 默认为 False) — 是否在检查点中的某些权重与模型的权重大小不一致时引发错误 (例如,如果您从具有 3 个标签的检查点实例化具有 10 个标签的模型)。
  • force_download (bool, 可选, 默认为 False) — 是否强制(重新)下载模型权重和配置文件,覆盖缓存的版本(如果存在)。
  • resume_download — 已弃用且被忽略。 现在,所有下载在可能的情况下都默认恢复。 将在 Transformers v5 中删除。
  • proxies (Dict[str, str], 可选) — 按协议或端点使用的代理服务器字典,例如, {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}。 代理用于每个请求。
  • local_files_only(bool, 可选, 默认为 False) — 是否仅查看本地文件(即,不尝试下载模型)。
  • token (strbool, 可选) — 用作远程文件的 HTTP Bearer 授权的令牌。 如果为 True,或未指定,将使用运行 huggingface-cli login 时生成的令牌 (存储在 ~/.huggingface 中)。
  • revision (str, 可选, 默认为 "main") — 要使用的特定模型版本。 它可以是分支名称、标签名称或提交 ID,因为我们使用基于 git 的系统来存储 huggingface.co 上的模型和其他工件,因此 revision 可以是 git 允许的任何标识符。

从预训练模型配置实例化预训练的 flax 模型。

警告Weights from XXX not initialized from pretrained model 表示 XXX 的权重不是与模型的其余部分一起预训练的。您需要使用下游微调任务来训练这些权重。

警告Weights from XXX not used in YYY 表示层 XXX 未被 YYY 使用,因此这些权重将被丢弃。

示例

>>> from transformers import BertConfig, FlaxBertModel

>>> # Download model and configuration from huggingface.co and cache.
>>> model = FlaxBertModel.from_pretrained("google-bert/bert-base-cased")
>>> # Model was saved using *save_pretrained('./test/saved_model/')* (for example purposes, not runnable).
>>> model = FlaxBertModel.from_pretrained("./test/saved_model/")
>>> # Loading from a PyTorch checkpoint file instead of a PyTorch model (slower, for example purposes, not runnable).
>>> config = BertConfig.from_json_file("./pt_model/config.json")
>>> model = FlaxBertModel.from_pretrained("./pt_model/pytorch_model.bin", from_pt=True, config=config)

load_flax_sharded_weights

< >

( shard_files ) Dict

参数

  • shard_files (List[str] — 要加载的分片文件列表。

返回

Dict

模型参数的嵌套字典,格式应为 flax 模型期望的格式: {'model': {'params': {'...'}}}

这与 flax.serialization.from_bytes (https:lax.readthedocs.io/en/latest/_modules/flax/serialization.html#from_bytes) 相同,但用于分片检查点。

此加载操作高效执行:每个检查点分片在 RAM 中逐个加载,并在加载到模型后删除。

register_for_auto_class

< >

( auto_class = 'FlaxAutoModel' )

参数

  • auto_class (strtype, 可选, 默认为 "FlaxAutoModel") — 用于注册此新模型的自动类。

将此类注册到给定的自动类。这应该仅用于自定义模型,因为库中的模型已经映射到自动类。

此 API 是实验性的,并且在接下来的版本中可能会有一些小的破坏性更改。

save_pretrained

< >

( save_directory: typing.Union[str, os.PathLike] params = None push_to_hub = False max_shard_size = '10GB' token: typing.Union[str, bool, NoneType] = None safe_serialization: bool = False **kwargs )

参数

  • save_directory (stros.PathLike) — 要保存到的目录。 如果不存在,将创建该目录。
  • push_to_hub (bool, optional, defaults to False) — 是否在保存模型后将其推送到 Hugging Face 模型 Hub。您可以使用 repo_id 指定要推送到的仓库(默认为您命名空间中 save_directory 的名称)。
  • max_shard_size (intstr, optional, defaults to "10GB") — 分片之前的检查点最大大小。检查点分片后的每个分片大小将低于此大小。如果表示为字符串,则需要是数字后跟单位(例如 "5MB")。

    如果模型的单个权重大于 max_shard_size,它将位于其自身的检查点分片中,该分片将大于 max_shard_size

  • token (strbool, optional) — 用作远程文件 HTTP Bearer 授权的令牌。如果为 True,或未指定,将使用运行 huggingface-cli login 时生成的令牌(存储在 ~/.huggingface 中)。
  • kwargs (Dict[str, Any], optional) — 传递给 push_to_hub() 方法的附加关键字参数。
  • safe_serialization (bool, optional, defaults to False) — 是否使用 safetensors 或通过 msgpack 保存模型。

将模型及其配置文件保存到目录,以便可以使用 [from_pretrained()](/docs/transformers/v4.50.0/en/main_classes/model#transformers.FlaxPreTrainedModel.from_pretrained) 类方法重新加载。

to_bf16

< >

( params: typing.Union[typing.Dict, flax.core.frozen_dict.FrozenDict] mask: typing.Any = None )

参数

  • params (Union[Dict, FrozenDict]) — 模型参数的 PyTree
  • mask (Union[Dict, FrozenDict]) — 具有与 params 树相同结构的 PyTree。叶子应该是布尔值,对于您想要转换的参数应为 True,对于您想要跳过的参数应为 False

将浮点 params 转换为 jax.numpy.bfloat16。这将返回一个新的 params 树,并且不会就地转换 params

此方法可以在 TPU 上使用,以显式地将模型参数转换为 bfloat16 精度,以进行全半精度训练,或者将权重保存为 bfloat16 以进行推理,从而节省内存并提高速度。

示例

>>> from transformers import FlaxBertModel

>>> # load model
>>> model = FlaxBertModel.from_pretrained("google-bert/bert-base-cased")
>>> # By default, the model parameters will be in fp32 precision, to cast these to bfloat16 precision
>>> model.params = model.to_bf16(model.params)
>>> # If you want don't want to cast certain parameters (for example layer norm bias and scale)
>>> # then pass the mask as follows
>>> from flax import traverse_util

>>> model = FlaxBertModel.from_pretrained("google-bert/bert-base-cased")
>>> flat_params = traverse_util.flatten_dict(model.params)
>>> mask = {
...     path: (path[-2] != ("LayerNorm", "bias") and path[-2:] != ("LayerNorm", "scale"))
...     for path in flat_params
... }
>>> mask = traverse_util.unflatten_dict(mask)
>>> model.params = model.to_bf16(model.params, mask)

to_fp16

< >

( params: typing.Union[typing.Dict, flax.core.frozen_dict.FrozenDict] mask: typing.Any = None )

参数

  • params (Union[Dict, FrozenDict]) — 模型参数的 PyTree
  • mask (Union[Dict, FrozenDict]) — 具有与 params 树相同结构的 PyTree。叶子应该是布尔值,对于您想要转换的参数应为 True,对于您想要跳过的参数应为 False

将浮点 params 转换为 jax.numpy.float16。这将返回一个新的 params 树,并且不会就地转换 params

此方法可以在 GPU 上使用,以显式地将模型参数转换为 float16 精度,以进行全半精度训练,或者将权重保存为 float16 以进行推理,从而节省内存并提高速度。

示例

>>> from transformers import FlaxBertModel

>>> # load model
>>> model = FlaxBertModel.from_pretrained("google-bert/bert-base-cased")
>>> # By default, the model params will be in fp32, to cast these to float16
>>> model.params = model.to_fp16(model.params)
>>> # If you want don't want to cast certain parameters (for example layer norm bias and scale)
>>> # then pass the mask as follows
>>> from flax import traverse_util

>>> model = FlaxBertModel.from_pretrained("google-bert/bert-base-cased")
>>> flat_params = traverse_util.flatten_dict(model.params)
>>> mask = {
...     path: (path[-2] != ("LayerNorm", "bias") and path[-2:] != ("LayerNorm", "scale"))
...     for path in flat_params
... }
>>> mask = traverse_util.unflatten_dict(mask)
>>> model.params = model.to_fp16(model.params, mask)

to_fp32

< >

( params: typing.Union[typing.Dict, flax.core.frozen_dict.FrozenDict] mask: typing.Any = None )

参数

  • params (Union[Dict, FrozenDict]) — 模型参数的 PyTree
  • mask (Union[Dict, FrozenDict]) — 具有与 params 树相同结构的 PyTree。叶子应该是布尔值,对于您想要转换的参数应为 True,对于您想要跳过的参数应为 False

将浮点 params 转换为 jax.numpy.float32。此方法可用于显式地将模型参数转换为 fp32 精度。这将返回一个新的 params 树,并且不会就地转换 params

示例

>>> from transformers import FlaxBertModel

>>> # Download model and configuration from huggingface.co
>>> model = FlaxBertModel.from_pretrained("google-bert/bert-base-cased")
>>> # By default, the model params will be in fp32, to illustrate the use of this method,
>>> # we'll first cast to fp16 and back to fp32
>>> model.params = model.to_f16(model.params)
>>> # now cast back to fp32
>>> model.params = model.to_fp32(model.params)

推送到 Hub

class transformers.utils.PushToHubMixin

< >

( )

一个包含将模型或 tokenizer 推送到 hub 功能的 Mixin。

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[int, str, NoneType] = '5GB' create_pr: bool = False safe_serialization: bool = True revision: str = None commit_description: str = None tags: typing.Optional[typing.List[str]] = None **deprecated_kwargs )

参数

  • repo_id (str) — 您想要将 {object} 推送到的仓库名称。当推送到给定组织时,它应包含您的组织名称。
  • use_temp_dir (bool, optional) — 是否使用临时目录来存储保存的文件,然后再将其推送到 Hub。如果没有像 repo_id 这样的目录名称,则默认为 True,否则为 False
  • commit_message (str, optional) — 推送时提交的消息。默认为 "Upload {object}"
  • private (bool, optional) — 是否将仓库设为私有。如果为 None(默认值),则仓库将是公开的,除非组织的默认设置为私有。如果仓库已存在,则此值将被忽略。
  • token (boolstr, optional) — 用作远程文件的 HTTP Bearer 授权的令牌。如果为 True,将使用运行 huggingface-cli login 时生成的令牌(存储在 ~/.huggingface 中)。如果未指定 repo_url,则默认为 True
  • max_shard_size (intstr, optional, defaults to "5GB") — 仅适用于模型。分片之前的检查点最大大小。检查点分片后的每个分片大小将低于此大小。如果表示为字符串,则需要是数字后跟单位(例如 "5MB")。我们将其默认设置为 "5GB",以便用户可以在免费层的 Google Colab 实例上轻松加载模型,而不会出现任何 CPU OOM 问题。
  • create_pr (bool, optional, defaults to False) — 是否创建包含上传文件的 PR 或直接提交。
  • safe_serialization (bool, optional, defaults to True) — 是否将模型权重转换为 safetensors 格式以实现更安全的序列化。
  • revision (str, optional) — 将上传的文件推送到的分支。
  • commit_description (str, optional) — 将要创建的提交的描述
  • tags (List[str], optional) — 要推送到 Hub 上的标签列表。

将 {object_files} 上传到 🤗 模型 Hub。

示例

from transformers import {object_class}

{object} = {object_class}.from_pretrained("google-bert/bert-base-cased")

# Push the {object} to your namespace with the name "my-finetuned-bert".
{object}.push_to_hub("my-finetuned-bert")

# Push the {object} to an organization with the name "my-finetuned-bert".
{object}.push_to_hub("huggingface/my-finetuned-bert")

分片检查点

transformers.modeling_utils.load_sharded_checkpoint

< >

( model folder strict = True prefer_safe = True ) NamedTuple

参数

  • model (torch.nn.Module) — 要加载检查点的模型。
  • folder (stros.PathLike) — 包含分片检查点的文件夹路径。
  • strict (bool, *可选*, 默认为 True) — 是否严格强制模型状态字典中的键与分片检查点中的键匹配。
  • prefer_safe (bool, *可选*, 默认为 False) — 如果检查点中同时存在 safetensors 和 PyTorch 保存文件,并且 `prefer_safe` 为 `True`,则将加载 safetensors 文件。否则,在可能的情况下始终加载 PyTorch 文件。

返回

命名元组

包含 missing_keysunexpected_keys 字段的命名元组

  • missing_keys 是一个字符串列表,其中包含缺失的键
  • unexpected_keys 是一个字符串列表,其中包含意外的键

这与 torch.nn.Module.load_state_dict 相同,但用于分片检查点。

此加载操作高效执行:每个检查点分片在 RAM 中逐个加载,并在加载到模型后删除。

< > 在 GitHub 上更新