Text Generation
Safetensors
Spanish
Paraguay
Culture
Custom Code
Guaraní
unsloth
enpaiva commited on
Commit
4cc4b8e
·
verified ·
1 Parent(s): 381bf7c

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +73 -52
README.md CHANGED
@@ -6,12 +6,13 @@ tags:
6
  - Paraguay
7
  - Culture
8
  - Custom Code
 
9
  datasets:
10
- - somosnlp/qa-cultura-paraguaya
11
  pipeline_tag: text-generation
12
  ---
13
 
14
- # Gua'a - Conoce la Cultura Paraguaya
15
 
16
  <p align="center">
17
  <img src="https://cdn-uploads.huggingface.co/production/uploads/65f4605f4c2a1312c4d0a4b2/SfnV8yd8Zfp3dtFhX6HV1.png" style="width: 25%;">
@@ -27,7 +28,6 @@ pipeline_tag: text-generation
27
  + [Características 📘](#model-description-)
28
  * [Usos 🛠️](#uses-)
29
  + [Uso directo 🎯](#direct-use-)
30
- + [Temas relacionados 🎯](#direct-use-)
31
  * [Sesgos, Riesgos, y Limitaciones ⚠️](#bias-risks-and-limitations-)
32
  * [Como puedo empezar a utilizar el modelo 🚀](#how-to-get-started-with-the-model-)
33
  * [Cómo Contribuir](#environmental-impact)
@@ -38,17 +38,40 @@ pipeline_tag: text-generation
38
 
39
  ### Descripción del modelo 📘
40
 
41
- **gua-a** es un modelo de Inteligencia Artificial innovador enfocado específicamente en responder preguntas relacionadas a la cultura paraguaya.
42
- Diseñamos un arquitectura innovadora llamada **keeper**, que combina el poder de *ColBERT* para la recuperación eficiente de documentos y el modelo *Gemma* de 2B de parámetros
43
- para la generación de respuestas precisas y contextuales. Ademas almacena y recupera documentos de texto directamente en tensores,
44
- lo que facilita una integración fluida y eficiente entre los componentes de recuperación y generación de texto.
45
 
46
  ### Características
47
 
48
- - **Retriever ColBERT**: Utiliza una versión especializada de ColBERT <ins>"AdrienB134/ColBERTv1.0-bert-based-spanish-mmarcoES"</ins> para recuperar de manera eficiente el contexto relevante de una amplia base de datos interna.
49
- - **Generador LLM Gemma**: Emplea <ins>"google/gemma-2b-it"</ins> quantizada a 4-bits para generar respuestas detalladas y contextualmente adecuadas basadas en la información recuperada.
50
- - **Dataset Especializado**: Creamos un dataset exclusivo, corregido y centrado en la cultura paraguaya, tomando como texto base el libro <ins>"Ñande Ypykuéra" de Narciso R. Colmán</ins>, asegurando respuestas precisas y culturalmente relevantes.
51
- - **Almacenamiento en Tensores**: Los documentos se almacenan internamente en tensores.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
 
53
  ## Usos 🛠️
54
 
@@ -58,86 +81,84 @@ A continuación compartimos algunos fragmentos de código sobre cómo empezar r
58
 
59
  El modelo responde directamente a las preguntas que haga, basandose en datos del libro <ins>"Ñande Ypykuéra"</ins>.
60
 
61
- ### Temas relacionados 🎯
62
-
63
- El modelo extrae directamente preguntas y respuestas precargados en el dataset, basandose en datos del libro <ins>"Ñande Ypykuéra"</ins>.
64
-
65
  ## Sesgos, Riesgos, y Limitaciones ⚠️
66
 
67
  El modelo **gua-a** es un modelo muy experimental, con poco tiempo de desarrollo. Las respuestas pueden ser imprecisas y de baja calidad.
68
  El libro utilizado por el modelo solo refleja parte de la cultura guaraní, limitandose a la visión del autor del libro.
69
 
70
-
71
  ## Como puedo empezar a utilizar el modelo 🚀
72
 
73
- ### Uso directo 🎯
74
 
75
- Obs: El modelo corre en GPUs simples como T4. ~11.6GB de GPU RAM.
76
 
77
  #### Running the model on a single / multi GPU
78
 
79
  ```python
80
- # pip install accelerate
81
- # pip install bitsandbytes
82
- # pip install einops
83
 
84
- from transformers import AutoTokenizer, AutoModelForCausalLM
 
 
 
 
 
 
 
 
 
85
 
86
- tokenizer = AutoTokenizer.from_pretrained("somosnlp/gua-a", trust_remote_code=True)
87
- model = AutoModelForCausalLM.from_pretrained("somosnlp/gua-a", trust_remote_code=True).to('cuda')
 
 
 
88
 
89
- input_text = "Sobre que trata el libro?"
90
- input_ids = tokenizer.encode(input_text)
91
-
92
- outputs = model.generate(input_ids, k=3, max_new_tokens=512) # k: número de documentos recuperados
93
- print(tokenizer.decode(outputs[0], skip_special_tokens=True))
94
- ```
95
 
 
 
96
 
97
- ### Temas relacionados 🎯
 
98
 
99
- Obs: El modelo corre en GPUs simples como T4. ~11.6GB de GPU RAM.
 
 
 
 
 
100
 
101
- #### Running the model on a single / multi GPU
102
 
103
- ```python
104
- # pip install accelerate
105
- # pip install bitsandbytes
106
- # pip install einops
107
 
108
- from transformers import AutoTokenizer, AutoModelForCausalLM
109
 
110
- tokenizer = AutoTokenizer.from_pretrained("somosnlp/gua-a", trust_remote_code=True)
111
- model = AutoModelForCausalLM.from_pretrained("somosnlp/gua-a", trust_remote_code=True).to('cuda')
112
 
113
- input_text = "Sobre que trata el libro?"
114
- input_ids = tokenizer.encode(input_text)
115
 
116
- top_texts = model.document_extractor(input_ids, k=5) # k: número de documentos recuperados
117
- print([tokenizer.decode(text, skip_special_tokens=True) for text in top_texts])
118
  ```
119
 
120
  ## Cómo Contribuir
121
 
122
- Estamos abiertos a contribuciones para mejorar aún más Keeper. Si estás interesado en:
123
 
124
- Optimizar los algoritmos de recuperación y generación de texto.
125
- Mejorar la precisión y la relevancia de las respuestas generadas.
126
- Probar nuevos modelos de recuperación y generación.
127
 
128
- Por favor, consulta nuestra guía de contribución o ponte en contacto directamente a través de los Issues en GitHub (https://github.com/EnPaiva93/keeper.git).
129
 
130
 
131
  ## Licencia
132
 
133
- - keeper se distribuye bajo la licencia **apache 2.0**.
134
- - gua-a-2b se ditribuye bajo la licencia **cc-by-sa-4.0**.
135
 
136
  ## Créditos
137
 
138
  - Desarrollado por **Enrique Paiva (https://huggingface.co/enpaiva)**.
139
 
140
- gua-a es el resultado de un esfuerzo para avanzar en el entendimiento y la apreciación de la cultura paraguaya mediante la tecnología de IA.
141
  Agradecemos a todos los que han contribuido a este proyecto.
142
  - Daniel Cabrera
143
  - Leticia Bogado
 
6
  - Paraguay
7
  - Culture
8
  - Custom Code
9
+ - Guaraní
10
  datasets:
11
+ - somosnlp/dataset-cultura-guarani_corpus-it
12
  pipeline_tag: text-generation
13
  ---
14
 
15
+ # Gua'a - Conoce la Cultura Guaraní
16
 
17
  <p align="center">
18
  <img src="https://cdn-uploads.huggingface.co/production/uploads/65f4605f4c2a1312c4d0a4b2/SfnV8yd8Zfp3dtFhX6HV1.png" style="width: 25%;">
 
28
  + [Características 📘](#model-description-)
29
  * [Usos 🛠️](#uses-)
30
  + [Uso directo 🎯](#direct-use-)
 
31
  * [Sesgos, Riesgos, y Limitaciones ⚠️](#bias-risks-and-limitations-)
32
  * [Como puedo empezar a utilizar el modelo 🚀](#how-to-get-started-with-the-model-)
33
  * [Cómo Contribuir](#environmental-impact)
 
38
 
39
  ### Descripción del modelo 📘
40
 
41
+ **gua-a** es un modelo de Inteligencia Artificial innovador enfocado específicamente en responder preguntas relacionadas a la cultura guaraní.
42
+ Se basa en el finetuning del modelo *Mistral* de 7B de parámetros para la generación de respuestas.
 
 
43
 
44
  ### Características
45
 
46
+ - **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.
47
+ - **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.
48
+ - **Finetuning**: Se detallan los siguientes parametros de entrenamiento:
49
+
50
+ LoRA
51
+ r = 64,
52
+ target_modules = ["q_proj", "k_proj", "v_proj", "o_proj","gate_proj", "up_proj", "down_proj"],
53
+ lora_alpha = 128,
54
+ lora_dropout = 0,
55
+ bias = "none",
56
+ use_gradient_checkpointing = True,
57
+ random_state = 42,
58
+ use_rslora = False,
59
+ loftq_config = None,
60
+ Trainer
61
+ per_device_train_batch_size = 2,
62
+ gradient_accumulation_steps = 32,
63
+ warmup_steps = 10,
64
+ num_train_epochs = 5,
65
+ learning_rate = 2e-4,
66
+ fp16 = not torch.cuda.is_bf16_supported(),
67
+ bf16 = torch.cuda.is_bf16_supported(),
68
+ logging_steps = 1,
69
+ optim = "adamw_8bit",
70
+ weight_decay = 0.01,
71
+ lr_scheduler_type = "linear",
72
+ save_strategy="epoch",
73
+ seed = 42,
74
+ report_to="tensorboard",
75
 
76
  ## Usos 🛠️
77
 
 
81
 
82
  El modelo responde directamente a las preguntas que haga, basandose en datos del libro <ins>"Ñande Ypykuéra"</ins>.
83
 
 
 
 
 
84
  ## Sesgos, Riesgos, y Limitaciones ⚠️
85
 
86
  El modelo **gua-a** es un modelo muy experimental, con poco tiempo de desarrollo. Las respuestas pueden ser imprecisas y de baja calidad.
87
  El libro utilizado por el modelo solo refleja parte de la cultura guaraní, limitandose a la visión del autor del libro.
88
 
 
89
  ## Como puedo empezar a utilizar el modelo 🚀
90
 
91
+ ### Realizar Inferencias 🎯
92
 
93
+ Obs: El modelo corre en GPUs simples como T4. ~5.7GB de GPU RAM.
94
 
95
  #### Running the model on a single / multi GPU
96
 
97
  ```python
 
 
 
98
 
99
+ major_version, minor_version = torch.cuda.get_device_capability()
100
+ # Must install separately since Colab has torch 2.2.1, which breaks packages
101
+ !pip install "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"
102
+ if major_version >= 8:
103
+ # Use this for new GPUs like Ampere, Hopper GPUs (RTX 30xx, RTX 40xx, A100, H100, L40)
104
+ !pip install --no-deps packaging ninja einops flash-attn xformers trl peft accelerate bitsandbytes
105
+ else:
106
+ # Use this for older GPUs (V100, Tesla T4, RTX 20xx)
107
+ !pip install --no-deps xformers trl peft accelerate bitsandbytes
108
+ pass
109
 
110
+ from unsloth import FastLanguageModel
111
+ import torch
112
+ max_seq_length = 512
113
+ dtype = None
114
+ load_in_4bit = True
115
 
116
+ base_prompt = """Responde a preguntas de forma clara, amable, concisa y solamente en el lenguaje español, sobre el libro Ñande Ypykuéra.
 
 
 
 
 
117
 
118
+ ### Pregunta:
119
+ {}
120
 
121
+ ### Respuesta:
122
+ {}""
123
 
124
+ model, tokenizer = FastLanguageModel.from_pretrained(
125
+ model_name = "somosnlp/gua-a",
126
+ max_seq_length = max_seq_length,
127
+ dtype = dtype,
128
+ load_in_4bit = load_in_4bit,
129
+ )
130
 
131
+ FastLanguageModel.for_inference(model) # Enable native 2x faster inference
132
 
133
+ pregunta = "Quien es gua'a?"
 
 
 
134
 
135
+ inputs = tokenizer([ft_prompt.format(pregunta,"",)], return_tensors = "pt").to("cuda")
136
 
137
+ outputs = model.generate(**inputs, max_new_tokens = 128, temperature = 0.1, repetition_penalty=1.15)
 
138
 
139
+ tokenizer.batch_decode(outputs[0][inputs["input_ids"].shape[1]:].unsqueeze(0), skip_special_tokens=True)[0]
 
140
 
 
 
141
  ```
142
 
143
  ## Cómo Contribuir
144
 
145
+ Estamos abiertos a contribuciones para mejorar aún más el modelo gua-a. =) Si estás interesado en:
146
 
147
+ Ampliar el dataset creado
148
+ Continuar el finetuning
 
149
 
150
+ Por favor, consulta nuestra guía de contribución o ponte en contacto directamente a través de los Issues en GitHub
151
 
152
 
153
  ## Licencia
154
 
155
+ - gua-a-7b se ditribuye bajo la licencia **cc-by-sa-4.0**.
 
156
 
157
  ## Créditos
158
 
159
  - Desarrollado por **Enrique Paiva (https://huggingface.co/enpaiva)**.
160
 
161
+ gua-a es el resultado de un esfuerzo para avanzar en el entendimiento y la apreciación de la cultura guaraní mediante la tecnología de IA.
162
  Agradecemos a todos los que han contribuido a este proyecto.
163
  - Daniel Cabrera
164
  - Leticia Bogado