これは gMLP モデルをトレーニングするためのアノテーション付き PyTorch 実験です。この論文では、トレーニング中に一部の層がランダムに削除される確率的深度正則化も適用しています。ここでは実装していません。
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
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,
保存および読み込み用のモデルを設定する
103 experiment.add_pytorch_models({'model': conf.model})
実験を始める
106 with experiment.start():
トレーニングを実行
108 conf.run()
112if __name__ == '__main__':
113 main()