语言模型|参数详解

开源语言模型transformers的GenerationConfig类包含所有语言模型参数,本站提供中文帮助文档,方便大家可以在线快速搜索查阅,了解各语言模型的主流参数作用,可以得到更好的推理结果。

语言模型|参数详解

语言模型|参数基础知识详解

在我们使用语言模型时,经常能够看一些参数名称难以理解的设置选项,但我们并不知道这些都代表着什么意思,调整参数后将会有什么影响,所以本站翻译了语言模型transformersGenerationConfig类。你所使用的语言模型中不一定有以及参数,但以下参数应该是包含所有语言模型主流设置的,所以大家可以在这里快速搜索查阅。

参数解释来源

Generation (huggingface.co)

文本生成

每个框架都在其各自的 GenerationMixin 类中实现了 generate() 方法来进行文本生成:

不管您选择的是哪个框架,您都可以使用 GenerationConfig 类的实例来为 generate 方法参数化。请参阅该类以获取生成方法行为的完整参数列表。

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

GenerationConfig

class transformers.GenerationConfig( **kwargs )

用于控制文本生成的参数类,它包含了多个参数,用于调整生成文本的长度和策略。以下是GenerationConfig中的参数列表及其说明:

控制输出长度的参数:

max_length(int,可选,默认为20)— 生成的token的最大长度。对应于输入提示的长度 + max_new_tokens。如果设置了max_new_tokens,该参数的效果将被覆盖。

max_new_tokens(int,可选)— 生成的token的最大数量,忽略输入提示中的token数。

min_length(int,可选,默认为0)— 生成的序列的最小长度。对应于输入提示的长度 + min_new_tokens。如果设置了min_new_tokens,该参数的效果将被覆盖。

min_new_tokens(int,可选)— 生成的token的最小数量,忽略输入提示中的token数。

early_stopping(bool或str,可选,默认为False)— 控制基于beam的方法(如beam-search)的停止条件。它接受以下值:True,当有num_beams个完整候选时,生成停止;False,应用启发式方法,在很少可能找到更好候选时停止生成;”never”,只有当不能找到更好候选时(传统的beam search算法)才停止。

max_time(float,可选)— 允许计算运行的最大时间,单位为秒。在分配的时间过去后,generation仍会完成当前的处理。

控制生成策略的参数:

do_sample(bool,可选,默认为False)— 是否使用采样,否则使用贪婪解码。 num_beams(int,可选,默认为1)— beam search的束搜索数量。1表示不使用beam search。 num_beam_groups(int,可选,默认为1)— 将num_beams分成几组,以确保不同组的beam之间具有多样性。详见这篇论文以获取更多细节。 penalty_alpha(float,可选)— 该值平衡了模型置信度和对比搜索解码中的退化惩罚。 use_cache(bool,可选,默认为True)— 模型是否应该使用过去的键/值注意力(如果适用于该模型)来加速解码。

控制模型输出logits的参数:

temperature(float,可选,默认为1.0)— 用于调节下一个token概率的值。

top_k(int,可选,默认为50)— 保留前k个概率最高的词汇token,用于top-k过滤。

top_p(float,可选,默认为1.0)— 如果设置为小于1的浮点数,则仅保留概率总和为top_p或更高的最小一组最有可能的token进行生成。

typical_p(float,可选,默认为1.0)— 局部典型性衡量了条件概率预测下一个目标token与已生成的部分文本的预期条件概率预测随机token之间的相似性。如果设置为小于1的浮点数,则保留最局部典型性token的最小一组,概率总和为typical_p或更高。详见这篇论文以获取更多细节。

epsilon_cutoff(float,可选,默认为0.0)— 如果设置为0到1之间的浮点数,则仅采样概率大于epsilon_cutoff的token。在论文中,建议的值范围为3e-4到9e-4,具体取决于模型的大小。详见Truncation Sampling as Language Model Desmoothing以获取更多细节。

eta_cutoff(float,可选,默认为0.0)— Eta采样是局部典型性采样和epsilon采样的混合。如果设置为0到1之间的浮点数,则仅在大于eta_cutoff或sqrt(eta_cutoff) * exp(-entropy(softmax(next_token_logits)))时才考虑token。后一项直观地是下一个token概率的期望,由sqrt(eta_cutoff)缩放。在论文中,建议的值范围为3e-4到2e-3,具体取决于模型的大小。详见Truncation Sampling as Language Model Desmoothing以获取更多细节。

diversity_penalty(float,可选,默认为0.0)— 如果生成的token与同一时间点其他组的beam生成的token相同,则从beam的分数中减去此值。注意,仅在启用组beam search时diversity_penalty才有效。

repetition_penalty(float,可选,默认为1.0)— 用于重复惩罚的参数。1.0表示无惩罚。详见这篇论文以获取更多细节。

encoder_repetition_penalty(float,可选,默认为1.0)— encoder_repetition_penalty的参数。对于不在原始输入中的序列进行指数惩罚。1.0表示无惩罚。

length_penalty(float,可选,默认为1.0)— 用于基于beam的生成的长度的指数惩罚。它作为指数应用于序列长度,进而用于除以序列的得分。由于得分是序列的对数似然(即负数),length_penalty > 0.0 会促进生成更长的序列,而 length_penalty < 0.0 则鼓励生成更短的序列。

no_repeat_ngram_size(int,可选,默认为0)— 如果设置为大于0的整数,则该大小的所有ngram只能出现一次。

bad_words_ids(List[List[int]],可选)— 不允许生成的token id的列表。详见NoBadWordsLogitsProcessor以获取更多文档和示例。

force_words_ids(List[List[int]]或List[List[List[int]]],可选)— 必须生成的token id的列表。如果给定List[List[int]],则将其视为必须包含的单词的简单列表,与bad_words_ids相反。如果给定List[List[List[int]]],这将触发一个离散约束,其中可以允许每个单词的不同形式。

renormalize_logits(bool,可选,默认为False)— 在应用所有logits处理器或warper(包括自定义的)后是否重新规范化logits。强烈建议将此标志设置为True,因为搜索算法假设得分logits已经归一化,但某些logit处理器或warper可能会破坏归一化。

constraints(List[Constraint],可选)— 可以添加到生成中的自定义约束,以确保输出将包含由Constraint对象定义的特定token的使用,以最合理的方式实现。

forced_bos_token_id(int,可选,默认为model.config.forced_bos_token_id)— 在decoder_start_token_id后强制作为第一个生成的token的id。对于像mBART这样的多语言模型,第一个生成的token必须是目标语言的token。

forced_eos_token_id(Union[int,List[int]],可选,默认为model.config.forced_eos_token_id)— 在达到max_length时强制作为最后一个生成的token的id。可以选择使用列表设置多个序列结束符。

remove_invalid_values(bool,可选,默认为model.config.remove_invalid_values)— 是否删除模型的可能的nan和inf输出,以防止生成方法崩溃。注意,使用remove_invalid_values可能会减慢生成速度。

exponential_decay_length_penalty(tuple(int,float),可选)— 此元组在生成一定数量的token后增加指数增加的长度惩罚。元组应包含:(start_index,decay_factor),其中start_index表示惩罚开始的位置,decay_factor表示指数衰减的因子。

suppress_tokens(List[int],可选)— 在生成中将被抑制的token列表。SuppressTokens logits处理器将将它们的logits设置为-inf,以便它们不被采样。

begin_suppress_tokens(List[int],可选)— 在生成的开始处将被抑制的token列表。SupressBeginTokens logits处理器将将它们的logits设置为-inf,以便它们不被采样。

forced_decoder_ids(List[List[int]],可选)— 一个整数对的列表,指示从生成索引到token索引的映射,将在采样之前被强制。例如,[[1,123]]表示第二个生成的token将始终是索引为123的token。

sequence_bias(Dict[Tuple[int],float],可选)— 将token序列映射到其偏差项的字典。正偏差增加了选择该序列的可能性,而负偏差则相反。详见SequenceBiasLogitsProcessor以获取更多文档和示例。

guidance_scale(float,可选)— 用于分类器自由引导(CFG)的引导因子。通过设置guidance_scale > 1来启用CFG。更高的guidance_scale鼓励模型生成与输入提示更紧密相关的样本,通常以牺牲质量为代价。

生成输出的变量定义参数包括:

num_return_sequences(int,可选,默认为1)— 对于批处理中的每个元素,独立计算返回的序列数量。

output_attentions(bool,可选,默认为False)— 是否返回所有注意力层的注意力张量。有关详细信息,请参阅返回的张量下的attentions。

output_hidden_states(bool,可选,默认为False)— 是否返回所有层的隐藏状态。有关详细信息,请参阅返回的张量下的hidden_states。

output_scores(bool,可选,默认为False)— 是否返回预测得分。有关详细信息,请参阅返回的张量下的scores。

return_dict_in_generate(bool,可选,默认为False)— 是否返回ModelOutput而不是普通元组。

生成时可以使用的特殊token

pad_token_id(int,可选)— 填充token的id。

bos_token_id(int,可选)— 开始序列的token的id。

eos_token_id(Union[int,List[int]],可选)— 结束序列的token的id。可以选择使用列表设置多个序列结束符。

仅适用于编码器-解码器模型的生成参数

encoder_no_repeat_ngram_size(int,可选,默认为0)— 如果设置为大于0的整数,则在encoder_input_ids中出现的大小为该值的所有ngram不能出现在decoder_input_ids中。

decoder_start_token_id(int,可选)— 如果编码器-解码器模型以与bos不同的token开始解码,则为该token的id。

此文章由OpenAI开源维基百科原创发布,如若转载请注明出处:https://openai.wiki/language-model_detailed-parameters.html

(0)
上一篇 2023-07-19 20:42
下一篇 2023-07-21 13:59

相关推荐

  • Git

    Git是一种强大的分布式版本控制系统,可以帮助软件开发人员协作和管理代码。它具有完整的历史记录功能,支持分支管理和合并,并且是跨平台的,支持Windows,macOS和Linux等多个操作系统。

    基础知识 2022-12-20
    00977
  • WSL2|Linux系统Ubuntu安装CUDA

    本节教大家如何在Windows的WSL子系统Ubuntu中安装部署英伟达NVIDIA的CUDA加速运算,因为是WSL子系统的关系,最主要的问题还是libcuda.so无法找到,需要建立软链接。

    2023-08-30
    00992
  • Python3|Windows安装教程

    Python3是一种非常流行的编程语言,本文详细介绍了如何在Windows系统中安装Python3,并为初学者提供了详细的步骤和注意事项,帮助您快速入门。

    2022-12-15
    001.4K
  • Anaconda|Miniconda|Linux安装教程

    在本文中,我们将向您展示如何在Linux系统中安装Miniconda或Anaconda,Conda是一个强大的Python包管理工具,可以方便地管理和创建虚拟环境,并安装所需的Python包。

    2023-05-26
    001.3K
  • PyTorch|安装教程

    PyTorch 是一个基于 Python 的开源机器学习框架,它由 Facebook 开发并维护。PyTorch 的主要特点是其动态计算图机制,以及提供了丰富的神经网络层和工具库。

    2023-03-31
    002.5K

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

微信