Transformers 4.37 中文文档(十四)(6)https://developer.aliyun.com/article/1564960
FlaxPreTrainedModel
class transformers.FlaxPreTrainedModel
( config: PretrainedConfig module: Module input_shape: 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: 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
, optional) — 是否使用临时目录存储在推送到 Hub 之前保存的文件。如果没有名为repo_id
的目录,则默认为True
,否则为False
。commit_message
(str
, optional) — 推送时要提交的消息。默认为"Upload model"
。private
(bool
, optional) — 是否创建的存储库应为私有。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 FlaxAutoModel model = FlaxAutoModel.from_pretrained("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: Union dtype: dtype = <class 'jax.numpy.float32'> *model_args config: Union = None cache_dir: Union = None ignore_mismatched_sizes: bool = False force_download: bool = False local_files_only: bool = False token: Union = None revision: str = 'main' **kwargs )
参数
pretrained_model_name_or_path
(str
或os.PathLike
) — 可以是:
- 一个字符串,托管在 huggingface.co 模型存储库中的预训练模型的模型 ID。有效的模型 ID 可以位于根级别,如
bert-base-uncased
,或者在用户或组织名称下命名空间化,如dbmdz/bert-base-german-cased
。 - 一个包含使用 save_pretrained()保存的模型权重的目录路径,例如,
./my_model_directory/
。 - pt 索引检查点文件的路径或 URL(例如,
./tf_model/model.ckpt.index
)。在这种情况下,from_pt
应设置为True
。
dtype
(jax.numpy.dtype
, optional, 默认为jax.numpy.float32
) — 计算的数据类型。可以是jax.numpy.float32
、jax.numpy.float16
(在 GPU 上)和jax.numpy.bfloat16
(在 TPU 上)之一。
这可以用于在 GPU 或 TPU 上启用混合精度训练或半精度推断。如果指定了dtype
,则所有计算将使用给定的dtype
执行。请注意,这仅指定计算的数据类型,不影响模型参数的数据类型。
如果要更改模型参数的数据类型,请参阅 to_fp16()和 to_bf16()。model_args
(位置参数序列,optional) — 所有剩余的位置参数将传递给底层模型的__init__
方法。config
(Union[PretrainedConfig, str, os.PathLike]
, optional) — 可以是:
- 从 PretrainedConfig 派生的类的实例,
- 一个作为 from_pretrained()输入有效的字符串或路径。
- 要使用的模型配置,而不是自动加载的配置。当以下情况自动加载配置时:
- 模型是库提供的模型(使用预训练模型的模型 ID字符串加载)。
- 模型是使用 save_pretrained()保存的,并通过提供保存目录重新加载。
- 通过提供本地目录作为
pretrained_model_name_or_path
加载模型,并在目录中找到名为config.json的配置 JSON 文件。
cache_dir
(Union[str, os.PathLike]
, optional) — 如果不应使用标准缓存,则应将下载的预训练模型配置缓存在其中的目录路径。from_pt
(bool
, optional, 默认为False
) — 从 PyTorch 检查点保存文件加载模型权重(请参阅pretrained_model_name_or_path
参数的文档字符串)。ignore_mismatched_sizes
(bool
, optional, 默认为False
) — 如果检查点中的某些权重与模型的权重大小不同,是否引发错误(例如,如果您从具有 3 个标签的检查点实例化具有 10 个标签的模型)。force_download
(bool
, optional, 默认为False
) — 是否强制(重新)下载模型权重和配置文件,覆盖缓存版本(如果存在)。resume_download
(bool
, optional, 默认为False
) — 是否删除接收不完整的文件。如果存在这样的文件,将尝试恢复下载。proxies
(Dict[str, str]
, optional) — 一个按协议或端点使用的代理服务器字典,例如,{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}
。代理在每个请求上使用。local_files_only(bool,
optional, 默认为False
) — 是否仅查看本地文件(即,不尝试下载模型)。token
(str
或bool
, 可选) — 用作远程文件的 HTTP bearer 授权的令牌。如果为True
,或未指定,将使用运行huggingface-cli login
时生成的令牌 (存储在~/.huggingface
中)。revision
(str
, 可选, 默认为"main"
) — 要使用的特定模型版本。它可以是分支名称、标签名称或提交 ID,因为我们在 huggingface.co 上使用基于 git 的系统来存储模型和其他工件,所以revision
可以是 git 允许的任何标识符。
从预训练模型配置实例化一个预训练的 flax 模型。
警告 来自 XXX 的权重未从预训练模型初始化 意味着 XXX 的权重不是与模型的其余部分一起预训练的。您需要使用下游微调任务来训练这些权重。
警告 来自 XXX 的权重在 YYY 中未使用 意味着层 XXX 在 YYY 中未被使用,因此这些权重被丢弃。
示例:
>>> from transformers import BertConfig, FlaxBertModel >>> # Download model and configuration from huggingface.co and cache. >>> model = FlaxBertModel.from_pretrained("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 ) → export const metadata = 'undefined';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
(str
或type
, 可选, 默认为"FlaxAutoModel"
) — 用于注册这个新模型的自动类。
使用给定的自动类注册此类。这应该仅用于自定义模型,因为库中的模型已经与自动类映射。
此 API 是实验性的,可能在下一个版本中有一些轻微的破坏性更改。
save_pretrained
( save_directory: Union params = None push_to_hub = False max_shard_size = '10GB' token: Union = None safe_serialization: bool = False **kwargs )
参数
save_directory
(str
或os.PathLike
) — 要保存到的目录。如果不存在,将创建。push_to_hub
(bool
, 可选, 默认为False
) — 保存模型后是否将其推送到 Hugging Face 模型中心。您可以使用repo_id
指定要推送到的存储库 (将默认为您的命名空间中的save_directory
名称)。max_shard_size
(int
或str
, 可选, 默认为"10GB"
) — 在分片之前检查点的最大大小。检查点分片将小于此大小。如果表示为字符串,需要是数字后跟一个单位 (如"5MB"
)。
如果模型的单个权重大于max_shard_size
,它将在自己的检查点分片中,该分片将大于max_shard_size
。token
(str
或bool
, 可选) — 用作远程文件的 HTTP bearer 授权的令牌。如果为True
,或未指定,将使用运行huggingface-cli login
时生成的令牌 (存储在~/.huggingface
中)。kwargs
(Dict[str, Any]
, 可选) — 传递给 push_to_hub() 方法的额外关键字参数。safe_serialization
(bool
, 可选, 默认为False
) — 是否使用safetensors
或通过 msgpack 保存模型。
将模型及其配置文件保存到目录中,以便可以使用 from_pretrained()
类方法重新加载。
to_bf16
( params: Union mask: 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("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("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: Union mask: 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("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("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: Union mask: 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("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
( )
一个包含将模型或分词器推送到 Hub 的功能的 Mixin。
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
) — 您要将 {object} 推送到的存储库的名称。在推送到给定组织时,应包含您的组织名称。use_temp_dir
(bool
,可选) — 是否使用临时目录存储在推送到 Hub 之前保存的文件。如果没有名为repo_id
的目录,则默认为True
,否则为False
。commit_message
(str
,可选) — 推送时要提交的消息。默认为"Upload {object}"
。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]
, 可选) — 要推送到中心的标签列表。
将{object_files}上传到🤗模型中心。
示例:
from transformers import {object_class} {object} = {object_class}.from_pretrained("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 ) → export const metadata = 'undefined';NamedTuple
参数
model
(torch.nn.Module
) — 要加载检查点的模型。folder
(str
或os.PathLike
) — 包含分片检查点的文件夹路径。strict
(bool
, 可选,默认为True
) — 是否严格执行模型状态字典中的键与分片检查点中的键匹配。prefer_safe
(bool
, 可选,默认为False
) — 如果检查点中同时存在 safetensors 和 PyTorch 保存文件,并且prefer_safe
为 True,则将加载 safetensors 文件。否则,尽可能加载 PyTorch 文件。
返回
NamedTuple
一个带有missing_keys
和unexpected_keys
字段的命名元组
missing_keys
是一个包含缺失键的字符串列表unexpected_keys
是一个包含意外键的字符串列表
这与torch.nn.Module.load_state_dict
相同,但适用于分片检查点。
这种加载效率很高:每个检查点分片都会逐个在 RAM 中加载,加载到模型后会被删除。
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("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
( )
一个包含将模型或分词器推送到 Hub 的功能的 Mixin。
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
) — 您要将 {object} 推送到的存储库的名称。在推送到给定组织时,应包含您的组织名称。use_temp_dir
(bool
,可选) — 是否使用临时目录存储在推送到 Hub 之前保存的文件。如果没有名为repo_id
的目录,则默认为True
,否则为False
。commit_message
(str
,可选) — 推送时要提交的消息。默认为"Upload {object}"
。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]
, 可选) — 要推送到中心的标签列表。
将{object_files}上传到🤗模型中心。
示例:
from transformers import {object_class} {object} = {object_class}.from_pretrained("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 ) → export const metadata = 'undefined';NamedTuple
参数
model
(torch.nn.Module
) — 要加载检查点的模型。folder
(str
或os.PathLike
) — 包含分片检查点的文件夹路径。strict
(bool
, 可选,默认为True
) — 是否严格执行模型状态字典中的键与分片检查点中的键匹配。prefer_safe
(bool
, 可选,默认为False
) — 如果检查点中同时存在 safetensors 和 PyTorch 保存文件,并且prefer_safe
为 True,则将加载 safetensors 文件。否则,尽可能加载 PyTorch 文件。
返回
NamedTuple
一个带有missing_keys
和unexpected_keys
字段的命名元组
missing_keys
是一个包含缺失键的字符串列表unexpected_keys
是一个包含意外键的字符串列表
这与torch.nn.Module.load_state_dict
相同,但适用于分片检查点。
这种加载效率很高:每个检查点分片都会逐个在 RAM 中加载,加载到模型后会被删除。