Modèle de langue à grande échelle pytorch
Un modèle de langage Pytorch à grande échelle formé sur l'ensemble de données de 1 milliard de mots (LM1B) / (GBW)
Derniers résultats
- 39,98 Perplexité après 5 époques d'entraînement en utilisant le modèle de langue LSTM avec Adam Optimizer
- Formé en ~ 26 heures en utilisant 1 GPU NVIDIA V100 ( ~ 5,1 heures par époque ) avec une taille de lot de 2048 ( ~ 10,7 Go de mémoire GPU )
Résultats précédents
- 46,47 Perplexité après 5 époques d'entraînement sur un modèle de langue LSTM à 1 couche, 2048 Unit, 256-projection [3] [3]
- Formé pendant 3 jours en utilisant 1 GPU NVIDIA P100 ( ~ 12,5 heures par époque )
- Fonctions d'échantillonneur d'échantillonnage échantillonnées et log-uniformes échantillonnées
Exigence matérielle GPU
| Taper | Taille de la mémoire LM | GPU |
|---|
| sans poids attaché | ~ 9 Go | Nvidia 1080 Ti, Nvidia Titan x |
| avec poids liés [6] | ~ 7 Go | Nvidia 1070 ou plus |
- Il existe une option pour lier le mot incorporation et les matrices de poids softmax pour enregistrer la mémoire GPU.
Hyper-paramètres [3]
| Paramètre | Valeur |
|---|
| # Époques | 5 |
| Taille du lot d'entraînement | 128 |
| Taille du lot d'évaluation | 1 |
| Bptt | 20 |
| Taille d'incorporation | 256 |
| Taille cachée | 2048 |
| Taille de projection | 256 |
| Emballage lié + softmax | FAUX |
| # Couches | 1 |
| Optimiseur | Adagrad |
| Taux d'apprentissage | 0.10 |
| Coupure de dégradé | 1,00 |
| Abandonner | 0,01 |
| Poids-décompte (pénalité L2) | 1E-6 |
Configuration - format de données de torche
- Télécharger Google Billion Word DataSet pour Torch - Lien
- Exécutez "process_gbw.py" sur le fichier "Train_data.th7" pour créer le fichier "Train_data.sid"
- Installez Cython Framework et créez un échantillonneur Log_Uniforme
- Convertir les tenseurs de données de torche au format du tenseur Pytorch (nécessite Pytorch V0.4.1)
Je tire en profit les données GBW prétraitées pour le cadre de la torche. (Voir Torch GBW) Chaque tenseur de données contient tous les mots de la partition de données. Le fichier "Train_data.sid" marque les positions de début et de fin pour chaque phrase indépendante. L'étape de prétraitement et le fichier "Train_data.sid" accélère le chargement des données de formation massives.
- Tenseurs de données - (test_data, valid_data, train_data, train_small, train_tiny) - (#words x 2) matrice - (ID de phrase, id de mot)
- Tenseur d'identification de phrase - (#Sentences x 2) Matrice - (position de démarrage, longueur de phrase)
Configuration - format de données d'origine
- Téléchargez un million de dollars de données Word - Lien
Le format de données de torche charge l'ensemble de données à la fois, il nécessite donc au moins 32 Go de mémoire. Le format d'origine partitionne l'ensemble de données en morceaux plus petits, mais il fonctionne plus lentement.
Références
- Exploration des limites de la modélisation du langage github
- Astuces de factorisation pour les réseaux LSTM GitHub
- Approximation efficace de Softmax pour GPUS GitHub
- Échantillonnage des candidats
- Torch gbw
- Lier des vecteurs de mots et des classificateurs de mots: un cadre de perte pour la modélisation du langage