File size: 4,329 Bytes
779f4b4
973af1a
 
 
779f4b4
973af1a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0921704
 
 
1af34d4
973af1a
 
 
 
 
 
 
 
 
 
 
2e15918
973af1a
2e15918
 
 
 
 
973af1a
1801bfb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
---
license: apache-2.0
language:
- es
---

# Implementar LLM y SQL para interactuar con una base de datos en español en un enfoque multimodal

El desafío de generar SQL preciso para las consultas de los usuarios ha persistido durante mucho tiempo, ya que exige una comprensión profunda tanto de la consulta como de la base de datos. 
Existen soluciones se basan en las capacidades de los grandes modelos de lenguaje (LLM) para generar SQL que se alinee con el esquema de la base de datos y recupere con precisión los datos requeridos.  
Sin embargo, existen varios problemas como son  
- Estas soluciones se encuentran en idioma inglés
- Hay algunos conocimientos necesarios que no están incluidos explícitamente en el esquema de la base de datos ni han sido aprendidos por los LLM.

Por lo que se propone una herramienta que sea capaz de interactuar en español con una base de datos utilizando un enfoque multimodal, como primer paso se creó un conjunto de datos personalizado para posteriormente entrenarlo apoyados por PEFT (parameter-efficient fine-tuning) y por medio de comandos de voz poder generar instrucciones y que sus correspondientes respuestas puedan entregar resultados ya sea por respuesta de voz, texto o imagen según sea la respuesta

## Detalles del modelo

### Descripcion

En este proyecto se busco hacer fine-tuning a 2 modelos diferentes:
- Mistral 7B
- Code Llama
Para ver cual arrojaba mejores resultados como base

Metodología como primer paso es generar un set de datos a partir de datos donde se incluya la pregunta y su SQL correspondiente, el segundo paso consiste en augmentar los datos utilizando diferentes técnicas, una vez generados los datos procedemos a una fase de entrenamiento
Después de entrenar el modelo procedemos a una fase de pruebas se colocan instrucciones ya sean por voz o texto en caso de existir inconsistencias procedemos a una fase de corrección y obtenemos de manera multimodal el resultado esperado, en caso de ser una respuesta corta se darán los resultados con voz y si son muy grades se presentaran en forma de tablas o imagenes


![image/png](https://cdn-uploads.huggingface.co/production/uploads/6529beddd78452c474eacc37/IKuxLT3JFnZyaPd1Hqccz.png)

## Notebook

Aqui se muestra un link al github con los los notebooks de entreamiento de cada modelo

Primeramente se hizo un fine-tuning al modelo Code Llama para ver los resultados que nos daria
- [CodeLlama](https://github.com/Asis41/LLM_SQL_BaseDatosEspanol/blob/main/CodeLlamaFinTunSQL.ipynb)

Como segundo modelo se utilizo Mistral7b este se hizo un fine-tuning con el modelo quantizado a 4bits para que pueda ser ejectuado en una mayor cantidad de equipos

- [Mistral](https://github.com/Asis41/LLM_SQL_BaseDatosEspanol/blob/main/trainer-llm-detect-ai-comp-mistral-7b%20(1).ipynb)

# Dataset

[Link al Dataset](https://huggingface.co/datasets/somosnlp/LLM_SQL_BaseDatosEspanol)

# Modelos/Adpter

[Link al modelo de mistral](https://huggingface.co/somosnlp/LLM_SQL_BaseDatosEspanol_Mistral) 

# Demo
[Link al demo](https://github.com/ManeAI31416/Multimodal-SQL/blob/main/uploadModel_hf_SQL.ipynb)

## Resultados

Después de aplicar la herramienta se logró que en un 80 % de los datos se entregaron sentencias favorables y al aplicar la auto-corrección se logro una cifra del 87% 

## Contribuciones

Nuestras contribuciones se listan a continuación:
- Generar consultas por medio de audio o texto a una base de datos personalizada.
- Entrenamiento de un modelo con texto en español para realizar consultas en SQL.
- Entregar respuestas a consultas utilizando un enfoque multimodal (texto, audio o imágenes).
- Validación de la calidad de las respuestas con mecanismos de autocorrección

## Integrantes 

- Asis Heriberto Rangel Ortiz
- Emmanuel Alexis Zarazua Rubio
- Néstor Emmanuel Briones Ramirez
- Ventura Rivera Robles
- Fernando Morales Flores

## Training procedure


The following `bitsandbytes` quantization config was used during training:
- quant_method: bitsandbytes
- load_in_8bit: True
- load_in_4bit: False
- llm_int8_threshold: 6.0
- llm_int8_skip_modules: None
- llm_int8_enable_fp32_cpu_offload: False
- llm_int8_has_fp16_weight: False
- bnb_4bit_quant_type: fp4
- bnb_4bit_use_double_quant: False
- bnb_4bit_compute_dtype: float32
### Framework versions


- PEFT 0.5.0