
はじめに
こんにちは!データ基盤開発部ML基盤チームの上田です。MLOpsエンジニアとして検索・レコメンドシステムの開発と運用に取り組んでいます。ML基盤チームで提供しているAPIサービスはEKS上に構築しており、Kubernetesや関連するOSSの最新情報を取り入れるべく、2024年3月19日~22日にかけてパリで開催された「KubeCon + CloudNativeCon Europe 2024」に参加してきました。特にAI/MLに関するセッションを中心に参加し、最新のトレンドや事例について学びました。
本記事では、MLOpsエンジニアの視点から見たKubeCon + CloudNativeConの様子を、セッションの内容や現地の雰囲気なども交えてお届けしたいと思います!
KubeCon + CloudNativeConとは
「KubeCon + CloudNativeCon」(以下、KubeCon)は、Cloud Native Computing Foundation(CNCF)が主催しているKubernetesとCloud Native技術に関する世界最大の技術イベントの一つです。会場ではKeynoteやセッションが行われ、Kubernetesの最新機能やロードマップ、Kubernetesを導入している企業のユースケースに関する発表を聞くことができます。また、同じ会場で、Kubernetesに関連する特定のトピックや技術に焦点を当てたCo-located eventも開催されました。
セッションの紹介
Scaling up Without Slowing Down: Accelerating Pod Start Time
イメージサイズの大きいLLMアプリケーションのPodの起動時間を高速化する内容のセッションでした。近年LLMの発展に伴い、機械学習の分野では大規模なモデルをコンテナイメージに含めることが増えてきており、Podの起動に時間がかかるという問題に直面することがあります。Podの起動に時間がかかると、新しいノードにPodがスケジューリングされるときにアプリケーションのレイテンシが増加するとともに、スケールアウトへの対応が遅れ、トラフィックの急激な増加に対処できなくなります。
セッションでは、Lazy pullingと、P2Pを用いたコンテナイメージの分散という2つの高速化手法が紹介されました。
- Lazy pulling: コンテナ起動時に必要な部分のイメージデータだけをダウンロードする。イメージ全体をあらかじめダウンロードする必要がなくなり、Podの起動が高速化される。
- P2Pを用いたコンテナイメージの分散: クラスター内の複数ノードでコンテナイメージのデータを共有・転送する。一部のノードでコンテナレジストリからイメージをダウンロードすれば、他のノードは近くのノードからイメージを取得することで、レジストリへの負荷が分散される。
通常のアプリケーションであればこの2つの手法を組み合わせるだけで十分ですが、大規模言語モデルなど、モデルデータがイメージの大部分を占め、かつアプリケーション起動直後からモデルのデータが必要な場合は、以下のようなアプローチが効果的だそうです。
- P2Pでコンテナイメージをあらかじめクラスター内に分散しておく
- コンテナ起動時に、モデルデータが入っているイメージレイヤーだけを先に読み込む
また、高価なGPUノードのみを使うのではなく、低コストのCPUノードをP2Pの初期データソース(シードノード)に使ってコストを削減するテクニックも紹介されていました。本セッションで紹介されていた手法は大規模言語モデルだけでなく、イメージサイズが大きくなりがちな、一般的なMLワークロードの実装にもとても役立ちそうです。
Transforming Data Science at PepsiCo: The Kubeflow Revolution
ここで紹介するのはKubeConではなく、Co-located eventのKubeflow Summitのセッションの内容となります。Kubeflow Summitは、Kubernetes上で機械学習ワークフローを構築、デプロイ、運用するためのOSSであるKubeflowプロジェクトに関連するイベントです。
このセッションではPepsiCoのMLOpsチームがKubeflowを新たに導入することで、データサイエンティストのモデル開発フローを一新し、MLOpsの成熟度を高めた事例が発表されました。Kubeflow導入前は、データサイエンティストは各自のローカルマシン上でモデル開発を行い、モデルのデプロイも手動で行っていました。しかしKubeflowの導入により、モデルの学習からデプロイまでの自動化を実現するとともに、分散していたコードを再利用可能な共通ライブラリとして提供するようにしたとのことです。具体的には、モデルのハイパーパラメータのチューニングや、データドリフトの可視化、Snowflakeからのデータ取得処理をKubeflow Pipelinesのコンポーネントとして各パイプラインで共通で使えるようにしており、私たちのチームでも実践できそうな内容で参考になりました。Kubeflowの初期導入段階では、データサイエンティスト側から開発フローの変化や学習コストに関する反発があったようですが、MLOpsチームによるハンズオンの開催やチュートリアルを含んだドキュメント作成、CLIツールの整備を行った結果、徐々に受け入れられ、開発生産性も向上していったそうです。
私たちのチームでもGoogle CloudのVertex AI Pipelines上で動かすKubeflow Pipelinesの導入をしたばかりで、PepsiCoと同様に新しいツールへの学習コストの課題を抱えていました。そのため、このセッションの内容は非常に有益な学びとなりました。データサイエンティストやMLエンジニアがより快適に作業できる開発環境整備への意欲がより一層湧いてきました。
カンファレンス会場の様子
KubeConでは多くの企業がブースを出展しており、グッズの配布も行われていました。また、同じフロアにはCNCFプロジェクトのブースもあり、普段使っているOSSのメンテナと直接話す機会がありました。OSSを利用するだけでなく、積極的に貢献していきたいという思いを新たにしました。
Kubernetesのロゴが入ったセンスの良いシャツやパーカーが販売されていました。会場の雰囲気に流されてつい購入したい衝動に駆られましたが、冷静に考えて日本で着る機会が少ないことに気づき購入を見送りました。
ありがたいことに昼食が会場で提供されていました。気分転換に会場近くにあったマクドナルドで食事をする日もありました。
おわりに
KubeConに参加して、昨今のLLMの流行に伴い、MLワークロードにおけるKubernetesの活用が大きな注目を集めていることを実感しました。初日のキーノートではAI/ML関連の発表が相次ぎ、会場は熱気に包まれていました。また、Kubernetesの標準機能のアップデートとして、バッチワークロードのための機能開発が活発に行われていることも印象的でした。
KubeConでは数多くのセッションが開催されるため、全てに参加することは不可能です。そのため、事前に業務に役立ちそうなAI/ML関連のセッションを中心に目星をつけて参加しました。しかし、実際に参加してみると期待していた内容と異なることも少なくありませんでした。一方で、直感に従って会場で人気のあるセッションに参加すると、興味深い話を聞くことができたので、その場の雰囲気に合わせてセッションを選ぶことができるのはオフライン参加ならではの醍醐味だと感じました。次回参加する機会があれば、より効果的にセッションを選択できそうです。
今回のKubeConには、DMMの福利厚生のカンファレンス参加支援制度を利用して参加しました。カンファレンス参加費用の支援だけでなく、ホテルやフライトの予約まで行ってくださったので、海外旅行の経験が少ない私にとってとても助かりました。
DMMには他にも素敵なエンジニア支援福利厚生制度があるので、興味のある方はご覧ください。
DMM Tech Empowerment -エンジニア・デザイナーのためのサポート制度パッケージを公開!