目录
14. encoder_no_repeat_ngram_size
2.1、如果一些参数不给定,model.generate用的是哪些参数呢?
2.2、generate 怎么防止类似eos终止符过早出现呢?
2. 使用eos_token_id和pad_token_id参数
5. 清晰的任务指示(Prompt Engineering)
2.3、generate 怎么对eos过早出现进行惩罚(和上面问题类似)?
transformers
库中的 .generate()
函数是一个非常强大的功能,它是用于自动生成文本的。这个函数的参数很多,允许你细致地控制生成过程。下面,简单介绍一些常用的参数及其技术背景。
一、generate函数的常见参数
1.
input_ids
- 描述:这是传递给模型的输入数据的编码表示,通常是一系列经过编码的token IDs。它是生成文本的起点。
- 技术背景:在NLP中,我们通常需要将文本转换成模型能理解的数字形式,
input_ids
就是这个转换过程的结果。2.
max_length
- 描述:控制生成文本的最大长度。包括输入token的数量在内。
- 技术背景:在文本生成过程中,限制输出长度是很重要的,以避免生成过长的文本,这会导致生成质量下降或者资源消耗增加。
3.
min_length
- 描述:设置生成文本的最小长度,确保生成的文本不会太短。
- 技术背景:在某些情况下,我们需要保证输出文本达到一定的长度,增加信息的丰富性。
4.
do_sample
- 描述:是否在生成文本时使用采样策略。如果设置为False,则使用贪心策略进行解码。
- 技术背景:贪心策略总是选择概率最高的下一个token,这可能导致生成的文本过于确定且缺乏多样性。采样策略引入随机性,使生成的文本更加多样化。
5.
temperature
- 描述:用于调整生成过程中的随机性程度。数值越大,生成的文本越随机。
- 技术背景:温度调整是调控softmax输出分布的一种方法,可以平滑或者加剧分布中的差异,影响选择下一个token的随机性。
6.
top_k
- 描述:在采样策略中,仅考虑概率最高的前k个token进行随机选择。
- 技术背景:这是一种称为Top-K采样的方法,能够减少生成文本中的低概率词汇,提高文本的连贯性和质量。
7.
top_p
- 描述:适用于另一种采样策略,保留累计概率达到p的最小集合,然后从这个集合中进行选择。
- 技术背景:这被称为nucleus采样或Top-p采样,它比Top-K采样更为动态,能够根据不同情况调整采样集合的大小。
8.
num_return_sequences
- 描述:设置生成几个文本。即使输入只有一个,也可以生成多个不同的输出。
- 技术背景:这个参数允许模型在单次调用中输出多个独立的文本序列,有助于生成文本的多样性和创造力。
9.
repetition_penalty
- 描述:用来防止文本重复的参数,使得模型在选择已经出现的词时变得更加谨慎。
- 技术背景:为了避免生成的文本过于重复,通过调节这个参数,可以降低重复词汇的选择概率,提高文本的多样性和可读性。
10.
early_stopping
- 描述:是否在所有序列达到
eos_token_id
时停止生成。- 技术背景:这个参数允许提前结束生成过程,当模型生成了结束符(如句点或其他特定符号)时,可以停止继续生成,节省资源。
11.
pad_token_id
- 描述:定义用于填充的token ID。在文本生成中,如果生成的文本短于
max_length
,这个ID将被用来填充生成文本。- 技术背景:在处理不等长的序列时,填充操作确保了所有序列具有相同的长度,便于模型处理。
12.
eos_token_id
- 描述:定义结束序列的token ID。当模型生成了这个ID对应的token时,将停止生成进一步的token。
- 技术背景:特定的结束标记有助于明确指示文本序列的合理结束,提高生成文本的逻辑性和完整性。
13.
no_repeat_ngram_size
- 描述:禁止生成中出现长度为此值的重复n-gram。这可以防止生成的文本中出现重复的短语。
- 技术背景:通过限制n-gram的重复出现,可以显著提高文本的多样性和新颖性,避免无聊或重复的内容生成。
14.
encoder_no_repeat_ngram_size
- 描述:这个参数用于在encoder-decoder模型中,防止在encoder部分出现重复的n-grams。
- 技术背景:主要用于改善带有编码器的模型的输出质量,例如在翻译或摘要任务中防止重复。
15.
attention_mask
- 描述:一个指示哪些位置可以被模型注意到的二进制(0或1)序列。这可以用来避免模型注意到某些特定的token,比如填充token。
- 技术背景:在注意力机制中,通过为特定的输入位置设置遮罩,可以动态调整模型的焦点,提高模型的效率和效果。
16.
decoder_start_token_id
- 描述:在使用序列到序列(Se