Upgrade to Pro — share decks privately, control downloads, hide ads and more …

社内CV輪講資料 / PyTorch Lightning

社内CV輪講資料 / PyTorch Lightning

社内のCV輪講で PyTorch Lightningについて共有したときの資料です

「今日から始める PyTorch Lightning」
サンプルレポ:https://github.com/karasawatakumi/monodepth-dev

Takumi Karasawa

April 26, 2021
Tweet

More Decks by Takumi Karasawa

Other Decks in Research

Transcript

  1. confidential Mobility Technologies Co., PyTorch Lightning [Docs] ▪ 3月にPLデビューしていい感じだったので共有。 タイトル通り「今日から始める」人向け、な気がします。 ▪

    ちなみにですが、こういう系の他フレームワークも使ったことない人です。 そのため他フレームワークに比べて、とかはわからず。 はじめに
  2. confidential Mobility Technologies Co., 「さっくり使用機能の豊富さ+不要な頑張りコード排除」 w/ 移行のしやすさ ▪ 形式に則って実装しておけば、引数与えるだけ、とかで豊富な機能を使用できる。 ▪

    ターミナル表示やロギングなど、毎回書くコードの排除。メイン部分だけ実装すれば良い ▪ (個人的には)楽さだけでなく、不要な頑張りコードがないと(=フォーマット整う と)本質部分のコード見やすい ▪ 移行が簡単だった ▪ 移行すること自体に重きが置かれており、それ系の説明わりと整ってる よかったところ
  3. confidential Mobility Technologies Co., あまりないが、 ▪ 自動化されているぶん、 「これって結局どう実行されてるんだっけ、コードの中まで見て確認しないと」 みたいなことは個人的には最初わりとあった ▪

    (バージョン更新まだ多い。) Q. 柔軟性に欠けるかどうか?  A. 今のところ、そう感じたことはなし。 ▪ 用途に合わせて自動更新止めたりも ▪ こういう実装に困った、みたいな話あったら聞きたい 不便だったところ
  4. confidential Mobility Technologies Co., “decoupling the research code from the

    engineering”  (docsより) PLの基本:LightningModule と Trainer LightningModule 基本的にこちらを実装 • init(__init__) • Train loop (training_step) • Validation loop (validation_step) • Test loop (test_step) • Optimizers (configure_optimizers) Trainer こちらはほぼ引数与えるだけ 今までのコードは消してよし • device設定 • logging設定 • profiler設定 • etc. 基本的な使い方
  5. confidential Mobility Technologies Co., データ周りは LightningDataModule 推奨(前スライドのように、DataLoaderのままでも可) 基本的には、 今までの内容を移すだけ ▪

    prepare_data (download, etc) ▪ setup (split, etc) ▪ train_dataloader ▪ val_dataloader ▪ test_dataloader データ周り:LightningDataModule  継承して自分のクラスを実装
  6. confidential Mobility Technologies Co., データ周りは LightningDataModule 推奨(前スライドのように、DataLoaderのままでも可) 基本的には、 今までの内容を移すだけ ▪

    prepare_data (download, etc) ▪ setup (split, etc) ▪ train_dataloader ▪ val_dataloader ▪ test_dataloader データ周り:LightningDataModule  クラス名揃ってないのすいません笑 基本三点セット:Trainer・LightningModule・LightningDataModule
  7. confidential Mobility Technologies Co., LightningModule の基本実装(基本関数) モデル定義など。 training loop。 batchを受け取ってロスを返す。

    optimizerの設定。 schedulerもここ。 inference用。 Minimal Example これだけ書けば、学習開始 LightningModuleを継承して自分のクラスを実装
  8. confidential Mobility Technologies Co., LightningModule の基本実装(基本関数) モデル定義など。 training loop。 batchを受け取ってロスを返す。

    optimizerの設定。 schedulerもここ。 inference用。 Minimal Example LightningModuleを継承して自分のクラスを実装 必須なのは training_step だが、 training/validation/testループそれぞれに3つのhook
  9. confidential Mobility Technologies Co., 各ループはそれぞれ3つのhook関数が定義できる *X=traning/validataion/test ▪ X_step ▪ X_step_end

    ▪ X_epoch_end *X_step_endは data parallelのときとか training/validation/test ループとデータフロー 擬似コード。X=trainの場合。 backwardとか含めると trainingの擬似コードはこう
  10. confidential Mobility Technologies Co., 学習コードは変えずにTrainerへの引数変えるだけ ▪ tensorboard (default) ▪ wandb

    ▪ … Logger サポートされているLogger コード変えなくていいのは導入簡単でやはり嬉しい (selfからアクセス可能なので明示的に使用も可能)
  11. confidential Mobility Technologies Co., 引数指定で簡単にプロファイリング ▪ ”simple” と ”advanced” 選べる

    ▪ ”advanced”は、テキスト出力選ばないと 長すぎてきつかった Profiler ”simple” profilerの結果例 ↓ %の上位から並べてくれるが、ちょっと包含関係とかが分かりづらかったり
  12. confidential Mobility Technologies Co., よかったところ:「さっくり使用機能の豊富さ+不要な頑張りコード排除」 w/ 移行のしやすさ まとめ LightningModule 基本的にこちらを実装

    • init(__init__) • Train loop (training_step) • Validation loop (validation_step) • Test loop (test_step) • Optimizers (configure_optimizers) Trainer こちらはほぼ引数与えるだけ 今までのコードは消してよし • device設定 • logging設定 • profiler設定 • etc. LightningDataModule 基本三点セット