👥 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

License: MIT Model Python Framework

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

Dataset


🤝 Contribuciones

Las contribuciones son bienvenidas. Por favor:

  1. Fork el proyecto
  2. Crea una rama para tu feature (git checkout -b feature/MejorLegal)
  3. Commit tus cambios (git commit -m 'Add: Nueva funcionalidad legal')
  4. Push a la rama (git push origin feature/MejorLegal)
  5. 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
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for umsa-v1/model_RGPD_grupo1_470q_final

Adapter
(35)
this model

Dataset used to train umsa-v1/model_RGPD_grupo1_470q_final