Kubernetesで機械学習を実現するKubeflowとは?
Kubernetesを中心としたクラウドネイティブなソフトウェアのカンファレンスであるKubeCon+CloudNativeCon、3日目のハイライトはなんと言ってもKubeflowだろう。朝9時から始まったキーノートの最初に登壇したGoogleのDavid Aronchick氏は、「KubeConには第1回から参加している」と語り、Kubernetesの盛り上がりに驚きを隠せないようだった。今回は、Kubernetesとともに今最も注目を集めている機械学習をクラウドネイティブにするという、Kubeflowを紹介するセッションとなった。
最初に紹介したのは、機械学習を使う効果だ。Googleのデータセンターの消費電力について、機械学習で制御を行った場合と、人手で制御を行った場合に大きな違いが出ていることを紹介した。
しかし多くの人にとって、機械学習を使って効果を出すのはまだ難しいと説明。その理由として、実際の機械学習の利用に至るまでに多くのハードルがあることを解説した。
そして機械学習が実行される方式としてDIY(Do It Yourself)型とHosted型があり、それぞれに課題があると説明。DIYの場合は、多くの前処理の実装と既存のシステムとの連携が必要になること、Hostedの場合は最初の段階では問題がなくても、すぐにDIY同じ問題を抱えることになると語った。GoogleはGCPをパブリッククラウドとして展開しているが、ここではGCPによるソリューションに対しても客観的に評価したということだろう。
そこから機械学習に求められる特性として、Composability、Portability、Scalabilityの3つを挙げて、解説を始めた。
Composability(構成可能性)は機械学習においてモデル作成に注目が集まるが、それ以外にも多くのプロセスが必要であることを表す。特に後半の本番環境へのロールアウトについては、この後のPortabilityにもつながる話である。
Portabilityは文字通り、作成した機械学習のアプリケーションをいかにポータブルにできるか? という話で、ハードウェアからOS、フレームワーク、モデルなど多くのレイヤーにソフトウェアが必要になる場合、依存関係やOSなどの互換性を留意して開発を行わないと、実際に本番環境への展開時に問題を残すということだ。
これは実験的な実装からモデルの学習、本番の3つのステージに分けてシステム展開を考慮した場合、デスクトップからオンプレミス、さらにクラウドまで視野に入れたシステム運用を考え必要があるということを示唆している。
最後のScalabilityは文字通り、GPUやTPUなどのハードウェア、増大するストレージへの要求などに応えられるプラットフォームが必要であるということだ。しかし単にコンピュータリソースだけではなく、人的資産も必要だと言う辺りは、データサイエンティストが不足しているという部分についても言及したという形だろう。
そして機械学習をKubernetesで実装する場合、多くの要因について知識と経験が必要となることを指摘する。これはJapan Container Daysでメルカリのデータサイエンティストが語ったことを裏付ける内容で、データサイエンティスト自身が全てのシステム要件を一人で実装できるというのは稀であるということだ。
そこで、それを実現するのがKubeflowであると語った。
ここでは「Kubeflowの中に何が含まれるか?」という情報のほうが重要だろう。Jupyter NotebookとTensorFlowのためのコンポーネントが含まれる。またパッケージングには、Ksonnetが使われていることも注目だろう。簡単なコマンドでKubernetesのManifestを生成できるパッケージングツールだ。
ここからは実際にデモを行った。いわゆるテストランのレビューを、TensorFlowを使って評価するというもので、特徴的なのはラップトップで作ったMinikubeの構成から、パラメータを変えるだけでGCP上のGKEにモデルを実装して推論を行うという部分だろう。この部分は、Ksonnetのパッケージの機能がうまく働いているようだ。
このセッションでは、ラップトップでの実行からGKE上のTPUを使った実行までライブデモを行い、いかにシンプルにKubeflowが実行できるのかを見せつけた形になった。
ここでのポイントとしてKubeflowは「カスタマイズされた特別なツールではないこと」、「クラウドに限定されたものではないこと」、さらに「Kubernetes APIをカスタマイズしたものでもないこと」が強調された。つまり、デスクトップからオンプレミス、GCP以外のパブリッククラウドでも実行可能であること、Ksonnetによって様々なプラットフォームに対応できることを意味している。
まだバージョンも0.1ということで、あくまでも初期のプロトタイプ的な位置付けだろうが、このままコミュニティが成長して、AWSやAzureなどのプラットフォームへの対応、TensorFlow以外の機械学習フレームワークへの対応が進めば、一気にKubernetes上への機械学習の実装が進むのでは? と感じさせるプレゼンテーションであった。
David Aronchick氏のプレゼンテーション「Kubeflow ML on Kubernetes」
KubeConでは他にも、Heptioのエンジニアと組んでより詳細にデモを実施したセッションも行われた。Kubeflowをラップトップ、AWS、GKEのそれぞれのプラットフォームで動かし、Heptio ArkというこれもオープンソースのKubernetesクラスターをバックアップするツールを使って移動させるというデモも行われた。ここでも、マルチクラウドを意識した運用を想定していることが見てとれる。
「Conquering a Kubeflow Kubernetes Cluster with ksonnet, Ark, & Sonobuoy」
参考までに、HeptioはGoogleでKubernetesを開発していた二人のエンジニアが創業した企業で、Kubernetes関連のソフトウェアを多く開発している。
Heptioのオープンソースソフトウェア:https://heptio.com/products/
機械学習のワークロードは、バッチ式の実装や大量のデータストアの必要性から、どちらかといえばKubernetesには向かないのではと思われていた。しかしKubeflowにより、Googleの推進するオープンソースソフトウェアでこれが実装されたということに大きな意味があると言えるだろう。まだ「バージョン0.1」ということで、これからの進化が楽しみになったセッションであった。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- Kubernetesで機械学習のワークフローを生成できる「Kubeflow 1.0」リリース
- AIブームを支えるコミュニティTensorFlowユーザーグループのこれまでとこれから
- Kubernetes上で機械学習のパイプラインを実装するKubeflowを紹介
- Kubeflowとは
- コンテナは場所を選ばない!「オンプレ or クラウド×コンテナ」(後編)
- Kubernetes上で動作する機械学習ツールセット「Kubeflow 1.0」リリース
- KuberCon/CloudNativeCon NA 2021開催、3日間のキーノートを紹介
- KFServingで機械学習モデルをサービング
- Red HatがAIに関するブリーフィングを実施。オープンソースのAIが優れている理由とは
- コンテナ管理におけるベンダーの動向【テクノ・システム・リサーチ調べ】