狠狠撸

狠狠撸Share a Scribd company logo
2018/09/26
NTT ソフトウェアイノベーションセンタ
大嶋悠司
KubeFlow MeetUp #1
自己紹介
大嶋 悠司 @overs_5121
NTT ソフトウェアイノベーションセンタ
OSS活動が主な業務
? GoBGP(ソフトウェアBGPルータ)
? Docker
? Docker/Infrakit (メンテナ)
? KubeFlow/Katib (オーナー)
KubeFlow MeetUp #1 Katibよもやま話
KubeFlow?
Kubernetes上に機械学習基盤を構築するOSSプロジェクト
? KubeCon2017NAにてGoogleが発表
? 6月末にv0.2がリリース
? Kubecon2018NA(12/16)にv1.0リリース予定
? 参加企業(一部)
? Google
? Intel
? Cisco
? Alibaba
? PFN
? NTT などなど..
何故碍耻产别贵濒辞飞が登场し,注目されたか
機械学習サービスの課題 @Nips2015
実サービスとしてMLコンポーネントを開発,運用する際の課題
Nips2015 にてGoogleが提唱
● 複雑なモデルは複雑な依存関係を持つ
● 入力データは変化しうる
● フィードバックループの難しさ
TensorFlow Extended (TFX)!
TFXの発表 @KDD2017
TensorFlow Extended (TFX)
KDD 2017にてGoogleが発表
実サービス(Google Play)を運用する基盤
TFXの設計思想
1. 柔軟性 : One machine learning platform for many learning tasks
○ 機械学習基盤は汎用であるべきだが,専用のチューニングも重要
2. 継続的学習 : Continuous training
○ 学習の流れはワークフローやダイヤグラムで記述できる
○ データは常に新しくなる
3. UIの重要性:Easy-to-use configuration and tools
○ ユーザがデータの特性やモデルを解析,デバッグするためにUIは重要
4. 安定性とスケーラビリティ : Production-level reliability and scalability
○ サイエンティストが自分の仕事に注力するためにデプロイの困難さなどはプラット
フォームで持ってあげるべき
TFXの更に周辺
TFX
Borg (クラスタ管理ツール)
TFで開発
TFXの更に周辺
TFX
Borg (クラスタ管理ツール)
TFで開発
OSSとして
成
熟
Kubernetes
OSSとして成
熟
TFXオープン化の兆し
KubeFlowの登場 @KubeCon2017
つまり...
この会の趣旨は
つまり...
この会の趣旨は
KubeFlowで一緒に優勝しましょう!
機械学習をもっと簡単にサービスに
? KubeFlowはこれから盛り上がります!皆で勉強しましょう
? KFの実装に踏み込んだMeetUpは世界でもほぼないです! (こ
こにいる全員がアーリーアダプターです!)
? 業務のニーズをコミュニティにフィードバックしましょう!(主催者
のうち2人はコンポーネントのオーナーです)
? 業務でのMLのツラミ,ML基盤のツラミを共有しましょう!
(KubeFlowは置いといても!)
罢贵齿(再掲)の笔颈辫别尝颈苍别
KubeFlow Pipeline
Roll-out Serving Monitering Logging
Data
Ingestion
Data
Analysis
Data
Transform
-ation
Data
Validation
Data
Splitting
Trainer
Building
a
Model
Model
Validation
Training
At Scale
KubeFlow Components
Roll-out Serving Monitering Logging
Data
Ingestion
Data
Analysis
Data
Transform
-ation
Data
Validation
Data
Splitting
Trainer
Building
a
Model
Model
Validation
Training
At Scale
TF/Pytorch/Chainer Operator
Katib
Getting Sart
とりあえずk8sクラスタを用意しましょう
GKEの場合RBACが使えるように設定が必要
( $ kubectl create clusterrolebinding default-admin )
公式スクリプトで必要ツールをダウンロード
$ curl https://raw.githubusercontent.com/kubeflow/kubeflow/master/scripts/download.sh | bash
公式スクリプトでKubeFlow インストール
$ KFAPP=kf-test
$ kubectl create ns kubeflow
$ ./scripts/kfctl.sh init ${KFAPP} --platform none
$ cd ${KFAPP}
$ ../scripts/kfctl.sh generate k8s
$ ../scripts/kfctl.sh apply k8s
https://www.kubeflow.org/docs/started/getting-started/
本資料は次期リリース v0.3 での方法を記述しています
v0.2 以前では方法が変わりますのでご注意ください
KubeFlow Core Components
KubeFlow Core Components
KubeFlow Core Components
他のコンポーネントへのリンク集だよ!
KubeFlow Core Components
JupyterNoteBookをデプロイします!
GPUとかもアタッチできます!
KubeFlow Core Components
TensorFlow Jobを作ったり,状態を確認
したりできます!
KubeFlow Core Components
ご存知 KubeDash!
今日の発表予定
Roll-out Serving Monitering Logging
Data
Ingestion
Data
Analysis
Data
Transform
-ation
Data
Validation
Data
Splitting
Trainer
Building
a
Model
Model
Validation
Training
At Scale
TF/Pytorch/Chainer Operator
Katib
学習のハイパーパラメータチューニングを楽に並列にできる
by Katib オーナー NTT 大嶋
今日の発表予定
Roll-out Serving Monitering Logging
Data
Ingestion
Data
Analysis
Data
Transform
-ation
Data
Validation
Data
Splitting
Trainer
Building
a
Model
Model
Validation
Training
At Scale
TF/Pytorch/Chainer Operator
Katib
フレームワークによらずジョブの管理を.あまつさえ分散で
by Chainer Operator オーナー PFN 大村さん
今日の発表予定
Roll-out Serving Monitering Logging
Data
Ingestion
Data
Analysis
Data
Transform
-ation
Data
Validation
Data
Splitting
Trainer
Building
a
Model
Model
Validation
Training
At Scale
TF/Pytorch/Chainer Operator
Katib
パイプラインって何?どうやって定義するの?
by メルカリ 上田さん
Katibのよもやま話
ほんのり実装寄りで
Katib
ハイパーパラメータチューニングフレームワーク
GoogleがTFXと同時にKDD 2017で発表したVizierがモデル
? DLフレームワーク非依存
? Yamlでパラメータ空間を定義してk8s上で探索
? サポートするアルゴリズム
? Random
? Grid
? HyperBand
? Bayesian Optimization
こっそりいる Tuner
Katib
Katib manager
Random Grid HyperBand
Parameter1
Parameter2
Parameter3
Metrics
Collector
Metrics
Collector
Metrics
Collector
Katib
Katib manager
Random Grid HyperBand
Parameter1
Parameter2
Parameter3
Metrics
Collector
Metrics
Collector
Metrics
Collectorジョブ全体の流れ
Katib
Katib manager
Random Grid HyperBand
Parameter1
Parameter2
Parameter3
Metrics
Collector
Metrics
Collector
Metrics
Collectorチューニングアルゴリズムの選択部分
Katib
Katib manager
Random Grid HyperBand
Parameter1
Parameter2
Parameter3
Metrics
Collector
Metrics
Collector
Metrics
Collectorパラメータの埋込
Katib
Katib manager
Random Grid HyperBand
Parameter1
Parameter2
Parameter3
Metrics
Collector
Metrics
Collector
Metrics
Collectorメトリクスの取得
Katib
Katib manager
Random Grid HyperBand
Parameter1
Parameter2
Parameter3
Metrics
Collector
Metrics
Collector
Metrics
Collectorジョブ全体の流れ
ジョブ全体の流れ: ジョブの作成
Only $kubectl apply -f study-job.yml !
Katib manager
Random Grid HyperBand
StudyJob
Controller
ジョブ全体の流れ: ジョブの作成
ジョブ全体の流れ: ジョブの作成
study-job.yml
Katib manager
Random Grid HyperBand
StudyJob
Controller
ジョブ全体の流れ: ジョブの作成
study-job.yml StudyJob α
Katib manager
Random Grid HyperBand
StudyJob
Controller
ジョブ全体の流れ: ジョブの作成
study-job.yml StudyJob α
StudyJob
Controller
Katib manager
Random Grid HyperBand
ジョブ全体の流れ: ジョブの作成
StudyJob αを登録
StudyJob α
Katib manager
StudyJob
Controller
Random Grid HyperBand
ジョブ全体の流れ: ジョブの作成
study-job.yml StudyJob α
Katib manager
Random Grid HyperBand
StudyJob
Controller
パラメータの生成を
要求
ジョブ全体の流れ: ジョブの作成
study-job.yml StudyJob α
Katib manager
Random Grid HyperBand
Parameter1
Parameter2
Metrics
Collector
Metrics
Collector
StudyJob
Controller
ジョブ全体の流れ: ジョブの作成
study-job.yml StudyJob α
Katib manager
Random Grid HyperBand
Parameter1
Parameter2
Metrics
Collector
Metrics
Collector
StudyJob
Controller
ジョブ全体の流れ: ジョブの作成
study-job.yml StudyJob α
Katib manager
Random Grid HyperBand
Parameter1
Parameter2
Metrics
Collector
Metrics
Collector
StudyJob
Controller
ジョブ全体の流れ: ジョブの作成
study-job.yml StudyJob α
Katib manager
Random Grid HyperBand
Parameter1
Parameter2
Metrics
Collector
Metrics
Collector
StudyJob
Controller
ジョブ全体の流れ: ジョブの作成
study-job.yml StudyJob α
Katib manager
Random Grid HyperBand
StudyJob
Controller
パラメータの生成を
再度要求
ジョブ全体の流れ: ジョブの作成
study-job.yml StudyJob α
Katib manager
Random Grid HyperBand
StudyJob
Controller
パラメータの生成を
再度要求
繰り返し
Katib
Katib manager
Random Grid HyperBand
Parameter1
Parameter2
Parameter3
Metrics
Collector
Metrics
Collector
Metrics
Collectorチューニングアルゴリズムの選択部分
チューニングアルゴリズムの選択
Katib manager
study-job.yml
algorithm: random
Random
Grid
HyperBand
チューニングアルゴリズムの選択
Katib manager
study-job.yml
algorithm: random
Random
Grid
HyperBand
random-suggestionはおるかね?
チューニングアルゴリズムの選択
Katib manager
study-job.yml
algorithm: random
Random
Grid
HyperBand
チューニングアルゴリズムの選択
Katib manager
study-job.yml
algorithm: random
Random
Grid
HyperBand
チューニングアルゴリズムの選択
Katib manager
study-job.yml
algorithm: random
Random
Grid
HyperBandSaitsuyo
チューニングアルゴリズムの選択
Katib manager
study-job.yml
algorithm: random
Random
Grid
HyperBand
saitsuyo-suggestionはおるかね?
Saitsuyo
チューニングアルゴリズムの選択
Katib manager
study-job.yml
algorithm: random
Random
Grid
HyperBandSaitsuyo
チューニングアルゴリズムの選択
Katib manager
study-job.yml
algorithm: random
Random
Grid
HyperBandSaitsuyo
チューニングアルゴリズムの選択
Katib manager
study-job.yml
algorithm: random
Random
Grid
HyperBandSaitsuyo
チューニングアルゴリズムの選択
Katib manager
study-job.yml
algorithm: random
Random
Grid
HyperBandSaitsuyo
Katib
Katib manager
Random Grid HyperBand
Parameter1
Parameter2
Parameter3
Metrics
Collector
Metrics
Collector
Metrics
Collectorパラメータの埋込
パラメータの埋込
Go Templateを用いて埋込
最初書くのは面倒かもですが..
どんなworkerのマニフェストでも対応可能
Katib
Katib manager
Random Grid HyperBand
Parameter1
Parameter2
Parameter3
Metrics
Collector
Metrics
Collector
Metrics
Collectorメトリクスの取得
メトリクスの取得
Worker
Metrics
Collector
メトリクスの取得
WorkerMetrics Collector
(CronJob)
Stdout
___
_______
__
_________
_________
Metrics Collector
(実体)
毎分
メトリクスの取得
WorkerMetrics Collector
(CronJob)
Stdout
___
_______
__
_________
_________
Metrics Collector
(実体)
メトリクス名=数値
となっている部分を探してManagerに報告
Katibまとめ
? 並列でパラメータチューニングを行えるフレームワーク
? アルゴリズムの追加も容易
? チューニングアルゴリズム自体のテスト,开発も容易

More Related Content

KubeFlow MeetUp #1 Katibよもやま話