かろうじてGCP?としたけどOSSだよ。(詳しくは本編にて)">
小杉がk8s上で動く機械学習ワークフロー開発ツールKubeflowの超概要について話したよ。
かろうじてGCP?としたけどOSSだよ。(詳しくは本編にて)
Kubeflowの超概要
まだ検証中なので、間違ってたりするかもしれない…
今後もっと検証を進めたら続編をpodcastでも話す。
CI/CDに加え、機械学習ではCT(Continuous Training)というのがある、と
Googleが言っている。
いわゆるMLOpsということになると思うが、このMLOpsを支援するのがKubeflowと言えそう。
ちなみに 公式ドキュメントは英語だけど、とても良くまとまっており分かりやすい。
もともとは
Tensorflow Extended(TFX)として開発されていたものが
より汎用化するためにKubeflowとして独立したらしい。(参考:
Kubeflowとは)
以前は結構バグが多かったみたいだけど、最近v1.0がリリースされ使ってる人の記事もちらほら見かけるようになった。
先述のTFXも依然として開発は進んでおり、さらにKubeflowの中にTFXのpipelineを呼び出す機能もあったりしてややこしい。
名前からしてTFXはTensoflowに特化している?とも思ったけど、TFXが他のMLフレームワークも扱えるのか不明…
正直使い分けがよく分かってないので、後日ちゃんと理解したい。
AI Platformともかぶる。
こちらもKubeflowからAI Platformのジョブを呼び出せたり、AI Platformのいち機能として「
AI Platform Pipelines」というものが提供されておりこの実態はKubeflowだったりして、さらにややこしい。
ただ違いとしてはざっくり「AI PlatformはGCPのマネージドサービス」「KubeflowはOSS」と分けて考えても
選択基準としては差し支えないのではないかと感じる。
マネージドで楽したい、あまり細かい管理は要らない、というのであればSaaSであるAI Platform(もしくはAI Platform Pipelines)を使えば良いし
それじゃ足りなくなってきたり、よりカスタマイズした環境・機能を利用したいのであればKubeflow、というくらいの抑え方でも問題ないのでは、と思う。
(もちろん機能的な面でも違いはあるが)
公式ドキュメントに Components of Kubeflowというものがあるのでそこから抜粋。
概要レベルだけど、Kubeflowの提供機能(というかコンポーネント)は以下。
ぱっと見、SageMakerやAI Platformとかぶりそう。 先述の通り、マネージドかOSSで選択すれば良いと思う。
ただ、目玉のPipelinesとかはSageMakerやAI Platform単体ではそこまでうまく出来なさそうなので
最初からそこを使いたい場合はKubeflow、もしくはAI Platform Pipelinesが選択肢に入ってきそう。
公式には以下のようにある。
- Easy, repeatable, portable deployments on a diverse infrastructure (for example, experimenting on a laptop, then moving to an on-premises cluster or to the cloud)
- Deploying and managing loosely-coupled microservices
- Scaling based on demand
中でも「portable」というところが一番のメリットだと、個人的には感じている。
portableということで、ベンダーロックインしないように構築可能(多分)
SageMakerやAI Platformは処理自体はコンテナ化することができるが
結局ジョブを呼び出す部分の処理や、ファイルIOの部分でベンダーロックインするところがある。
KubeflowはGCPのGKEをはじめ、EKS, AKS, オンプレミスで同じように動作するため
構築する部分はそれぞれ用意する必要があるが、ワークフロー自体は同様に処理できる。はず。
という期待を持って検証中。
英語だけど分かりやすいし、 公式ドキュメントは必ず見るべし。