このページでは、Google Kubernetes Engine(GKE)に Ray クラスタとアプリケーションをデプロイして管理するための Ray Operator と関連するカスタム リソースの概要について説明します。
Ray は、AI/ML と Python アプリケーションをスケーリングするためのオープンソースの統合コンピューティング フレームワークです。Ray には、AI/ML のコンピューティング ランタイムを複数のコンピューティング ノードに分散するための一連のライブラリが用意されています。
GKE で Ray Operator を有効にする方法については、GKE で Ray Operator を有効にするをご覧ください。
GKE で Ray Operator を使用する理由
GKE で Ray クラスタをデプロイして管理する場合は、Ray Operator を使用することをおすすめします。GKE で Ray Operator を実行すると、Ray の Python サポートと GKE のエンタープライズ グレードの信頼性、ポータビリティ、スケーラビリティのメリットが得られます。
GKE の Ray Operator は KubeRay に基づいています。KubeRay は、Ray クラスタの管理用に特別に設計された宣言型 Kubernetes API を提供します。つまり、GKE 上の他のコンテナ化されたワークロードを使用して Ray Deployment をプロビジョニング、スケーリング、管理できます。
GKE で Ray Operator がどのように機能するか
GKE クラスタで Ray Operator を有効にすると、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 Operator を有効にする方法を学習する。
- Ray on Kubernetes のドキュメントを確認する。