Views
No views yet
1from peft import PeftModel
2from transformers import LLaMATokenizer, LLaMAForCausalLM, GenerationConfig
3
4tokenizer = LlamaTokenizer.from_pretrained("decapoda-research/llama-13b-hf")
5
6def generate_prompt(data_point):
7 # desculpe o desastre de formatação, preciso ser rápido
8 if data_point["input"] != '':
9 return f"""A continuación hay una instrucción que describe una tarea, junto con una entrada que proporciona más contexto. Escriba una respuesta que complete adecuadamente la solicitud.
10
11### Instrucción:
12{data_point["instruction"]}
13
14### Entrada:
15{data_point["input"]}
16
17### Respuesta:"""
18 else:
19 return f"""A continuación hay una instrucción que describe una tarea. Escriba una respuesta que complete adecuadamente la solicitud.
20
21### Instrucción:
22{data_point["instruction"]}
23
24### Respuesta:"""
25
26def tokenize(prompt):
27 result = tokenizer(
28 prompt,
29 return_tensors="pt",
30 )
31 return result
32
33def generate_and_tokenize_prompt(data_point):
34 full_prompt = generate_prompt(data_point)
35 tokenized_full_prompt = tokenize(full_prompt)
36 return tokenized_full_prompt
37
38
39model = LLaMAForCausalLM.from_pretrained(
40 "decapoda-research/llama-7b-hf",
41 load_in_8bit=True,
42 device_map="auto",
43)
44model = PeftModel.from_pretrained(model, "CristianC/chivito_lora_alpaca_es_7b")
45
46
47generation_config = GenerationConfig(
48 temperature=0.1,
49 top_p=0.75,
50 top_k=40,
51 num_beams=4
52)
53
54def evaluate(instruction):
55
56 inputs = generate_and_tokenize_prompt(instruction)
57
58 input_ids = inputs["input_ids"].cuda()
59
60 generation_output = model.generate(
61 input_ids=input_ids,
62 generation_config=generation_config,
63 return_dict_in_generate=True,
64 output_scores=True,
65 max_new_tokens=256
66 )
67
68 for s in generation_output.sequences:
69 output = tokenizer.decode(s)
70 print("Respuesta: \n", output.split("### Respuesta:")[1].strip())
71
72test_input = {
73 'instruction': 'Escriba un programa en Python que imprima los primeros 10 números de Fibonacci.',
74 'input': ''
75}
76
77evaluate(test_input)Instrucción: nombre las capitales regionales de Chile
Respuesta: Las capitales regionales de Chile son Arica, Antofagasta, La Serena, Coquimbo, Valparaíso, Viña del Mar, Concepción, Temuco, Puerto Montt y Punta Arenas.Instrucción: Que son los chivos?
Los chivos son animales de la familia de los cérvidos. Son herbívoros que se alimentan principalmente de hierba y hojas. Los chivos son animales sociales que viven en manadas y tienen una vida promedio de 10 a 15 años.Instrucción: traduce la frase 'Hello! how are you?' al español
Respuesta: ¡Hola! ¿Cómo estás?Instrucción: escribe un programa de Python que imprima los primeros 24 números de Fibonacci
Respuesta: def fibonacci(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return fibonacci(n-1) + fibonacci(n-2)
print(fibonacci(24))