Transformers 4.37 中文文档(十五)(4)

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

Transformers 4.37 中文文档(十五)(3)https://developer.aliyun.com/article/1564966


compute_transition_scores

< source >

( sequences: Tensor scores: Tuple beam_indices: Optional = None normalize_logits: bool = False ) → export const metadata = 'undefined';tf.Tensor

参数

  • sequences (tf.Tensor) — 生成的序列。第二维(序列长度)要么等于max_length,要么如果所有批次由于eos_token_id而提前完成,则要短一些。
  • scores (tuple(tf.Tensor)) — 每个生成步骤中每个词汇标记的转移分数。Beam 转移分数由 tokens 的 log 概率组成,条件是先前生成的 tokens 的 log softmax。形状为(batch_size*num_beams, config.vocab_size)tf.Tensor元组,最多包含max_new_tokens个元素(每个生成的 token 一个元素)。
  • beam_indices (tf.Tensor, optional) — 每个生成步骤中生成的 token id 的 beam 索引。形状为(batch_size*num_return_sequences, sequence_length)tf.Tensor。在生成时如果num_beams>1则是必需的。
  • normalize_logits (bool, optional, defaults to False) — 是否对 logits 进行归一化(由于历史原因,可能未归一化)。

返回

tf.Tensor

一个形状为(batch_size*num_return_sequences, sequence_length)tf.Tensor,包含转移分数(logits)

计算给定生成分数的序列的转移分数(以及如果使用了束搜索,则为束索引)。这是一个方便的方法,在生成时快速获取所选标记的分数。

示例:

>>> from transformers import GPT2Tokenizer, TFAutoModelForCausalLM
>>> import numpy as np
>>> tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
>>> model = TFAutoModelForCausalLM.from_pretrained("gpt2")
>>> tokenizer.pad_token_id = tokenizer.eos_token_id
>>> inputs = tokenizer(["Today is"], return_tensors="tf")
>>> # Example 1: Print the scores for each token generated with Greedy Search
>>> outputs = model.generate(**inputs, max_new_tokens=5, return_dict_in_generate=True, output_scores=True)
>>> transition_scores = model.compute_transition_scores(
...     outputs.sequences, outputs.scores, normalize_logits=True
... )
>>> # input_length is the length of the input prompt for decoder-only models, like the GPT family, and 1 for
>>> # encoder-decoder models, like BART or T5.
>>> input_length = 1 if model.config.is_encoder_decoder else inputs.input_ids.shape[1]
>>> generated_tokens = outputs.sequences[:, input_length:]
>>> for tok, score in zip(generated_tokens[0], transition_scores[0]):
...     # | token | token string | logits | probability
...     print(f"| {tok:5d} | {tokenizer.decode(tok):8s} | {score.numpy():.3f} | {np.exp(score.numpy()):.2%}")
|   262 |  the     | -1.413 | 24.33%
|  1110 |  day     | -2.609 | 7.36%
|   618 |  when    | -2.009 | 13.41%
|   356 |  we      | -1.859 | 15.58%
|   460 |  can     | -2.508 | 8.14%
>>> # Example 2: Reconstruct the sequence scores from Beam Search
>>> outputs = model.generate(
...     **inputs,
...     max_new_tokens=5,
...     num_beams=4,
...     num_return_sequences=4,
...     return_dict_in_generate=True,
...     output_scores=True,
... )
>>> transition_scores = model.compute_transition_scores(
...     outputs.sequences, outputs.scores, outputs.beam_indices, normalize_logits=False
... )
>>> # If you sum the generated tokens' scores and apply the length penalty, you'll get the sequence scores.
>>> # Tip: recomputing the scores is only guaranteed to match with `normalize_logits=False`. Depending on the
>>> # use case, you might want to recompute it with `normalize_logits=True`.
>>> output_length = input_length + np.sum(transition_scores.numpy() < 0, axis=1)
>>> length_penalty = model.generation_config.length_penalty
>>> reconstructed_scores = np.sum(transition_scores, axis=1) / (output_length**length_penalty)
>>> print(np.allclose(outputs.sequences_scores, reconstructed_scores))
True

FlaxGenerationMixin

class transformers.FlaxGenerationMixin

<来源>

( )

包含用于自回归文本生成的所有函数的类,可作为 FlaxPreTrainedModel 中的 mixin 使用。

该类公开了 generate(),可用于:

  • 贪婪解码,如果num_beams=1do_sample=False,则调用_greedy_search()
  • 多项式采样,如果num_beams=1do_sample=True,则调用_sample()
  • 束搜索解码,如果num_beams>1do_sample=False,则调用_beam_search()

您无需直接调用上述任何方法。而是将自定义参数值传递给“generate”。要了解更多关于解码策略的信息,请参考文本生成策略指南。

generate

<来源>

( input_ids: Array generation_config: Optional = None prng_key: Optional = None trace: bool = True params: Optional = None logits_processor: Optional = None **kwargs )

参数

  • input_ids(形状为(batch_size, sequence_length)jnp.ndarray)—用作生成提示的序列。
  • generation_config~generation.GenerationConfig可选)—用作生成调用的基本参数化的生成配置。传递给 generate 的**kwargs匹配generation_config的属性将覆盖它们。如果未提供generation_config,则将使用默认值,其加载优先级如下:1)从generation_config.json模型文件中,如果存在;2)从模型配置中。请注意,未指定的参数将继承 GenerationConfig 的默认值,应检查其文档以参数化生成。
  • tracebool可选,默认为True)—是否跟踪生成。设置trace=False仅用于调试,会导致运行时间明显变慢。
  • paramsDict[str, jnp.ndarray]可选)—可选择传递模型参数。对于并行化生成可能会有用。
  • logits_processorFlaxLogitsProcessorList可选)—自定义 logits 处理器,补充了从参数和生成配置构建的默认 logits 处理器。如果传递了已经使用参数或生成配置创建的 logit 处理器,则会抛出错误。此功能旨在供高级用户使用。
  • kwargsDict[str, Any]可选)—generate_config的临时参数化和/或将转发给模型的forward函数的其他特定于模型的 kwargs。如果模型是编码器-解码器模型,则不应添加编码器特定的 kwargs 前缀,而应为解码器特定的 kwargs 添加*decoder_*前缀。

为具有语言建模头的模型生成令牌 id 序列。

将🤗 Transformers 模型导出到 ONNX

原始文本:huggingface.co/docs/transformers/v4.37.2/en/main_classes/onnx

🤗 Transformers 提供了一个transformers.onnx包,通过利用配置对象,您可以将模型检查点转换为 ONNX 图。

查看有关导出🤗 Transformers 模型的更多详细信息的指南。

ONNX 配置

我们提供了三个抽象类,您应该根据希望导出的模型架构类型继承其中一个:

  • 基于编码器的模型继承自 OnnxConfig
  • 基于解码器的模型继承自 OnnxConfigWithPast
  • 编码器-解码器模型继承自 OnnxSeq2SeqConfigWithPast

OnnxConfig

class transformers.onnx.OnnxConfig

< source >

( config: PretrainedConfig task: str = 'default' patching_specs: List = None )

用于描述通过 ONNX 格式导出模型的元数据的可导出模型的基类。

flatten_output_collection_property

< source >

( name: str field: Iterable ) → export const metadata = 'undefined';(Dict[str, Any])

返回

(Dict[str, Any])

具有扁平结构和映射到此新结构的键的输出。

展平任何潜在的嵌套结构,将字段的名称与结构中元素的索引扩展。

from_model_config

< source >

( config: PretrainedConfig task: str = 'default' )

为特定模型实例化一个 OnnxConfig

generate_dummy_inputs

< source >

( preprocessor: Union batch_size: int = -1 seq_length: int = -1 num_choices: int = -1 is_pair: bool = False framework: Optional = None num_channels: int = 3 image_width: int = 40 image_height: int = 40 sampling_rate: int = 22050 time_duration: float = 5.0 frequency: int = 220 tokenizer: PreTrainedTokenizerBase = None )

参数

  • batch_size (int, 可选,默认为-1) — 用于导出模型的批量大小(-1 表示动态轴)。
  • num_choices (int, 可选,默认为-1) — 为多选任务提供的候选答案数量(-1 表示动态轴)。
  • seq_length (int, 可选,默认为-1) — 为导出模型指定的序列长度(-1 表示动态轴)。
  • is_pair (bool, 可选,默认为False) — 指示输入是否为一对(句子 1,句子 2)
  • framework (TensorType, 可选,默认为None) — 分词器将为其生成张量的框架(PyTorch 或 TensorFlow)。
  • num_channels (int, 可选,默认为 3) — 生成图像的通道数。
  • image_width (int, 可选,默认为 40) — 生成图像的宽度。
  • image_height (int, 可选,默认为 40) — 生成图像的高度。
  • sampling_rate (int, 可选 默认为 22050) — 用于音频数据生成的采样率。
  • time_duration (float, 可选 默认为 5.0) — 用于音频数据生成的采样总秒数。
  • frequency (int, 可选 默认为 220) — 生成音频的期望自然频率。

生成要提供给特定框架的 ONNX 导出器的输入

generate_dummy_inputs_onnxruntime

< source >

( reference_model_inputs: Mapping ) → export const metadata = 'undefined';Mapping[str, Tensor]

参数

  • reference_model_inputs([Mapping[str, Tensor])— 模型的参考输入。

返回

Mapping[str, Tensor]

保存要提供给模型前向函数的 kwargs 的映射

使用参考模型输入为 ONNX Runtime 生成输入。覆盖此选项以使用将编码器和解码器导出为单独的 ONNX 文件的 seq2seq 模型进行推理。

use_external_data_format

< source >

( num_parameters: int )

标志,指示模型是否需要使用外部数据格式

OnnxConfigWithPast

class transformers.onnx.OnnxConfigWithPast

<来源>

( config: PretrainedConfig task: str = 'default' patching_specs: List = None use_past: bool = False )

fill_with_past_key_values_

<来源>

( inputs_or_outputs: Mapping direction: str inverted_values_shape: bool = False )

考虑填充具有过去键值动态轴的输入或输出映射。

with_past

<来源>

( config: PretrainedConfig task: str = 'default' )

实例化一个具有 use_past 属性设置为 True 的 OnnxConfig

OnnxSeq2SeqConfigWithPast

class transformers.onnx.OnnxSeq2SeqConfigWithPast

<来源>

( config: PretrainedConfig task: str = 'default' patching_specs: List = None use_past: bool = False )

ONNX 特性

每个 ONNX 配置都与一组 特性 关联,使您能够为不同类型的拓扑或任务导出模型。

FeaturesManager

class transformers.onnx.FeaturesManager

<来源>

( )

check_supported_model_or_raise

<来源>

( model: Union feature: str = 'default' )

检查模型是否具有请求的特征。

determine_framework

<来源>

( model: str framework: str = None )

参数

  • model (str) — 要导出的模型的名称。
  • framework (str, 可选, 默认为 None) — 用于导出的框架。如果未提供,则参见上文的优先级。

确定用于导出的框架。

优先级按以下顺序排列:

  1. 通过 framework 的用户输入。
  2. 如果提供了本地检查点,则使用与检查点相同的框架。
  3. 环境中可用的框架,优先考虑 PyTorch。
get_config

<来源>

( model_type: str feature: str ) → export const metadata = 'undefined';OnnxConfig

参数

  • model_type (str) — 要检索配置的模型类型。
  • feature (str) — 要检索配置的特征。

返回

OnnxConfig

用于组合的配置

获取模型类型和特征组合的 OnnxConfig。

get_model_class_for_feature

<来源>

( feature: str framework: str = 'pt' )

参数

  • feature (str) — 所需的特征。
  • framework (str, 可选, 默认为 "pt") — 用于导出的框架。

尝试从特征名称中检索 AutoModel 类。

get_model_from_feature

<来源>

( feature: str model: str framework: str = None cache_dir: str = None )

参数

  • feature (str) — 所需的特征。
  • model (str) — 要导出的模型的名称。
  • framework (str, 可选, 默认为 None) — 用于导出的框架。如果未提供,则参见 FeaturesManager.determine_framework 的优先级。

尝试从模型的名称和要启用的特征中检索模型。

get_supported_features_for_model_type

<来源>

( model_type: str model_name: Optional = None )

参数

  • model_type (str) — 要检索支持特征的模型类型。
  • model_name (str, 可选) — 模型对象的名称属性,仅用于异常消息。

尝试从模型类型中检索特征 -> OnnxConfig 构造函数映射。

优化

原始文本:huggingface.co/docs/transformers/v4.37.2/en/main_classes/optimizer_schedules

.optimization模块提供:

  • 一个带有固定权重衰减的优化器,可用于微调模型,以及
  • _LRSchedule继承的形式有几个调度对象:
  • 一个梯度累积类,用于累积多个批次的梯度

AdamW(PyTorch)

class transformers.AdamW

<来源>

( params: Iterable lr: float = 0.001 betas: Tuple = (0.9, 0.999) eps: float = 1e-06 weight_decay: float = 0.0 correct_bias: bool = True no_deprecation_warning: bool = False )

参数

  • paramsIterable[nn.parameter.Parameter])— 要优化的参数的可迭代对象或定义参数组的字典。
  • lrfloat可选,默认为 0.001)— 要使用的学习率。
  • betasTuple[float,float]可选,默认为(0.9, 0.999))— Adam 的 betas 参数(b1,b2)。
  • epsfloat可选,默认为 1e-06)— Adam 的数值稳定性 epsilon。
  • weight_decayfloat可选,默认为 0.0)— 要应用的解耦权重衰减。
  • correct_biasbool可选,默认为True)— 是否在 Adam 中校正偏差(例如,在 Bert TF 存储库中,它们使用False)。
  • no_deprecation_warningbool可选,默认为False)— 用于禁用弃用警告的标志(设置为True以禁用警告)。

实现了带有权重衰减修复的 Adam 算法,该算法在解耦权重衰减正则化中引入。

step

<来源>

( closure: Callable = None )

参数

  • closureCallable可选)— 重新评估模型并返回损失的闭包。

执行单个优化步骤。


Transformers 4.37 中文文档(十五)(5)https://developer.aliyun.com/article/1564968

相关文章
|
4月前
|
PyTorch TensorFlow 调度
Transformers 4.37 中文文档(十五)(5)
Transformers 4.37 中文文档(十五)
53 1
Transformers 4.37 中文文档(十五)(5)
|
4月前
|
存储 缓存 PyTorch
Transformers 4.37 中文文档(十四)(4)
Transformers 4.37 中文文档(十四)
92 4
|
4月前
|
存储 缓存 安全
Transformers 4.37 中文文档(十四)(7)
Transformers 4.37 中文文档(十四)
36 4
|
4月前
|
存储 自然语言处理 算法
Transformers 4.37 中文文档(十四)(3)
Transformers 4.37 中文文档(十四)
68 4
|
4月前
|
存储 缓存 PyTorch
Transformers 4.37 中文文档(十四)(6)
Transformers 4.37 中文文档(十四)
84 4
|
4月前
|
存储 自然语言处理
Transformers 4.37 中文文档(十五)(3)
Transformers 4.37 中文文档(十五)
64 1
|
4月前
|
存储 JSON 缓存
Transformers 4.37 中文文档(十五)(1)
Transformers 4.37 中文文档(十五)
78 1
|
4月前
|
存储
Transformers 4.37 中文文档(十五)(2)
Transformers 4.37 中文文档(十五)
62 1
|
4月前
|
存储 数据可视化 PyTorch
Transformers 4.37 中文文档(十四)(1)
Transformers 4.37 中文文档(十四)
70 1
|
4月前
|
存储 JSON 算法框架/工具
Transformers 4.37 中文文档(十四)(2)
Transformers 4.37 中文文档(十四)
56 1