Transformers 4.37 中文文档(十四)(5)https://developer.aliyun.com/article/1564959
TFPreTrainedModel
class 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
,可选)— 是否应创建私有存储库。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 或直接提交。
将模型文件上传到🤗模型 Hub,同时同步存储库的本地克隆到repo_path_or_name
中。
示例:
from transformers import TFAutoModel model = TFAutoModel.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
( ) → export const metadata = 'undefined';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
(str
或os.PathLike
)— 创建模型卡片的文件夹。model_name
(str
,可选)— 模型的名称。language
(str
,可选)— 模型的语言(如果适用)license
(str
,可选)— 模型的许可证。如果给定给Trainer
的原始模型来自 Hub 上的 repo,则默认为使用的预训练模型的许可证。tags
(str
或List[str]
,可选)— 要包含在模型卡片的元数据中的一些标签。finetuned_from
(str
,可选)— 用于微调此模型的模型的名称(如果适用)。如果来自 Hub 的原始模型的Trainer
给出的 repo 的名称,则默认为原始模型的名称。tasks
(str
或List[str]
,可选)— 一个或多个任务标识符,要包含在模型卡片的元数据中。dataset_tags
(str
或List[str]
,可选)— 一个或多个数据集标签,要包含在模型卡片的元数据中。dataset
(str
或List[str]
,可选)— 一个或多个数据集标识符,要包含在模型卡片的元数据中。dataset_args
(str
或List[str]
,可选)— 一个或多个数据集参数,要包含在模型卡片的元数据中。
使用Trainer
可用的信息创建模型卡片的草稿。
eager_serving
( inputs )
参数
inputs
(Dict[str, tf.Tensor]
)— 保存模型的输入,作为张量字典。
用于提供模型的方法。此方法已弃用,将被移除。
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
,可选)— 可以是:
- 一个字符串,预训练模型的模型 id,托管在 huggingface.co 上的模型存储库中。有效的模型 id 可以位于根级别,如
bert-base-uncased
,或者在用户或组织名称下命名空间,如dbmdz/bert-base-german-cased
。 - 一个目录的路径,其中包含使用 save_pretrained()保存的模型权重,例如,
./my_model_directory/
。 - 一个 PyTorch state_dict 保存文件 的路径或 url(例如,
./pt_model/pytorch_model.bin
)。在这种情况下,from_pt
应设置为True
,并且应将配置对象作为config
参数提供。使用此加载路径比使用提供的转换脚本将 PyTorch 模型转换为 TensorFlow 模型并随后加载 TensorFlow 模型要慢。 - 如果您同时提供配置和状态字典(分别使用关键字参数
config
和state_dict
),则为None
。
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
(bool
, 可选, 默认为False
) — 是否删除接收不完整的文件。如果存在这样的文件,将尝试恢复下载。代理 — (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,因为我们在 huggingface.co 上使用基于 git 的系统存储模型和其他工件,所以revision
可以是 git 允许的任何标识符。
从预训练模型配置实例化预训练的 TF 2.0 模型。
警告 Weights from XXX not initialized from pretrained model 意味着 XXX 的权重不是与模型的其余部分一起预训练的。您需要使用下游微调任务来训练这些权重。
警告来自 XXX 的权重在 YYY 中未使用表示层 XXX 未被 YYY 使用,因此这些权重被丢弃。
示例:
>>> from transformers import BertConfig, TFBertModel >>> # Download model and configuration from huggingface.co and cache. >>> model = TFBertModel.from_pretrained("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("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
( ) → export const metadata = 'undefined';tf.Variable
返回
tf.Variable
表示偏置的权重,如果不是 LM 模型则为 None。
附加到 LM head 的偏置的字典。键表示偏置属性的名称。
get_head_mask
( head_mask: tf.Tensor | None num_hidden_layers: int )
参数
head_mask
(tf.Tensor
,形状为[num_heads]
或[num_hidden_layers x num_heads]
,可选) — 指示我们是否应保留头部的掩码(保留为 1.0,丢弃为 0.0)。num_hidden_layers
(int
) — 模型中的隐藏层数量。
如果需要,准备头部掩码。
get_input_embeddings
( ) → export const metadata = 'undefined';tf.Variable
返回
tf.Variable
将词汇映射到隐藏状态的嵌入层。
返回模型的输入嵌入层。
get_lm_head
( ) → export const metadata = 'undefined';tf.keras.layers.Layer
返回
tf.keras.layers.Layer
如果模型有 LM head 层,则为 LM head 层,否则为 None。
LM Head 层。该方法必须被所有具有 lm head 的模型覆盖。
get_output_embeddings
( ) → export const metadata = 'undefined';tf.Variable
返回
tf.Variable
将词汇映射到隐藏状态的新权重。
返回模型的输出嵌入
get_output_layer_with_bias
( ) → export const metadata = 'undefined';tf.keras.layers.Layer
返回
tf.keras.layers.Layer
处理偏置的层,如果不是 LM 模型则为 None。
获取处理偏置属性的层,如果模型具有将权重绑定到嵌入的 LM head
get_prefix_bias_name
( ) → export const metadata = 'undefined';str
返回
str
偏置的连接前缀名称。
从模型名称到父层的偏置的连接前缀名称
load_repo_checkpoint
( repo_path_or_name ) → export const metadata = 'undefined';dict
参数
repo_path_or_name
(str
) — 可以是 Hub 中您的 {object} 的存储库名称,也可以是本地文件夹的路径(在这种情况下,存储库将使用该本地文件夹的名称)。
返回
dict
来自检查点的额外元数据字典,通常是“时代”计数。
从存储库加载已保存的检查点(模型权重和优化器状态)。返回检查点生成时的当前时代计数。
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 ) → export const metadata = 'undefined';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
, 可选) — 是否丢弃最后一个批次,如果批次大小不能整除数据集长度。默认设置与shuffle
相同。prefetch
(bool
, 默认为True
) — 是否在tf.data
管道的末尾添加预取。这几乎总是有利于性能,但在边缘情况下可以禁用。
返回
Dataset
一个准备传递给 Keras API 的tf.data.Dataset
。
将 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
(str
或type
, 可选, 默认为"TFAutoModel"
) — 要注册此新模型的自动类。
使用给定的自动类注册此类。这应仅用于自定义模型,因为库中的模型已经与自动类映射。
此 API 是实验性的,可能在下一个版本中有一些轻微的破坏性更改。
resize_token_embeddings
( new_num_tokens: Optional[int] = None ) → export const metadata = 'undefined';tf.Variable or tf.keras.layers.Embedding
参数
new_num_tokens
(int
, 可选) — 嵌入矩阵中的新标记数量。增加大小将在末尾添加新初始化的向量。减小大小将从末尾删除向量。如果未提供或为None
,则只返回指向输入标记的指针,而不执行任何操作。
返回
tf.Variable
或 tf.keras.layers.Embedding
模型的输入标记的指针。
如果new_num_tokens != config.vocab_size
,则调整模型的输入标记嵌入矩阵大小。
如果模型类具有tie_weights()
方法,则在之后处理权重嵌入。
save_pretrained
( save_directory saved_model = False version = 1 push_to_hub = False signatures = None max_shard_size: Union[int, str] = '10GB' 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) — 已保存模型的版本。为了能够被 TensorFlow Serving 正确加载,保存的模型需要进行版本化,详细信息请参阅官方文档www.tensorflow.org/tfx/serving/serving_basic
push_to_hub
(bool
, 可选, 默认为False
) — 是否在保存后将模型推送到 Hugging Face 模型中心。您可以使用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 bearer 授权的令牌。如果为True
,或未指定,将使用运行huggingface-cli login
时生成的令牌(存储在~/.huggingface
中)。kwargs
(Dict[str, Any]
, 可选) - 传递给 push_to_hub() 方法的额外关键字参数。
将模型及其配置文件保存到目录中,以便可以使用 from_pretrained() 类方法重新加载。
serving
( inputs )
参数
- 用于提供模型的方法。没有特定的签名,但将作为具体的专业化 -
- 使用
save_pretrained
保存时的functions
。 - 输入(Dict[str, tf.Tensor]
):保存模型的输入,作为张量字典。
serving_output
( output )
准备保存模型的输出。如果需要特定的服务修改,可以进行覆盖。
set_bias
( value )
参数
value
(Dict[tf.Variable]
) - 附加到 LM 头部的所有新偏置。
设置 LM 头部中的所有偏置。
set_input_embeddings
( value )
参数
value
(tf.Variable
) - 将隐藏状态映射到词汇表的新权重。
设置模型的输入嵌入
set_output_embeddings
( value )
参数
value
(tf.Variable
) - 将隐藏状态映射到词汇表的新权重。
设置模型的输出嵌入
test_step
( data )
对 Keras 默认的 train_step
进行修改,正确处理模型输出与标签的匹配,并支持直接在损失输出头上进行训练。此外,它确保适当时将输入键复制到标签中。当使用虚拟损失时,它还会将标签键复制到输入字典中,以确保它们在前向传递期间对模型可用。
train_step
( data )
对 Keras 默认的 train_step
进行修改,正确处理模型输出与标签的匹配,并支持直接在损失输出头上进行训练。此外,它确保适当时将输入键复制到标签中。当使用虚拟损失时,它还会将标签键复制到输入字典中,以确保它们在前向传递期间对模型可用。
TFModelUtilsMixin
class transformers.modeling_tf_utils.TFModelUtilsMixin
( )
用于 tf.keras.Model
的一些实用程序,可用作混合。
num_parameters
( only_trainable: bool = False ) → export const metadata = 'undefined';int
参数
only_trainable
(bool
, optional, 默认为False
) — 是否仅返回可训练参数的数量
返回
int
参数数量。
获取模型中的(可选的可训练)参数数量。
Transformers 4.37 中文文档(十四)(7)https://developer.aliyun.com/article/1564961