Views
No views yet
1import torch
2from peft import PeftModel, PeftConfig
3from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
4
5peft_model_id = "hackathon-somos-nlp-2023/opt-6.7b-lora-sag-t3000-v300-v2"
6config = PeftConfig.from_pretrained(peft_model_id)
7model = AutoModelForCausalLM.from_pretrained(config.base_model_name_or_path, return_dict=True, load_in_8bit=True, device_map='auto')
8tokenizer = AutoTokenizer.from_pretrained(config.base_model_name_or_path)
9
10# Load the Lora model
11model = PeftModel.from_pretrained(model, peft_model_id)
12
13model.config.use_cache = True
14
15generation_config = GenerationConfig(temperature=.8,
16 top_p=0.75,
17 top_k=40)
18
19def gen_summary(text):
20 input_text = f'<s>Instruction: Elabora un resume del siguiente texto.\nInput: {text}\nOutput: '
21 batch = tokenizer(input_text, return_tensors='pt')
22 with torch.cuda.amp.autocast():
23 output_tokens = model.generate(**batch,
24 max_new_tokens=256,
25 generation_config=generation_config)
26 output = tokenizer.decode(output_tokens[0], skip_special_tokens=True)
27 return output
28
29def gen_question(text):
30 input_text = f'<s>Instruction: Dado el siguiente texto quiero que generes una pregunta cuya respuesta se encuentre en él.\nInput: {text}\nOutput: '
31 batch = tokenizer(input_text, return_tensors='pt')
32 with torch.cuda.amp.autocast():
33 output_tokens = model.generate(**batch,
34 max_new_tokens=256,
35 generation_config=generation_config)
36 output = tokenizer.decode(output_tokens[0], skip_special_tokens=True)
37 return output
38
39def gen_qna(context, question):
40 input_text = f"""<s>Instruction: Te voy a proporcionar un texto del cual deseo que me respondas una pregunta.
41 El texto es el siguiente: `{context}`\nInput: {question}\nOutput: """
42 batch = tokenizer(input_text, return_tensors='pt')
43 with torch.cuda.amp.autocast():
44 output_tokens = model.generate(**batch,
45 max_new_tokens=256,
46 generation_config=generation_config)
47 output = tokenizer.decode(output_tokens[0], skip_special_tokens=True)
48 return output