#16 【GCP?】Kubeflow超概要

Abstract

小杉がk8s上で動く機械学習ワークフロー開発ツールKubeflowの超概要について話したよ。
かろうじてGCP?としたけどOSSだよ。(詳しくは本編にて)

Date
2020-06-21 00:48

話したこと

Kubeflowの超概要
まだ検証中なので、間違ってたりするかもしれない…
今後もっと検証を進めたら続編をpodcastでも話す。

Kubeflow概要

  • Kubeflowとは、k8s上で動くOSSの機械学習のワークフロー開発ツール。
  • Googleが筆頭で開発。
  • Apache 2.0 License
  • 2020/3月にv1.0がリリースされた。
  • 読み方は「キューブフロー」(Youtubeとかで現地の人の発音を聞いた限り、多分)

CI/CDに加え、機械学習ではCT(Continuous Training)というのがある、と Googleが言っている
いわゆるMLOpsということになると思うが、このMLOpsを支援するのがKubeflowと言えそう。

ちなみに 公式ドキュメントは英語だけど、とても良くまとまっており分かりやすい。

歴史

もともとは Tensorflow Extended(TFX)として開発されていたものが
より汎用化するためにKubeflowとして独立したらしい。(参考: Kubeflowとは

以前は結構バグが多かったみたいだけど、最近v1.0がリリースされ使ってる人の記事もちらほら見かけるようになった。

TFXとの違い

先述のTFXも依然として開発は進んでおり、さらにKubeflowの中にTFXのpipelineを呼び出す機能もあったりしてややこしい。
名前からしてTFXはTensoflowに特化している?とも思ったけど、TFXが他のMLフレームワークも扱えるのか不明…
正直使い分けがよく分かってないので、後日ちゃんと理解したい。

AI Platformとの違い

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の提供機能(というかコンポーネント)は以下。

  • Central Dashboard
    • ダッシュボードUI
  • Metadata
    • Kubeflow上で実行されたワークフローのメタデータを管理
    • 実験結果とかモデルのバージョニングとかかな(多分)
  • Jupyter Notebooks
    • そのまんま
  • Frameworks for Training
    • 学習フレームワーク。多分、分散学習とかもやりやすくなってる。
  • Hyperparameter Tuning
    • そのまんまハイパーパラメータの自動チューニングの機能があると思われる。
  • Pipelines
    • MLワークフローをDAGで定義できる。結構肝の機能。
  • Tools for Serving
    • 推論APIの構築や、推論バッチ実行ができるものと思われる。
  • Multi-Tenancy in Kubeflow
    • 認証系と思われるが、この辺はまだ弱いかも?
  • Miscellaneous
    • その他

ぱっと見、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」というところが一番のメリットだと、個人的には感じている。

メリット

  • OSSなので自由が効く。
  • portable

デメリット

  • 学習・構築コスト

期待していること

portableということで、ベンダーロックインしないように構築可能(多分)

SageMakerやAI Platformは処理自体はコンテナ化することができるが
結局ジョブを呼び出す部分の処理や、ファイルIOの部分でベンダーロックインするところがある。

KubeflowはGCPのGKEをはじめ、EKS, AKS, オンプレミスで同じように動作するため
構築する部分はそれぞれ用意する必要があるが、ワークフロー自体は同様に処理できる。はず。
という期待を持って検証中。

参考になりそうなリンク(主に日本語)

英語だけど分かりやすいし、 公式ドキュメントは必ず見るべし。

おまけで話したこと

mukiudo
mukiudo
Software Engineer