File size: 9,254 Bytes
d153a99 6d5b1df f19652c 6d5b1df 4cc4b8e 8a91894 f19652c 4cc4b8e f19652c d153a99 6d5b1df 4cc4b8e 6d5b1df c80cd32 6d45078 c80cd32 6d5b1df 299e4aa 61401bc 6d5b1df 299e4aa 2f4db3e 6d5b1df 4cc4b8e 6d5b1df 4cc4b8e f99c95e 104cb85 4cc4b8e 104cb85 4cc4b8e 104cb85 f99c95e 104cb85 f99c95e 6d5b1df 4cc4b8e 6d5b1df 4cc4b8e 6d5b1df e3eb1aa 4cc4b8e 6d5b1df 4cc4b8e 6d5b1df 4cc4b8e 6d5b1df 4cc4b8e 6d5b1df 4cc4b8e 104cb85 6d5b1df 4cc4b8e 6d5b1df 4cc4b8e 6d5b1df 4cc4b8e e3eb1aa 4cc4b8e 6d5b1df 6017aa5 6d5b1df 4cc4b8e 6d5b1df 299e4aa c90fc7f 299e4aa 61401bc 7c3a5dc 61401bc 6d5b1df 299e4aa 2f4db3e 6d5b1df 2f4db3e 6d5b1df 2f4db3e 6d5b1df 2f4db3e |
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 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 |
---
language:
- es
license: cc-by-sa-4.0
tags:
- Paraguay
- Culture
- Custom Code
- Guaraní
- unsloth
datasets:
- somosnlp/dataset-cultura-guarani_corpus-it
pipeline_tag: text-generation
---
# Gua'a - Conoce la Cultura Guaraní
<p align="center">
<img src="https://cdn-uploads.huggingface.co/production/uploads/65f4605f4c2a1312c4d0a4b2/SfnV8yd8Zfp3dtFhX6HV1.png" style="width: 25%;">
</p>
*En la mitología guarani: El padre de la sabiduria usaba un gua'a o loro para intentar comunicarse con su dios supremo Tupã. Haciendo la misma analogía creamos el modelo "gua-a" para difundir la cultura guarani a todos los hispanohablantes.*
## Tabla de Contenidos
- [Gua'a - Conoce la Cultura Paraguaya](#model-description-)
* [Detalles del modelo 📈](#model-description-)
+ [Descripción del modelo 📘](#model-description-)
+ [Características 📘](#model-description-)
* [Usos 🛠️](#uses-)
+ [Uso directo 🎯](#direct-use-)
* [Como puedo empezar a utilizar el modelo 🚀](#how-to-get-started-with-the-model-)
* [Evaluación](#eval)
* [Sesgos, Riesgos, y Limitaciones ⚠️](#bias-risks-and-limitations-)
* [Licencia](#environmental-impact)
* [Impacto Ambiental](#environmental-impact)
* [Más Información](#environmental-impact)
## Detalles del modelo 📈
### Descripción del modelo 📘
**gua-a** es un modelo de Inteligencia Artificial innovador enfocado específicamente en responder preguntas relacionadas a la cultura guaraní.
Se basa en el finetuning del modelo *Mistral* de 7B de parámetros para la generación de respuestas.
### Características
- **Generador LLM Mistral**: Emplea <ins>"unsloth/mistral-7b-bnb-4bit"</ins> un modelo de Unsloth, quantizado a 4-bits para generar respuestas concisa y contextualmente adecuadas basadas en las preguntas del usuario.
- **Dataset Especializado**: Creamos un dataset exclusivo, corregido y centrado en la cultura guaraní, tomando como texto base el libro <ins>"Ñande Ypykuéra" de Narciso R. Colmán</ins>, asegurando respuestas precisas y culturalmente relevantes.
- **Finetuning**: Se detallan los siguientes parametros de entrenamiento:
```python
### LoRA
r = 64,
target_modules = ["q_proj", "k_proj", "v_proj", "o_proj","gate_proj", "up_proj", "down_proj"],
lora_alpha = 128,
lora_dropout = 0,
bias = "none",
use_gradient_checkpointing = True,
random_state = 42,
use_rslora = False,
loftq_config = None
### Trainer
per_device_train_batch_size = 2,
gradient_accumulation_steps = 32,
warmup_steps = 10,
num_train_epochs = 5,
learning_rate = 2e-4,
fp16 = not torch.cuda.is_bf16_supported(),
bf16 = torch.cuda.is_bf16_supported(),
logging_steps = 1,
optim = "adamw_8bit",
weight_decay = 0.01,
lr_scheduler_type = "linear",
save_strategy="epoch",
seed = 42,
report_to="tensorboard"
```
## Usos 🛠️
A continuación compartimos algunos fragmentos de código sobre cómo empezar rápidamente a ejecutar el modelo. Primero asegúrate de instalar pip install -U transformers, luego copia el fragmento de la sección que sea relevante para tu caso de uso.
### Uso directo 🎯
El modelo responde directamente a las preguntas que haga, basandose en datos del libro <ins>"Ñande Ypykuéra"</ins>.
## Como puedo empezar a utilizar el modelo 🚀
### Realizar Inferencias 🎯
Obs: El modelo corre en GPUs simples como T4. ~5.7GB de GPU RAM.
#### Running the model on a single / multi GPU
```python
major_version, minor_version = torch.cuda.get_device_capability()
# Must install separately since Colab has torch 2.2.1, which breaks packages
!pip install "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"
if major_version >= 8:
# Use this for new GPUs like Ampere, Hopper GPUs (RTX 30xx, RTX 40xx, A100, H100, L40)
!pip install --no-deps packaging ninja einops flash-attn xformers trl peft accelerate bitsandbytes
else:
# Use this for older GPUs (V100, Tesla T4, RTX 20xx)
!pip install --no-deps xformers trl peft accelerate bitsandbytes
pass
from unsloth import FastLanguageModel
import torch
max_seq_length = 512
dtype = None
load_in_4bit = True
base_prompt = """Responde a preguntas de forma clara, amable, concisa y solamente en el lenguaje español, sobre el libro Ñande Ypykuéra.
### Pregunta:
{}
### Respuesta:
{}"""
model, tokenizer = FastLanguageModel.from_pretrained(
model_name = "somosnlp/gua-a",
max_seq_length = max_seq_length,
dtype = dtype,
load_in_4bit = load_in_4bit,
)
FastLanguageModel.for_inference(model) # Enable native 2x faster inference
pregunta = "Quien es gua'a?"
inputs = tokenizer([ft_prompt.format(pregunta,"",)], return_tensors = "pt").to("cuda")
outputs = model.generate(**inputs, max_new_tokens = 128, temperature = 0.1, repetition_penalty=1.15, pad_token_id=tokenizer.eos_token_id)
tokenizer.batch_decode(outputs[0][inputs["input_ids"].shape[1]:].unsqueeze(0), skip_special_tokens=True)[0]
```
## Evaluación
El aparatado de evaluación se divide en las siguientes partes:
- Inferencia del modelo **gua-a** sobre el conjunto de entrenamiento (*train*) y el conjunto de pruebas (*test*)
- Evaluación de las respuestas usando el modelo *TheBloke/prometheus-13B-v1.0-GGUF* , con el prompt en español, con las siguientes rúbricas de desempeño.
```
eval_prompt_template = """###Descripción de la tarea: Se da una instrucción (puede incluir un Input en su interior), una consulta, una respuesta a evaluar, una respuesta de referencia que obtiene una puntuación de 5, y una rúbrica de puntuación que representa un criterio de evaluación.
1. Escribir un feedback detallado que evalúe la calidad de la respuesta basándose estrictamente en la rúbrica de puntuación dada, no evaluando en general.
2. Después de redactar el comentario, escriba una puntuación de 1, 2, 3, 4 ó 5. Debe remitirse a la rúbrica de puntuación.
3. El formato de salida debe ser el siguiente "Feedback: (escriba una retroalimentación para los criterios) [RESULT] (1 o 2 o 3 o 4 o 5)"
4. Por favor, no genere ninguna otra apertura, cierre y explicaciones.
5. Evalúe únicamente los puntos en común entre la respuesta generada y la respuesta de referencia. No evalúe cosas que están presentes en la respuesta de referencia pero no en la respuesta generada.
###La instrucción de evaluar: Tu tarea es evaluar la respuesta generada y la respuesta de referencia para la consulta: {query}
###Respuesta generada a evaluar: {generated_answer}
###Respuesta de referencia (Puntuación 5): {reference_answer}
###Rúbricas de puntuación:
Puntuación 1: Si la respuesta generada no tiene similitud con la respuesta de referencia.
Puntuación 2: Si la respuesta generada es similar según la respuesta de referencia, pero contiene múltiples errores significativos o omisiones.
Puntuación 3: Si la respuesta generada es similar según la respuesta de referencia, pero incluye errores menores o falta de detalles.
Puntuación 4: Si la respuesta generada es correcta que la respuesta de referencia, pero no es tan concisa.
Puntuación 5: Si la respuesta generada es es totalmente correcta según la respuesta de referencia.
###Feedback:"""
```
Se obtuvieron los siguientes puntajes:
- Suma de scores para el modelo 'gua-a-7b-bnb-4bit-ft-epoch-5' en train: **37.89 %**
- Suma de scores para el modelo 'gua-a-7b-bnb-4bit-ft-epoch-5' en test: **17.76 %**
Si bien estos valores pueden representar sesgos del modelo de evaluación o del modelo propuesto, es un punto de partida para mejorar el modelo **gua-a** y generar nuevos modelos enfocados en la cultura guaraní.
## Sesgos, Riesgos, y Limitaciones ⚠️
El modelo **gua-a** es un modelo muy experimental, con poco tiempo de desarrollo. Las respuestas pueden ser imprecisas y de baja calidad.
El dataset utilizado por el modelo solo refleja parte de la cultura guaraní, limitandose a la visión del autor del libro.
## Licencia
- gua-a se ditribuye bajo la licencia **cc-by-sa-4.0**.
## Impacto Ambiental
CO2 Emission Related to Experiments
Experiments were conducted using a private infrastructure, which has a carbon efficiency of 0.432 kg CO_2eq/kWh.
A cumulative of 8 hours of computation was performed on hardware of type RTX 3080 TI (TDP of 350W).
Total emissions are estimated to be 1.21 kg CO_2eq of which 0 percents were directly offset.
Estimations were conducted using the https://mlco2.github.io/impact - MachineLearning Impact calculator
@article{lacoste2019quantifying,
title={Quantifying the Carbon Emissions of Machine Learning},
author={Lacoste, Alexandre and Luccioni, Alexandra and Schmidt, Victor and Dandres, Thomas},
journal={arXiv preprint arXiv:1910.09700},
year={2019}
}
## Más Información
Este proyecto fue desarrollado durante el Hackathon #Somos600M organizado por SomosNLP. El conjunto de datos se creó utilizando distilabel de Argilla y endpoints patrocinados por HuggingFace.
Team:
- Enrique Paiva (https://huggingface.co/enpaiva)
- Daniel Cabrera
- Leticia Bogado
- Alberto Benítez
- Emmanuel |