Transformers 4.37 中文文档(十五)(1)https://developer.aliyun.com/article/1564964
greedy_search
( input_ids: LongTensor logits_processor: Optional = None stopping_criteria: Optional = None max_length: Optional = None pad_token_id: Optional = None eos_token_id: Union = None output_attentions: Optional = None output_hidden_states: Optional = None output_scores: Optional = None return_dict_in_generate: Optional = None synced_gpus: bool = False streamer: Optional = None **model_kwargs )
参数
input_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
)— 用作生成提示的序列。logits_processor
(LogitsProcessorList
,可选)— LogitsProcessorList 的实例。派生自 LogitsProcessor 类的实例列表,用于修改应用于每个生成步骤的语言建模头的预测分数。stopping_criteria
(StoppingCriteriaList
,可选)— StoppingCriteriaList 的实例。派生自 StoppingCriteria 类的实例列表,用于告知生成循环是否应该停止。max_length
(int
,可选,默认为 20)— 已弃用。直接使用logits_processor
或stopping_criteria
来限制生成标记的数量。要生成的序列的最大长度。pad_token_id
(int
,可选)— 填充标记的 id。eos_token_id
(Union[int, List[int]]
,可选)— 结束序列标记的 id。可选择使用列表设置多个结束序列标记。output_attentions
(bool
,可选,默认为False
)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回的张量下的attentions
。output_hidden_states
(bool
,可选,默认为False
)— 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回的张量下的hidden_states
。output_scores
(bool
,可选,默认为False
)— 是否返回预测分数。有关更多详细信息,请参见返回的张量下的scores
。return_dict_in_generate
(bool
,可选,默认为False
)— 是否返回 ModelOutput 而不是普通元组。synced_gpus
(bool
,可选,默认为False
)— 是否继续运行 while 循环直到 max_length(对于 ZeRO 阶段 3 需要)streamer
(BaseStreamer
,可选)— 将用于流式传输生成序列的 Streamer 对象。生成的标记通过streamer.put(token_ids)
传递,streamer 负责任何进一步处理。model_kwargs — 附加的特定于模型的关键字参数将被转发到模型的forward
函数。如果模型是编码器-解码器模型,则 kwargs 应包括encoder_outputs
。
使用贪婪解码为具有语言建模头的模型生成标记 id 序列,可用于文本解码器、文本到文本、语音到文本和视觉到文本模型。
在大多数情况下,您不需要直接调用 greedy_search()。请改用 generate()。有关生成策略和代码示例的概述,请查看以下指南。
示例:
>>> from transformers import ( ... AutoTokenizer, ... AutoModelForCausalLM, ... LogitsProcessorList, ... MinLengthLogitsProcessor, ... StoppingCriteriaList, ... MaxLengthCriteria, ... ) >>> tokenizer = AutoTokenizer.from_pretrained("gpt2") >>> model = AutoModelForCausalLM.from_pretrained("gpt2") >>> # set pad_token_id to eos_token_id because GPT2 does not have a PAD token >>> model.generation_config.pad_token_id = model.generation_config.eos_token_id >>> input_prompt = "It might be possible to" >>> input_ids = tokenizer(input_prompt, return_tensors="pt").input_ids >>> # instantiate logits processors >>> logits_processor = LogitsProcessorList( ... [ ... MinLengthLogitsProcessor(10, eos_token_id=model.generation_config.eos_token_id), ... ] ... ) >>> stopping_criteria = StoppingCriteriaList([MaxLengthCriteria(max_length=20)]) >>> outputs = model.greedy_search( ... input_ids, logits_processor=logits_processor, stopping_criteria=stopping_criteria ... ) >>> tokenizer.batch_decode(outputs, skip_special_tokens=True) ["It might be possible to get a better understanding of the nature of the problem, but it's not"]
sample
( input_ids: LongTensor logits_processor: Optional = None stopping_criteria: Optional = None logits_warper: Optional = None max_length: Optional = None pad_token_id: Optional = None eos_token_id: Union = None output_attentions: Optional = None output_hidden_states: Optional = None output_scores: Optional = None return_dict_in_generate: Optional = None synced_gpus: bool = False streamer: Optional = None **model_kwargs ) → export const metadata = 'undefined';GenerateDecoderOnlyOutput, GenerateEncoderDecoderOutput or torch.LongTensor
参数
input_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
)— 用作生成提示的序列。logits_processor
(LogitsProcessorList
,可选)— LogitsProcessorList 的实例。用于修改应用于每个生成步骤的语言建模头的预测分数的类派生自 LogitsProcessor 的实例列表。stopping_criteria
(StoppingCriteriaList
,可选)— StoppingCriteriaList 的实例。用于告知生成循环是否应停止的类派生自 StoppingCriteria 的实例列表。logits_warper
(LogitsProcessorList
,可选)— LogitsProcessorList 的实例。用于在每个生成步骤的多项式抽样之前应用于语言建模头的预测分数分布的类派生自 LogitsWarper 的实例列表。max_length
(int
,可选,默认为 20)— 已弃用。直接使用logits_processor
或stopping_criteria
来限制生成标记的数量。要生成的序列的最大长度。pad_token_id
(int
,可选)— 填充标记的 id。eos_token_id
(Union[int, List[int]]
,可选)— 结束序列标记的 id。可选择使用列表设置多个结束序列标记。output_attentions
(bool
,可选,默认为False
)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions
。output_hidden_states
(bool
,可选,默认为False
)— 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
。output_scores
(bool
,可选,默认为False
)— 是否返回预测分数。有关更多详细信息,请参见返回张量下的scores
。return_dict_in_generate
(bool
,可选,默认为False
)— 是否返回 ModelOutput 而不是普通元组。synced_gpus
(bool
,可选,默认为False
)— 是否继续运行 while 循环直到 max_length(需要 ZeRO 阶段 3)streamer
(BaseStreamer
,可选)— 将用于流式传输生成的序列的 Streamer 对象。生成的标记通过streamer.put(token_ids)
传递,streamer 负责任何进一步处理。model_kwargs — 附加的模型特定 kwargs 将被转发到模型的forward
函数。如果模型是编码器-解码器模型,则 kwargs 应包括encoder_outputs
。
返回
GenerateDecoderOnlyOutput,GenerateEncoderDecoderOutput 或torch.LongTensor
包含生成标记的torch.LongTensor
(默认行为)或一个 GenerateDecoderOnlyOutput,如果model.config.is_encoder_decoder=False
且return_dict_in_generate=True
,或一个 GenerateEncoderDecoderOutput,如果model.config.is_encoder_decoder=True
。
使用多项式采样为具有语言建模头的模型生成标记 id 序列,可用于文本解码器、文本到文本、语音到文本和视觉到文本模型。
在大多数情况下,您不需要直接调用 sample()。请改用 generate()。有关生成策略和代码示例的概述,请查看以下指南。
示例:
>>> from transformers import ( ... AutoTokenizer, ... AutoModelForCausalLM, ... LogitsProcessorList, ... MinLengthLogitsProcessor, ... TopKLogitsWarper, ... TemperatureLogitsWarper, ... StoppingCriteriaList, ... MaxLengthCriteria, ... ) >>> import torch >>> tokenizer = AutoTokenizer.from_pretrained("gpt2") >>> model = AutoModelForCausalLM.from_pretrained("gpt2") >>> # set pad_token_id to eos_token_id because GPT2 does not have a EOS token >>> model.config.pad_token_id = model.config.eos_token_id >>> model.generation_config.pad_token_id = model.config.eos_token_id >>> input_prompt = "Today is a beautiful day, and" >>> input_ids = tokenizer(input_prompt, return_tensors="pt").input_ids >>> # instantiate logits processors >>> logits_processor = LogitsProcessorList( ... [ ... MinLengthLogitsProcessor(15, eos_token_id=model.generation_config.eos_token_id), ... ] ... ) >>> # instantiate logits processors >>> logits_warper = LogitsProcessorList( ... [ ... TopKLogitsWarper(50), ... TemperatureLogitsWarper(0.7), ... ] ... ) >>> stopping_criteria = StoppingCriteriaList([MaxLengthCriteria(max_length=20)]) >>> torch.manual_seed(0) >>> outputs = model.sample( ... input_ids, ... logits_processor=logits_processor, ... logits_warper=logits_warper, ... stopping_criteria=stopping_criteria, ... ) >>> tokenizer.batch_decode(outputs, skip_special_tokens=True) ['Today is a beautiful day, and we must do everything possible to make it a day of celebration.']
beam_search
( input_ids: LongTensor beam_scorer: BeamScorer logits_processor: Optional = None stopping_criteria: Optional = None max_length: Optional = None pad_token_id: Optional = None eos_token_id: Union = None output_attentions: Optional = None output_hidden_states: Optional = None output_scores: Optional = None return_dict_in_generate: Optional = None synced_gpus: bool = False **model_kwargs )
参数
input_ids
(torch.LongTensor
,形状为(batch_size, sequence_length)
) — 用作生成提示的序列。beam_scorer
(BeamScorer
) — 一个派生自 BeamScorer 的实例,定义了在生成过程中如何构建、存储和排序 beam 假设。有关更多信息,请阅读 BeamScorer 的文档。logits_processor
(LogitsProcessorList
,可选)— LogitsProcessorList 的实例。从 LogitsProcessor 派生的类的实例列表,用于修改应用于每个生成步骤的语言建模头的预测分数。stopping_criteria
(StoppingCriteriaList
,可选)— StoppingCriteriaList 的实例。从 StoppingCriteria 派生的类的实例列表,用于告知生成循环是否应该停止。max_length
(int
,可选,默认为 20) — 已弃用。直接使用logits_processor
或stopping_criteria
来限制生成的标记数量。要生成的序列的最大长度。pad_token_id
(int
,可选)— 填充 标记的 id。eos_token_id
(Union[int, List[int]]
,可选)— 序列结束 标记的 id。可选择使用列表设置多个序列结束 标记。output_attentions
(bool
,可选,默认为False
) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。output_hidden_states
(bool
,可选,默认为False
) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。output_scores
(bool
,可选,默认为False
) — 是否返回预测分数。有关更多详细信息,请参阅返回张量下的scores
。return_dict_in_generate
(bool
,可选,默认为False
) — 是否返回一个 ModelOutput 而不是一个普通元组。synced_gpus
(bool
,可选,默认为False
) — 是否继续运行 while 循环直到达到 max_length(ZeRO 阶段 3 所需)model_kwargs — 附加的模型特定 kwargs 将被转发到模型的forward
函数。如果模型是编码器-解码器模型,则 kwargs 应包括encoder_outputs
。
使用beam search 解码为具有语言建模头的模型生成标记 id 序列,可用于文本解码器、文本到文本、语音到文本和视觉到文本模型。
在大多数情况下,您不需要直接调用 beam_search()。请改用generate()
。有关生成策略和代码示例的概述,请查看以下指南。
示例:
>>> from transformers import ( ... AutoTokenizer, ... AutoModelForSeq2SeqLM, ... LogitsProcessorList, ... MinLengthLogitsProcessor, ... BeamSearchScorer, ... ) >>> import torch >>> tokenizer = AutoTokenizer.from_pretrained("t5-base") >>> model = AutoModelForSeq2SeqLM.from_pretrained("t5-base") >>> encoder_input_str = "translate English to German: How old are you?" >>> encoder_input_ids = tokenizer(encoder_input_str, return_tensors="pt").input_ids >>> # lets run beam search using 3 beams >>> num_beams = 3 >>> # define decoder start token ids >>> input_ids = torch.ones((num_beams, 1), device=model.device, dtype=torch.long) >>> input_ids = input_ids * model.config.decoder_start_token_id >>> # add encoder_outputs to model keyword arguments >>> model_kwargs = { ... "encoder_outputs": model.get_encoder()( ... encoder_input_ids.repeat_interleave(num_beams, dim=0), return_dict=True ... ) ... } >>> # instantiate beam scorer >>> beam_scorer = BeamSearchScorer( ... batch_size=1, ... num_beams=num_beams, ... device=model.device, ... ) >>> # instantiate logits processors >>> logits_processor = LogitsProcessorList( ... [ ... MinLengthLogitsProcessor(5, eos_token_id=model.config.eos_token_id), ... ] ... ) >>> outputs = model.beam_search(input_ids, beam_scorer, logits_processor=logits_processor, **model_kwargs) >>> tokenizer.batch_decode(outputs, skip_special_tokens=True) ['Wie alt bist du?']
beam_sample
( input_ids: LongTensor beam_scorer: BeamScorer logits_processor: Optional = None stopping_criteria: Optional = None logits_warper: Optional = None max_length: Optional = None pad_token_id: Optional = None eos_token_id: Union = None output_attentions: Optional = None output_hidden_states: Optional = None output_scores: Optional = None return_dict_in_generate: Optional = None synced_gpus: bool = False **model_kwargs )
参数
input_ids
(torch.LongTensor
,形状为(batch_size, sequence_length)
) — 用作生成提示的序列。beam_scorer
(BeamScorer
) — BeamScorer 的派生实例,定义了在生成过程中如何构建、存储和排序 beam 假设。有关更多信息,请阅读 BeamScorer 的文档。logits_processor
(LogitsProcessorList
, optional) — LogitsProcessorList 的实例。用于修改每个生成步骤应用的语言建模头的预测分数的从 LogitsProcessor 派生类的实例列表。stopping_criteria
(StoppingCriteriaList
, optional) — StoppingCriteriaList 的实例。用于告知生成循环是否应该停止的从 StoppingCriteria 派生类的实例列表。logits_warper
(LogitsProcessorList
, optional) — LogitsProcessorList 的实例。用于在每个生成步骤的多项式抽样之前应用于语言建模头的预测分数分布的扭曲的从 LogitsWarper 派生类的实例列表。max_length
(int
, optional, defaults to 20) — 已弃用。直接使用logits_processor
或stopping_criteria
来限制生成的标记数量。要生成的序列的最大长度。pad_token_id
(int
, optional) — 填充标记的 id。eos_token_id
(Union[int, List[int]]
, optional) — 序列结束标记的 id。可选择使用列表设置多个序列结束标记。output_attentions
(bool
, optional, defaults toFalse
) — 是否返回所有注意力层的注意力张量。有关更多细节,请参见返回的张量中的attentions
。output_hidden_states
(bool
, optional, defaults toFalse
) — 是否返回所有层的隐藏状态。有关更多细节,请参见返回的张量中的hidden_states
。output_scores
(bool
, optional, defaults toFalse
) — 是否返回预测分数。有关更多细节,请参见返回的张量中的scores
。return_dict_in_generate
(bool
, optional, defaults toFalse
) — 是否返回 ModelOutput 而不是普通元组。synced_gpus
(bool
, optional, defaults toFalse
) — 是否继续运行 while 循环直到达到max_length
(对于 ZeRO 阶段 3 需要)。model_kwargs
— 额外的特定于模型的 kwargs 将被转发到模型的forward
函数。如果模型是编码器-解码器模型,则 kwargs 应包括encoder_outputs
。
使用波束搜索多项式抽样为具有语言建模头的模型生成标记 id 序列,可用于文本解码器、文本到文本、语音到文本和视觉到文本模型。
在大多数情况下,您不需要直接调用 beam_sample()。请改用 generate()。有关生成策略和代码示例的概述,请查看以下指南。
示例:
>>> from transformers import ( ... AutoTokenizer, ... AutoModelForSeq2SeqLM, ... LogitsProcessorList, ... MinLengthLogitsProcessor, ... TopKLogitsWarper, ... TemperatureLogitsWarper, ... BeamSearchScorer, ... ) >>> import torch >>> tokenizer = AutoTokenizer.from_pretrained("t5-base") >>> model = AutoModelForSeq2SeqLM.from_pretrained("t5-base") >>> encoder_input_str = "translate English to German: How old are you?" >>> encoder_input_ids = tokenizer(encoder_input_str, return_tensors="pt").input_ids >>> # lets run beam search using 3 beams >>> num_beams = 3 >>> # define decoder start token ids >>> input_ids = torch.ones((num_beams, 1), device=model.device, dtype=torch.long) >>> input_ids = input_ids * model.config.decoder_start_token_id >>> # add encoder_outputs to model keyword arguments >>> model_kwargs = { ... "encoder_outputs": model.get_encoder()( ... encoder_input_ids.repeat_interleave(num_beams, dim=0), return_dict=True ... ) ... } >>> # instantiate beam scorer >>> beam_scorer = BeamSearchScorer( ... batch_size=1, ... max_length=model.config.max_length, ... num_beams=num_beams, ... device=model.device, ... ) >>> # instantiate logits processors >>> logits_processor = LogitsProcessorList( ... [MinLengthLogitsProcessor(5, eos_token_id=model.config.eos_token_id)] ... ) >>> # instantiate logits processors >>> logits_warper = LogitsProcessorList( ... [ ... TopKLogitsWarper(50), ... TemperatureLogitsWarper(0.7), ... ] ... ) >>> outputs = model.beam_sample( ... input_ids, beam_scorer, logits_processor=logits_processor, logits_warper=logits_warper, **model_kwargs ... ) >>> tokenizer.batch_decode(outputs, skip_special_tokens=True) ['Wie alt bist du?']
Transformers 4.37 中文文档(十五)(3)https://developer.aliyun.com/article/1564966