Transformers 4.37 中文文档(十四)(7)

简介: Transformers 4.37 中文文档(十四)

Transformers 4.37 中文文档(十四)(6)https://developer.aliyun.com/article/1564960


FlaxPreTrainedModel

class transformers.FlaxPreTrainedModel

< source >

( 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

< source >

( 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 (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 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

< source >

( )

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

from_pretrained

< source >

( 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 (stros.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.float32jax.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 (strbool, 可选) — 用作远程文件的 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

< source >

( 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

< source >

( auto_class = 'FlaxAutoModel' )

参数

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

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

此 API 是实验性的,可能在下一个版本中有一些轻微的破坏性更改。

save_pretrained

< source >

( save_directory: Union params = None push_to_hub = False max_shard_size = '10GB' token: Union = None safe_serialization: bool = False **kwargs )

参数

  • save_directory (stros.PathLike) — 要保存到的目录。如果不存在,将创建。
  • push_to_hub (bool, 可选, 默认为 False) — 保存模型后是否将其推送到 Hugging Face 模型中心。您可以使用 repo_id 指定要推送到的存储库 (将默认为您的命名空间中的 save_directory 名称)。
  • max_shard_size (intstr, 可选, 默认为 "10GB") — 在分片之前检查点的最大大小。检查点分片将小于此大小。如果表示为字符串,需要是数字后跟一个单位 (如 "5MB")。
    如果模型的单个权重大于 max_shard_size,它将在自己的检查点分片中,该分片将大于 max_shard_size
  • token (strbool, 可选) — 用作远程文件的 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 (boolstr可选) — 用作远程文件的 HTTP bearer 授权的令牌。如果为 True,将使用运行 huggingface-cli login 时生成的令牌(存储在 ~/.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], 可选) — 要推送到中心的标签列表。

将{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 (stros.PathLike) — 包含分片检查点的文件夹路径。
  • strict (bool, 可选,默认为True) — 是否严格执行模型状态字典中的键与分片检查点中的键匹配。
  • prefer_safe (bool, 可选,默认为False) — 如果检查点中同时存在 safetensors 和 PyTorch 保存文件,并且prefer_safe为 True,则将加载 safetensors 文件。否则,尽可能加载 PyTorch 文件。

返回

NamedTuple

一个带有missing_keysunexpected_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 (boolstr可选) — 用作远程文件的 HTTP bearer 授权的令牌。如果为 True,将使用运行 huggingface-cli login 时生成的令牌(存储在 ~/.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], 可选) — 要推送到中心的标签列表。

将{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 (stros.PathLike) — 包含分片检查点的文件夹路径。
  • strict (bool, 可选,默认为True) — 是否严格执行模型状态字典中的键与分片检查点中的键匹配。
  • prefer_safe (bool, 可选,默认为False) — 如果检查点中同时存在 safetensors 和 PyTorch 保存文件,并且prefer_safe为 True,则将加载 safetensors 文件。否则,尽可能加载 PyTorch 文件。

返回

NamedTuple

一个带有missing_keysunexpected_keys字段的命名元组

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

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

这种加载效率很高:每个检查点分片都会逐个在 RAM 中加载,加载到模型后会被删除。

相关文章
|
4月前
|
PyTorch TensorFlow 调度
Transformers 4.37 中文文档(十五)(5)
Transformers 4.37 中文文档(十五)
53 1
Transformers 4.37 中文文档(十五)(5)
|
4月前
|
存储 PyTorch 测试技术
Transformers 4.37 中文文档(十四)(5)
Transformers 4.37 中文文档(十四)
57 4
|
4月前
|
存储 自然语言处理 算法
Transformers 4.37 中文文档(十四)(3)
Transformers 4.37 中文文档(十四)
68 4
|
4月前
|
存储 缓存 PyTorch
Transformers 4.37 中文文档(十四)(6)
Transformers 4.37 中文文档(十四)
85 4
|
4月前
|
存储 缓存 PyTorch
Transformers 4.37 中文文档(十四)(4)
Transformers 4.37 中文文档(十四)
100 4
|
4月前
|
存储 数据可视化 PyTorch
Transformers 4.37 中文文档(十四)(1)
Transformers 4.37 中文文档(十四)
74 1
|
4月前
|
存储 JSON 算法框架/工具
Transformers 4.37 中文文档(十四)(2)
Transformers 4.37 中文文档(十四)
57 1
|
4月前
|
自然语言处理 算法 PyTorch
Transformers 4.37 中文文档(十五)(4)
Transformers 4.37 中文文档(十五)
55 1
|
4月前
|
存储 JSON 缓存
Transformers 4.37 中文文档(十五)(1)
Transformers 4.37 中文文档(十五)
80 1
|
4月前
|
存储 自然语言处理
Transformers 4.37 中文文档(十五)(3)
Transformers 4.37 中文文档(十五)
69 1
下一篇
无影云桌面