Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
hydra-mlflow-optuna
Search
Taiki Nakamura
December 21, 2020
Programming
4
6.8k
hydra-mlflow-optuna
Taiki Nakamura
December 21, 2020
Tweet
Share
More Decks by Taiki Nakamura
See All by Taiki Nakamura
【ICASSP2024】音声変換に関する全論文まとめ【Parakeet株式会社】
supikiti
0
790
研究会発表資料.pdf
supikiti
4
680
DDPM解説スライド.pdf
supikiti
0
4.1k
音声B紹介ポスター@音響学会ビギナーズセミナー
supikiti
1
390
Hydra, MLflow, Optunaの組み合わせで手軽に始めるハイパーパラメータ管理
supikiti
7
3.9k
Interspeech2020_読み会_nakamura
supikiti
0
590
Other Decks in Programming
See All in Programming
useSyncExternalStoreを使いまくる
ssssota
6
1k
採用事例の少ないSvelteを選んだ理由と それを正解にするためにやっていること
oekazuma
2
1k
103 Early Hints
sugi_0000
1
220
今年一番支援させていただいたのは認証系サービスでした
satoshi256kbyte
1
250
range over funcの使い道と非同期N+1リゾルバーの夢 / about a range over func
mackee
0
110
急成長期の品質とスピードを両立するフロントエンド技術基盤
soarteclab
0
920
선언형 UI에서의 상태관리
l2hyunwoo
0
140
talk-with-local-llm-with-web-streams-api
kbaba1001
0
170
複雑な仕様に立ち向かうアーキテクチャ
myohei
0
170
Fibonacci Function Gallery - Part 1
philipschwarz
PRO
0
200
.NET 9アプリをCGIとして レンタルサーバーで動かす
mayuki
1
770
Zoneless Testing
rainerhahnekamp
0
120
Featured
See All Featured
How GitHub (no longer) Works
holman
311
140k
Six Lessons from altMBA
skipperchong
27
3.5k
Documentation Writing (for coders)
carmenintech
66
4.5k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.5k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
17
2.2k
YesSQL, Process and Tooling at Scale
rocio
169
14k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.4k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Git: the NoSQL Database
bkeepers
PRO
427
64k
It's Worth the Effort
3n
183
28k
Transcript
Hydra で始める ハイパラ管理 音声G M1 中村泰貴 1
2 https://github.com/supikiti/hydra-mlflow-optuna-sample 本日のコード
ハイパーパラメータ 管理 3
/32 Argparse による管理 4 指定する量多すぎ… ファイル編集しなくて いいけどさぁ… https://github.com/ibab/tensorflow-wavenet/blob/master/train.py
/32 hparams.py 等による管理 5 Argparseのように コマンドラインから直接 いじれたらなぁ… パラメータを変更するごとに 設定ファイルが増えていく… https://github.com/xcmyz/FastSpeech/blob/master/hparams.py
/32 パラメータ管理の問題点 6 ▸ ありがちなパラメータ管理の例 • パラメータを数種類変更して学習を回したいとき ▸ シェルスクリプトでパラメータのリストを定義して 学習スクリプトの引数に
for のループ内で渡す ▸ パラメータを一部変更した設定ファイルを別に用意 & 都度実行 ▸ Hydra + mlflow によるパラメータ管理では • 設定パラメータをコマンドラインから数種類変更 & 実行できる ▸ 変更のたびに設定ファイルが増えない & 上記の問題が解決 本発表:Hydra + mlflowによるパラメータ管理の紹介
Hydra 7
/32 Hydra について 8 ▸ 特徴 • Facebook AI Research
が公開しているパラメータ管理ツール • パラメータを階層立てて構造的に YAML ファイルに記述 • コマンドラインから設定値を上書き & 実行 • 1つのコマンドで複数のジョブを実行 https://hydra.cc/
/32 基本的な使い方 9 • Config ファイルに yaml 形式で設定を記述 • 関数に
@hydra.mainデコレータを渡す
/32 Config の構造化 10 • Config ディレクトリを階層構造にすることで階層化 • 例 •
Root の Config に指定したい設定をそれぞれ記述
/32 実装例 11 階層的に設定ファイルを 記述可能
/32 実装例 12 デコレータを通して パラメータが読み込まれる
/32 機能1: 値の変更 & 実行 13 • コマンドラインから設定値を直接変更 & 実行可能
• 先の例でcifar10 のバッチサイズを変えたい場合 設定ファイルを上書きすることなく コマンドラインから変更 & 実行可能
/32 機能2: グリッドサーチ 14 複数の Config ファイルの設定を全通り実行可能
/32 機能2: グリッドサーチ 15 パラメータのグリッドサーチも可能
/32 機能3: 16 • 実行ごとの設定値や実行中の出力等を自動で保存 • Outputs ディレクトリに実行日/実行毎/種々の設定ファイルが 自動保存 保存されるのはありがたいが可読性が低い
mlflow を導入し改善
mlflow 17
/32 mlflowとは 18 ▸ 概要 • 機械学習の実験管理を自動で行うツール • 実験に用いたパラメータ等を保存し再現性を担保 ▸
インストール https://mlflow.org/
/32 実装例 19 • start_run(): runIDの発行 • log_param: パラメータの登録 •
log_metric: メトリックの記録 • log_artifact: 生成物の記録 https://future-architect.github.io/articles/20200626/ サーバーが立ち上がりGUIで 確認可能
20 Hydra と mlflow の実装例
21 hydra.mainデコレータ パラメータの登録 (log_params()) メトリックの登録
22 モデル定義 複数パラメータのグリッドサーチ
23 全試行過程が自動保存 & 比較可能 loss accuracy
/32 Hydra + mlflow まとめ 24 ▸ Hydra • Facebook
AI Research が公開しているパラメータ管理ツール • コマンドラインから設定値を複数変更 & 実行可能 ▸ mlflow • 機械学習の実験管理を自動で行うツール • GUI 上でパラメータの違いによる結果の比較が容易に可能 ▸ Hydra + mlflow • パラメータのグリッドサーチから記録・管理までを一元化可能
(+ Optuna) 25
/32 Optuna の導入 26 ▸ Optuna とは • オープンソースのハイパーパラメータ自動最適化フレームワーク •
ハイパーパラメータの値に関する試行錯誤を自動化 • 優れた性能を発揮するハイパーパラメータの値を自動的に発見 ▸ Hydra + mlflow + Optuna • 設定ファイルに最適化したい変数と条件を記述することで Hydra で管理可能 • 最適化される変数と条件をコマンドラインから変更可能 Hydra のプラグインによりOptuna の導入が非常に容易に
/32 変更点 27 config.yaml に optuna の設定を記述
/32 変更点 28 デコレータを渡した関数の返り値を最適化したい変数に
/32 実行 29 コマンドラインから直接最適化したい変数と条件を変更可能 変数の種類 具体例 設定方法 整数型 [16, 17,
…, 512] range(16, 512) カテゴリ型 [0.1, 0.01, 0.001] choice(0.1, 0.01, 0.001) 連続値 [-5.0, 5.0] 区間の連続値 interval(-5.0, 5.0) Optuna.distributions にマッピングされる
/32 mlflow での可視化 30 mlflow 上でも試行過程の可視化が可能
/32 総まとめ 31 ▸ Hydra + mlflow + Optuna •
学習時に煩雑になりがちなパラメータ管理の決定版 • Hydra と Optuna でパラメータを容易に変更・探索し mlflow で全パラメータを一元管理 ▸ さらに学びたい方には • Kedro: Workflow のパイプライン管理ツール ▸ Hydra + mlflow + Optuna + Kedro ▸ より再現性のある使い回しを意識したコードに https://github.com/quantumblacklabs/kedro
/32 参考資料 32 • https://cyberagent.ai/blog/research/12898/ • https://ymym3412.hatenablog.com/entry/2020/02/09/034644 • https://zerebom.hatenablog.com/#Hydra •
https://speakerdeck.com/chck/sok-xiao-sakushi-meteda- kikuyu-terumlops2020