Views
No views yet
1from transformers import AutoTokenizer, AutoModelForSeq2SeqLM, GenerationConfig
2import torch
3use_cuda = torch.cuda.is_available()
4device = torch.device("cuda" if use_cuda else "cpu")
5tokenizer = AutoTokenizer.from_pretrained("Den4ikAI/FRED-T5-XL_instructor_chitchat")
6model = AutoModelForSeq2SeqLM.from_pretrained("Den4ikAI/FRED-T5-XL_instructor_chitchat", torch_dtype=torch.float16).to(device)
7model.eval()
8generation_config = GenerationConfig.from_pretrained("Den4ikAI/FRED-T5-XL_instructor_chitchat")
9def generate(prompt):
10 data = tokenizer(f"<SC6>Человек: {prompt}\nБот: <extra_id_0>", return_tensors="pt").to(model.device)
11 output_ids = model.generate(
12 **data,
13 generation_config=generation_config
14 )[0]
15 print(tokenizer.decode(data["input_ids"][0].tolist()))
16 out = tokenizer.decode(output_ids.tolist())
17 return out
18while 1:
19 generate(input(":> "))
201import torch
2import transformers
3
4use_cuda = torch.cuda.is_available()
5device = torch.device("cuda" if use_cuda else "cpu")
6
7t5_tokenizer = transformers.GPT2Tokenizer.from_pretrained("Den4ikAI/FRED-T5-XL_instructor_chitchat")
8t5_model = transformers.T5ForConditionalGeneration.from_pretrained("Den4ikAI/FRED-T5-XL_instructor_chitchat")
9generation_config = transformers.GenerationConfig.from_pretrained("Den4ikAI/FRED-T5-XL_instructor_chitchat")
10
11while True:
12 print('-'*80)
13 dialog = []
14 while True:
15 msg = input('H:> ').strip()
16 if len(msg) == 0:
17 break
18 msg = msg[0].upper() + msg[1:]
19 dialog.append('Собеседник сказал: ' + msg)
20 # Данный пример промпта позволяет вести диалог и писать инструкции.
21 # prompt = '<SC6>Тебя зовут Анфиса. Тебе интересно машинное обучение.' + '\n'.join(dialog) + '\nТы ответил: <extra_id_0>'
22 # Второй пример - промпт просто для диалогов. В таком режиме не будет глюков, когда модель кидает кусок промпта в ответ.
23 prompt = '<SC1>Тебя зовут Анфиса. Тебе интересно машинное обучение.' + '\n'.join(dialog) + '\nТы ответил: <extra_id_0>'
24
25 input_ids = t5_tokenizer(prompt, return_tensors='pt').input_ids
26 out_ids = t5_model.generate(input_ids=input_ids.to(device), generation_config=generation_config)
27 t5_output = t5_tokenizer.decode(out_ids[0][1:])
28 if '</s>' in t5_output:
29 t5_output = t5_output[:t5_output.find('</s>')].strip()
30
31 t5_output = t5_output.replace('<extra_id_0>', '').strip()
32 t5_output = t5_output.split('Собеседник')[0].strip()
33 print('B:> {}'.format(t5_output))
34 dialog.append('Ты ответил: ' + t5_output)@MISC{Den4ikAI/FRED-T5-XL_instructor_chitchat,
author = {Denis Petrov},
title = {Russian Instruct and Chitchat model},
url = {https://huggingface.co/Den4ikAI/FRED-T5-XL_instructor_chitchat/},
year = 2023
}