このページでは、Google Kubernetes Engine(GKE)に Ray クラスタとアプリケーションをデプロイして管理するための Ray オペレータと、関連するカスタム リソースの概要について説明します。
Ray は、AI / ML と Python アプリケーションをスケーリングするためのオープンソースの統合コンピューティング フレームワークです。Ray には、AI / ML のコンピューティング ランタイムを複数のコンピューティング ノードに分散するための一連のライブラリが用意されています。
GKE で Ray オペレータを有効にする方法については、GKE で Ray オペレータを有効にするをご覧ください。
GKE で Ray オペレータを使用する理由
GKE で Ray クラスタをデプロイして管理する場合は、Ray オペレータを使用することをおすすめします。GKE で Ray オペレータを実行すると、Ray の Python サポートと GKE のエンタープライズ グレードの信頼度、ポータビリティ、スケーラビリティを利用できます。
GKE の Ray オペレータは KubeRay に基づいています。KubeRay は、Ray クラスタの管理用に特別に設計された宣言型 Kubernetes API を提供します。つまり、GKE 上の他のコンテナ化されたワークロードを使用して Ray Deployment をプロビジョニング、スケーリング、管理できます。
GKE で Ray オペレータが機能する仕組み
GKE クラスタで Ray オペレータを有効にすると、GKE は KubeRay オペレータを自動的にインストールしてホストします。
KubeRay は、Kubernetes 上の Ray Deployment を管理するための Kubernetes カスタム リソースを提供します。たとえば、次のようなものがあります。
RayCluster カスタム リソース
RayCluster カスタム リソースを使用すると、GKE が Kubernetes Pod としてデプロイする Ray クラスタを指定できます。通常、Ray クラスタは 1 つのヘッド Pod と複数のワーカー Pod で構成されます。
RayJob カスタム リソース
RayJob カスタム リソースを使用すると、単一の Ray ジョブを実行できます。KubeRay は、ジョブのコンピューティング リソースを提供する RayCluster を作成し、RayCluster のヘッド Pod に Ray ジョブを送信する Kubernetes Job を作成します。
リソースを効率的に管理するには、ジョブが正常に完了した後に RayCluster を自動的にクリーンアップするように KubeRay を構成します。
RayService カスタム リソース
RayService カスタム リソースを使用すると、モデル提供や推論のアプリケーションなど、Ray Serve アプリケーションを構成できます。KubeRay は RayCluster を作成してコンピューティング リソースを提供し、Ray Serve 構成で指定されているように Ray Serve アプリケーションをデプロイします。
Ray on GKE の共有責任
Ray オペレータを使用して GKE で Ray ワークロードを実行する場合は、Google Cloud とお客様の間の責任の分担を理解することが重要です。
Google の責任
- KubeRay オペレータの信頼度と稼働時間の維持。
- KubeRay オペレータのバージョン アップグレードの管理。
- RayCluster、RayJob、RayService カスタム リソースを管理するための KubeRay 固有の機能。
お客様の責任
- Ray ヘッド Pod と Ray ワーカー Pod に使用されるコンテナ イメージの維持。
- Ray ヘッド Pod と Ray ワーカー Pod のバージョニングとアップグレードの維持。
- Ray クラスタのリソース要件(CPU、GPU、メモリなど)の構成。
- Ray クラスタの保護に関するベスト プラクティスへの準拠。
- Ray アプリケーションの信頼度とモニタリング。
詳細については、GKE の共有責任をご覧ください。
次のステップ
- GKE で Ray オペレータを有効にする方法を学習する。
- Ray on Kubernetes のドキュメントを確認する。