Modelo de lenguaje a gran escala de Pytorch
Un modelo de lenguaje Pytorch a gran escala entrenado en el conjunto de datos de 1 billón de palabras (LM1B) / (GBW)
Últimos resultados
- 39.98 perplejidad después de 5 épocas de entrenamiento utilizando el modelo de lenguaje LSTM con Adam Optimizer
- Entrenado en ~ 26 horas usando 1 NVIDIA V100 GPU ( ~ 5.1 horas por época ) con un tamaño de lote 2048 ( ~ 10.7 GB de memoria GPU )
Resultados anteriores
- 46.47 perplejidad después de 5 épocas de entrenamiento en un modelo de lenguaje LSTM de 1 capa, 2048 unidades y 256 de proyección [3]
- Entrenado durante 3 días usando 1 NVIDIA P100 GPU ( ~ 12.5 horas por época )
- Funciones de muestreador SoffMax y uniformes implementadas Sumpled
Requisito de hardware de GPU
| Tipo | Tamaño de memoria de LM | GPU |
|---|
| sin pesas atadas | ~ 9 GB | Nvidia 1080 TI, Nvidia Titan X |
| con pesas atadas [6] | ~ 7 GB | Nvidia 1070 o superior |
- Hay una opción para unir la palabra incrustación y matrices de peso Softmax para guardar la memoria de GPU.
Hyper-Parameters [3]
| Parámetro | Valor |
|---|
| # Épocas | 5 |
| Tamaño de lote de entrenamiento | 128 |
| Tamaño de lote de evaluación | 1 |
| BPTT | 20 |
| Tamaño de incrustación | 256 |
| Tamaño oculto | 2048 |
| Tamaño de proyección | 256 |
| Embedido atado + Softmax | FALSO |
| # Capas | 1 |
| Optimizador | Adagrada |
| Tasa de aprendizaje | 0.10 |
| Recorte de gradiente | 1.00 |
| Abandonar | 0.01 |
| Decay de peso (penalización L2) | 1e-6 |
Configuración - Formato de datos de antorcha
- Descargar Google Billion Word DataSet para Torch - Enlace
- Ejecute "process_gbw.py" en el archivo "Train_data.th7" para crear el archivo "Train_data.sid"
- Instale Cython Framework y cree un muestreador Log_uniform
- Convierta los tensores de datos de antorcha en formato de tensor Pytorch (requiere Pytorch v0.4.1)
Aprovecho los datos GBW preprocesados para el marco de la antorcha. (Ver Antorch GBW) Cada tensor de datos contiene todas las palabras en la partición de datos. El archivo "Train_data.sid" marca las posiciones de inicio y finalización para cada oración independiente. El paso de preprocesamiento y el archivo "Train_data.sid" aceleran cargando los datos de entrenamiento masivo.
- Tensores de datos - (Test_Data, Valid_Data, Train_Data, Train_Small, Train_Tiny) - (#Words X 2) Matrix - (ID de oración, ID de palabra)
- Tensor de identificación de oración - (#sentencias x 2) Matriz - (posición de inicio, longitud de la oración)
Configuración - Formato de datos original
- Descargue el conjunto de datos de 1 billón de palabras - enlace
El formato de datos de la antorcha carga todo el conjunto de datos a la vez, por lo que requiere al menos 32 GB de memoria. El formato original divide el conjunto de datos en trozos más pequeños, pero se ejecuta más lento.
Referencias
- Explorando los límites del modelado de idiomas GitHub
- Trucos de factorización para las redes LSTM GitHub
- Aproximación eficiente de Softmax para GPUS GitHub
- Muestreo candidato
- Torch GBW
- Atar vectores de palabras y clasificadores de palabras: un marco de pérdida para el modelado de idiomas