- Sobre el proyecto
- Presentación
- Instalación
- Uso del CLI
- Regeneración de datos
- Training Grounds
- Guía de uso para la app con Docker (CLI)
- Universos disponibles en esta versión
- Ejemplos de predicciones
- Agradecimientos
- Sobre el autor
- Licencia
LoreNexus es una plataforma para extraer el universo de origen e influencias de nombres en videojuegos online, mediante detección de patrones fonéticos y morfológicos. Hace uso de modelos de lenguaje implementados con Pytorch "from scratch" (LSTMs bidireccionales o BiLSTM
y tokenización a nivel de carácter), así como de diferentes técnicas de NLP tanto para la extracción y preprocesamiento de los datos como para la inferencia.
Este proyecto se da por finalizado en cuanto a la entrega, sin embargo hay algunas tareas que yo he decidido aún están pendientes. No obstante, planeo continuar el desarrollo de forma gradual, me ha encantado. Se pueden consultar el progreso de algunas tareas en el proyecto de GitHub. Cualquier sugerencia o bug, por favor repórtalo en el Bug Tracker.
La presentación del proyecto se puede encontrar aquí: Presentación de LoreNexus
Memoria en progreso.
Para instalar LoreNexus, simplemente sigue los siguientes pasos:
-
Clonar el repo:
git clone [email protected]:geru-scotland/lore-nexus.git cd lore-nexus
-
Entorno virtual para aislar dependencias:
python3 -m venv .venv source .venv/bin/activate
-
Instala las dependencias:
pip install -r requirements.txt
-
Configura el entorno:
Hay que agregar el directorio actual (ojo, tiene que ser el root del proyecto) alPYTHONPATH
para que los módulos se puedan importar sin problemas:export PYTHONPATH=$PYTHONPATH:$(pwd)
Se dispone de una aplicación en CLI
para poder realizar inferencias. Para ejecutarla, navega al módulo app
y lanza app.py
:
cd app/
python3 app.py
- Si el mejor modelo hasta el momento (
LoreNexusPytorch_v1.0.pth
) no se encuentra en el sistema, la app lo descarga automáticamente desde Hugging Face: LoreNexusPytorch_v1.0.
El dataset está disponible en dataset/output
, pero se puede regenerar con ejecutando pipeline.py
, simplemente:
cd pipeline
python3 pipeline.py
- La configuración para la regeneración de datos se encuentra en
pipeline/config.json
. - Los datos ya estratificados se guardan en
dataset/output
(ojo, se sobreescriben los datos existentes) - También se crea un archivo
data_config.info
que contiene detalles sobre la configuración con la que se han generado los datos.
Para explorar el espacio de hiperparámetros y entrenar modelos, ejecuta hyperparameter_tuner.py
desde el directorio training_grounds
:
cd training_grounds
python3 hyperparameter_tuner.py
-
Si no se pasan argumentos, se lanzarán experimentos con todos los modelos que implementen la clase
LoreNexusWrapper
, actualmente:LoreNexusPytorch
LoreNexusFlair
-
Se le pueden pasar el modelo como argumento con
-m
, para que el sistema se limite a entrenar únicamente el especificado:-m pytorch
: Solo entrena el basado en PyTorch.-m flair
: Solo entrena el basado en Flair.
-
Los conjuntos de hiperparámetros están definidos en
param_grids.json
y los logs se guardan entraining_grounds/logs
, donde se aglomeran por experimentos, llamadosarenas
. También se depositarán logs de cada modelo individualmente entraining_grounds/logs/
, con gráficas y otros detalles.
Para entrenar un modelo específico:
-
Ve al archivo correspondiente:
/models/pytorch/model.py
/models/flair/model.py
-
Descomenta las líneas al final del archivo, ajusta los hiperparámetros que desees y ejecutalo:
python3 models/pytorch/model.py
ó
python3 models/flair/model.py
En ese caso los logs se guardan en models/pytorch/logs
o models/flair/logs
respectivamente, donde se pueden encontrar tanto logs exhaustivos, como gráficas con la evolución durante epochs, e incluso matrices de confusión.
No obstante, incluso para entrenamientos individuales, recomiendo usar hyperparameter_tuner.py
.
Con Docker instalado (Docker get-started):
1. Pull de la imagen alojada en Dockerhub:
docker pull basajaun0/lore-nexus:latest
docker run -it basajaun0/lore-nexus:latest
Nota: Tengo pendiente la optimización de dependencias para reducir el tamaño de la imagen, ahora mismo ocupa mucho por CUDA
, y no es necesario realmente al utilizar simplemente inferencias.
En ésta versión (modelo LoreNexusPytorch_v1.0) se ha entrenado con los siguientes universos:
- Harry Potter
- Star Wars
- Tolkien
- Warcraft
- Dragon Ball
- Naruto
- Forgotten Realms
- Final Fantasy
- Game of Thrones
- The Witcher
- Doctor Who
- Discworld
- Mythology
- Offensive
- Historical
Agradezco especialmente a Oier López de Lacalle Lecuona y a Itziar Aldabe Arregi por su apoyo y guía durante el desarrollo de LoreNexus.
Este proyecto fue desarrollado por Aingeru García como parte de un proyecto académico en la Universidad del País Vasco (UPV/EHU), asignatura de Procesamiento de Lenguaje Natural.
Si tienes preguntas, comentarios o sugerencias, no dudes en contactarme:
- GitHub: @geru-scotland
- Email: [email protected]
Este proyecto está licenciado bajo la Licencia MIT. Esto significa que puedes usar, modificar y distribuir este software libremente, siempre que mantengas la atribución al autor original.
Para más detalles, consulta el archivo LICENSE en este repositorio.