|
--- |
|
license: apache-2.0 |
|
datasets: |
|
- hackathon-somos-nlp-2023/informes_discriminacion_gitana |
|
language: |
|
- es |
|
metrics: |
|
- perplexity |
|
--- |
|
|
|
# PAG-BERT: Protocolo Antiracismo Gitano basado en BERT |
|
|
|
<!-- Provide a quick summary of what the model is/does. --> |
|
|
|
### Detalles del adaptador |
|
|
|
<!-- Provide a longer summary of what this model is. --> |
|
|
|
Este modelo ha sido creado con la librer铆a **PEFT**, que nos ha permitido hacer fine tuning al modelo base **bertin-project/bertin-gpt-j-6B** sobre el dataset **hackathon-somos-nlp-2023/informes_discriminacion_gitana** usando el m茅todo **LoRA**. |
|
|
|
### Fuentes del modelo |
|
|
|
<!-- Provide the basic links for the model. --> |
|
|
|
- **Notebook del entrenamiento:** Se ha utilizado como base el notebook compartido por @mrm8488 en el taller ["Fine-tuning de grandes modelos de lenguaje con Manuel Romero | Hackathon Somos NLP 2023"](https://www.youtube.com/live/WYcJb8gYBZU?feature=share). El notebook adaptado a este modelo se encuentra en https://colab.research.google.com/drive/1eEOiuYdg63JOWUiVSdiZ-GUocH48_2wj?usp=sharing |
|
- **Demo:** https://huggingface.co/spaces/hackathon-somos-nlp-2023/demo_IntervencionesRacismo |
|
|
|
## Usos |
|
|
|
<!-- Address questions around how the model is intended to be used, including the foreseeable users of the model and those affected by the model. --> |
|
El objetivo del modelo consiste en generar un conjunto de acciones ante un hecho de discriminaci贸n hacia el pueblo gitano, as铆 como tratar de predecir si dicha acci贸n tendr谩 |
|
un resultado positivo, negativo o neutro. Por ejemplo, ante el hecho "Una joven gitana fue a hacer la compra acompa帽ada de su hija de 12 a帽os y su sobrina de ocho. |
|
Mientras compraban, el vigilante de seguridad no dej贸 de seguirlas en todo momento.", el modelo debe sugerir una posible intervenci贸n ante este supuesto caso: "Desde la FSG se asesor贸 a la joven de sus derechos y de c贸mo actuar ante un incidente de este tipo." |
|
y el posible resultado esperado tras aplicar dicha intervenci贸n. |
|
|
|
|
|
## C贸mo empezar a utilizar el modelo |
|
|
|
Use el c贸digo mostrado a continuaci贸n para comenzar a utilizar el modelo. |
|
|
|
``` |
|
import torch |
|
from peft import PeftModel, PeftConfig |
|
from transformers import AutoModelForCausalLM, AutoTokenizer |
|
|
|
peft_model_id = "hackathon-somos-nlp-2023/discriminacion_gitana_intervenciones_balanceado" |
|
config = PeftConfig.from_pretrained(peft_model_id) |
|
model = AutoModelForCausalLM.from_pretrained(config.base_model_name_or_path, return_dict=True, load_in_8bit=True, device_map='auto') |
|
tokenizer = AutoTokenizer.from_pretrained(peft_model_id) |
|
# Load the Lora model |
|
model = PeftModel.from_pretrained(model, peft_model_id) |
|
|
|
def predecir_intervencion(text): |
|
text = "<SH>" + text + " Intervenci贸n: " |
|
batch = tokenizer(text, return_tensors='pt') |
|
with torch.cuda.amp.autocast(): |
|
output_tokens = model.generate(**batch, max_new_tokens=256, eos_token_id=50258) |
|
|
|
output = tokenizer.decode(output_tokens[0], skip_special_tokens=False) |
|
|
|
aux = output.split("Intervenci贸n:")[1].strip() |
|
intervencion = aux.split("Resultado:")[0].strip() |
|
resultado = aux.split("Resultado:")[1].split("<EH>")[0].strip() |
|
|
|
return intervencion, resultado |
|
|
|
hechos = "Una joven gitana fue a hacer la compra acompa帽ada de su hija de 12 a帽os y su sobrina de ocho. Mientras compraban, el vigilante de seguridad no dej贸 de seguirlas en todo momento." |
|
intervencion, resultado = predecir_intervencion(hechos) |
|
print(f"Intervenci贸n: {intervencion}") |
|
print(f"Resultado: {resultado}") |
|
``` |
|
|
|
## Detalles del entrenamiento |
|
|
|
### Datos de entrenamiento |
|
|
|
Se han utilizado los datos del dataset [informes_discriminacion_gitana](https://huggingface.co/datasets/hackathon-somos-nlp-2023/informes_discriminacion_gitana). Cabe destacar que el conjunto de datos no est谩 balanceado y hay un mayor n煤mero de muestras con resultado negativo y neutro que positivo. Para conseguir un entrenamiento m谩s equilibrado hemos seleccionado de forma aleatoria el mismo n煤mero de muestras negativas y neutras que positivas y hemos realizado el entrenamiento con este subconjunto de datos. |
|
|
|
|
|
### Hiperpar谩metros del entrenamiento |
|
|
|
- **Training regime:** fp16 |
|
- **Step:** 1000 |
|
- **Learning rate:** 2e-4 |
|
- **num_epochs**: 21 |
|
- **train_batch_size**: 4 |
|
|
|
|
|
### M茅tricas |
|
|
|
<!-- These are the evaluation metrics being used, ideally with a description of why. --> |
|
- **Loss:** 0.6538 |
|
- **Perplexity**: 9.2 |
|
|
|
### Frameworks |
|
|
|
- bitsandbytes 0.37.2 |
|
- datasets 2.11.0 |
|
- loralib 0.1.1 |
|
- peft 0.3.0.dev0 |
|
- pytorch 2.0.0 |
|
- tokenizers 0.13.2 |
|
- transformers 4.28.0.dev0 |
|
|
|
## Impacto medioambiental |
|
|
|
<!-- Total emissions (in grams of CO2eq) and additional considerations, such as electricity usage, go here. Edit the suggested text below accordingly --> |
|
|
|
Las emisiones de CO2 a la hora de entrenar el modelo han sido estimadas usando la plataforma [Machine Learning Impact calculator](https://mlco2.github.io/impact#compute) presentada en [Lacoste et al. (2019)](https://arxiv.org/abs/1910.09700). |
|
A continuaci贸n es muestran los detalles del impacto: |
|
|
|
- **Hardware Type:** RTX 3090 |
|
- **Hours used:** 2.5 |
|
- **Cloud Provider:** Private infrastructure |
|
- **Compute Region:** Belgium |
|
- **Carbon Emitted:** 0.38 kg |
|
|
|
## Autores |
|
|
|
* <a href="https://www.linkedin.com/in/ramonruedadelgado/">Ram贸n Rueda</a> |
|
* <a href="https://www.linkedin.com/in/frorozcol/">Fredy Orozco</a> |
|
* <a href="https://www.linkedin.com/in/mariajesusgs">Mar铆a Jes煤s Garc铆a</a> |