{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "bMYkkVla0zjn" }, "source": [ "# Proyecto: Fine-Tuning y Despliegue de un Modelo Transformer\n", "\n", "**Instrucciones Generales:**\n", "En este proyecto deberás seleccionar un problema de negocio o investigación que involucre el procesamiento de lenguaje natural (NLP). Algunos ejemplos incluyen: clasificación de reviews de e-commerce, detección de spam, análisis de sentimientos, o resumen de noticias financieras.\n", "\n", "**Entregables esperados:**\n", "1. **Dataset:** Selección y carga de un dataset (propio o de Hugging Face) distinto a los vistos en clase.\n", " - Tened en cuenta la complejidad del dataset y la tokenización.\n", " - También recomiendo utilizar un subset para aligerar el posterior entrenamiento. No buscamos maximizar resultados, sólo demostrar lo aprendido.\n", "2. **Entrenamiento:** Proceso de finetuning de un modelo:\n", " - Elección de un modelo.\n", " - Fine-tuning de un modelo Transformer sobre los datos.\n", " - Reporte de métricas de evaluación en el conjunto de test.\n", "3. **Despliegue (Model y Space):** El modelo final debe estar subido al Hub de Hugging Face y debe crearse un \"Space\" (demo en Gradio) funcional donde se pueda probar el modelo introduciendo texto en vivo*.\n", "4. **Model Card:** El repositorio del modelo en Hugging Face debe contener un `README.md` explicando qué hace el modelo, sus limitaciones y las métricas obtenidas.\n", "\n", "\\* Si tenéis problemas con el finetuning, el modelo desplegado puede ser un modelo ya existente.\n", "\n", "> **Nota sobre la organización:**\n", ">\n", ">Este notebook está diseñado para que lo utilices como plantilla. **En principio, todo el ciclo de vida del proyecto (carga, entrenamiento, evaluación y push al Hub) se puede realizar dentro de este mismo notebook.** Sin embargo, siéntete libre de dividirlo en varios notebooks separados (ej. uno para entrenamiento y otro para el despliegue) si lo consideras más organizado." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "El código del proyecto, y una demo, puede encontrarse en https://huggingface.co/spaces/antcaesar/resuemenes_hugginface_TECP" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "SWa-5d910tPC" }, "outputs": [], "source": [ "import math\n", "import numpy as np\n", "import pandas as pd\n", "import torch\n", "from datasets import Dataset\n", "from torch.utils.data import DataLoader\n", "from sklearn.model_selection import train_test_split" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
| \n", " | prompt | \n", "solution0 | \n", "solution1 | \n", "label | \n", "language | \n", "eng_translated0 | \n", "eng_translated1 | \n", "approx_cultural_score | \n", "llm_used | \n", "example_id | \n", "supplement | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", "Para ver la iglesia del pantano de Sau complet... | \n", "tienes que esperar un período sin niebla. | \n", "tienes que esperar un período de sequía. | \n", "1 | \n", "spa_latn_spai | \n", "To see the church at the Sau swamp in its enti... | \n", "To see the church at the Sau swamp in its enti... | \n", "1 | \n", "0 | \n", "group0042_ex000035_spa_latn_spai_0_v1 | \n", "{\"topic\": \"place\", \"cultural_type\": \"cultural ... | \n", "
| 1 | \n", "En la coca de pimiento y tomate | \n", "se le añaden piñones y atún. | \n", "se le añaden piñones y butifarra. | \n", "0 | \n", "spa_latn_spai | \n", "In the pepper and tomato coca pastry, pine nut... | \n", "In the pepper and tomato coca pastry, pine nut... | \n", "1 | \n", "0 | \n", "group0042_ex000070_spa_latn_spai_0_v1 | \n", "{\"topic\": \"food\", \"cultural_type\": \"cultural C... | \n", "
| 2 | \n", "¿Cómo se sirven los calçots? | \n", "En un restaurante te pondrán una teja con unos... | \n", "En un restaurante te pondrán una teja con unos... | \n", "1 | \n", "spa_latn_spai | \n", "How are calçots served? In a restaurant, you w... | \n", "How are calçots served? In a restaurant, you w... | \n", "1 | \n", "0 | \n", "group0042_ex000021_spa_latn_spai_0_v1 | \n", "{\"topic\": \"food\", \"cultural_type\": \"cultural C... | \n", "
| 3 | \n", "Estás haciendo un viaje desde Madrid a tu pueb... | \n", "Utilizas el dibujo profundo, ya que evacua mej... | \n", "Utilizas el dibujo liso, ya que evacua mejor e... | \n", "0 | \n", "spa_latn_spai | \n", "You are taking a trip from Madrid to your town... | \n", "You are taking a trip from Madrid to your town... | \n", "1 | \n", "0 | \n", "group0126_ex000024_spa_latn_spai_1_v1 | \n", "{\"uncorrected_eng_translated0\": \"You are takin... | \n", "
| 4 | \n", "Has abierto un chorizo curado y te sobra la mi... | \n", "Envuélvelo en papel y guárdalo en la nevera en... | \n", "Envuélvelo en film y guárdalo en la nevera en ... | \n", "1 | \n", "spa_latn_spai | \n", "You have opened a cured chorizo and have half ... | \n", "You have opened a cured chorizo and have half ... | \n", "1 | \n", "0 | \n", "group0126_ex000010_spa_latn_spai_1_v1 | \n", "{\"uncorrected_eng_translated0\": \"You have open... | \n", "
| ... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
| 95 | \n", "Voy a a cortar jamón serrano para un aperitivo... | \n", "Usaré cuchillo de sierra corto, con cortes cor... | \n", "Usaré un cuchillo jamonero bien afilado, con c... | \n", "1 | \n", "spa_latn_spai | \n", "I am going to slice serrano ham for an appetiz... | \n", "I am going to slice serrano ham for an appetiz... | \n", "1 | \n", "0 | \n", "group0126_ex000039_spa_latn_spai_1_v1 | \n", "{\"uncorrected_eng_translated0\": \"I am going to... | \n", "
| 96 | \n", "¿Qué les pasa a las figuras de cartón y madera... | \n", "Se endurecen con el fuego. | \n", "Se queman con el fuego. | \n", "1 | \n", "spa_latn_spai | \n", "What happens to the cardboard and wood figures... | \n", "What happens to the cardboard and wood figures... | \n", "1 | \n", "0 | \n", "group0134_ex000019_spa_latn_spai_2_v1 | \n", "{\"uncorrected_eng_translated0\": \"What happens ... | \n", "
| 97 | \n", "Para hacer una figura decorativa, mezclamos el... | \n", "Moldeamos la figura y esperamos unas horas par... | \n", "Moldeamos la figura y esperamos unas horas par... | \n", "0 | \n", "spa_latn_spai | \n", "To make a decorative figure, we mix gypsum pla... | \n", "To make a decorative figure, we mix gypsum pla... | \n", "1 | \n", "0 | \n", "group0134_ex000063_spa_latn_spai_2_v1 | \n", "{\"uncorrected_eng_translated0\": \"To make a dec... | \n", "
| 98 | \n", "Cómo hacer ratafía en casa. | \n", "La ratafía es un licor de hierbas con base de ... | \n", "La ratafía es un licor de hierbas con base de ... | \n", "0 | \n", "spa_latn_spai | \n", "How to make ratafia at home. Ratafia is a herb... | \n", "How to make ratafia at home. Ratafia is a herb... | \n", "1 | \n", "0 | \n", "group0042_ex000037_spa_latn_spai_0_v1 | \n", "{\"topic\": \"food\", \"cultural_type\": \"cultural C... | \n", "
| 99 | \n", "Haces gazpacho andaluz en verano para la comid... | \n", "Deja el gazpacho en nevera antes de servir. | \n", "Deja el gazpacho fuera de nevera antes de servir. | \n", "0 | \n", "spa_latn_spai | \n", "You are making Andalusian gazpacho in the summ... | \n", "You are making Andalusian gazpacho in the summ... | \n", "1 | \n", "0 | \n", "group0126_ex000037_spa_latn_spai_1_v1 | \n", "{\"uncorrected_eng_translated0\": \"You make gazp... | \n", "
100 rows × 11 columns
\n", "| \n", " | id | \n", "titular | \n", "respuesta | \n", "pregunta | \n", "texto | \n", "idioma | \n", "periodo | \n", "tarea | \n", "registro | \n", "dominio | \n", "país_origen | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", "0 | \n", "JORGE REY: EL TIEMPO | La impactante predicció... | \n", "El inicio de un periodo frío intenso. | \n", "Ahora eres una Inteligencia Artificial experta... | \n", "27·11·23 | 08:34 | Actualizado a las 14:47\\nJO... | \n", "es_es | \n", "actual | \n", "resumen | \n", "medio | \n", "prensa_ciencia_y_tecnologia | \n", "españa | \n", "
| 1 | \n", "1 | \n", "El cambio en las matrículas que se espera para... | \n", "Se dará el salto a la letra M. | \n", "Ahora eres una Inteligencia Artificial experta... | \n", "Si eres de los que sigues el avance de las mat... | \n", "es_es | \n", "actual | \n", "resumen | \n", "medio | \n", "prensa_ciencia_y_tecnologia | \n", "españa | \n", "
| 2 | \n", "2 | \n", "Si no avisas a la DGT de este cambio en tu coc... | \n", "500 euros por pintar un coche de otro color y ... | \n", "Ahora eres una Inteligencia Artificial experta... | \n", "Con Pilar Cisneros y Fernando de Haro\\nCon Pac... | \n", "es_es | \n", "actual | \n", "resumen | \n", "medio | \n", "prensa_otros | \n", "españa | \n", "
| 3 | \n", "3 | \n", "Estos serán los lenguajes de programación con ... | \n", "Python y JavaScript. | \n", "Ahora eres una Inteligencia Artificial experta... | \n", "Si con el año nuevo te has propuesto aumentar ... | \n", "es_es | \n", "actual | \n", "resumen | \n", "medio | \n", "prensa_ciencia_y_tecnologia | \n", "españa | \n", "
| 4 | \n", "4 | \n", "Cambio de estrategia en Microsoft: Windows 12 ... | \n", "Solo un 28.6% de los usuarios actuales de Wind... | \n", "Ahora eres una Inteligencia Artificial experta... | \n", "Desde hace ya varios meses, las especulaciones... | \n", "es_es | \n", "actual | \n", "resumen | \n", "medio | \n", "prensa_ciencia_y_tecnologia | \n", "españa | \n", "
| ... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
| 695 | \n", "695 | \n", "Primicia: Mediaset ya tiene pareja de presenta... | \n", "Diego Losada y Mónica Sanz. | \n", "Ahora eres una Inteligencia Artificial experta... | \n", "Mediaset ya tiene encajadas las piezas del puz... | \n", "es_es | \n", "actual | \n", "resumen | \n", "medio | \n", "prensa_celebridades | \n", "españa | \n", "
| 696 | \n", "696 | \n", "Margot Robbie anuncia que se retira de la actu... | \n", "No se retira, pero no quiere hacer otra pelícu... | \n", "Ahora eres una Inteligencia Artificial experta... | \n", "Todo lo que buscas en un solo click\\nLa actriz... | \n", "es_bo | \n", "actual | \n", "resumen | \n", "coloquial | \n", "prensa_celebridades | \n", "bolivia | \n", "
| 697 | \n", "697 | \n", "¿Por qué el videojuego de Indiana Jones es en ... | \n", "Para que la acción parezca propia y sea mucho ... | \n", "Ahora eres una Inteligencia Artificial experta... | \n", "Xbox clarificó en el Developer_Direct de la se... | \n", "es_es | \n", "actual | \n", "resumen | \n", "medio | \n", "prensa_ocio_y_cultura | \n", "españa | \n", "
| 698 | \n", "698 | \n", "La insólita situación vivida frente a un semáf... | \n", "Un conductor de 44 años se quedó dormido frent... | \n", "Ahora eres una Inteligencia Artificial experta... | \n", "Se pueden imaginar que en el teléfono de la Po... | \n", "es_es | \n", "actual | \n", "resumen | \n", "medio | \n", "prensa_otros | \n", "españa | \n", "
| 699 | \n", "699 | \n", "Uno de los mejores Assassin’s Creed podría ten... | \n", "Black Flag. | \n", "Ahora eres una Inteligencia Artificial experta... | \n", "Parece que la nueva versión del título de Ubis... | \n", "es_mx | \n", "actual | \n", "resumen | \n", "medio | \n", "prensa_ocio_y_cultura | \n", "mexico | \n", "
700 rows × 11 columns
\n", "| \n", " | metric | \n", "valor | \n", "
|---|---|---|
| 0 | \n", "ROUGE-1 aprox. | \n", "0.6236 | \n", "
| 1 | \n", "ROUGE-2 aprox. | \n", "0.5829 | \n", "
| 2 | \n", "ROUGE-L aprox. | \n", "0.6236 | \n", "
| 3 | \n", "Test loss | \n", "4.0315 | \n", "
| 4 | \n", "Test perplexity | \n", "56.3473 | \n", "