huggingface generate函数简介

目录

一、generate函数的常见参数 

1. input_ids

2. max_length

3. min_length

4. do_sample

5. temperature

6. top_k

7. top_p

8. num_return_sequences

9. repetition_penalty

10. early_stopping

11. pad_token_id

12. eos_token_id

13. no_repeat_ngram_size

14. encoder_no_repeat_ngram_size

15. attention_mask

16. decoder_start_token_id

17. use_cache

18. num_beams

19. bad_words_ids

20. length_penalty

21. forced_bos_token_id

22. forced_eos_token_id

23. remove_invalid_values

24. logit_bias

 二、generate实际使用的参数

2.1、如果一些参数不给定,model.generate用的是哪些参数呢?

2.2、generate 怎么防止类似eos终止符过早出现呢?

1. 调整max_length和min_length

2. 使用eos_token_id和pad_token_id参数

3. 调整length_penalty

4. 使用stop_token参数

5. 清晰的任务指示(Prompt Engineering)

6. 微调模型

 2.3、generate 怎么对eos过早出现进行惩罚(和上面问题类似)?

1. 使用logit_bias参数调整EOS的生成概率

2. 调整length_penalty

3. 微调模型时添加惩罚

4. 调整终止条件

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值