CristianC commited on
Commit
4dde64e
1 Parent(s): 6bfd044

Archivo readme

Browse files
Files changed (1) hide show
  1. README.md +142 -0
README.md ADDED
@@ -0,0 +1,142 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ datasets:
4
+ - bertin-project/alpaca-spanish
5
+ language:
6
+ - es
7
+ library_name: transformers
8
+ ---
9
+
10
+ # 🐐 Chivito-LoRA 7B 🐐
11
+
12
+ ## Uso
13
+
14
+ Revisa el siguiente repo para más detalles: https://github.com/CristianCristanchoT/chivito
15
+
16
+ ```python
17
+ from peft import PeftModel
18
+ from transformers import LLaMATokenizer, LLaMAForCausalLM, GenerationConfig
19
+
20
+ tokenizer = LlamaTokenizer.from_pretrained("decapoda-research/llama-13b-hf")
21
+
22
+ def generate_prompt(data_point):
23
+ # desculpe o desastre de formatação, preciso ser rápido
24
+ if data_point["input"] != '':
25
+ 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.
26
+
27
+ ### Instrucción:
28
+ {data_point["instruction"]}
29
+
30
+ ### Entrada:
31
+ {data_point["input"]}
32
+
33
+ ### Respuesta:"""
34
+ else:
35
+ return f"""A continuación hay una instrucción que describe una tarea. Escriba una respuesta que complete adecuadamente la solicitud.
36
+
37
+ ### Instrucción:
38
+ {data_point["instruction"]}
39
+
40
+ ### Respuesta:"""
41
+
42
+ def tokenize(prompt):
43
+ result = tokenizer(
44
+ prompt,
45
+ return_tensors="pt",
46
+ )
47
+ return result
48
+
49
+ def generate_and_tokenize_prompt(data_point):
50
+ full_prompt = generate_prompt(data_point)
51
+ tokenized_full_prompt = tokenize(full_prompt)
52
+ return tokenized_full_prompt
53
+
54
+
55
+ model = LLaMAForCausalLM.from_pretrained(
56
+ "decapoda-research/llama-7b-hf",
57
+ load_in_8bit=True,
58
+ device_map="auto",
59
+ )
60
+ model = PeftModel.from_pretrained(model, "CristianC/chivito_lora_alpaca_es_7b")
61
+
62
+
63
+ generation_config = GenerationConfig(
64
+ temperature=0.1,
65
+ top_p=0.75,
66
+ top_k=40,
67
+ num_beams=4
68
+ )
69
+
70
+ def evaluate(instruction):
71
+
72
+ inputs = generate_and_tokenize_prompt(instruction)
73
+
74
+ input_ids = inputs["input_ids"].cuda()
75
+
76
+ generation_output = model.generate(
77
+ input_ids=input_ids,
78
+ generation_config=generation_config,
79
+ return_dict_in_generate=True,
80
+ output_scores=True,
81
+ max_new_tokens=256
82
+ )
83
+
84
+ for s in generation_output.sequences:
85
+ output = tokenizer.decode(s)
86
+ print("Respuesta: \n", output.split("### Respuesta:")[1].strip())
87
+
88
+ test_input = {
89
+ 'instruction': 'Escriba un programa en Python que imprima los primeros 10 números de Fibonacci.',
90
+ 'input': ''
91
+ }
92
+
93
+ evaluate(test_input)
94
+ ```
95
+
96
+ ## Data
97
+
98
+ Se uso [alpaca-spanish dataset](https://huggingface.co/datasets/bertin-project/alpaca-spanish), el cual es una traducción de [alpaca_data.json](https://github.com/tatsu-lab/stanford_alpaca/blob/main/alpaca_data.json).
99
+
100
+ ## Finetuning
101
+
102
+ Para finetunear el modelo se empleao el codigo de [Alpaca Lora](https://github.com/tloen/alpaca-lora) (tambien fue usado [Cabrita](https://github.com/22-hours/cabrita)), que proporciona las herramientas necesarias para ajustar el modelo LLaMA.
103
+
104
+
105
+ ## Ejemplos:
106
+
107
+ ```
108
+ Instrucción: nombre las capitales regionales de Chile
109
+ 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.
110
+ ```
111
+
112
+
113
+ ```
114
+ Instrucción: Que son los chivos?
115
+ 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.
116
+ ```
117
+
118
+ ```
119
+ Instrucción: traduce la frase 'Hello! how are you?' al español
120
+ Respuesta: ¡Hola! ¿Cómo estás?
121
+ ```
122
+
123
+ ```
124
+ Instrucción: escribe un programa de Python que imprima los primeros 24 números de Fibonacci
125
+ Respuesta: def fibonacci(n):
126
+ if n == 0:
127
+ return 0
128
+ elif n == 1:
129
+ return 1
130
+ else:
131
+ return fibonacci(n-1) + fibonacci(n-2)
132
+
133
+ print(fibonacci(24))
134
+ ```
135
+
136
+ ## Referencias
137
+ Si he visto más, es poniéndome sobre los hombros de Gigantes.
138
+
139
+ [LLaMA](https://ai.facebook.com/blog/large-language-model-llama-meta-ai/), [Stanford Alpaca](https://github.com/tatsu-lab/stanford_alpaca), [Alpaca Lora](https://github.com/tloen/alpaca-lora), [Cabrita](https://github.com/22-hours/cabrita), [Bertin](https://huggingface.co/bertin-project), [ChatGPT](https://openai.com/blog/chatgpt) y [Hugging Face](https://huggingface.co/).
140
+
141
+ Ojala te sea de utilidad este proyecto y aprendas tanto como yo al hacerlo.
142
+