機械学習用Template準備-1 (全体像)
はじめに
実際にJetson Xavier NX上で簡単な機械学習を開始する上で、データの管理、他への移植性を考慮しTemplateのようなものを作成していきたいと思います。基本このTemplateを使い回すことでどのような状況にも柔軟に対応できるようになるかと思います。
まだJetson Xavier NX の設定が終了していない方はこちらをご参照してください。どなたでも簡単に環境を構築することが可能です。
全体像
まずはどのようなToolを使い、どのような構成にするかの全体像を示します。UMLのような専門的なものではなくて、ざっくりとした全体像ですのでイメージが掴めれば良いかと思います。
各部位の説明
Pytorch-lightningを全体をまとめるFrameworkとして採用しました。このToolが優れているところは、とことん自動でやってくれるところです。CPUやGPUの判別やLoggingおよびStatusの管理等をある程度自動でしてくれます。なので開発者はModelのアルゴリズム開発に集中できるという点がMeritです。また、このGroupは積極的に関連Toolを開発しているので、日々便利になっていっています。私はDataModuleとModel部分をPytorch-lightningを使い完全に分離しています。この点も汎用性や拡張性という意味で便利です。さらに、LightningModuleはResNetを呼び出すようにしているので、Modelのアルゴリズム開発も完全に分離しています。なので、Modelの入れ替えもすぐにできます。
同様にデータ部分もLightningDataModuleから派生させ、model部分から完全に分離させました。なのでCIFA10やMNISTなど自分が使いたいDataset用のdatamoduleを作成すれば、すぐに入れ替えが可能です。
Hydraは、Hyper parameterを管理するツールで、格Moduleのインスタンスかや後に出てきますOptunaとの連携が容易にでき複雑になりがちなHyper parameterの管理を簡単にできます。またRunごとのFolder管理等も自動でしてくれるので非常に使い勝手がいいです。
MLflowは、Pytorch-lightningとの連携が容易で、かつHydraとの相性も良いToolです。HydraでHyper parameterの管理を容易にし、Pytorch-lightningで機械学習の開発を容易・簡素化し、MLflowで結果とHyper parameterの紐付け、管理およびVisualizeを容易にするというかんじです。parameterを変えて実験計画を組んで、後から結果をReviewするときなどに有効活用できます。
OptunaはHyper parameterの最適化や他のparameter最適化を自動化してくれるツールです。HydraではOptunaとの連携を容易にする機能が組み込まれており、使わないてはないです。さらに結果ログはMLflowで容易に管理できるので、導入しない手はないです。
まとめ
今回は、これから解説していく機械学習用Templateの導入部分をご紹介いたしました。次回からは実際にどの様に描いていくかをまとめていきます。
アメリカSilicon Valley在住のエンジニアです。日本企業から突然アメリカ企業に転職して気が付いた事や知って役に立った事を書いています。