Pytorch大規模な言語モデル
1億語(LM1B) /(GBW)データセットで訓練された大規模なPytorch言語モデル
最新の結果
- 39.98 Adam Optimizerを使用してLSTM言語モデルを使用した5つのトレーニングエポックの後の困惑
- 2048バッチサイズ( 〜10.7 GB GPUメモリ)で1 NVIDIA V100 GPU(エポックあたり5.1時間)を使用して、約26時間で訓練されました
以前の結果
- 46.47 1層、2048年、256プロジェクションLSTM言語モデルで5つのトレーニングエポックを訓練した後の困惑
- 1 NVIDIA P100 GPU(エポックあたり〜12.5時間)を使用して3日間訓練されました
- サンプリングされたソフトマックスとログユニフォームサンプラー関数を実装しました
GPUハードウェア要件
| タイプ | LMメモリサイズ | GPU |
|---|
| 縛られた重み付き | 〜9 gb | Nvidia 1080 Ti、Nvidia Titan X |
| 縛られたウェイト[6] | 〜7 GB | Nvidia 1070以上 |
- GPUメモリを保存するために、埋め込みとソフトマックスの重量行列という単語を結び付けるオプションがあります。
ハイパーパラメーター[3]
| パラメーター | 価値 |
|---|
| #エポック | 5 |
| トレーニングバッチサイズ | 128 |
| 評価バッチサイズ | 1 |
| Bptt | 20 |
| 埋め込みサイズ | 256 |
| 隠されたサイズ | 2048 |
| 投影サイズ | 256 |
| 結び付けられた埋め込み +ソフトマックス | 間違い |
| #レイヤー | 1 |
| オプティマイザ | アダグラード |
| 学習率 | 0.10 |
| グラデーションクリッピング | 1.00 |
| ドロップアウト | 0.01 |
| Weight-Decay(L2ペナルティ) | 1E-6 |
セットアップ - トーチデータ形式
- トーチのためのGoogle 10億語データセットをダウンロード - リンク
- 「train_data.th7」ファイルで「process_gbw.py」を実行して、「train_data.sid」ファイルを作成します
- Cythonフレームワークをインストールし、log_uniformサンプラーを構築します
- トーチデータテンソルをPytorchテンソル形式に変換します(Pytorch v0.4.1が必要です)
トーチフレームワークに前処理されたGBWデータを活用します。 (Torch GBWを参照)各データテンソルには、データパーティション内のすべての単語が含まれています。 「train_data.sid」ファイルは、独立した文の開始位置と終了位置をマークします。プリプロセシングステップと「train_data.sid」ファイルにより、大規模なトレーニングデータの読み込みが速くなります。
- データテンソル - (test_data、valid_data、train_data、train_small、train_tiny) - (#words x 2)matrix-(cente id、word id)
- 文IDテンソル - (#sentences x 2)マトリックス - (開始位置、文の長さ)
セットアップ - 元のデータ形式
- 10億語データセットをダウンロード - リンク
トーチデータ形式はデータセット全体を一度にロードするため、少なくとも32 GBのメモリが必要です。元のフォーマットはデータセットを小さなチャンクに分割しますが、遅くなります。
参照
- 言語モデリングGithubの限界の調査
- LSTMネットワークGithubの因数分解トリック
- GPUS Githubの効率的なソフトマックス近似
- 候補サンプリング
- トーチGBW
- 単語ベクトルと単語分類器を結ぶ:言語モデリングのための損失フレームワーク