Transformers 文档

生成

Hugging Face's logo
加入 Hugging Face 社区

并获得增强版文档体验

开始使用

生成

每个框架在其各自的 GenerationMixin 类中都实现了用于文本生成的生成方法

无论您选择哪个框架,您都可以使用 GenerationConfig 类实例来参数化 generate 方法。有关生成参数的完整列表,请参考此类,这些参数控制着生成方法的行为。

要了解如何检查模型的生成配置、默认值、如何临时更改参数以及如何创建和保存自定义生成配置,请参考 文本生成策略指南。该指南还解释了如何使用相关功能,例如 token 流式传输。

GenerationConfig

class transformers.GenerationConfig

< >

( **kwargs )

from_pretrained

< >

( pretrained_model_name: Union config_file_name: Union = None cache_dir: Union = None force_download: bool = False local_files_only: bool = False token: Union = None revision: str = 'main' **kwargs ) GenerationConfig

参数

  • pretrained_model_name (stros.PathLike) — 可以是以下两种情况之一:

    • 字符串,表示托管在 huggingface.co 上的模型库中的预训练模型配置的 模型 ID
    • 保存的配置文件的 目录 的路径,使用 save_pretrained() 方法保存,例如 ./my_model_directory/
  • config_file_name (stros.PathLike可选,默认为 "generation_config.json") — 要从 pretrained_model_name 加载的生成配置 JSON 文件的名称。
  • cache_dir (stros.PathLike可选) — 要缓存下载的预训练模型配置的目录的路径,如果不想使用标准缓存。
  • force_download (bool可选,默认为 False) — 是否强制 (重新) 下载配置文件,即使存在缓存版本也覆盖它们。 resume_download — 已弃用,不再使用。现在,所有下载默认情况下都可以在可能的情况下恢复。将在 Transformers v5 中删除。
  • proxies (Dict[str, str]可选) — 要按协议或端点使用的代理服务器的字典,例如 {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. 代理服务器用于每个请求。
  • token (strbool, 可选) — 用作远程文件 HTTP 身份验证承载者的令牌。如果为 True,或未指定,则使用运行 huggingface-cli login 时生成的令牌(存储在 ~/.huggingface 中)。
  • revision (str, 可选, 默认值为 "main") — 要使用的特定模型版本。它可以是分支名称、标签名称或提交 ID,因为我们使用基于 git 的系统来存储 huggingface.co 上的模型和其他工件,因此 revision 可以是 git 允许的任何标识符。

    要测试你在 Hub 上提交的拉取请求,你可以传递 revision=“refs/pr/“。

  • return_unused_kwargs (bool, 可选, 默认值为 False) — 如果为 False,则此函数只返回最终的配置对象。

    如果为 True,则此函数返回一个 Tuple(config, unused_kwargs),其中 unused_kwargs 是一个字典,包含键值对,其键不是配置属性:即 kwargs 中未用于更新 config 的部分,否则将被忽略。

  • subfolder (str, 可选, 默认值为 "") — 如果相关文件位于 huggingface.co 上模型仓库的子文件夹中,你可以在此处指定文件夹名称。
  • kwargs (Dict[str, Any], 可选) — kwargs 中任何键的值,如果该键是配置属性,将用于覆盖加载的值。关于键值对的键不是配置属性的行为由 return_unused_kwargs 关键字参数控制。

返回

GenerationConfig

从这个预训练模型实例化的配置对象。

从生成配置文檔实例化一个 GenerationConfig

示例

>>> from transformers import GenerationConfig

>>> # Download configuration from huggingface.co and cache.
>>> generation_config = GenerationConfig.from_pretrained("openai-community/gpt2")

>>> # E.g. config was saved using *save_pretrained('./test/saved_model/')*
>>> generation_config.save_pretrained("./test/saved_model/")
>>> generation_config = GenerationConfig.from_pretrained("./test/saved_model/")

>>> # You can also specify configuration names to your generation configuration file
>>> generation_config.save_pretrained("./test/saved_model/", config_file_name="my_configuration.json")
>>> generation_config = GenerationConfig.from_pretrained("./test/saved_model/", "my_configuration.json")

>>> # If you'd like to try a minor variation to an existing configuration, you can also pass generation
>>> # arguments to `.from_pretrained()`. Be mindful that typos and unused arguments will be ignored
>>> generation_config, unused_kwargs = GenerationConfig.from_pretrained(
...     "openai-community/gpt2", top_k=1, foo=False, do_sample=True, return_unused_kwargs=True
... )
>>> generation_config.top_k
1

>>> unused_kwargs
{'foo': False}

from_model_config

< >

( model_config: PretrainedConfig ) GenerationConfig

参数

  • model_config (PretrainedConfig) — 将用于实例化生成配置的模型配置。

返回

GenerationConfig

从这些参数实例化的配置对象。

PretrainedConfig 实例化一个 GenerationConfig。此函数用于将可能包含生成参数的旧版 PretrainedConfig 对象转换为独立的 GenerationConfig

save_pretrained

< >

( save_directory: Union config_file_name: Union = None push_to_hub: bool = False **kwargs )

参数

  • save_directory (stros.PathLike) — 将保存配置 JSON 文件的目录(如果不存在,则会创建)。
  • config_file_name (stros.PathLike, 可选, 默认值为 "generation_config.json") — 要保存在 save_directory 中的生成配置 JSON 文件的名称。
  • push_to_hub (bool, 可选, 默认值为 False) — 是否在保存模型后将其推送到 Hugging Face 模型中心。 你可以使用 repo_id 指定要推送到的仓库 (将默认使用 save_directory 在你命名空间中的名称)。
  • kwargs (Dict[str, Any], 可选) — 传递到 push_to_hub() 方法的额外关键字参数。

将生成配置对象保存到 save_directory 目录,以便可以使用 from_pretrained() 类方法重新加载。

更新

< >

( **kwargs ) Dict[str, Any]

参数

  • kwargs (Dict[str, Any]) — 要尝试更新此类的属性的字典。

返回

Dict[str, Any]

包含所有未用于更新实例的键值对的字典。

使用 kwargs 中的属性更新此类实例的属性,如果它们与现有属性匹配,则返回所有未使用的 kwargs。

验证

< >

( is_init = False )

参数

  • is_init (bool, 可选, 默认值为 False) — 验证是否在实例初始化期间执行。

验证 GenerationConfig 实例的属性值的有效性。如果存在仅从配置实例本身就可以检测到的参数化错误,则引发异常。

请注意,这里没有验证的某些参数最适合在生成运行时验证,因为它们可能取决于其他输入和/或模型,例如与生成长度相关的参数。

获取生成模式

< >

( assistant_model: Optional = None ) GenerationMode

参数

  • assistant_model (PreTrainedModel, 可选) — 用于辅助生成的助手模型。如果设置,则生成模式将为辅助生成。

返回

GenerationMode

由实例触发的生成模式。

返回由 GenerationConfig 实例触发的生成模式。

transformers.WatermarkingConfig

< >

( greenlist_ratio: Optional = 0.25 bias: Optional = 2.0 hashing_key: Optional = 15485863 seeding_scheme: Optional = 'lefthash' context_width: Optional = 1 )

用于生成水印的类,应在 `generate` 期间传递给 `GenerationConfig`。有关参数的更多详细信息,请参阅 这篇论文

接受以下键

  • greenlist_ratio (float): 用于水印。用于水印的“绿色”标记与词汇量之比。默认值为 0.25。
  • bias (float): 用于水印。添加到所选“绿色”标记的对数中的偏差。默认值为 2.0。
  • hashing_key (int): 用于水印的哈希密钥。默认值为 15485863(百万分之一个质数)。
  • seeding_scheme (str): 用于水印的算法。接受的值
    • “lefthash” (默认):“绿色”标记选择取决于最后一个标记(论文中的算法 2)
    • “selfhash”: “绿色”标记选择取决于当前标记本身(论文中的算法 3)。此方案的缺点是它考虑所有可能的下一个标记,并且可能比“lefthash” 速度慢。
  • context_width(int): 用于播种的先前标记的上下文长度。较高的上下文长度使水印更加稳健。

from_dict

< >

( config_dict **kwargs ) WatermarkingConfig

参数

  • config_dict (Dict[str, Any]) — 包含配置参数的字典。 **kwargs — 用于覆盖字典值的附加关键字参数。

返回

WatermarkingConfig

从字典构造的 WatermarkingConfig 实例。

从参数字典构造 WatermarkingConfig 实例。

to_dict

< >

( ) Dict[str, Any]

返回

Dict[str, Any]

构成此配置实例的所有属性的字典。

将此实例序列化为 Python 字典。

to_json_file

< >

( json_file_path: Union )

参数

  • json_file_path (Union[str, os.PathLike]) — 将此配置实例的参数保存到的 JSON 文件的路径。

将此实例保存到 JSON 文件。

to_json_string

< >

( ) str

返回

str

表示配置实例的 JSON 格式字符串。

将此实例序列化为 JSON 格式字符串。

更新

< >

( **kwargs )

使用新值更新配置属性。

GenerationMixin

class transformers.GenerationMixin

< >

( )

这是一个包含所有自回归文本生成的函数的类,用作 PreTrainedModel 的 mixin。

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

  • 贪婪解码,如果 num_beams=1do_sample=False
  • 对比搜索,如果 penalty_alpha>0top_k>1
  • 多项式采样,如果 num_beams=1do_sample=True
  • 束搜索解码,如果 num_beams>1do_sample=False
  • 束搜索多项式采样,如果 num_beams>1do_sample=True
  • 多样性束搜索解码,如果 num_beams>1num_beam_groups>1
  • 约束束搜索解码,如果 constraints!=Noneforce_words_ids!=None
  • 辅助解码,如果 assistant_modelprompt_lookup_num_tokens 传递给 .generate()

要详细了解解码策略,请参阅 文本生成策略指南

generate

< >

( inputs: Optional = None generation_config: Optional = None logits_processor: Optional = None stopping_criteria: Optional = None prefix_allowed_tokens_fn: Optional = None synced_gpus: Optional = None assistant_model: Optional = None streamer: Optional = None negative_prompt_ids: Optional = None negative_prompt_attention_mask: Optional = None **kwargs ) ModelOutputtorch.LongTensor

参数

  • inputs (torch.Tensor,形状取决于模态,可选) — 用作生成提示或作为模型输入到编码器的序列。如果为 None,则方法使用 bos_token_id 和 1 的批次大小对其进行初始化。对于解码器专用模型,inputs 应采用 input_ids 的格式。对于编码器 - 解码器模型,inputs 可以表示 input_idsinput_valuesinput_featurespixel_values 中的任何一个。
  • generation_config (GenerationConfig可选) — 用作生成调用的基本参数化的生成配置。传递给 generate**kwargsgeneration_config 的属性匹配将覆盖它们。如果未提供 generation_config,将使用默认值,加载优先级如下:1) 从 generation_config.json 模型文件(如果存在),2) 从模型配置。请注意,未指定的参数将继承 GenerationConfig 的默认值,其文档应检查以参数化生成。
  • logits_processor (LogitsProcessorList可选) — 补充从参数和生成配置构建的默认 logits 处理器的自定义 logits 处理器。如果传递的 logit 处理器已使用参数或生成配置创建,则会抛出错误。此功能适用于高级用户。
  • stopping_criteria (StoppingCriteriaList可选) — 补充从参数和生成配置构建的默认停止条件的自定义停止条件。如果传递的停止条件已使用参数或生成配置创建,则会抛出错误。如果您的停止条件依赖于 scores 输入,请确保将 return_dict_in_generate=True, output_scores=True 传递给 generate。此功能适用于高级用户。
  • prefix_allowed_tokens_fn (Callable[[int, torch.Tensor], List[int]], 可选) — 如果提供,此函数在每一步都将束搜索限制为仅允许的令牌。 如果不提供,则不应用任何约束。 此函数接受 2 个参数:批次 ID batch_idinput_ids。 它必须返回一个列表,其中包含根据批次 ID batch_id 和先前生成的令牌 inputs_ids 条件化的下一个生成步骤的允许令牌。 此参数对于根据前缀进行约束生成(如 自回归实体检索 中所述)很有用。
  • synced_gpus (bool, 可选) — 是否继续运行 while 循环直到 max_length。 除非被覆盖,否则此标志将在 DeepSpeed ZeRO Stage 3 多个 GPU 环境下设置为 True,以避免在某个 GPU 完成生成之前其他 GPU 出现挂起。 否则,它将被设置为 False
  • assistant_model (PreTrainedModel, 可选) — 可以用来加速生成的辅助模型。 辅助模型必须具有完全相同的 tokenizer。 当使用辅助模型预测候选令牌比使用您调用 generate 的模型运行生成快得多时,可以实现加速。 因此,辅助模型应该更小。
  • streamer (BaseStreamer, 可选) — 将用于流式传输生成的序列的流式传输器对象。 生成的令牌通过 streamer.put(token_ids) 传递,流式传输器负责任何进一步的处理。
  • negative_prompt_ids (torch.LongTensor 形状为 (batch_size, sequence_length), 可选) — 一些处理器(如 CFG)所需的负面提示。 批次大小必须与输入批次大小匹配。 这是一个实验性功能,在将来的版本中可能会发生 API 更改。
  • negative_prompt_attention_mask (torch.LongTensor 形状为 (batch_size, sequence_length), 可选) — negative_prompt_ids 的注意力掩码。
  • kwargs (Dict[str, Any], 可选) — generation_config 的临时参数化,以及/或将转发到模型的 forward 函数的额外模型特定 kwargs。 如果模型是编码器-解码器模型,则编码器特定 kwargs 不应添加前缀,解码器特定 kwargs 应添加 decoder_ 前缀。

返回

ModelOutputtorch.LongTensor

一个 ModelOutput(如果 return_dict_in_generate=True 或当 config.return_dict_in_generate=True 时)或 torch.LongTensor

如果模型不是编码器-解码器模型 (model.config.is_encoder_decoder=False),则可能 ModelOutput 类型是

如果模型是编码器-解码器模型 (model.config.is_encoder_decoder=True),则可能 ModelOutput 类型是

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

大多数生成控制参数在 generation_config 中设置,如果未传递,它将设置为模型的默认生成配置。 您可以通过将相应的参数传递给 generate() 来覆盖任何 generation_config,例如 .generate(inputs, num_beams=4, do_sample=True)

有关生成策略和代码示例的概述,请查看 以下指南.

compute_transition_scores

< >

( sequences: Tensor scores: Tuple beam_indices: Optional = None normalize_logits: bool = False ) torch.Tensor

参数

  • sequences (torch.LongTensor) — 生成的序列。第二维(sequence_length)要么等于 max_length,要么由于 eos_token_id 而更短。
  • scores (tuple(torch.FloatTensor)) — 每个生成步骤中每个词汇表标记的过渡分数。光束过渡分数由之前在该光束中生成的标记的 log softmax 条件下标记的对数概率组成。torch.FloatTensor 元组,最多包含 max_new_tokens 个元素(每个生成标记一个元素),每个张量的形状为 (batch_size*num_beams, config.vocab_size)
  • beam_indices (torch.LongTensor, optional) — 每个生成步骤中生成标记 ID 的光束索引。形状为 (batch_size*num_return_sequences, sequence_length)torch.LongTensor。仅在生成时 num_beams>1 时需要。
  • normalize_logits (bool, optional, defaults to False) — 是否规范化 logits(出于历史原因,它们可能未规范化)。

返回

torch.Tensor

形状为 (batch_size*num_return_sequences, sequence_length)torch.Tensor,包含过渡分数(logits)

根据生成分数(以及光束索引,如果使用了光束搜索)计算序列的过渡分数。这是一个方便的方法,可以快速获得生成时选定标记的分数。

示例

>>> from transformers import GPT2Tokenizer, AutoModelForCausalLM
>>> import numpy as np

>>> tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
>>> model = AutoModelForCausalLM.from_pretrained("openai-community/gpt2")
>>> tokenizer.pad_token_id = tokenizer.eos_token_id
>>> inputs = tokenizer(["Today is"], return_tensors="pt")

>>> # 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 | log probability | probability
...     print(f"| {tok:5d} | {tokenizer.decode(tok):8s} | {score.numpy():.3f} | {np.exp(score.numpy()):.2%}")
|   262 |  the     | -1.414 | 24.33%
|  1110 |  day     | -2.609 | 7.36%
|   618 |  when    | -2.010 | 13.40%
|   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 1: 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`.
>>> # Tip 2: the output length does NOT include the input length
>>> output_length = np.sum(transition_scores.numpy() < 0, axis=1)
>>> length_penalty = model.generation_config.length_penalty
>>> reconstructed_scores = transition_scores.sum(axis=1) / (output_length**length_penalty)
>>> print(np.allclose(outputs.sequences_scores, reconstructed_scores))
True

TFGenerationMixin

class transformers.TFGenerationMixin

< >

( )

一个包含所有支持生成的函数的类,用作 TFPreTrainedModel 中的 mixin。

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

  • 如果 num_beams=1do_sample=False,则通过调用 greedy_search() 进行贪婪解码
  • 如果 penalty_alpha>0top_k>1,则通过调用 contrastive_search() 进行对比搜索
  • 如果 num_beams=1do_sample=True,则通过调用 sample() 进行多项式采样
  • 如果 num_beams>1,则通过调用 beam_search() 进行光束搜索解码

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

generate

< >

( inputs: Optional = None generation_config: Optional = None logits_processor: Optional = None seed = None **kwargs ) ModelOutputtf.Tensor

参数

  • inputs (tf.Tensor,形状取决于模态,optional) — 用作生成提示或作为编码器模型输入的序列。如果为 None,则该方法将使用 bos_token_id 和 1 的批次大小对其进行初始化。对于仅解码器模型,inputs 应采用 input_ids 的格式。对于编码器-解码器模型,inputs 可以表示 input_idsinput_valuesinput_featurespixel_values 中的任何一个。
  • generation_config (~generation.GenerationConfig, optional) — 用作生成调用的基本参数化的生成配置。传递给生成匹配 generation_config 属性的 **kwargs 将覆盖它们。如果未提供 generation_config,则将使用默认值,其加载优先级如下:1) 如果存在,则来自 generation_config.json 模型文件;2) 来自模型配置。请注意,未指定的参数将继承 GenerationConfig 的默认值,应检查其文档以参数化生成。
  • logits_processor (LogitsProcessorList, 可选) — 自定义的 logits 处理器,用于补充从参数和生成配置构建的默认 logits 处理器。 如果传入一个已使用参数或生成配置创建的 logits 处理器,则会抛出错误。 此功能适用于高级用户。
  • seed (List[int], 可选) — 用于控制采样的随机种子,包含两个整数,在 do_sampleTrue 时使用。 请参阅 tf.random 中无状态函数的 seed 参数。
  • kwargs (Dict[str, Any], 可选) — generate_config 的临时参数化,或者将转发到模型 forward 函数的其他模型特定 kwargs。 如果模型是编码器-解码器模型,编码器特定 kwargs 不应加前缀,而解码器特定 kwargs 应以 decoder_ 为前缀。

返回

ModelOutputtf.Tensor

一个 ModelOutput(如果 return_dict_in_generate=True 或当 config.return_dict_in_generate=True 时)或一个 tf.Tensor

如果模型不是编码器-解码器模型 (model.config.is_encoder_decoder=False),则可能 ModelOutput 类型是

如果模型是编码器-解码器模型 (model.config.is_encoder_decoder=True),则可能 ModelOutput 类型是

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

大多数生成控制参数都在 generation_config 中设置,如果没有传递,则将设置为模型的默认生成配置。 可以通过将相应的参数传递给 generate 来覆盖任何 generation_config,例如 .generate(inputs, num_beams=4, do_sample=True)

有关生成策略和代码示例的概述,请查看 以下指南.

compute_transition_scores

< >

( sequences: Tensor scores: Tuple beam_indices: Optional = None normalize_logits: bool = False ) tf.Tensor

参数

  • sequences (tf.Tensor) — 生成的序列。 第二维(sequence_length)要么等于 max_length,要么更短,如果所有批次由于 eos_token_id 而提前结束。
  • scores (tuple(tf.Tensor)) — 每个生成步骤中每个词汇表标记的转移得分。 包含先前生成的标记的对数 softmax 条件下的标记对数概率的束转移得分 tf.Tensor 元组,最多包含 max_new_tokens 个元素(每个生成的标记一个元素),每个张量形状为 (batch_size*num_beams, config.vocab_size)
  • beam_indices (tf.Tensor, 可选) — 每个生成步骤中生成的标记 ID 的束索引。 形状为 (batch_size*num_return_sequences, sequence_length)tf.Tensor。 仅在生成时 num_beams>1 时才需要。
  • normalize_logits (bool, 可选, 默认值 False) — 是否对 logits 进行归一化(出于遗留原因,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("openai-community/gpt2")
>>> model = TFAutoModelForCausalLM.from_pretrained("openai-community/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.414 | 24.33%
|  1110 |  day     | -2.609 | 7.36%
|   618 |  when    | -2.010 | 13.40%
|   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 = 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

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

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

< > 在 GitHub 上更新