telodigoensergio commited on
Commit
f138dd8
1 Parent(s): cf93c56

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +127 -113
README.md CHANGED
@@ -9,152 +9,166 @@ license: apache-2.0
9
 
10
  # Model Card for Phi-2-LC
11
 
12
- Este modelo es el primer paso hacia un modelo de lenguaje que pueda usarse para reescribir de textos de carácter adminsitrativo
13
- con el objetivo de mejorar su comprensión y lecturabilidad para todo el mundo.
 
14
 
15
  ### Model Description
16
 
17
- El modelo es el resultado de un proceso de ajuste fino de [phi-2](https://huggingface.co/microsoft/phi-2), desarrollado por microsoft con unos 2.5b de parámetros. Para el
18
- ajuste se han extraído multitud de textos de índole administrativa de las principales páginas web de la administración del Estado español y se han reescrito siguiendo directrices del lenguaje claro mediante gpt-3.5 a través de la API de OpenAI.
 
 
 
 
 
 
 
19
 
20
- Para la carga y ajuste del modelo se han utilizado técnicas de cuantización con la siguiente configuración:
21
 
22
- ```
23
- bnb_config = BitsAndBytesConfig(load_in_4bit=True,
24
- bnb_4bit_quant_type='nf4',
25
- bnb_4bit_compute_dtype='float16',
26
- bnb_4bit_use_double_quant=True)
27
- ```
28
 
 
29
 
30
- y se ha aplicado LoRA a las capas lineales para el fine-tunning:
31
- ```
32
- config = LoraConfig(
33
- r=16,
34
- lora_alpha=32,
35
- target_modules=[
36
- 'q_proj',
37
- 'k_proj',
38
- 'v_proj',
39
- 'dense',
40
- 'fc1',
41
- 'fc2',
42
- ], #print(model) will show the modules to use
43
- bias="none",
44
- lora_dropout=0.05,
45
- task_type="CAUSAL_LM",
46
- ```
47
 
48
- ## Parámetros de entrenamiento
49
- Para el entrenamiento se utilizaron los siguientes parámetros:
50
- ```
51
- training_args = TrainingArguments(
52
- output_dir='./results',
53
- overwrite_output_dir=True,
54
- per_device_train_batch_size=2,
55
- per_device_eval_batch_size=2,
56
- gradient_accumulation_steps=5,
57
- gradient_checkpointing=True,
58
- gradient_checkpointing_kwargs={"use_reentrant": False},
59
- warmup_steps=50,
60
- #max_steps=1000,
61
- num_train_epochs=2,
62
- learning_rate=5e-5,
63
- weight_decay=0.01,
64
- optim="paged_adamw_8bit",
65
- fp16=True,
66
- logging_dir='./logs',
67
- logging_strategy="steps",
68
- logging_steps=100,
69
- save_strategy="steps",
70
- save_steps=200,
71
- save_total_limit=2,
72
- evaluation_strategy="steps",
73
- eval_steps=200,
74
- load_best_model_at_end=True,
75
- )
76
- ```
77
- ## Prompting
78
- El prompt para el uso sigue la siguiente estructura:
79
 
80
- ```
81
- prompt = f"""###System:
82
- Lee el siguiente texto y hazlo más claro:
83
- ###Texto:
84
 
85
- {texto}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
 
87
- ###Texto aclarado:
88
- """
89
- ```
90
- ## Probar el modelo:
91
- **Importar las librerías necesarias**:
92
  ```
93
  !pip install transformers
94
  !pip install bitsandbytes
95
  !pip install accelerate
96
  import torch
97
  from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
98
- ```
99
 
100
- **Configuración de BitsAndBytes:**
 
 
101
  ```
102
- bnb_config = BitsAndBytesConfig(load_in_4bit=True,
103
- bnb_4bit_quant_type='nf4',
104
- bnb_4bit_compute_dtype='float16',
105
- bnb_4bit_use_double_quant=True)
106
  ```
107
-
108
- **Carga del modelo y el tokenizador:**
 
 
 
 
 
 
 
 
 
109
  ```
110
- model = AutoModelForCausalLM.from_pretrained(model_id, device_map='auto',
111
- quantization_config=bnb_config,
112
- trust_remote_code=True)
113
-
114
- tokenizer = AutoTokenizer.from_pretrained(model_id,
115
- add_eos_token=True,
116
- trust_remote_code=True)
117
- tokenizer.pad_token = tokenizer.eos_token
118
- tokenizer.truncation_side = "left"
119
  ```
120
- **Definir prompt e iniciar inferencia:**
 
 
 
 
 
 
 
 
 
 
121
  ```
122
- new_prompt = f"""###System:
123
- Lee el siguiente texto y hazlo más claro:
124
- ###Texto:
 
 
 
 
125
 
126
- {texto}
127
 
128
- ###Texto aclarado:
129
- """
130
 
131
- inputs = tokenizer(new_prompt, return_tensors="pt", return_attention_mask=False, padding=True, truncation=True)
132
- outputs = model.generate(**inputs, max_length=1000)
133
- text = tokenizer.batch_decode(outputs,skip_special_tokens=True)[0]
134
- print(text)
135
- ```
136
 
 
137
 
138
- - **Developed by:** [Sergio Chicón](https://huggingface.co/telodigoensergio)
139
- - **Language(s) (NLP):** Español(España)
140
- - **Finetuned from model:** [Microsoft/phi-2](https://huggingface.co/microsoft/phi-2)
141
 
142
- ### Model Sources
143
 
144
- - **Repository:** [Google Colab](https://colab.research.google.com/drive/1qSOtPtRHCN5D1VW6MG-pe17OUZf4D2Q5?usp=sharing)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
145
 
146
- ## Usos del Modelo
147
 
148
- El modelo "phi-2-LC" ha sido creado específicamente para simplificar textos administrativos y legales que suelen ser difíciles de entender debido a su complejidad y uso de jerga especializada. Su uso principal es facilitar la comprensión de estos textos para personas sin formación especializada en áreas legales o administrativas, así como para mejorar la accesibilidad de la información proporcionada por los ministerios de España a través de sus páginas web. Además, este modelo también se utiliza para afinar los sistemas de procesamiento de lenguaje natural (PLN) en tareas de simplificación del lenguaje, lo que demuestra su aplicación práctica tanto en contextos gubernamentales como en desarrollos tecnológicos en IA.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
149
 
150
- ## Sesgos del Modelo
151
- Dado que el dataset utilizado para el entrenamiento del modelo proviene exclusivamente de textos gubernamentales españoles, es probable que el modelo pueda exhibir sesgos relacionados con el contexto cultural y legal específico de España. Estos sesgos pueden influir en la generalización del modelo cuando se aplique a textos de naturaleza o origen diferentes. Reconocer y abordar estos sesgos es crucial para evitar malinterpretaciones y errores en aplicaciones más amplias. Se recomienda una evaluación continua del modelo para identificar y mitigar tales sesgos de manera efectiva.
152
 
153
- ## Impacto medioambiental
154
 
155
- **Hardware Type:** T4 - 16GB
156
- **Hours used:** 3
157
- **Cloud Provider:** Google
158
- **Compute Region:** Europe
159
- **Carbon Emitted:** 0.13 kg CO2 eq.
160
 
 
 
 
 
9
 
10
  # Model Card for Phi-2-LC
11
 
12
+ Este modelo es el primer paso hacia un modelo de lenguaje que pueda usarse para reescribir textos de carácter administrativo con el objetivo de mejorar su comprensión y lecturabilidad para todo el mundo.
13
+
14
+ ## Model Details
15
 
16
  ### Model Description
17
 
18
+ - **Developed by:** [Sergio Chicón](https://huggingface.co/telodigoensergio)
19
+ - **Funded by:** SomosNLP, HuggingFace
20
+ - **Model type:** Language model, instruction tuned
21
+ - **Language(s):** Spanish (`es-ES`)
22
+ - **License:** apache-2.0
23
+ - **Fine-tuned from model:** [phi-2](https://huggingface.co/microsoft/phi-2)
24
+ - **Dataset used:** [Lenguaje-Claro-Dataset](https://huggingface.co/datasets/somosnlp/lenguaje-claro-dataset)
25
+ -
26
+ ### Model Sources
27
 
28
+ - **Repository:** [Google Colab](https://colab.research.google.com/drive/1qSOtPtRHCN5D1VW6MG-pe17OUZf4D2Q5?usp=sharing)
29
 
30
+ ## Uses
 
 
 
 
 
31
 
32
+ ### Direct Use
33
 
34
+ El modelo "Phi-2-LC" ha sido creado específicamente para simplificar textos administrativos y legales que suelen ser difíciles de entender debido a su complejidad y uso de jerga especializada. Su uso principal es facilitar la comprensión de estos textos para personas sin formación especializada en áreas legales o administrativas, así como para mejorar la accesibilidad de la información proporcionada por los ministerios de España a través de sus páginas web.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
 
36
+ ### Out-of-Scope Use
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
 
38
+ Este modelo no está diseñado para interpretación legal formal o para la redacción de documentos legales o administrativos oficiales, dado que la simplificación podría omitir aspectos críticos necesarios para una correcta interpretación legal.
 
 
 
39
 
40
+ ## Bias, Risks, and Limitations
41
+
42
+ Dado que el dataset utilizado para el entrenamiento del modelo proviene exclusivamente de textos gubernamentales españoles, es probable que el modelo pueda exhibir sesgos relacionados con el contexto cultural y legal específico de España. Estos sesgos pueden influir en la generalización del modelo cuando se aplique a textos de naturaleza o origen diferentes. Se recomienda una evaluación continua del modelo para identificar y mitigar tales sesgos de manera efectiva.
43
+
44
+ ### Recommendations
45
+
46
+ Se recomienda usar el modelo conscientemente, entendiendo que puede tener limitaciones en contextos fuera del ámbito administrativo español y que los resultados deben ser verificados por expertos en el contexto de uso.
47
+
48
+ ## Environmental Impact
49
+
50
+ - **Hardware Type:** T4 - 16GB
51
+ - **Hours used:** 3
52
+ - **Cloud Provider:** Google
53
+ - **Compute Region:** Europe
54
+ - **Carbon Emitted:** 0.13 kg CO2 eq.
55
+
56
+ ## How to Get Started with the Model
57
 
 
 
 
 
 
58
  ```
59
  !pip install transformers
60
  !pip install bitsandbytes
61
  !pip install accelerate
62
  import torch
63
  from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
 
64
 
65
+ model_id = 'phi-2-LC' # example model ID
66
+ tokenizer = AutoTokenizer.from_pretrained(model_id)
67
+ model = AutoModelForCausalLM.from_pretrained(model_id)
68
  ```
69
+ ### Cargar el tokenizador y el modelo
 
 
 
70
  ```
71
+ tokenizer = AutoTokenizer.from_pretrained(model_id)
72
+ model = AutoModelForCausalLM.from_pretrained(model_id, device_map='auto', quantization_config=bnb_config, trust_remote_code=True)
73
+ ```
74
+ ### Configuración de BitsAndBytes para optimización
75
+ ```
76
+ bnb_config = BitsAndBytesConfig(
77
+ load_in_4bit=True,
78
+ bnb_4bit_quant_type='nf4',
79
+ bnb_4bit_compute_dtype='float16',
80
+ bnb_4bit_use_double_quant=True
81
+ )
82
  ```
83
+ ### Definir el prompt y generar texto aclarado
 
 
 
 
 
 
 
 
84
  ```
85
+ def generate_clear_text(text):
86
+ prompt = f"""###System:
87
+ Lee el siguiente texto y hazlo más claro:
88
+ ###Texto:
89
+ {text}
90
+ ###Texto aclarado:
91
+ """
92
+ inputs = tokenizer(prompt, return_tensors="pt", return_attention_mask=False, padding=True, truncation=True)
93
+ outputs = model.generate(**inputs, max_length=1000)
94
+ clear_text = tokenizer.batch_decode(outputs, skip_special_tokens=True)[0]
95
+ return clear_text
96
  ```
97
+ ### Uso del modelo para clarificar un ejemplo de texto
98
+ ```
99
+ sample_text = "El procedente documento detalla la normativa aplicable a..."
100
+ clear_text = generate_clear_text(sample_text)
101
+ print(clear_text)
102
+ ```
103
+ ## Evaluación
104
 
105
+ ### Datos de Prueba, Factores y Métricas
106
 
107
+ #### Datos de Prueba
 
108
 
109
+ La evaluación se llevó a cabo en un conjunto separado de textos administrativos, similares en estilo y complejidad a los datos de entrenamiento, asegurando que el modelo fuera probado en condiciones similares a su entorno de entrenamiento.
 
 
 
 
110
 
111
+ #### Factores
112
 
113
+ La evaluación se desagregó por el tipo de texto administrativo para evaluar el rendimiento en diferentes tipos de documentos legales y administrativos.
 
 
114
 
 
115
 
116
+ ### Resultados
117
+
118
+ El modelo demostró un aumento significativo en los puntajes de legibilidad y mantuvo una alta fidelidad a los textos originales, lo que indica una simplificación efectiva sin perder información importante.
119
+
120
+
121
+
122
+ ## Impacto Ambiental
123
+
124
+ Las emisiones de carbono fueron estimadas utilizando la [calculadora de impacto de aprendizaje automático](https://mlco2.github.io/impact#compute) proporcionada en [Lacoste et al. (2019)](https://arxiv.org/abs/1910.09700).
125
+
126
+ - **Tipo de Hardware:** T4 - 16GB
127
+ - **Horas utilizadas:** 3
128
+ - **Proveedor de la Nube:** Google Cloud
129
+ - **Región de Cómputo:** Europa
130
+ - **Carbono Emitido:** 0.13 kg CO2 eq.
131
 
132
+ ## Especificaciones Técnicas
133
 
134
+ ### Arquitectura y Objetivo del Modelo
135
+
136
+ Phi-2-LC se basa en la arquitectura Phi-2, que es un modelo transformador ajustado a instrucciones diseñado para procesar y simplificar textos legales y administrativos complejos.
137
+
138
+ ### Infraestructura de Cómputo
139
+
140
+ #### Hardware
141
+
142
+ El proceso de ajuste fino se llevó a cabo utilizando las GPU T4 de Google Cloud, que proporcionaron la capacidad de cómputo necesaria.
143
+
144
+ #### Software
145
+
146
+ - **Librerías:** Transformers, BitsAndBytes, Accelerate
147
+
148
+ ## Licencia
149
+
150
+ El modelo se publica bajo la licencia apache-2.0, que permite tanto el uso académico como comercial, siempre y cuando se acredite a los autores originales.
151
+
152
+ ## Citación
153
+
154
+ **BibTeX:**
155
+
156
+ ```bibtex
157
+ @software{phi2_lc_model,
158
+ author = {Sergio Chicón},
159
+ title = {Phi-2-LC: Un Modelo para Simplificar Textos Administrativos},
160
+ month = oct,
161
+ year = 2024,
162
+ url = {https://huggingface.co/telodigoensergio/phi-2-lc}
163
+ }
164
+ ```
165
+ ## More Information
166
 
167
+ This project was developed during the [Hackathon #Somos600M](https://somosnlp.org/hackathon) organized by SomosNLP. The model was trained using GPUs sponsored by HuggingFace.
 
168
 
169
+ **Team:**
170
 
 
 
 
 
 
171
 
172
+ [Rubén de la Fuente](https://huggingface.co/rdlf)
173
+ [Sergio Chicón](https://huggingface.co/telodigoensergio)
174
+ [Marta F. Gómez](https://huggingface.co/Maruxine)