Capacitación del modelo de lenguaje de transformador GPT-2 en sus propios corpus con tokenización de la pieza de oración.
Este repositorio contiene una implementación de Pytorch de GPT-2, que admite la capacitación multi-GPU. También contiene una implementación de flujo tensor en lm/gpt_2_tf , pero ya no se desarrolla. Comparten los mismos scripts de preparación de datos. El comando de entrenamiento TF es gpt-2-tf-train y necesita TensorFlow 1.13. La documentación a continuación es para la versión de Pytorch.
Contenido
Python 3.6+ se requiere con antorcha nocturna o 1.6.0+. Se supone a continuación trabajar en un VirtualEnv. Instale primero la versión apropiada de Pytorch, y luego:
PIP install -r requisitos.txt Python setup.py desarrollar
Las instrucciones están a continuación. Consulte también test/test_shakespeare.sh para una demostración completa de la tubería en un pequeño corpus (toma un minuto en una CPU).
Formato de corpus: un directorio con train de nivel superior, carpetas valid y test . Cada carpeta de nivel superior puede contener subcarpetas. Dentro de ellos, debe haber archivos de texto codificados UTF-8 con la extensión .txt .
Los comandos para capacitar al modelo de pieza de oración y codifican el corpus apoyan múltiples corpus, en los ejemplos a continuación, suponemos que pueden enumerarse como data/corpora-* .
Modelo de la pieza de oración de tren ( sp-text.txt se puede eliminar después de ejecutar). Esto puede consumir una gran cantidad de memoria, ajustar los argumentos de la pieza de oración como se recomienda si es necesario (esto no es compatible en el comando sp-train directamente):
sp-train data/corpor-* sp-text.txt sp-modelo
Codificar corpus, producir archivos numpy:
SP-ENCODE DATA/CORPORA-* SP-MODEL.MODEL DATOS/CODEDADO
Comando de ejemplo:
GPT-2 Run-Root Datos/SP-Model. Modelo codificado
run-root contendría puntos de control de modelo y registros de líneas JSON, que se pueden trazar en un cuaderno Jupyter con json_log_plots.plot("run-root") , con un número de tokens vistos en el eje X.
Los hiperparámetros predeterminados corresponden al modelo "pequeño" GPT-2 lanzado.
Cuando hay múltiples GPU disponibles, se utilizarían para capacitar con la ayuda de torch.distributed .
Si existe el camino y no se pasa la clave --clean , la capacitación se reanudará. Tenga en cuenta que todos los parámetros aún deben especificarse y que los parámetros del modelo deben coincidir.
Notas sobre parámetros de capacitación:
--batch-size es por GPU, por lo que no necesita volver a ajustarlo al cambiar el número de GPU, solo use Max que se ajuste a la memoria.--g-accum-gradients es el número global de acumulaciones de gradiente, debe ser divisible por el número de GPU. El tamaño de lotes global efectivo es siempre batch_size * g_accum_gradients .--lr no es necesario cambiar al cambiar --batch-size o --g-accum-gradients o número de GPU o --n-ctx : la pérdida ya se escala adecuadamente.Comando de ejemplo:
GPT-2-GEN-RUN-ROOT "INTELIGENCIA ARTIFICAL"
run-root contendría puntos de control modelo "Artificial intelligence" es el prefijo de texto utilizado como punto de partida para generar tokens
Notas sobre parámetros de inferencia:
--tokens-to-generate : número de tokens para generar, el valor predeterminado es 42--top-k : número de candidatos tokens para generar para cada posición (ancho del haz), el valor predeterminado es 8. La licencia es MIT.
El modelo TensorFlow GPT-2 se toma de https://github.com/openai/gpt-2/blob/master/src/model.py y tensorflow gpt-2 El código de entrenamiento se basa en https://github.com/nsheppd/gpt-2/blob/finetuning/train.py
El puerto Pytorch se basa en el código original de OpenAI.
Test Shakespeare Corpus bajo tests/shakespeare es de http://shakespeare.mit.edu bajo el dominio público.
Ver también Operai GPT-2 Paper and Blog.