--- license: mit base_model: HuggingFaceTB/SmolLM2-135M-Instruct library_name: peft tags: - smollm2 - lora - qlora - sft - instruction-tuning - legal-ai - rgpd - gdpr - knowledge-distillation - academic-project - data-protection - privacy - spanish - fine-tuned - transformers - trl - llm - eu-regulation language: - es - en pipeline_tag: text-generation datasets: - umsa-v1/dataset_parafraseado_grupo1 model-index: - name: smollm2_rgpd_final results: [] widget: - text: "¿Cuáles son los derechos de los interesados según el RGPD?" example_title: "Derechos RGPD" - text: "¿Qué es el derecho al olvido?" example_title: "Derecho al Olvido" - text: "Explica el principio de minimización de datos" example_title: "Minimización de Datos" - text: "¿Cuándo se puede transferir datos personales fuera de la UE?" example_title: "Transferencias Internacionales" --- ## 👥 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](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Model](https://img.shields.io/badge/🤗%20HuggingFace-Model-orange)](https://huggingface.co/) [![Python](https://img.shields.io/badge/Python-3.8+-blue.svg)](https://www.python.org/) [![Framework](https://img.shields.io/badge/Framework-Transformers-red.svg)](https://github.com/huggingface/transformers) *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) ```json { "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) ```json { "question": "¿Qué es el derecho al olvido?", "answer": "El derecho al olvido, establecido en el Artículo 17..." } ``` --- ## 🚀 Instalación y Uso ### Requisitos Previos ```bash pip install transformers torch peft trl bitsandbytes accelerate datasets ``` ### Quick Start - Inferencia Básica ```python 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 ```python 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 ```python 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 ```python 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 ```bash pip install transformers datasets accelerate peft bitsandbytes trl torch ``` ### Versiones Recomendadas ```yaml 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 ```python 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 ```python 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 ```python 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 ```python 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 - [Reglamento (UE) 2016/679 - RGPD](https://eur-lex.europa.eu/eli/reg/2016/679/oj) - [EUR-Lex - Portal de Legislación de la UE](https://eur-lex.europa.eu/) ### Documentación Técnica - [HuggingFace Transformers](https://huggingface.co/docs/transformers) - [TRL Documentation](https://huggingface.co/docs/trl) - [PEFT Documentation](https://huggingface.co/docs/peft) - [BitsAndBytes](https://github.com/TimDettmers/bitsandbytes) - [SmolLM2 Model Card](https://huggingface.co/HuggingFaceTB/SmolLM2-135M-Instruct) - [Qwen2.5 Model Card](https://huggingface.co/Qwen/Qwen2.5-0.5B-Instruct) ### Dataset - [umsa-v1/dataset_parafraseado_grupo1](https://huggingface.co/datasets/umsa-v1/dataset_parafraseado_grupo1) --- ## 🤝 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*