Transformers 文档
模型
并获得增强的文档体验
开始使用
模型
基类 PreTrainedModel、 TFPreTrainedModel 和 FlaxPreTrainedModel 实现了从本地文件或目录加载/保存模型,或者从库提供的预训练模型配置(从 HuggingFace 的 AWS S3 仓库下载)加载/保存模型的常用方法。
PreTrainedModel 和 TFPreTrainedModel 还实现了一些所有模型通用的方法,用于
- 当词汇表添加新 tokens 时调整输入 token 嵌入的大小
- 剪枝模型的注意力头。
每个模型通用的其他方法在 ModuleUtilsMixin(对于 PyTorch 模型)和 ~modeling_tf_utils.TFModuleUtilsMixin
(对于 TensorFlow 模型)中定义,或者对于文本生成,在 GenerationMixin(对于 PyTorch 模型)、TFGenerationMixin(对于 TensorFlow 模型)和 FlaxGenerationMixin(对于 Flax/JAX 模型)中定义。
PreTrainedModel
所有模型的基础类。
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
< source >( 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 (
bool
或str
, optional) — 用作远程文件的 HTTP bearer 授权的令牌。如果为True
,将使用运行huggingface-cli login
时生成的令牌(存储在~/.huggingface
中)。如果未指定repo_url
,则默认为True
。 - max_shard_size (
int
或str
, 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
< source >( tags: typing.Union[typing.List[str], str] )
将自定义标签添加到推送到 Hugging Face Hub 的模型中。不会覆盖模型中已有的标签。
返回此模型是否可以从 GenerationMixin
中使用 .generate()
生成序列。
在底层,对于此函数返回 True 的类,会触发一些特定于生成的更改:例如,模型实例将具有填充的 generation_config
属性。
如果模型通过支持反量化的量化方法进行了量化,则可能对模型进行反量化。
移除 _require_grads_hook
。
启用输入嵌入的梯度。这对于在保持模型权重固定的同时微调适配器权重非常有用。
from_pretrained
< source >( 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 (
str
或os.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
,如果您同时提供配置和状态字典(分别使用关键字参数config
和state_dict
)。
- model_args (位置参数序列, 可选) — 所有剩余的位置参数将传递给底层模型的
__init__
方法。 - config (
Union[PretrainedConfig, str, os.PathLike]
, 可选) — 可以是以下之一:- 从 PretrainedConfig 派生的类的实例,
- 作为 from_pretrained() 的有效输入的字符串或路径。
用于模型的配置,而不是自动加载的配置。当以下情况时,可以自动加载配置:
- 模型是库提供的模型(使用预训练模型的模型 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 (
str
或bool
, 可选) — 用作远程文件的 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 (
str
或torch.dtype
, optional) — 覆盖默认的torch.dtype
,并以指定的dtype
加载模型。不同的选项如下:-
torch.float16
或torch.bfloat16
或torch.float
:以指定的dtype
加载,忽略模型的config.torch_dtype
(如果存在)。如果未指定- 模型将以
torch.float
(fp32) 加载。
- 模型将以
-
"auto"
- 将尝试使用模型config.json
文件中的torch_dtype
条目。如果未找到此条目,则接下来检查检查点中第一个浮点类型的权重的dtype
,并将其用作dtype
。这将使用模型在训练结束时保存的dtype
加载模型。它不能用作模型训练方式的指标。因为它可能以半精度 dtype 之一进行训练,但以 fp32 保存。 -
作为有效
torch.dtype
的字符串。例如,“float32”以torch.float32
加载模型,“float16”以torch.float16
加载模型,依此类推。
对于某些模型,它们训练时使用的
dtype
是未知的 - 您可以尝试查看模型的论文或联系作者,要求他们将此信息添加到模型的卡片中,并在 Hub 上将torch_dtype
条目插入到config.json
中。 -
- device_map (
str
或Dict[str, Union[int, str, torch.device]]
或int
或torch.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 (
str
或os.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_4bit
和load_in_8bit
,它们由 QuantizationConfigParser 解析。仅支持 bitsandbytes 量化,不推荐使用。考虑将所有此类参数插入到 quantization_config 中。 - subfolder (
str
, optional, 默认为""
) — 如果相关文件位于 huggingface.co 上的模型仓库的子文件夹中,您可以在此处指定文件夹名称。 - variant (
str
, optional) — 如果指定,则从variant
文件名加载权重,例如 pytorch_model..bin。当使用 from_tf
或from_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 内存加载模型
以下是它的工作原理
- 保存我们拥有的 state_dict 键
- 在创建模型之前删除 state_dict,因为后者占用 1 倍模型大小的 CPU 内存
- 在实例化模型后,切换到 meta 设备,所有将从加载的 state_dict 替换的参数/缓冲区
- 第二次加载 state_dict
- 从 state_dict 替换参数/缓冲区
目前,它无法处理 deepspeed ZeRO stage 3,并忽略加载错误
返回 self.__call__
的 torch.compile
'd 版本。这对于在推理期间动态选择非编译/编译的 forward
非常有用,特别是用于在预填充(我们不想使用编译版本以避免使用新形状重新计算图)和迭代解码(我们希望编译版本具有静态形状的速度提升)之间切换。
返回模型的输入嵌入。
get_memory_footprint
< source >( return_buffers = True )
参数
- return_buffers (
bool
, optional, 默认为True
) — 是否在内存占用计算中返回缓冲区张量的大小。缓冲区是不需要梯度且未注册为参数的张量。例如,批量归一化层中的均值和标准差。请参阅:https://discuss.pytorch.org/t/what-pytorch-means-by-buffers/120266/2
获取模型的内存占用量。这将返回当前模型内存占用量(以字节为单位)。有助于基准测试当前模型的内存占用量并设计一些测试。解决方案灵感来自 PyTorch 讨论:https://discuss.pytorch.org/t/gpu-memory-that-model-uses/56822/2
返回模型的输出嵌入。
如果存在,则返回由 target
给出的参数或缓冲区,否则抛出错误。这在一个方便的函数中组合了 get_parameter()
和 get_buffer()
。请注意,它仅在 target
是模型的叶节点时才有效。
gradient_checkpointing_enable
< source >( gradient_checkpointing_kwargs = None )
为当前模型激活梯度检查点。
请注意,在其他框架中,此功能可以称为“激活检查点”或“检查点激活”。
我们传递模块的 __call__
方法而不是 forward
,因为 __call__
附加了模块的所有钩子。https://discuss.pytorch.org/t/any-different-between-model-input-and-model-forward-input/3690/2
如果需要,进行剪枝并可能初始化权重。如果使用自定义的 PreTrainedModel
,则需要在 _init_weights
中实现任何初始化逻辑。
在每个 Transformer 模型初始化结束时执行的方法,用于执行需要模型模块正确初始化的代码(例如权重初始化)。
prune_heads
< source >( heads_to_prune: typing.Dict[int, typing.List[int]] )
剪枝基础模型的头。
register_for_auto_class
< source >( auto_class = 'AutoModel' )
将此类注册到给定的自动类。这应该仅用于自定义模型,因为库中的模型已经映射到自动类。
此 API 是实验性的,并且在接下来的版本中可能会有一些小的破坏性更改。
resize_token_embeddings
< source >( 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
,则仅返回指向模型的输入 tokentorch.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()
方法,则在之后处理权重嵌入的绑定。
还原从 to_bettertransformer() 的转换,以便使用原始建模,例如为了保存模型。
save_pretrained
< source >( 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 (
str
或os.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 (
int
或str
, 可选, 默认为"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 (
str
或bool
, 可选) — 用作远程文件 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() 类方法重新加载它。
设置模型的输入嵌入。
转换模型以使用 PyTorch 的原生注意力实现,通过 Optimum 库集成到 Transformers 中。仅支持所有 Transformers 模型的一个子集。
如果 input_ids 似乎包含填充,并且没有给出 attention mask,则显示一次性警告。
自定义模型还应包含 _supports_assign_param_buffer
,它确定 superfast init 是否可以应用于特定模型。如果 test_save_and_load_from_pretrained
失败,则表明您的模型需要此项。如果是这样,请将其设置为 False
。
ModuleUtilsMixin
一些用于 torch.nn.Modules
的实用程序,用作 mixin。
在每个子模块前向传递前后添加一个内存钩子,以记录内存消耗的增加。
内存消耗的增加存储在每个模块的 mem_rss_diff
属性中,可以使用 model.reset_memory_hooks_state()
重置为零。
estimate_tokens
< source >( input_dict: typing.Dict[str, typing.Union[torch.Tensor, typing.Any]] ) → int
辅助函数,用于根据模型输入估计 token 的总数。
floating_point_ops
< source >( input_dict: typing.Dict[str, typing.Union[torch.Tensor, typing.Any]] exclude_embeddings: bool = True ) → int
获取此 transformer 模型在批次的前向和后向传递中的浮点运算次数(可选地,非嵌入)。默认近似值忽略了 token 数量的二次依赖性(如果 12 * d_model << sequence_length
则有效),如本文第 2.1 节所述。对于具有参数重用(例如 Albert 或 Universal Transformers)的 transformer,或者如果使用非常高的序列长度进行远程建模,则应覆盖此值。
get_extended_attention_mask
< source >( attention_mask: Tensor input_shape: typing.Tuple[int] device: device = None dtype: torch.float32 = None )
使 attention mask 和因果 mask 可广播,以便忽略未来和被 mask 的 token。
get_head_mask
< source >( head_mask: typing.Optional[torch.Tensor] num_hidden_layers: int is_attention_chunked: bool = False )
如果需要,准备 head mask。
invert_attention_mask
< source >( encoder_attention_mask: Tensor ) → torch.Tensor
反转 attention mask(例如,切换 0. 和 1.)。
num_parameters
< source >( only_trainable: bool = False exclude_embeddings: bool = False ) → int
获取模块中(可选地,可训练或非嵌入)参数的数量。
重置每个模块的 mem_rss_diff
属性 (参见 add_memory_hooks())。
TFPreTrainedModel
所有 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 (
bool
或str
, 可选) — 用作远程文件的 HTTP Bearer 授权的令牌。如果为True
,将使用运行huggingface-cli login
时生成的令牌(存储在~/.huggingface
中)。如果未指定repo_url
,则默认为True
。 - max_shard_size (
int
或str
, 可选, 默认为"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")
返回此模型是否可以使用 .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 (
str
或os.PathLike
) — 在其中创建模型卡片的文件夹。 - model_name (
str
, 可选) — 模型的名称。 - language (
str
, 可选) — 模型的语言(如果适用) - license (
str
, 可选) — 模型的许可证。如果提供给Trainer
的原始模型来自 Hub 上的仓库,则默认为所用预训练模型的许可证。 - tags (
str
或List[str]
, 可选) — 要包含在模型卡片元数据中的一些标签。 - finetuned_from (
str
, 可选) — 用于微调此模型的模型的名称(如果适用)。如果提供给Trainer
的原始模型来自 Hub,则默认为原始模型的仓库名称。 - tasks (
str
或List[str]
, 可选) — 一个或多个任务标识符,包含在模型卡的元数据中。 - dataset_tags (
str
或List[str]
, 可选) — 一个或多个数据集标签,包含在模型卡的元数据中。 - dataset (
str
或List[str]
, 可选) — 一个或多个数据集标识符,包含在模型卡的元数据中。 - dataset_args (
str
或List[str]
, 可选) — 一个或多个数据集参数,包含在模型卡的元数据中。
使用 Trainer
中可用的信息创建模型卡的草稿。
from_pretrained
< source >( 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
,如果您同时提供配置和状态字典 (分别使用关键字参数config
和state_dict
)。
- model_args (位置参数序列, 可选) — 所有剩余的位置参数将传递给底层模型的
__init__
方法。 - config (
Union[PretrainedConfig, str]
, 可选) — 可以是以下之一:- 一个从 PretrainedConfig 派生的类的实例,
- 一个作为 from_pretrained() 的有效输入的字符串。
用于模型的配置,以代替自动加载的配置。在以下情况下,可以自动加载配置:
- 该模型是由库提供的模型(使用预训练模型的模型 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 (
str
或bool
, 可选) — 用作远程文件的 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)
附加到 LM 头的偏置字典。键表示偏置属性的名称。
get_head_mask
< source >( head_mask: tf.Tensor | None num_hidden_layers: int )
如果需要,准备 head mask。
返回模型的输入嵌入层。
LM Head 层。此方法必须由所有具有 lm 头的模型覆盖。
返回模型的输出嵌入。
get_output_layer_with_bias
< source >( ) → keras.layers.Layer
返回
keras.layers.Layer
处理偏置的层,如果不是 LM 模型,则为 None。
获取处理偏置属性的层,以防模型具有 LM 头,其权重与嵌入层相关联
从模型名称到父层获取偏置的连接的 _prefix 名称
prepare_tf_dataset
< source >( 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
< source >( heads_to_prune )
剪枝基础模型的头。
register_for_auto_class
< source >( auto_class = 'TFAutoModel' )
将此类注册到给定的自动类。这应该仅用于自定义模型,因为库中的模型已经映射到自动类。
此 API 是实验性的,并且在接下来的版本中可能会有一些小的破坏性更改。
resize_token_embeddings
< source >( new_num_tokens: Optional[int] = None ) → tf.Variable
或 keras.layers.Embedding
如果 new_num_tokens != config.vocab_size
,则调整模型的输入 token 嵌入矩阵的大小。
如果在模型类中存在 tie_weights()
方法,则在之后处理权重嵌入的绑定。
save_pretrained
< source >( 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 (
dict
或tf.function
, 可选) — 用于 serving 的模型签名。这将传递给 model.save() 的signatures
参数。 - max_shard_size (
int
或str
, 可选, 默认为"10GB"
) — 分片之前的检查点最大大小。检查点分片的大小将小于此大小。如果表示为字符串,则需要是数字后跟单位(例如"5MB"
)。如果模型的单个权重大于
max_shard_size
,它将位于自己的检查点分片中,该分片将大于max_shard_size
。 - create_pr (
bool
, 可选, 默认为False
) — 是否使用上传的文件创建 PR 或直接提交。 - safe_serialization (
bool
, 可选, 默认为False
) — 是否使用safetensors
或传统的 TensorFlow 方式(使用h5
)保存模型。 - token (
str
或bool
, 可选) — 用作远程文件的 HTTP 持票人授权的 token。 如果为True
或未指定,将使用运行huggingface-cli login
时生成的 token(存储在~/.huggingface
中)。 - kwargs (
Dict[str, Any]
, 可选) — 传递给 push_to_hub() 方法的其他关键字参数。
将模型及其配置文件保存到目录,以便可以使用 from_pretrained() 类方法重新加载。
准备已保存模型的输出。如果需要特定的 serving 修改,可以重写此方法。
设置 LM head 中的所有 bias。
设置模型的输入 embeddings
设置模型的输出 embeddings
Keras 默认 train_step
的修改版本,可以正确处理模型输出与标签的匹配,并支持直接在 loss 输出头进行训练。此外,它确保在适当的情况下将输入键复制到标签。当使用虚拟 loss 时,它还会将标签键复制到输入字典中,以确保它们在正向传播期间可用于模型。
Keras 默认 train_step
的修改版本,可以正确处理模型输出与标签的匹配,并支持直接在 loss 输出头进行训练。此外,它确保在适当的情况下将输入键复制到标签。当使用虚拟 loss 时,它还会将标签键复制到输入字典中,以确保它们在正向传播期间可用于模型。
TFModelUtilsMixin
一些用于 keras.Model
的实用工具,用作 mixin。
num_parameters
< source >( only_trainable: bool = False ) → int
获取模型中(可选地,可训练的)参数的数量。
FlaxPreTrainedModel
class transformers.FlaxPreTrainedModel
< source >( 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
< source >( 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 (
bool
或str
, 可选) — 用作远程文件的 HTTP Bearer 授权的 token。 如果为True
,将使用运行huggingface-cli login
时生成的 token (存储在~/.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 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")
返回此模型是否可以使用 .generate()
生成序列。 返回: bool
: 此模型是否可以使用 .generate()
生成序列。
from_pretrained
< source >( 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 (
str
或os.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。
- model_args (位置参数序列, 可选) — 所有剩余的位置参数将传递给底层模型的
__init__
方法。 - config (
Union[PretrainedConfig, str, os.PathLike]
, 可选) — 可以是以下之一:- PretrainedConfig 派生类的实例,
- 作为 from_pretrained() 的输入的有效字符串或路径。
用于模型的配置,以代替自动加载的配置。 当以下情况时,可以自动加载配置:
- 模型是由库提供的模型(使用预训练模型的模型 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 (
str
或bool
, 可选) — 用作远程文件的 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
< source >( shard_files ) → Dict
这与 flax.serialization.from_bytes
(https:lax.readthedocs.io/en/latest/_modules/flax/serialization.html#from_bytes) 相同,但用于分片检查点。
此加载操作高效执行:每个检查点分片在 RAM 中逐个加载,并在加载到模型后删除。
register_for_auto_class
< source >( auto_class = 'FlaxAutoModel' )
将此类注册到给定的自动类。这应该仅用于自定义模型,因为库中的模型已经映射到自动类。
此 API 是实验性的,并且在接下来的版本中可能会有一些小的破坏性更改。
save_pretrained
< source >( 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 (
str
或os.PathLike
) — 要保存到的目录。 如果不存在,将创建该目录。 - push_to_hub (
bool
, optional, defaults toFalse
) — 是否在保存模型后将其推送到 Hugging Face 模型 Hub。您可以使用repo_id
指定要推送到的仓库(默认为您命名空间中save_directory
的名称)。 - max_shard_size (
int
或str
, optional, defaults to"10GB"
) — 分片之前的检查点最大大小。检查点分片后的每个分片大小将低于此大小。如果表示为字符串,则需要是数字后跟单位(例如"5MB"
)。如果模型的单个权重大于
max_shard_size
,它将位于其自身的检查点分片中,该分片将大于max_shard_size
。 - token (
str
或bool
, optional) — 用作远程文件 HTTP Bearer 授权的令牌。如果为True
,或未指定,将使用运行huggingface-cli login
时生成的令牌(存储在~/.huggingface
中)。 - kwargs (
Dict[str, Any]
, optional) — 传递给 push_to_hub() 方法的附加关键字参数。 - safe_serialization (
bool
, optional, defaults toFalse
) — 是否使用safetensors
或通过 msgpack 保存模型。
将模型及其配置文件保存到目录,以便可以使用 [from_pretrained()](/docs/transformers/v4.50.0/en/main_classes/model#transformers.FlaxPreTrainedModel.from_pretrained)
类方法重新加载。
to_bf16
< source >( params: typing.Union[typing.Dict, flax.core.frozen_dict.FrozenDict] mask: typing.Any = None )
将浮点 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
< source >( params: typing.Union[typing.Dict, flax.core.frozen_dict.FrozenDict] mask: typing.Any = None )
将浮点 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
< source >( params: typing.Union[typing.Dict, flax.core.frozen_dict.FrozenDict] mask: typing.Any = None )
将浮点 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
一个包含将模型或 tokenizer 推送到 hub 功能的 Mixin。
push_to_hub
< source >( 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 (
bool
或str
, optional) — 用作远程文件的 HTTP Bearer 授权的令牌。如果为True
,将使用运行huggingface-cli login
时生成的令牌(存储在~/.huggingface
中)。如果未指定repo_url
,则默认为True
。 - max_shard_size (
int
或str
, optional, defaults to"5GB"
) — 仅适用于模型。分片之前的检查点最大大小。检查点分片后的每个分片大小将低于此大小。如果表示为字符串,则需要是数字后跟单位(例如"5MB"
)。我们将其默认设置为"5GB"
,以便用户可以在免费层的 Google Colab 实例上轻松加载模型,而不会出现任何 CPU OOM 问题。 - create_pr (
bool
, optional, defaults toFalse
) — 是否创建包含上传文件的 PR 或直接提交。 - safe_serialization (
bool
, optional, defaults toTrue
) — 是否将模型权重转换为 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
< source >( model folder strict = True prefer_safe = True ) → NamedTuple
参数
- model (
torch.nn.Module
) — 要加载检查点的模型。 - folder (
str
或os.PathLike
) — 包含分片检查点的文件夹路径。 - strict (
bool
, *可选*, 默认为True
) — 是否严格强制模型状态字典中的键与分片检查点中的键匹配。 - prefer_safe (
bool
, *可选*, 默认为False
) — 如果检查点中同时存在 safetensors 和 PyTorch 保存文件,并且 `prefer_safe` 为 `True`,则将加载 safetensors 文件。否则,在可能的情况下始终加载 PyTorch 文件。
返回
命名元组
包含 missing_keys
和 unexpected_keys
字段的命名元组
missing_keys
是一个字符串列表,其中包含缺失的键unexpected_keys
是一个字符串列表,其中包含意外的键
这与 torch.nn.Module.load_state_dict
相同,但用于分片检查点。
此加载操作高效执行:每个检查点分片在 RAM 中逐个加载,并在加载到模型后删除。