このリポジトリには、論文の言語モデリング実験に使用される公式コードが含まれています。
より一般的には、これはPytorchの言語モデリングツールキットとして使用して、以下を実験できます。
標準変圧器
トランス-XL
さまざまな更新ルールと線形注意機能を備えた高速体重プログラマー:
たとえば、いくつかの組み合わせにより、よく知られているモデルが得られます。
このリポジションには、高速の2つの実装が含まれています。
torch.autograd.Function (utils/fast_weight.pyを参照)すべての最終実験(より速く/はるかに優れたGPU使用率)にCUDA実装のみを使用しましたが、 torch.autograd.Functionバージョンは、新しい拡張機能を備えた迅速なプロトタイピングに役立ちます。
このツールキットには、Pytorch torchとNinja ninja (Cuda Kernelsをコンパイルするため)が必要です。
論文の実験は、Python 3.6およびPytorch 1.4.0で実施されました(2023年8月24日に注:このコードは、Python 3.11およびPytorch 2.0.1+Cu117でも動作します)。
Pytorchのより最近のバージョンは、マルチGPUトレーニングにまだtorch.nn.DataParallel使用しているこのツールキットによってまだ十分にサポートされていません。 Pytorchの最新バージョンを本当に使用する必要がある場合は、代わりにtorch.nn.parallel.DistributedDataParallelを使用するためにドキュメントを確認してください。これをすぐに修正することを願っていますが、いつ正確にはわかりません。
ツールキットは、ジョブを監視するためのウェイトとバイアスをサポートしています。使用する場合は、 wandbもインストールします。
この繰り返しには、以下のソースから採取および適応された多くのコード行が含まれています。
モデルをトレーニングおよび評価するための一般的な指示と例については、 example_scriptsの下のファイルを確認してください。
@inproceedings{schlag2021linear,
title={Linear Transformers Are Secretly Fast Weight Programmers},
author={Imanol Schlag and Kazuki Irie and J"urgen Schmidhuber},
booktitle={Proc. Int. Conf. on Machine Learning (ICML)},
address = {Virtual only},
month = jul,
year={2021}
}
@article{irie2021going,
title={Going Beyond Linear Transformers with Recurrent Fast Weight Programmers},
author={Kazuki Irie and Imanol Schlag and R'obert Csord'as and J"urgen Schmidhuber},
journal={Preprint arXiv:2106.06295},
year={2021}
}