MLP (gMLP) の実験にご注目ください

これは gMLP モデルをトレーニングするためのアノテーション付き PyTorch 実験です。この論文では、トレーニング中に一部の層がランダムに削除される確率的深度正則化も適用しています。ここでは実装していません。

これは、単純なトランスフォーマー自己回帰NLPタスクのトレーニングループと構成に基づいています

16from labml import experiment
17from labml.configs import option
18from labml_nn.transformers import TransformerConfigs
19from labml_nn.transformers.basic.autoregressive_experiment import Configs as BasicAutoRegressionConfigs
20from labml_nn.transformers.gmlp import GMLPBlock
23class Configs(BasicAutoRegressionConfigs):

変圧器

32    transformer: TransformerConfigs = 'gMLP'

GmLP ブロック

34    gmlp: GMLPBlock

d_ffn gMLP プロジェクションレイヤー用

36    d_ffn: int = 2048

gMLP ブロックを作成する

39@option(Configs.gmlp, 'gMLP')
40def _gmlp_configs(c: Configs):
44    return GMLPBlock(c.d_model, c.d_ffn, c.seq_len)

変圧器構成

47@option(Configs.transformer, 'gMLP')
48def _transformer_configs(c: Configs):
55    conf = TransformerConfigs()

埋め込みやロジットの生成に使用するボキャブラリーサイズを設定

57    conf.n_src_vocab = c.n_tokens
58    conf.n_tgt_vocab = c.n_tokens

モデルサイズを設定

60    conf.d_model = c.d_model

エンコーダ層をgMLP層に置き換える

62    conf.encoder_layer = c.gmlp
63
64    return conf
67def main():

実験を作成

69    experiment.create(name="gMLP")

コンフィグの作成

71    conf = Configs()

オーバーライド設定

73    experiment.configs(conf, {

キャラクターレベルのトークナイザーを使う

75        'tokenizer': 'character',

プロンプトセパレータが空白

77        'prompt_separator': '',

サンプリングの開始プロンプト

79        'prompt': 'It is ',

タイニー・シェイクスピア・データセットを使う

81        'text': 'tiny_shakespeare',

コンテキストサイズを次の値にしてください

84        'seq_len': 256,

時代に合わせた列車

86        'epochs': 128,

バッチサイズ

88        'batch_size': 32,

エポックごとにトレーニングと検証を切り替える

91        'inner_iterations': 10,

モデルサイズ

94        'd_model': 512,
95        'd_ffn': 2048,

Noam オプティマイザを使う

98        'optimizer.optimizer': 'Noam',
99        'optimizer.learning_rate': 1.,
100    })

保存および読み込み用のモデルを設定する

103    experiment.add_pytorch_models({'model': conf.model})

実験を始める

106    with experiment.start():

トレーニングを実行

108        conf.run()

112if __name__ == '__main__':
113    main()