OmegaConfとHydraとPyTorch Lightningに関するメモ
既存の深層学習モデルのPyTorch実装を使おうとしたら、他にもいろいろなライブラリが使われていたのでざっくり整理する。
PyTorch Lightningとは
PyTorch LightningはPyTorchをラップして簡単に使えるようにしてくれるPythonライブラリ。開発はLightning AI。
例えばPyTorchのnn.Module
クラスを継承して実装したネットワークをLightningModule
クラスでくるみ、**.fit(train_x, train_y)
くらいの直感的なメソッドで学習できるようになる。
Hydraとは
Hydraは機械学習の定型的な処理に特化したスクリプトの記述を助けるPythonライブラリ。開発はMeta (旧 Facebook)。ディレクトリに階層的に保存されたYAML/TOML等のテキストファイルや環境変数、コマンド引数などを参照してすべてのオプションを解決・統合した上で、(この部分はほとんどOmegaConfの機能)、ひとつのPythonオブジェクトとしてエントリポイントの関数(@hydra.main
デコレータをつけて指定)に渡してくれる。また、特定の形式で書かれたPythonオブジェクトを読み込んでクラスのインスタンス化もしてくれる1。
OmegaConfとは
OmegaConfはプログラムの実行に要するオプションの設定内容をYAML/TOML等のテキストファイルや環境変数などを参照して解決し、ひとつのオブジェクトにまとめてくれるPythonライブラリ。開発はOmry Yadan氏(Hydraの開発者でもある)。