File size: 4,311 Bytes
4dde64e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
---
license: apache-2.0
datasets:
- bertin-project/alpaca-spanish
language:
- es
library_name: transformers
---
# 馃悙 Chivito-LoRA 7B 馃悙
## Uso
Revisa el siguiente repo para m谩s detalles: https://github.com/CristianCristanchoT/chivito
```python
from peft import PeftModel
from transformers import LLaMATokenizer, LLaMAForCausalLM, GenerationConfig
tokenizer = LlamaTokenizer.from_pretrained("decapoda-research/llama-13b-hf")
def generate_prompt(data_point):
# desculpe o desastre de formata莽茫o, preciso ser r谩pido
if data_point["input"] != '':
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.
### Instrucci贸n:
{data_point["instruction"]}
### Entrada:
{data_point["input"]}
### Respuesta:"""
else:
return f"""A continuaci贸n hay una instrucci贸n que describe una tarea. Escriba una respuesta que complete adecuadamente la solicitud.
### Instrucci贸n:
{data_point["instruction"]}
### Respuesta:"""
def tokenize(prompt):
result = tokenizer(
prompt,
return_tensors="pt",
)
return result
def generate_and_tokenize_prompt(data_point):
full_prompt = generate_prompt(data_point)
tokenized_full_prompt = tokenize(full_prompt)
return tokenized_full_prompt
model = LLaMAForCausalLM.from_pretrained(
"decapoda-research/llama-7b-hf",
load_in_8bit=True,
device_map="auto",
)
model = PeftModel.from_pretrained(model, "CristianC/chivito_lora_alpaca_es_7b")
generation_config = GenerationConfig(
temperature=0.1,
top_p=0.75,
top_k=40,
num_beams=4
)
def evaluate(instruction):
inputs = generate_and_tokenize_prompt(instruction)
input_ids = inputs["input_ids"].cuda()
generation_output = model.generate(
input_ids=input_ids,
generation_config=generation_config,
return_dict_in_generate=True,
output_scores=True,
max_new_tokens=256
)
for s in generation_output.sequences:
output = tokenizer.decode(s)
print("Respuesta: \n", output.split("### Respuesta:")[1].strip())
test_input = {
'instruction': 'Escriba un programa en Python que imprima los primeros 10 n煤meros de Fibonacci.',
'input': ''
}
evaluate(test_input)
```
## Data
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).
## Finetuning
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.
## Ejemplos:
```
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))
```
## Referencias
Si he visto m谩s, es poni茅ndome sobre los hombros de Gigantes.
[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/).
Ojala te sea de utilidad este proyecto y aprendas tanto como yo al hacerlo.
|