🐐 Chivito-LoRA 7B 🐐
Uso
Revisa el siguiente repo para más detalles: https://github.com/CristianCristanchoT/chivito
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, el cual es una traducción de alpaca_data.json.
Finetuning
Para finetunear el modelo se empleao el codigo de Alpaca Lora (tambien fue usado 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, Stanford Alpaca, Alpaca Lora, Cabrita, Bertin, ChatGPT y Hugging Face.
Ojala te sea de utilidad este proyecto y aprendas tanto como yo al hacerlo.
Inference Providers
NEW
This model is not currently available via any of the supported Inference Providers.
The model cannot be deployed to the HF Inference API:
The model has no pipeline_tag.