Thập ma?!!! Nguyên lai tự hồi quy mô hình đích model.generate bất năng dụng vu huấn luyện!!??
Chỉ năng dụng pháp forward nhất thứ sinh thành, đãn nhất thứ tính chỉ năng đắc đáo nhất cá tensor
Tựu thị tại giá lí thủ tối đại trị đạo trí mô hình thê độ đoạn liễu, sở dĩ bất năng dụng model.generate lai huấn luyện, yếu huấn luyện chỉ năng dụng model.forward
next_tokens=torch.argmax(next_tokens_scores,dim=-1)# phản hồi chỉ định duy độ tối đại trị đích tự hào
inverted_mask=1.0-attention_mask
attention_mask=inverted_mask.masked_fill(# dụng value điền sung tensor trung dữ mask trung trị vi 1 vị trí tương đối ứng đích nguyên tố
inverted_mask.to(torch.bool),torch.finfo(inputs_embeds.dtype).min)
model.generate
Tạimain.py
Đích chủ hàm sổ trung điều dụng, nhiên hậu chuyển đáotransformers/generation/utils.py
Giá cá văn kiện đíchClass GenerationMixin
Trungdef generate
Hàm sổ –> nhiên hậu tiến nhậpdef greedy_search
Kỳ trungwhile True:
# tại giá cá while tuần hoàn lí thật hiện tự hồi quy
Kỳ trung hoàn hữu nhất cáself.prepare_inputs_for_generation(input_ids, **model_kwargs)
Dụng vu xử lý model vận hành đích thâu nhập, # hữu đích tạimain.py
Trung trọng tả giá cá hàm sổ.
Class GenerationMixin
:Trung dụng lai đắc đáo mỗi cá dự trắc token đích đắc phân hàm sổ # hữu đích hội trọng tả hoặc điều dụng giá cá hàm sổdef compute_transition_scores(
)# dụng pháp kỳ lệ
>>>fromtransformersimportGPT2Tokenizer,AutoModelForCausalLM
>>>importnumpyasnp
>>>tokenizer=GPT2Tokenizer.from_pretrained("gpt2")
>>>model=AutoModelForCausalLM.from_pretrained("openai-community/gpt2")
>>>tokenizer.pad_token_id=tokenizer.eos_token_id
>>>inputs=tokenizer(["Today is"],return_tensors="pt")
>>># Example 1: Đả ấn mỗi cá token đích đắc phân with Greedy Search
>>>outputs=model.generate(**inputs,max_new_tokens=5,return_dict_in_generate=True,output_scores=True)
>>>transition_scores=model.compute_transition_scores(# hữu thời hầu hội tại ngoại diện trọng tả giá cá hàm sổ
...outputs.sequences,outputs.scores,normalize_logits=True
...)
>>># decoder-only models, like the GPT family, and 1;
>>># encoder-decoder models, like BART or T5.
# dã tựu thị thuyết encoder-decoder tựu thị đáp án tòng đầu khai thủy; decoder-only thị đáp án tại thâu nhập hậu biên tiếp trứ
>>>input_length=1ifmodel.config.is_encoder_decoderelseinputs.input_ids.shape[1]
>>>generated_tokens=outputs.sequences[:,input_length:]
>>>fortok,scoreinzip(generated_tokens[0],transition_scores[0]):
...# | token | token string | log probability | probability
...print(f "|{tok:5d}|{tokenizer.decode(tok):8s}|{score.numpy():.3f}|{np.exp(score.numpy()):.2%}")
|262|the|-1.414|24.33%
|1110|day|-2.609|7.36%
|618|when|-2.010|13.40%
|356|we|-1.859|15.58%
|460|can|-2.508|8.14%