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
7.1k
hydra-mlflow-optuna
Taiki Nakamura
December 21, 2020
Tweet
Share
More Decks by Taiki Nakamura
See All by Taiki Nakamura
【ICASSP2024】音声変換に関する全論文まとめ【Parakeet株式会社】
supikiti
0
880
研究会発表資料.pdf
supikiti
4
720
DDPM解説スライド.pdf
supikiti
0
4.3k
音声B紹介ポスター@音響学会ビギナーズセミナー
supikiti
1
450
Hydra, MLflow, Optunaの組み合わせで手軽に始めるハイパーパラメータ管理
supikiti
7
4.1k
Interspeech2020_読み会_nakamura
supikiti
0
610
Other Decks in Programming
See All in Programming
バリデーションライブラリ徹底比較
nayuta999999
1
210
Design Pressure
hynek
0
1.4k
Digging into the Matrix: Practicing Code Archaeology
arthurdoler
PRO
0
200
コードに語らせよう――自己ドキュメント化が内包する楽しさについて / Let the Code Speak
nrslib
4
510
Cloudflare Workersで進めるリモートMCP活用
syumai
13
1.9k
【TSkaigi 2025】これは型破り?型安全? 真実はいつもひとつ!(じゃないかもしれない)TypeScript クイズ〜〜〜〜!!!!!
kimitashoichi
1
280
MLOps Japan 勉強会 #52 - 特徴量を言語を越えて一貫して管理する, 『特徴量ドリブン』な MLOps の実現への試み
taniiicom
2
350
AI時代のリアーキテクチャ戦略 / Re-architecture Strategy in the AI Era
dachi023
0
180
私のRubyKaigi 2025 Kaigi Effect / My RubyKaigi 2025 Kaigi Effect
chobishiba
1
200
Efficiency and Rock 'n’ Roll (Really!)
hollycummins
0
530
型付け力を強化するための Hoogle のすゝめ / Boosting Your Type Mastery with Hoogle
guvalif
1
210
CursorとDevinが仲間!?AI駆動で新規プロダクト開発に挑んだ3ヶ月を振り返る / A Story of New Product Development with Cursor and Devin
rkaga
5
1.8k
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1031
460k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Six Lessons from altMBA
skipperchong
28
3.8k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Documentation Writing (for coders)
carmenintech
71
4.8k
Typedesign – Prime Four
hannesfritz
41
2.6k
Music & Morning Musume
bryan
47
6.5k
4 Signs Your Business is Dying
shpigford
183
22k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
12k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Speed Design
sergeychernyshev
30
960
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