Pytorch groß angelegte Sprachmodell
Ein groß angelangtes Pytorch-Sprachmodell, das auf dem 1-Milliarden-Word (LM1B) / (GBW) -Datensatz trainiert wurde
Neueste Ergebnisse
- 39,98 Verwirrung nach 5 Trainingsepochen mit LSTM -Sprachmodell mit Adam Optimizer
- Trainiert in ~ 26 Stunden mit 1 Nvidia V100 GPU ( ~ 5,1 Stunden pro Epoche ) mit 2048 Chargengröße ( ~ 10,7 GB GPU -Speicher )
Frühere Ergebnisse
- 46,47 Verwirrung nach 5 Trainings-Epochen auf einem 1-Layer, 2048-Unit, 256-Projection-LSTM-Sprachmodell [3]
- 3 Tage mit 1 NVIDIA P100 GPU ( ~ 12,5 Stunden pro Epoche ) ausgebildet.
- Implementierte abgetastete Softmax- und logarithmische Abtasterfunktionen
GPU -Hardwareanforderung
| Typ | LM Speichergröße | GPU |
|---|
| w/o gebundene Gewichte | ~ 9 GB | Nvidia 1080 Ti, Nvidia Titan X. |
| mit gebundenen Gewichten [6] | ~ 7 GB | Nvidia 1070 oder höher |
- Es gibt eine Option, um das Wort Einbettung und Softmax -Gewichtsmatrizen zusammenzubinden, um den GPU -Speicher zu sparen.
Hyper-Parameter [3]
| Parameter | Wert |
|---|
| # Epochen | 5 |
| Trainingseinheitgröße | 128 |
| Bewertungsstapelgröße | 1 |
| Bptt | 20 |
| Einbettungsgröße | 256 |
| Versteckte Größe | 2048 |
| Projektionsgröße | 256 |
| Gebundene Einbettung + Softmax | FALSCH |
| # Schichten | 1 |
| Optimierer | Adagrad |
| Lernrate | 0,10 |
| Gradientenausschnitt | 1.00 |
| Ausfallen | 0,01 |
| Gewichtsbekämpfung (L2-Strafe) | 1E-6 |
Setup - Fackeldatenformat
- Laden Sie Google Billion Word Dataset für Torch - Link herunter - Link
- Führen Sie "process_gbw.py" in der Datei "Train_data.th7" aus, um die Datei "Train_data.sid" zu erstellen
- Installieren Sie Cython Framework und erstellen Sie log_uniform Sampler
- Konvertieren Sie Tensoren mit Taschendaten in das Pytorch -Tensor -Format (erfordert Pytorch v0.4.1)
Ich nutze die für das Torch -Framework vorverarbeiteten GBW -Daten. (Siehe Torch GBW) Jeder Daten -Tensor enthält alle Wörter in der Datenpartition. Die Datei "Train_data.sid" markiert die Start- und Endpositionen für jeden unabhängigen Satz. Der Vorverarbeitungsschritt und die Datei "train_data.sid" beschleunigen die massiven Trainingsdaten.
- Daten Tensoren - (test_data, valid_data, train_data, train_small, train_tiny) - (#Words x 2) Matrix - (Satz -ID, Word -ID)
- Satz -ID -Tensor - (#Stenzen x 2) Matrix - (Startposition, Satzlänge)
Setup - Originaldatenformat
- Download 1 Milliarden Word -Datensatz - Link
Das Fackeldatenformat lädt den gesamten Datensatz gleichzeitig und erfordert daher mindestens 32 GB Speicher. Der ursprüngliche Format partitiert den Datensatz in kleinere Stücke, läuft jedoch langsamer.
Referenzen
- Erforschung der Grenzen des Sprachmodellierungsgithubs
- Faktorisierungstricks für LSTM -Netzwerke GitHub
- Effiziente Softmax -Näherung für GPUs GitHub
- Kandidatenabtastung
- Torch GBW
- Word -Vektoren und Wortklassifizierer binden: Ein Verlust -Framework für die Sprachmodellierung