Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
hydra-mlflow-optuna
Search
Taiki Nakamura
December 21, 2020
Programming
7.6k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
hydra-mlflow-optuna
Taiki Nakamura
December 21, 2020
More Decks by Taiki Nakamura
See All by Taiki Nakamura
【ICASSP2024】音声変換に関する全論文まとめ【Parakeet株式会社】
supikiti
0
1k
研究会発表資料.pdf
supikiti
4
820
DDPM解説スライド.pdf
supikiti
0
4.8k
音声B紹介ポスター@音響学会ビギナーズセミナー
supikiti
1
520
Hydra, MLflow, Optunaの組み合わせで手軽に始めるハイパーパラメータ管理
supikiti
7
4.4k
Interspeech2020_読み会_nakamura
supikiti
0
730
Other Decks in Programming
See All in Programming
スマート反転とウェブアクセシビリティ
camiha
0
210
Java 27新機能 / Java 27 new features
kishida
2
170
setup-vp GitLab対応の裏側
naokihaba
0
120
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
160
新卒PdEのリアル
ryu1013
1
510
一人だけ、Kiroが静止する日
hideg
0
130
すこし踏み込む CancellationToken
htkym
2
880
Verilogで学ぶCPU自作入門.pdf
uyuki234
2
1.5k
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
440
速く作れる。その次は、速く確かめられる開発へ 〜AIネイティブ開発を支える、Shift Down〜 / Can build fast. Next, moving to development where we can verify fast.
rkaga
5
4.3k
フロントエンドUIフレームワークのこれまでとこれから
ssssota
5
2.9k
個人開発基盤をまるごとCloudflareに引っ越して爆速で総合的体験を向上させた話
tinykitten
0
200
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
500
Everyday Curiosity
cassininazir
0
320
Mind Mapping
helmedeiros
1
370
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
The Invisible Side of Design
smashingmag
301
52k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
The untapped power of vector embeddings
frankvandijk
2
1.9k
HDC tutorial
michielstock
2
880
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
Building Adaptive Systems
keathley
44
3.2k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
320
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