Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

不老におけるOptunaを利用した分散ハイパーパラメータ最適化 - 今村秀明(名古屋大学 Optuna講習会)

1,759 views

Published on

2020/10/23 (金)の名古屋大学主催、NVIDIA・PFN共催の「Optuna講習会」の資料です。

Published in: Technology

不老におけるOptunaを利用した分散ハイパーパラメータ最適化 - 今村秀明(名古屋大学 Optuna講習会)

  1. 1. https://bit.ly/optuna-tutorial-ja 1 2020年10月23日@名古屋大学 今村 秀明 (Hideaki Imamura) Preferred Networks, Researcher 不老におけるOptunaを利用した 分散ハイパーパラメータ最適化
  2. 2. https://bit.ly/optuna-tutorial-ja 2 自己紹介 今村秀明 @mamurai1208 • ~2020 東京大学大学院, 情報理工学系研究科, コンピュ ータ科学専攻, 杉山・佐藤・本多研究室, 修士 • 2020~ Preferred Networks, Researcher: Optuna開発
  3. 3. https://bit.ly/optuna-tutorial-ja 3 Today's Outline • ハイパーパラメータ最適化とは • Optunaとは • Optunaの使い方 • 不老におけるOptunaを利用した最適化 • 不老におけるOptunaを利用した分散最適化
  4. 4. https://bit.ly/optuna-tutorial-ja 4 Today's Outline • ハイパーパラメータ最適化とは • Optunaとは • Optunaの使い方 • 不老におけるOptunaを利用した最適化 • 不老におけるOptunaを利用した分散最適化
  5. 5. https://bit.ly/optuna-tutorial-ja 5 ハイパーパラメータとは 推論や予測の枠組みの中で決定されないパラメータのこと つまり、学習の前に事前に決める必要があるパラメータ 層の数ユニット数 ハイパーパラメータ データから学習する パラメタ
  6. 6. https://bit.ly/optuna-tutorial-ja 6 ハイパーパラメータ最適化とは はじめにこの値で 試そう learning_rate: 0.1 num_units: 30 … 完了! Accuracy: 0.6 Trial 1 小さくしたらどうか な? learning_rate: 0.01 num_units: 20 … 完了! Accuracy: 0.5 Trial 2 うーん、次は少し大 きくして... learning_rate: 0.05 num_units: 50 … 完了! Accuracy: 0.8 Trial 3
  7. 7. https://bit.ly/optuna-tutorial-ja 7 最適化には多大なコストがかかる はじめにこの値で 試そう learning_rate: 0.1 num_units: 30 … 完了! Accuracy: 0.6 Trial 1 小さくしたらどうか な? learning_rate: 0.01 num_units: 20 … 完了! Accuracy: 0.5 Trial 2 うーん、次は少し大 きくして... learning_rate: 0.05 num_units: 50 … 完了! Accuracy: 0.8 Trial 3 オペレーションのコスト計算機の料金・電気代1回に数時間〜数日
  8. 8. https://bit.ly/optuna-tutorial-ja 8 ハイパーパラメータ最適化の自動化 はじめにこの値で 試そう learning_rate: 0.1 num_units: 30 … 完了! Accuracy: 0.6 Trial 1 小さくしたらどうか な? learning_rate: 0.01 num_units: 20 … 完了! Accuracy: 0.5 Trial 2 うーん、次は少し大 きくして... learning_rate: 0.05 num_units: 50 … 完了! Accuracy: 0.8 Trial 3
  9. 9. https://bit.ly/optuna-tutorial-ja 9 ハイパーパラメータ最適化とは Trial iではこの値で 試そう learning_rate: 0.1 num_units: 30 … 完了! Accuracy: 0.6 Trial i 定式化: ブラックボックス関数 y = f(x) の最大化問題 e.g. 精度など ハイパーパラメータの組 特徴: ● あるxにおける目的関数y = f(x) の値の計算は高コスト ● 目的関数値の観測にはノイズが乗る ● 目的関数の微分は計算できない
  10. 10. https://bit.ly/optuna-tutorial-ja 10 ハイパーパラメータ最適化のアルゴリズム Trial iではこの値で 試そう learning_rate: 0.1 num_units: 30 … 完了! Accuracy: 0.6 Trial i アルゴリズム: 各ステップ i において逐次的にx_iを選ぶ 考えられるアプローチ: ● 最適化履歴を利用しないもの ○ グリッドサーチ ○ ランダムサーチ ● 最適化履歴を利用するもの ○ ベイズ最適化 (Optunaのデフォルト) ○ 進化計算
  11. 11. https://bit.ly/optuna-tutorial-ja 11 ハイパーパラメータ最適化のアルゴリズム ランダムサーチ ベイズ最適化
  12. 12. https://bit.ly/optuna-tutorial-ja 12 ベイズ最適化とは 各ステップにおいて、 ● 目的関数の確率モデルの更新 ● モデルと獲得関数を利用した 次の点の選択 を繰り返す。 詳細は[Shahriari+ 2016]を参照 [Shahriari+ 2016] Taking the Human Out of the Loop: A Review of bayesian Optimization, B. Shahriari and et al. Proceedings of the IEEE, 104(1):148-175, 2016
  13. 13. https://bit.ly/optuna-tutorial-ja 13 例: ランダムサーチ v.s. ベイズ最適化 簡単な比較実験 ● Data: UCI Adult dataset ● Library: scikit-learn ● Model ○ GradientBoostingClassifier ● Hyperparameter ○ max depth ○ min sample split
  14. 14. https://bit.ly/optuna-tutorial-ja 14 例: ランダムサーチ v.s. ベイズ最適化 Gradient Boosting のデフォルト値 Better
  15. 15. https://bit.ly/optuna-tutorial-ja 15 例: ランダムサーチ v.s. ベイズ最適化 ランダムサーチ Better Gradient Boosting のデフォルト値
  16. 16. https://bit.ly/optuna-tutorial-ja 16 例: ランダムサーチ v.s. ベイズ最適化 ベイズ最適化 Better Gradient Boosting のデフォルト値 ランダムサーチ
  17. 17. https://bit.ly/optuna-tutorial-ja 17 Faster and Better!
  18. 18. https://bit.ly/optuna-tutorial-ja 18 ハイパーパラメータ最適化のまとめ • ハイパーパラメータとは学習の前に決めるパラメータ • ハイパーパラメータの最適化は高コスト – 時間、計算機コスト、オペレーションコスト • Optunaはハイパーパラメータ最適化を自動化 – 最適化履歴を元に効率的に最適化(ベイズ最適化) – ランダムサーチ, グリッドサーチ, 進化計算もサポート
  19. 19. https://bit.ly/optuna-tutorial-ja 19 Today's Outline • ハイパーパラメータ最適化とは • Optunaとは • Optunaの使い方 • 不老におけるOptunaを利用した最適化 • 不老におけるOptunaを利用した分散最適化
  20. 20. https://bit.ly/optuna-tutorial-ja 20 Optunaとは • ハイパーパラメータ最適化のための Python ライブラリ • ベイズ最適化や並列分散実行による効率的な自動探索 • ユーザは目的関数を記述するだけでよい 2018年12月ベータ版リリー ス 2020年1月 v1.0リリース 2020年7月 v2.0リリース
  21. 21. https://bit.ly/optuna-tutorial-ja 21 Optunaのユースケース紹介 • Mozilla/DeepSpeech • SLAM • COVID-19分析 ML Non ML Non ML
  22. 22. https://bit.ly/optuna-tutorial-ja 22 Mozilla/DeepSpeech Deep LearningベースのSpeech-To-Textエンジン Mozilla Common Voiceのプロジェクト ML 画像出典 https://voice.mozilla.org/
  23. 23. https://bit.ly/optuna-tutorial-ja 23 Optunaはスコア関数の調整に利用 RNNの出力、言語モデル、系列長の3つの重み付け和 データセットによって、適する重みが異なる 出典: https://arxiv.org/abs/1412.5567
  24. 24. https://bit.ly/optuna-tutorial-ja 24 SLAM 自己位置推定と地図生成を同時に行う技術 SLAMのパラメータチューニングに利用 Non ML 画像出典: Geiger et al., Are we ready for Autonomous Driving? The KITTI Vision Benchmark Suite, CVPR 2012 自動車とセンサ 観測 推定された軌跡
  25. 25. https://bit.ly/optuna-tutorial-ja 25 SLAMはハイパーパラメータだらけ 画像サイズ ロバストコスト関数選択 LM法のlambda イテレーション回数 VisionとIMUのバラン ス外れ値しきい値 画像ピラミッドのレイヤー数 特徴点数 収束判定条件 自動で最適化する 出典: 第6回 3D勉強会@関東 のmiyanegi 「SLAM開発における課題と対策の一例の紹介」
  26. 26. https://bit.ly/optuna-tutorial-ja 26 導入のポイントと効果 1. SLAMの実験を1コマンド化 2. 最適化したい評価指標を定義 実績:手動調整より10%向上 出典: 第6回 3D勉強会@関東 のmiyanegi「SLAM開発における課題と対策の一例の紹介」
  27. 27. https://bit.ly/optuna-tutorial-ja 27 COVID-19分析 Non ML 出典: https://twitter.com/maruyama/status/1231836868221603840
  28. 28. https://bit.ly/optuna-tutorial-ja 28 2/6-2/15の検査陽性数の推移(公開データ) 疑問: 2/5時点の感染者数は?何日で回復? 出典: https://twitter.com/maruyama/status/1231836868221603840
  29. 29. https://bit.ly/optuna-tutorial-ja 29 SIRモデルのパラメータフィッティング 変数 t: 2/5からの経過日 S(t): 感受性宿主数 (免疫が低下し感染症になりやすい人) I(t): 感染者数(症状のない者も含む) R(t): 回復者数 x(t): 発症者数 (観測される数) 推定したいパラメタ I0: 初期の感染者 α: ある感染者がある日に発症する率 β: 感染率 γ: 発症期間(感染力がなくなるまでの日数)の逆数 x(t)が観測数と合致するようにパラメータチューニング SIRモデル 出典: https://twitter.com/maruyama/status/1231836868221603840
  30. 30. https://bit.ly/optuna-tutorial-ja 30 結果 best modelのプロット best modelのパラメタ 2/5時点の感染者数: I0 = 209 人 何日で回復: 1/γ ≒ 5 日 出典: https://twitter.com/maruyama/status/1231836868221603840
  31. 31. https://bit.ly/optuna-tutorial-ja 31 Today's Outline • ハイパーパラメータ最適化とは • Optunaとは • Optunaの使い方 • 不老におけるOptunaを利用した最適化 • 不老におけるOptunaを利用した分散最適化
  32. 32. https://bit.ly/optuna-tutorial-ja 32 例: Kerasの訓練スクリプト(ハイパラ最適化前)
  33. 33. https://bit.ly/optuna-tutorial-ja 33 例: Kerasの訓練スクリプト(ハイパラ最適化前) データのダウンロード ネットワーク構築 訓練と評価
  34. 34. https://bit.ly/optuna-tutorial-ja 34 例: Kerasの訓練スクリプト(ハイパラ最適化前) ユニット数は? 学習率は?
  35. 35. https://bit.ly/optuna-tutorial-ja 35
  36. 36. https://bit.ly/optuna-tutorial-ja 36 Diff: Optunaの適用前後 Without Optuna With Optuna
  37. 37. https://bit.ly/optuna-tutorial-ja 37 OptunaでKerasコード 訓練ロジックを ラップ Optunaから パラメタ値を取得 最適化の実行
  38. 38. https://bit.ly/optuna-tutorial-ja 38 基本的な使い方 • MLの訓練ロジックをobjective function で包む • ハイパーパラメタの値をsuggest APIで取得 objective function suggest APIs
  39. 39. https://bit.ly/optuna-tutorial-ja 39 基本的な使い方 Trialは1回の訓練、 Studyは最適化における一連のTrial
  40. 40. https://bit.ly/optuna-tutorial-ja 40 基本的な使い方 Trial.suggest APIでユニット数と学習率を決める ユニット数 学習率
  41. 41. https://bit.ly/optuna-tutorial-ja 41 実数値 [a, b) • 素直にサンプル: Trial.suggest_float(“x”, a, b) • 対数変換した空間からサンプル: Trial.suggest_float(“x”, a, b, log=True) • q間隔で離散的にサンプル: Trial.suggest_float(“x”, a, b, step=q) – 注意: stepを指定した場合は右端点bを含む 整数値 [a, b] • 素直にサンプル: Trial.suggest_int(“x”, a, b) • 対数変換した空間からサンプル: Trial.suggest_int(“x”, a, b, log=True) カテゴリカルな値 {a, b, c, d} • {a,b,c,d}から一つ選ぶ Trial.suggest_categorical(“x”, (a, b, c, d)) 基本的なTrialの使い方
  42. 42. https://bit.ly/optuna-tutorial-ja 42 基本的なStudyの使い方 Studyを作成→Study.optimizeを呼んで最適化を開始
  43. 43. https://bit.ly/optuna-tutorial-ja 43 Optuna is Platform Agnostic
  44. 44. https://bit.ly/optuna-tutorial-ja 44 Scikit-learnの例 Without Optuna With Optuna
  45. 45. https://bit.ly/optuna-tutorial-ja 45 LightGBMの例 Without Optuna With Optuna
  46. 46. https://bit.ly/optuna-tutorial-ja 46 Optunaの基本的な使い方まとめ • 訓練コードを3点書き換えるだけ – 目的関数 objective – パラメータ取得 Trial.suggest – 最適化の実行 Study.optimize • Platform非依存 – PyTorchもLightGBMも。機械学習でなくてもOK
  47. 47. https://bit.ly/optuna-tutorial-ja 47 Hands-on: http://bit.ly/optuna-tutorial-ja 実際に動かしてみましょう!
  48. 48. https://bit.ly/optuna-tutorial-ja 48 一歩進んだ使い方 Visualization分散並列最適化 枝刈り (早期終了)
  49. 49. https://bit.ly/optuna-tutorial-ja 49 一歩進んだ使い方 Visualization分散並列最適化 枝刈り (早期終了)
  50. 50. https://bit.ly/optuna-tutorial-ja 50 分散並列最適化 Trial 1 Trial 2 Trial 3 Trial 4 Trial 5 Trial 6 並行して実行
  51. 51. https://bit.ly/optuna-tutorial-ja 51 分散並列最適化の方法 この1行変えるだけ!
  52. 52. https://bit.ly/optuna-tutorial-ja 52 分散並列最適化の方法 Study名とDB URLを指定 各ワーカーでスクリプトを実行
  53. 53. https://bit.ly/optuna-tutorial-ja 53
  54. 54. https://bit.ly/optuna-tutorial-ja 54 分散並列最適化の効果 Near-Linearなスケーラビリティを実現 • モデルの訓練時間が支配的な場合は 効果大 • 例: CNNのハイパラ最適化(右図)
  55. 55. https://bit.ly/optuna-tutorial-ja 55 分散並列最適化の仕組み ● 最適化の履歴は全て共有ストレージに保存 ● 各ワーカーは履歴を参照してサンプリングを実行
  56. 56. https://bit.ly/optuna-tutorial-ja 56 一歩進んだ使い方 Visualization分散並列最適化 枝刈り (早期終了)
  57. 57. https://bit.ly/optuna-tutorial-ja 57 枝刈り (早期終了) ● 見込みの薄いTrialの訓練を途中で打ち切る ● 同じepoch消費量で、試せるパラメータの数が飛躍的に増大
  58. 58. https://bit.ly/optuna-tutorial-ja 58 枝刈り (早期終了)の方法 中間値の報告と枝刈りのロジックを追加 prunerの指定が必要 トライアル数指定の変更を推奨
  59. 59. https://bit.ly/optuna-tutorial-ja 59 枝刈り (早期終了)の方法:objectiveの変更点 変更点は以下の2点 ● 評価値(中間値)を計算し報告 ● 枝刈りのロジックを追加
  60. 60. https://bit.ly/optuna-tutorial-ja 60 枝刈り (早期終了)の方法:study.optimizeの変更点 これまで示してきた呼び出し方 • study.optimize(objective, n_trials=100) • トライアル数 = 一定 • これだと100トライアルが早く終わるだけで、試せるハイパラの数は変わらない。 枝刈りを用いるときに推奨される呼び出し方1 • study.optimize(objective, timeout=30) • 時間 = 一定 • これだと与えられたリソース(30秒)のなかで、最大限多くのハイパラを試せる。
  61. 61. https://bit.ly/optuna-tutorial-ja 61 枝刈り (早期終了)の方法:study.optimizeの変更点 枝刈りを用いるときに推奨される呼び出し方2 • 消費step数 = 一定 • これでも与えられたリソース(step数)のなかで、最大限多くのハイパラを試せる。
  62. 62. https://bit.ly/optuna-tutorial-ja 62 枝刈り (早期終了) の効果 詳細は OptunaのベンチマークWiki 1budget=100step 同じstep消費量で、より速く より良いハイパーパラメータを 発見 Better 枝刈りなし 枝刈りあり
  63. 63. https://bit.ly/optuna-tutorial-ja 63 一歩進んだ使い方 Visualization分散並列最適化 枝刈り (早期終了)
  64. 64. https://bit.ly/optuna-tutorial-ja 64 Visualization Optunaには豊富な可視化関数が用意されている 最適化後のstudyを利用するだけで、簡単に分析が可能
  65. 65. https://bit.ly/optuna-tutorial-ja 65 Visualizationの方法: plot_optimization_history() 最適化の履歴を、横軸トライアル数、 縦軸目的関数値として出力する 使い方: 最適化後のstudyを関数に渡すだけ optuna.visualization.plot_optimization_history(study)
  66. 66. https://bit.ly/optuna-tutorial-ja 66 Visualizationの方法: plot_contour() 全てのハイパーパラメータに対して、 それらの任意の2個を縦軸横軸として 目的関数値の等高線を表示する 使い方: 最適化後のstudyを関数に渡すだけ optuna.visualization.plot_contour(study)
  67. 67. https://bit.ly/optuna-tutorial-ja 67 Visualizationの方法: plot_param_importances() 最適化したハイパーパラメータに対し て、目的関数の値に与えた影響の度合 い(重要度)を計算して出力する 使い方: 最適化後のstudyを関数に渡すだけ optuna.visualization.plot_param_importances(study)
  68. 68. https://bit.ly/optuna-tutorial-ja 68 Optunaの一歩進んだ使い方まとめ • 分散並列最適化 – RDB をURLで指定 – 複数のワーカーで同じスクリプトを起動するだけ • 枝刈り (早期終了) – objectiveで中間値報告&Trial.should_pruned()を呼ぶ – かけるリソース量を考慮してstudy.optimize • Visualization – 最適化後のstudy を可視化関数に渡すだけ
  69. 69. https://bit.ly/optuna-tutorial-ja 69 Hands-on: http://bit.ly/optuna-advanced-tutorial-ja 実際に動かしてみましょう!
  70. 70. https://bit.ly/optuna-tutorial-ja 70 Today's Outline • ハイパーパラメータ最適化とは • Optunaとは • Optunaの使い方 • 不老におけるOptunaを利用した最適化 • 不老におけるOptunaを利用した分散最適化
  71. 71. https://bit.ly/optuna-tutorial-ja 71 不老における環境構築 • 不老では、Singularityというコンテナプラットフォームが利用可能 • Optunaを含む環境を、Singularityを用いて構築することを推奨 開発環境 今回はOptunaや関連機械学習ライブラリを含む環境 の構築に焦点を当てる。Singularityの他の利用の仕 方は、こちらを参照 Optuna PyTorch scikit-learn Singularity
  72. 72. https://bit.ly/optuna-tutorial-ja 72 不老における環境構築 まずは、不老 Type Ⅱサブシステムにログイン $ ssh <ログイン名>@flow-cx.cc.nagoya-u.ac.jp 今回使うハンズオン資料をダウンロードし、作業ディレクトリに移動 $ cp -r /home/center/a49979a/share/20201023 ./optuna-hands-on-flow $ cd optuna-hands-on-flow 会話型バッチジョブを起動 $ pjsub --interact -L rscgrp=cx-interactive,jobenv=singularity (リソース割り当てに失敗した場合は、 別のリソースグループで実行してみましょう。) ($ pjsub --interact -L rscgrp=cxgfs-interactive,jobenv=singularity) Singularity モジュールをロード $ module load singularity OptunaのDockerイメージをベースにビルド $ singularity build optuna.sif docker://optuna/optuna:py3.7-dev 毎日ビルドされている最新のPython 3.7用のイメージ。バージョンを固定したかっ たり、違うPythonバージョン用のイメージが欲しければ、こちらを見るように。
  73. 73. https://bit.ly/optuna-tutorial-ja 73 不老における環境構築 ダウンロードしたイメージをもとにsingularity shellで呼び出して起動 $ singularity shell --nv ./optuna.sif 必要なパッケージがあれば、ここでインストールする。(今回は特になし) Singularity > pip3 install <必要なパッケージ> 現在のイメージにインストールされているパッケージが確認できる。 Singularity > pip3 list Ctrl+Dを2回押すと、singularity shellと会話型バッチジョブが順に終了する。 Singularity> exit $ logout [INFO] PJM 00xx pjsub Interactive job xxxxx completed. $
  74. 74. https://bit.ly/optuna-tutorial-ja 74 不老におけるOptunaの利用(単一ノード) まずは、簡単な二次関数の最適化を題材にOptunaがうまく動くか確認 `quadratic_simple.py`と`quadratic_simple.sh`を読んでみましょう $ vim quadratic_simple.py $ vim quadratic_simple.sh バッチジョブとして実行 $ pjsub quadratic_simple.sh 実行結果は、ジョブIDをもとに確認できる $ cat quadratic_simple.sh.<ジョブID>.out
  75. 75. https://bit.ly/optuna-tutorial-ja 75 不老におけるOptunaの利用(単一ノード) 実行結果の例: $ cat quadratic_simple.sh.<ジョブID>.out ...
  76. 76. https://bit.ly/optuna-tutorial-ja 76 不老におけるOptunaの利用(単一ノード) 次に、PyTorchを利用したMNISTデータに対するMLPのハイパラ最適化を題材 に動作を確認 `pytorch_simple.py`と`pytorch_simple.sh`を読んでみましょう $ vim pytorch_simple.py $ vim pytorch_simple.sh バッチジョブとして実行 $ pjsub pytorch_simple.sh 実行結果は、ジョブIDをもとに確認できる $ cat pytorch_simple.sh.<ジョブID>.out
  77. 77. https://bit.ly/optuna-tutorial-ja 77 単一ノード実行のまとめ • Singularityを利用してコンテナ開発環境を構築 • .pyで実行コード、.shでジョブスクリプトを準備 • ジョブIDをもとに実行結果などが確認できる
  78. 78. https://bit.ly/optuna-tutorial-ja 78 Today's Outline • ハイパーパラメータ最適化とは • Optunaとは • Optunaの使い方 • 不老におけるOptunaを利用した最適化 • 不老におけるOptunaを利用した分散最適化
  79. 79. https://bit.ly/optuna-tutorial-ja 79 RDBストレージの準備 複数ノードでOptunaを利用したハイパラ最適化を行うには 、最適化履歴を保存するRDBストレージが必要 → RDBストレージを保持するサーバーノードを準備する $ pjsub launch-postgres.sh [INFO] PJM 0000 pjsub Job xxxxx submitted. コレ!
  80. 80. https://bit.ly/optuna-tutorial-ja 80 RDBストレージの準備 ジョブID xxxxxを利用してサーバーノードにアクセス可能 $ ls -a | grep xxxxx .d00000xxxxx .d00000xxxxx_nodeinfo .d00000xxxxxe .d00000xxxxxp $ cat .d00000xxxxx_nodeinfo 10.102.1.95 このIPアドレスを利用して、サーバーノードには以下のURLでアクセス可能 postgres://postgres@10.102.1.95:5432/ ここにサーバーノードのIPアドレスが格納されている サーバーノードのIPアドレス(例)
  81. 81. https://bit.ly/optuna-tutorial-ja 81 RDBストレージの準備 サーバーノードのIPアドレスをワーカーノードに受け渡す必要がある • サーバーノードではファイル`rdb_server_nodeinfo`にIPアドレスを書く • ワーカーノードではファイル`rdb_server_nodeinfo`からIPアドレスを読む
  82. 82. https://bit.ly/optuna-tutorial-ja 82 不老におけるOptunaの利用(複数ノード) 簡単な二次関数の最適化を題材にOptunaが複数ノードでうまく動くか確認 `quadratic_rdb.py`と`quadratic_rdb.sh`を読んでみましょう $ vim quadratic_rdb.py $ vim quadratic_rdb.sh バルクジョブとして実行(ここでは3並列) $ pjsub --bulk --sparam 1-3 quadratic_rdb.sh 実行結果は、このOptunaジョブのジョブIDとバルク番号をもとに確認できる $ cat quadratic_rdb.sh.<ジョブID>¥[<バルク番号>¥].out
  83. 83. https://bit.ly/optuna-tutorial-ja 83 不老におけるOptunaの利用(複数ノード) PyTorchを利用したMNISTデータに対するMLPのハイパラ最適化を題材に複数 ノードで動作を確認 `pytorch_rdb.py`と`pytorch_rdb.sh`を読んでみましょう $ vim pytorch_rdb.py $ vim pytorch_rdb.sh バルクジョブとして実行(ここでは3並列) $ pjsub --bulk --sparam 1-3 pytorch_rdb.sh 実行結果は、このOptunaジョブのジョブIDとバルク番号をもとに確認できる $ cat pytorch_rdb.sh.<ジョブID>¥[<バルク番号>¥].out
  84. 84. https://bit.ly/optuna-tutorial-ja 84 複数ノード実行のまとめ • RDBストレージを用意してIPアドレスをもとにアクセス • バルクジョブ実行により、1コマンドで一気にジョブが 立ち上がって便利 • ジョブIDとバルク番号をもとに実行結果が確認できる
  85. 85. https://bit.ly/optuna-tutorial-ja 85 おわりに • Optunaはプラットフォーム非依存でどんな機械学習ライ ブラリとも連携できる • RDBを用意すれば不老上でも簡単に分散最適化が可能 Optunaの最新ニュースはTwitter @OptunaAutoMLで! 質問はGitHub, Gitter, Stack Overflowで受け付けています ぜひGitHubページでStarを押してください!
  86. 86. https://bit.ly/optuna-tutorial-ja 86

×