※ 筆者はMLをすこーしKaggleで遊んで、Kubernetesは少し業務で使ったことのあるくらいの知識しか保有してないです。(ほんとに)
なので、せめてメモしたことくらいは残しておきます。また、メモはあくまでも筆者個人のメモなので、取り違えの無きようお願いします。
<!--truncate-->
イベント内容
発表スライドとメモ
<strong><a href="//www.slideshare.net/Oshima0x3fd/kubeflow-meetup-1-katib" title="KubeFlow MeetUp #1 Katibよもやま話" target="_blank">KubeFlow MeetUp #1 Katibよもやま話</a> </strong> from <strong><a href="https://www.slideshare.net/Oshima0x3fd" target="_blank">Yuji Oshima</a></strong>
<iframe src="//www.slideshare.net/slideshow/embed_code/key/1xd85QmWzsNXnP" width={595} height={485} frameBorder={0} marginWidth={0} marginHeight={0} scrolling="no" style={{border: '1px solid #CCC', borderWidth: '1px', marginBottom: '5px', maxWidth: '100%'}} allowFullScreen> </iframe>
はじめにKubeFlowとはなにかの説明
発表者について
- OSS活動が主な業務
- KubeFlow/Katibのオーナー
- Kubernetes上に機械学習基盤を構築するOSSプロジェクト
- Twitter @overs_5121
KubeFlowとは
- KubeCon2017NAにてGoogleが発表
- 2018年6月末にv0.2がリリース
KubeFlowが登場した理由
- 機械学習サービスの課題
- 実サービスとしてMLコンポーネントを開発「運用」する際の課題
- TensorFlow Extended(TFX)
- TFXの設計思想
- TFで開発 --> TFXに載せる(Borg上)
- TFとBorgはOSSとして成熟(Kubernetes)
- TFXがOSSとしてでてきていいのじゃないか?ということで、KubeFlowがでてきた
- 機械学習をもっと簡単にサービスに!
Meet upについて
- KFの実装に踏み込んだMeetUpは世界でもほぼない
- KubeFlowのComponentのオーナーがこの会場に何人かいらっしゃった
KubeFlowとは何かもう少し掘り下げる
KubeFlow Pipeline
- KubeFlowはPipelineすべてをカバーするOSSではない
- Getting Start
- まずは、k8sクラスターを用意する
- KubeFlowをデプロイするというのはどういうことか?
- KubeFlow Central UIはただのリンク集
- Jupyter Hubを押すと、Jupyter Hubがでてくる
- TF Job Dashboardもある
- Tensorflow Operatorを使って、簡単にTensorflowがデプロイできるようになる
- Workerの設定や、パラメーターサーバーのせってい、コマンド、画像などが設定できる
- GUIだけでデプロイできる
Q. KubeFlowを試すのに必要なリソースは?
A. 最終的には機械学習で使うリソースから決まる
Katibの話
- ハイパーパラメータチューニングのフレームワーク
- GoogleがTFXと同時にKDD2017で発表したVizierがモデル
- サポートするアルゴリズム
- これからKatib全体のJobの流れについて話す
- パラメーターの埋め込みはどうやっているか?
- メトリックスはどうやって取っているか
- Job全体の流れは、kubectl apply -f study-job.ymlできまる
- ApiVersion: "kubeflow.org/..." なやつ
- (主観:アーキテクチャがKubernetesのコンポーネントと似ている気がする)
- Kataib ManagerがCore DNSにアルゴリズムがあるか問い合わせる
- 僕の考えた最強のアルゴリズムが死んでも、Managerが切り替えてくれる
- Metrics CollectorはCron Jobで動いている。
Katibまとめ
- 並列でパラメータチューニングを行えるフレームワーク
- アルゴリズムの追加も用意
- チューニングアルゴリズム自体のテスト、開発も容易
<strong> <a href="//www.slideshare.net/pfi/20180926-kubeflowmeetup1kubeflowoperatorspreferred-networksshingo-omura" title="20180926 kubeflow-meetup-1-kubeflow-operators-Preferred Networks-Shingo Omura" target="_blank">Kubeflow Operators</a> </strong> from <strong><a href="https://www.slideshare.net/pfi" target="_blank">Preferred Networks</a></strong>
<iframe src="//www.slideshare.net/slideshow/embed_code/key/2pcUXdzvciaTvE" width={595} height={485} frameBorder={0} marginWidth={0} marginHeight={0} scrolling="no" style={{border: '1px solid #CCC', borderWidth: '1px', marginBottom: '5px', maxWidth: '100%'}} allowFullScreen> </iframe>
発表者について
- GPU ClusterのDev/Opsをやっている
- chainerのユーザビリティを向上するようにしている
- Twitter @everpeace
今日のトピックKubeflowの中のTraining
- KubeFlowは数々のML frameworksをサポートしている
- TensorFlow / PyTorch / Chainer / mxnet ...
どうやって複数のMLをサポートしているか
- Operators and CRDs
- Kubernetes Operator Patternで検索すると出てくる
- CRD = Custom Resource Definition
kind: CustomResourceDefinition
spec:
Kind: MyKind
- 独自のkindを用意
- OperatorはCustom ResourceとCluster Stateを監視する
- Kubeflowは複数のMLをサポートするために、
- OperatorsとCRDsを用意している
- CRDsはSingle-node, multi-nodeをサポートしている
ksonnet
ksonnet
にKubeflowは依存している
- ksonnetとは、k8sにとってはYAMLをレンダリングするようなもの(helmみたいなやつ)
Kubeflow Operatorsはどのように働いているか
- 2通りある
- Parameter Server Style
- All-Reduce Style
- Tf-operator (Parameter Server Style)
- TFJobとPodsを監視している
- cleanPodPolicyにしたがい、終了時はpodsをクリーンする
- Chainer Job Structure (All-Rreduce style)
- Workerあh基本的に寝ている
- ConfigMap, Job, ServiceとStateFulSetsを展開する
<strong> <a href="//www.slideshare.net/shunyaueta/introduction-to-argo-116672516" title="Introduction to argo" target="_blank">Introduction to argo</a> </strong> from <strong><a href="https://www.slideshare.net/shunyaueta" target="_blank">Shunya Ueta</a></strong>
<iframe src="//www.slideshare.net/slideshow/embed_code/key/McufB6VKowQcqu" width={595} height={485} frameBorder={0} marginWidth={0} marginHeight={0} scrolling="no" style={{border: '1px solid #CCC', borderWidth: '1px', marginBottom: '5px', maxWidth: '100%'}} allowFullScreen> </iframe>
発表者
Argoとは
- Argoの守備範囲
- Version 2.2.0
- コンテナネイティブなワークフローエンジン
- 実務で使うのは結構きつい(現バージョン)
- Workflowエンジンだと、Airflow, DigDagなどが他にある
- Argo-ui: ワークフローのダッシュボードを提供
- 機械学習エンジンをデプロイしようとすると、前処理に関する複雑なパイプラインが乱立する
Container as a Package
- コンテナーをパッケージのように使う
- TensorFlow ExtendはApache Beamの影響でPython2らしい
- Argo: Continuous Delivery
- Argoproj/argo-cd
- Ksonnet, kustomize, helmなどが読み込める
Argo: Events
- Sensor: singals, triggersを包括する概念
- Signals: 駆動方法/ Stream, Artifact, Calendar, Resource, Webhook
- Triggers: 実行方法/ inline, file, url
- Dashboardの限界がプロダクションでは見える
- 20くらい並列で動かした時、
- グラフが見えた時はうれしいけど、なんの意味もない
Q. DataSetはどう管理していますか?
A. 規模がでかいとNetwork I/Oで時間がかかるので、Cloud Storageをマウントしています。
LT
Zero to Outliner Detection with Kubeflow
<script async className="speakerdeck-embed" data-id="5c326ddab80744a1816895c6d2bf5ec5" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"></script>
受託分析やがKubeflowを使って思うこと
<script async className="speakerdeck-embed" data-id="b74628aa743742189081c697e1c8da08" data-ratio="1.33333333333333" src="//speakerdeck.com/assets/embed.js"></script>
Seldon触ってみた
※ 見つけられませんでした。
感想
イベントページの説明で、
本MeetUpではKubeFlowのツールにそれぞれフォーカスし,導入からユースケースや場合によっては内部実装に踏み込んで深く理解し,これから盛り上がるであろうKubeFlowを先んじて使いこなすことを目的としています.
とあったように、内部実装について語っていてMLとその周辺を取り巻く技術領域について語られていました。そのため、何をどう調べて、知っていく上で重要な知見がこのMeet Upから感じられました。動画の公開が後日あるとのことなので、会場に来ることができなかった方は動画を是非見てほしいと思います。
注意としては、Kubernetesについて、あらかじめ勉強しておかないと何を行っているのかわからない部分が多いように感じられます。KubeFlowがメジャーリリースされる頃には機械学習屋さんは意識しなくても良い領域になっているかもしれません(多分。間違っていたらごめんなさい)。その周辺基盤を作る人達にとってはかなり助けとなる情報が転がっていたので、そういった人がターゲット担っていくのかな〜、と帰りながら思いました。
誤字脱字・間違いなどありましたら、GithubもしくはTwitterまでご連絡ください。