
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搜索过程只在无法找到更好的候选项时停止(规范的beam搜索算法)。
max_time
(float,可选):允许计算运行的最大时间(以秒为单位)。生成将在分配的时间过去后完成当前的pass。stop_strings
(str或List[str],可选):如果模型输出这些字符串,则应终止生成。
控制生成策略的参数
do_sample
(bool,可选,默认值为False):是否使用采样;否则使用贪婪解码。num_beams
(int,可选,默认值为1):beam搜索的beam数量。1表示没有beam搜索。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):用于top-k过滤的最高概率词汇token的数量。top_p
(float,可选,默认值为1.0):如果设置为float < 1,仅保留概率加起来达到top_p
或更高的最小集合的最可能token以进行生成。min_p
(float,可选):最小token概率,将按最可能token的概率缩放。必须在0到1之间。典型值在0.01-0.2范围内,与设置top_p
在0.99-0.8范围内的选择性相当(使用正常top_p
值的相反值)。typical_p
(float,可选,默认值为1.0):局部典型性测量预测下一个目标token的条件概率与预测随机token的预期条件概率的相似度,给定已经生成的部分文本。如果设置为float < 1,仅保留概率加起来达到typical_p
或更高的最小集合的局部最典型token以进行生成。epsilon_cutoff
(float,可选,默认值为0.0):如果设置为介于0和1之间的float,仅采样条件概率大于epsilon_cutoff
的token。eta_cutoff
(float,可选,默认值为0.0):eta
采样是局部典型采样和epsilon
采样的混合体。如果设置为介于0和1之间的float,仅当token的条件概率大于eta_cutoff
或sqrt(eta_cutoff) * exp(-entropy(softmax(next_token_logits)))
时才考虑该token。diversity_penalty
(float,可选,默认值为0.0):如果beam在某个特定时间生成了与其他组beam相同的token,则从该beam的分数中减去该值。repetition_penalty
(float,可选,默认值为1.0):重复惩罚的参数。1.0表示无惩罚。encoder_repetition_penalty
(float,可选,默认值为1.0):编码器重复惩罚的参数。对原始输入中不存在的序列进行指数惩罚。1.0表示无惩罚。length_penalty
(float,可选,默认值为1.0):用于基于beam生成的长度的指数惩罚。应用为序列长度的指数,然后用于除以序列的分数。由于分数是序列的对数似然(即负值),length_penalty > 0.0
促进更长的序列,而length_penalty < 0.0
鼓励更短的序列。no_repeat_ngram_size
(int,可选,默认值为0):如果设置为int > 0,则所有大小为no_repeat_ngram_size
的ngrams只能出现一次。bad_words_ids
(List[List[int]],可选):不允许生成的token id列表。force_words_ids
(List[List[int]]或List[List[List[int]]],可选):必须生成的token id列表。renormalize_logits
(bool,可选,默认值为False):在应用所有logits处理器或变形器(包括自定义的)之后,是否重新规范化logits。constraints
(List[Constraint],可选):可以添加到生成中的自定义约束,以确保输出将包含由约束对象定义的某些token。forced_bos_token_id
(int,可选,默认值为model.config.forced_bos_token_id
):强制作为解码器起始token之后生成的第一个token的id。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列表。begin_suppress_tokens
(List[int],可选):生成开始时将被抑制的token列表。forced_decoder_ids
(List[List[int]],可选):表示生成索引到token索引的映射的整数对列表,在采样前被强制执行。sequence_bias
(Dict[Tuple[int], float],可选):将token序列映射到其偏置项的字典。正偏置增加序列被选中的几率,而负偏置则相反。guidance_scale
(float,可选):分类器自由指导(CFG)的指导规模。CFG在设置guidance_scale > 1
时启用。更高的指导规模鼓励模型生成更紧密相关于输入提示的样本,通常以质量较差为代价。low_memory
(bool,可选):切换到顺序beam搜索和顺序topk以减少峰值内存。用于beam搜索和对比搜索。watermarking_config
(Union[WatermarkingConfig, dict],可选):通过向随机选择的一组“绿色”token添加小偏置来水印模型输出的参数。如果以字典形式传递,将在内部转换为WatermarkingConfig
。
定义生成输出变量的参数
num_return_sequences
(int,可选,默认值为1):每个batch元素独立计算的返回序列数量。output_attentions
(bool,可选,默认值为False):是否返回所有注意层的注意张量。output_hidden_states
(bool,可选,默认值为False):是否返回所有层的隐藏状态。output_scores
(bool,可选,默认值为False):是否返回预测分数。output_logits
(bool,可选):是否返回未处理的预测logit分数。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。可选,使用列表设置多个序列结束token。
专用于编码器-解码器模型的生成参数
encoder_no_repeat_ngram_size
(int,可选,默认值为0):如果设置为int > 0,出现在encoder_input_ids
中的所有大小为encoder_no_repeat_ngram_size
的ngrams不能出现在decoder_input_ids
中。decoder_start_token_id
(Union[int, List[int]],可选):如果编码器-解码器模型以不同于bos的token开始解码,则该token的id或长度为batch_size
的列表。
专用于助手生成的生成参数
num_assistant_tokens
(int,可选,默认值为5):定义助手模型在每次迭代中生成的投机token数量,然后由目标模型检查。较高的num_assistant_tokens
值使生成更具投机性:如果助手模型表现良好,可以达到较大的速度提升;如果助手模型需要大量修正,则速度提升较小。num_assistant_tokens_schedule
(str,可选,默认值为“heuristic”):定义生成期间应如何更改最大助手token的计划。"heuristic"
:当所有投机token都正确时,num_assistant_tokens
增加2,否则减少1。num_assistant_tokens
值在使用相同助手模型的多次生成调用中是持久的。"heuristic_transient"
:与“heuristic”相同,但每次生成调用后num_assistant_tokens
重置为初始值。"constant"
:生成期间num_assistant_tokens
保持不变。
prompt_lookup_num_tokens
(int,可选,默认值为None):输出为候选token的token数量。max_matching_ngram_size
(int,可选,默认值为None):用于提示匹配的最大ngram大小。如果未提供,默认值为2。
缓存机制的特定参数
cache_implementation
(str,可选,默认值为None):生成时应使用的缓存类。
通配符
持有生成任务配置的类。一个生成调用支持以下生成方法:文本解码器、文本到文本、语音到文本和视觉到文本模型:
- 贪婪解码:如果
num_beams=1
且do_sample=False
- 对比搜索:如果
penalty_alpha>0
且top_k>1
- 多项式采样:如果
num_beams=1
且do_sample=True
- beam搜索解码:如果
num_beams>1
且do_sample=False
- beam搜索多项式采样:如果
num_beams>1
且do_sample=True
- 多样性beam搜索解码:如果
num_beams>1
且num_beam_groups>1
- 受约束的beam搜索解码:如果
constraints
不为None或force_words_ids
不为None - 辅助解码:如果传递了
assistant_model
或prompt_lookup_num_tokens
到generate
要了解更多关于解码策略的信息,请参阅文本生成策略指南。
许多这些标志控制生成的logits或停止条件。确保检查与生成相关的类,以全面了解可能的操作,以及它们的使用示例。
本文翻译自huggingface官方文档 https://huggingface.co/docs/transformers/v4.41.3/zh/main_classes/text_generation