👥 Equipo
Este proyecto fue desarrollado por el Grupo 1, conformado por:
| Integrante |
|---|
| 🎓 Chipana Wariste, Ronald Humberto |
| 🎓 Mamani Huanca, Noemi Marisol |
| 🎓 Mamani Mena, Luz Alizon |
| 🎓 Oyardo Acuña, Roni Edwin |
| 🎓 Ordoñez Marca, Marco Vladimir |
| 🎓 Quino Jiménez, Víctor Daniel |
| 🎓 Soto Palli, Ever Alcides |
🎓 Créditos Académicos
Programa Académico
Maestría en Inteligencia Artificial y Data Science para la Transformación de Negocios
- 🏛️ Institución: Postgrado de Informática
- 📚 Módulo: Modelamiento de Datos II
- 👨🏫 Docente: Prof. Anvi Alex Eponon
Objetivos de Aprendizaje Cumplidos
- ✅ Implementación de Knowledge Distillation
- ✅ Aplicación de técnicas LoRA/QLoRA
- ✅ Fine-tuning de modelos especializados
- ✅ Evaluación comparativa de arquitecturas (SmolLM2 vs Qwen2.5)
- ✅ Procesamiento de datasets legales complejos
- ✅ Optimización de recursos computacionales
- ✅ Desarrollo de pipelines de entrenamiento reproducibles
⚖️ SmolLM2 RGPD Expert | Fine-tuned Legal AI Model
Student Model - Knowledge Distillation Pipeline for GDPR Legal AI
Grupo 1 | Modelamiento de Datos II | Postgrado de Informática
🎯 Descripción
smollm2_rgpd_final es un modelo de lenguaje fine-tuned específicamente para asistencia legal en materia de protección de datos personales según el REGLAMENTO (UE) 2016/679 DEL PARLAMENTO EUROPEO Y DEL CONSEJO (RGPD/GDPR).
Este proyecto forma parte del trabajo académico desarrollado en el programa de Maestría en Inteligencia Artificial y Data Science para la Transformación de Negocios, donde se exploraron técnicas avanzadas de fine-tuning para adaptar modelos de lenguaje pequeños a dominios legales especializados.
🎓 Contexto del Proyecto
El modelo fue desarrollado como parte del módulo Modelamiento de Datos II, bajo la supervisión del Prof. Anvi Alex Eponon, en el Postgrado de Informática.
📜 Base Legal
El entrenamiento se basó en el texto completo del:
- Reglamento (UE) 2016/679 – Reglamento General de Protección de Datos
- Adoptado el 27 de abril de 2016
- Relativo a la protección de personas físicas en el tratamiento de datos personales
- Derogación de la Directiva 95/46/CE
🏗️ Arquitectura del Proyecto
Este modelo representa el Student Model en un pipeline de Knowledge Distillation desarrollado por Grupo 1.
Pipeline de Destilación
┌─────────────────────────────────────────┐
│ Teacher Model (Qwen2.5-0.5B-Instruct) │
│ Fine-tuned with LoRA │
└──────────────────┬──────────────────────┘
│ Knowledge Transfer
│ (SVOMPT Method)
▼
┌─────────────────────────────────────────┐
│ Student Model (SmolLM2-135M-Instruct) │
│ This Repository - Grupo 1 │
└─────────────────────────────────────────┘
Teacher Model: Qwen/Qwen2.5-0.5B-Instruct (fine-tuned with LoRA)
Student Model: HuggingFaceTB/SmolLM2-135M-Instruct (este repositorio)
Beneficios del Diseño
- ✅ Anclaje específico al dominio legal
- ✅ Respuestas técnicas en español
- ✅ Reducción de alucinaciones
- ✅ Razonamiento legal consistente
✨ Características
- 🤖 Modelo Base: HuggingFace SmolLM2-135M-Instruct
- 🎓 Teacher Model: Qwen2.5-0.5B-Instruct (fine-tuned)
- 🔧 Técnica: LoRA/QLoRA (Low-Rank Adaptation) para fine-tuning eficiente
- 📊 Especialización: Reglamento General de Protección de Datos (RGPD/GDPR)
- 🧠 Método: Knowledge Distillation con SVOMPT
- 💡 Aplicaciones:
- Consultas sobre derechos de protección de datos
- Interpretación de artículos del RGPD
- Asesoramiento sobre cumplimiento normativo
- Generación de políticas de privacidad
- Análisis de casos de tratamiento de datos
- Descomposición de preguntas legales complejas
📊 Dataset
Dataset Utilizado
Nombre: umsa-v1/dataset_parafraseado_grupo1
Ubicación: Hugging Face Hub
Tipo: Datos parafraseados y especializados en RGPD
Formatos Soportados
El modelo soporta datos de entrenamiento en formato JSONL con dos estructuras:
1️⃣ Formato Chat (Conversacional)
{
"messages": [
{"role": "user", "content": "¿Cuáles son los principios del RGPD?"},
{"role": "assistant", "content": "Los principios del RGPD incluyen..."}
]
}
2️⃣ Formato Question/Answer (Q&A)
{
"question": "¿Qué es el derecho al olvido?",
"answer": "El derecho al olvido, establecido en el Artículo 17..."
}
🚀 Instalación y Uso
Requisitos Previos
pip install transformers torch peft trl bitsandbytes accelerate datasets
Quick Start - Inferencia Básica
from transformers import pipeline
# Inicializar el modelo
generator = pipeline(
"text-generation",
model="smollm2_rgpd_final",
device="cuda" # o "cpu" si no tienes GPU
)
# Hacer una consulta sobre RGPD
question = "¿Cuáles son los derechos de los interesados según el RGPD?"
output = generator(
[{"role": "user", "content": question}],
max_new_tokens=256,
return_full_text=False
)[0]
print(output["generated_text"])
Uso Avanzado - Con Configuración Personalizada
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
# Cargar modelo y tokenizador
model_name = "smollm2_rgpd_final"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float16,
device_map="auto"
)
# Preparar el prompt
messages = [
{"role": "user", "content": "Explica el principio de minimización de datos del RGPD"}
]
input_ids = tokenizer.apply_chat_template(messages, return_tensors="pt").to(model.device)
# Generar respuesta
outputs = model.generate(
input_ids,
max_new_tokens=200,
temperature=0.7,
top_p=0.9,
do_sample=True
)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response)
Carga con Adaptadores LoRA
from peft import PeftModel, PeftConfig
from transformers import AutoModelForCausalLM, AutoTokenizer
# Cargar configuración
config = PeftConfig.from_pretrained("smollm2_rgpd_final")
base_model = AutoModelForCausalLM.from_pretrained(config.base_model_name_or_path)
model = PeftModel.from_pretrained(base_model, "smollm2_rgpd_final")
# Fusionar adaptadores para inferencia más rápida
model = model.merge_and_unload()
⚙️ Estrategia de Entrenamiento
El modelo soporta tres estrategias de fine-tuning:
1️⃣ Full Fine-Tuning
Entrenamiento completo de todos los parámetros del modelo.
2️⃣ LoRA Fine-Tuning
Entrenamiento eficiente usando Low-Rank Adaptation.
3️⃣ QLoRA (Quantized LoRA)
Cuantización de 4-bits + LoRA para máxima eficiencia de memoria.
Stack Tecnológico
| Componente | Función |
|---|---|
| TRL | SFTTrainer + SFTConfig para Supervised Fine-Tuning |
| PEFT | Implementación de LoRA |
| BitsAndBytes | Cuantización para QLoRA |
| Accelerate | Entrenamiento distribuido y optimización |
| Transformers | Framework base de HuggingFace |
🔬 Configuración LoRA
Parámetros por Defecto
| Parámetro | Valor | Descripción |
|---|---|---|
| r | 16 | Rango de la matriz de adaptación |
| lora_alpha | 32 | Factor de escala para los pesos LoRA |
| lora_dropout | 0.05 | Dropout para regularización |
| bias | none | No entrenar parámetros de bias |
| task_type | CAUSAL_LM | Tipo de tarea (modelado de lenguaje causal) |
Módulos Objetivo (Target Modules)
Por defecto, LoRA se aplica a:
q_proj(Query projection)v_proj(Value projection)
Estos módulos son críticos en el mecanismo de atención y permiten adaptación eficiente.
🏋️ Configuración de Entrenamiento
Hiperparámetros por Defecto
| Parámetro | Valor | Descripción |
|---|---|---|
| Epochs | 6 | Número de épocas de entrenamiento |
| Batch Size | 4 | Tamaño de batch por dispositivo |
| Gradient Accumulation | 4 | Pasos de acumulación de gradientes |
| Effective Batch Size | 16 | Batch size efectivo (4 × 4) |
| Learning Rate | 2e-4 | Tasa de aprendizaje |
| Warmup Steps | 100 | Pasos de calentamiento |
| Max Sequence Length | 512 | Longitud máxima de secuencia |
| Optimizer | adamw_torch | Optimizador AdamW |
| Scheduler | cosine | Scheduler de tasa de aprendizaje |
| Precision | bf16 | Precisión de entrenamiento (bfloat16) |
Comando de Entrenamiento Ejemplo
from trl import SFTTrainer, SFTConfig
from peft import LoraConfig
# Configuración LoRA
lora_config = LoraConfig(
r=16,
lora_alpha=32,
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM",
target_modules=["q_proj", "v_proj"]
)
# Configuración de entrenamiento
training_args = SFTConfig(
output_dir="./results",
num_train_epochs=6,
per_device_train_batch_size=4,
gradient_accumulation_steps=4,
learning_rate=2e-4,
warmup_steps=100,
max_seq_length=512,
optim="adamw_torch",
lr_scheduler_type="cosine",
bf16=True,
logging_steps=10,
save_strategy="epoch"
)
# Inicializar trainer
trainer = SFTTrainer(
model=model,
args=training_args,
train_dataset=dataset,
peft_config=lora_config
)
# Entrenar
trainer.train()
💻 Requisitos del Sistema
Dependencias Principales
pip install transformers datasets accelerate peft bitsandbytes trl torch
Versiones Recomendadas
transformers: ≥ 4.36.0
datasets: ≥ 2.14.0
accelerate: ≥ 0.24.0
peft: ≥ 0.7.0
bitsandbytes: ≥ 0.41.0
trl: ≥ 0.7.0
torch: ≥ 2.0.0
Requisitos de Hardware
- GPU: Recomendado NVIDIA con soporte CUDA
- RAM: Mínimo 16GB
- VRAM:
- Full Fine-tuning: ~8GB
- LoRA: ~4GB
- QLoRA: ~2GB
💼 Ejemplos de Uso
Ejemplo 1: Consulta sobre Derechos del RGPD
question = "¿Qué es el derecho al olvido según el RGPD?"
# Respuesta basada en Artículo 17 del RGPD
Salida esperada: Explicación detallada del derecho de supresión, condiciones y excepciones.
Ejemplo 2: Principios de Protección de Datos
question = "Explica el principio de minimización de datos"
# Información del Artículo 5.1.c del RGPD
Salida esperada: Descripción del principio, aplicación práctica y ejemplos.
Ejemplo 3: Transferencias Internacionales
question = "¿Cuándo se puede transferir datos personales fuera de la UE?"
# Respuesta basada en Capítulo V del RGPD
Salida esperada: Mecanismos legales, cláusulas contractuales tipo, y excepciones.
Ejemplo 4: Descomposición de Preguntas Complejas
question = "¿Cómo debe una empresa implementar el principio de privacy by design?"
# El modelo descompondrá la pregunta en aspectos técnicos, organizativos y legales
📊 Métricas y Evaluación
Evaluación Cualitativa
El modelo fue evaluado en:
- ✅ Precisión en la interpretación de artículos del RGPD
- ✅ Coherencia en respuestas técnicas
- ✅ Capacidad de descomposición de preguntas complejas
- ✅ Consistencia terminológica legal
Comparación con Baseline
| Modelo | Parámetros | Perplexity | Coherencia Legal |
|---|---|---|---|
| SmolLM2-135M (base) | 135M | - | Baja |
| Qwen2.5-0.5B (teacher) | 500M | - | Alta |
| SmolLM2-135M (fine-tuned) | 135M | - | Media-Alta |
📄 Licencia
Este proyecto está bajo licencia MIT. Ver el archivo LICENSE para más detalles.
📚 Referencias
Documentación Legal
Documentación Técnica
- HuggingFace Transformers
- TRL Documentation
- PEFT Documentation
- BitsAndBytes
- SmolLM2 Model Card
- Qwen2.5 Model Card
Dataset
🤝 Contribuciones
Las contribuciones son bienvenidas. Por favor:
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/MejorLegal) - Commit tus cambios (
git commit -m 'Add: Nueva funcionalidad legal') - Push a la rama (
git push origin feature/MejorLegal) - Abre un Pull Request
⚠️ Disclaimer
Este modelo es un proyecto académico con fines educativos y de investigación. No debe ser utilizado como sustituto de asesoramiento legal profesional. Para consultas legales vinculantes, siempre consulte con un abogado especializado en protección de datos.
Desarrollado con ❤️ por el Grupo 1
Maestría en IA y Data Science para la Transformación de Negocios
🛡️ Protegiendo datos, transformando negocios 🚀
Knowledge Distillation • Legal AI • RGPD/GDPR • LoRA/QLoRA
- Downloads last month
- 123
Model tree for umsa-v1/model_RGPD_grupo1_470q_final
Base model
HuggingFaceTB/SmolLM2-135M