Rayは、AIおよびPythonアプリケーションをスケーリングするためのオープンソースの統合フレームワークです。 Rayは機械学習分野で広く採用されています。 Container Service for Kubernetes (ACK) クラスターにRayクラスターをすばやく作成し、RayクラスターをSimple Log Service、Managed Service for Prometheus、ApsaraDB for Redisと統合して、ログ管理、可観測性、可用性を最適化できます。 Rayオートスケーラは、ACKオートスケーラと協働して、計算リソーススケーリングの効率を向上させ、リソース利用率を高めることができる。
レイの紹介
Rayは、AIおよびPythonアプリケーションをスケーリングするためのオープンソースの統合フレームワークです。 分散コンピューティングを簡素化し、並列処理および分散Pythonアプリケーションの効率的な開発に役立つAPIを提供します。 Rayは機械学習分野で広く採用されています。 Rayの統合コンピューティングフレームワークは、Ray AIライブラリ、Ray Core、およびRay Clustersレイヤーで構成されています。
Ray on Kubernetes
KubeRay演算子は、KubernetesネイティブでRayクラスターを管理する方法を提供します。 KubeRay演算子を使用して、ACKクラスターを含むRayクラスターをKubernetes環境にデプロイできます。 KubeRay演算子をインストールするときは、展開演算子とRayCluster、RayJob、およびRayService CustomResourceDefinitions (CRD) を展開する必要があります。
Ray on Kubernetesは、分散アプリケーションのデプロイと管理を大幅に簡素化できます。 Ray on Kubernetesには以下の利点があります。 詳細については、「Ray on Kubernetes」をご参照ください。
自動スケーリング: Kubernetesは、ワークロードに基づいてノード数を自動的にスケーリングできます。 KubernetesでRayオートスケーラーをデプロイした後、Kubernetesはワークロードに基づいてRayクラスターを動的にスケーリングし、リソース使用率を最適化し、分散アプリケーションの管理を簡素化できます。
フォールトトレランス: Rayはフォールトトレランスで設計されています。 この機能は、RayがKubernetesで実行されると強化されます。 Rayノードに障害が発生すると、Kubernetesは障害のあるノードを自動的に置き換え、Rayクラスターの安定性と可用性を確保します。
リソース管理: Kubernetesでは、リソース要求と制限を作成して、Rayノードで使用されるCPUリソースやメモリリソースなどのリソースをきめ細かく制御および管理できます。 これにより、リソース使用率が向上し、リソースの無駄がなくなります。
シンプルデプロイ: Kubernetesは、コンテナ化されたアプリケーションをデプロイ、管理、および監視するための統合システムを提供します。 Ray on Kubernetesは、開発、ステージング、および本番環境でRayクラスターを設定および管理するための一貫したエクスペリエンスを提供します。
サービスの検出と負荷分散: Kubernetesはサービスの検出と負荷分散をサポートします。 Kubernetesを使用して、Rayノード間の接続、およびクライアントとRayクラスター間の接続を自動的に管理できます。 これにより、ネットワーク構成が簡素化され、ネットワークパフォーマンスが向上します。
マルチテナント: Kubernetesの名前空間を使用して、異なるユーザーまたはチームに属するRayクラスターを分離し、Kubernetesクラスター内のリソースを共有できます。
モニタリングとロギング: Kubernetesは、モニタリングとロギングの監視機能を提供し、Rayクラスターのステータスとパフォーマンスを追跡できます。 たとえば、PrometheusとGrafanaを使用してRayクラスターのパフォーマンスメトリックを収集できます。
互換性: Kubernetesはクラウドネイティブエコシステムの中核です。 複数のクラウドサービスプロバイダーやテクノロジースタックと互換性があります。 KubernetesにRayクラスターをデプロイした後、クラスターをさまざまなクラウドコンピューティングプラットフォームまたはハイブリッドクラウド環境に移行またはスケールできます。
Ray on ACK
Container Service for Kubernetes (ACK) は、世界で初めて認定Kubernetes適合プログラムに参加するサービスの1つです。 ACKは、高性能なコンテナ化アプリケーション管理サービスを提供し、エンタープライズクラスのコンテナ化アプリケーションのライフサイクル管理をサポートします。 KubeRayを使用すると、クラウドでACKクラスターを作成するのと同じ方法で、ACKクラスターでRayクラスターを作成できます。
Rayクラスターは、Simple Log Service、Managed Service for Prometheus、およびApsaraDB for Redisと連携して、ログ管理、観測性、および可用性を向上させることができます。
rayオートスケーラーとACKオートスケーラーの組み合わせを使用して、必要に応じてコンピューティングリソースをスケーリングできます。

課金
ACKクラスターにRayクラスターを作成した後、Simple Log Service、Managed Service for Prometheus、ApsaraDB for Redisを使用して、ログの管理、観測性、可用性を向上させることができます。 ACKによって発生する料金に加えて、他のリソースも支払う必要があります。 課金の詳細については、以下のトピックを参照してください。
1環境を準備する
手順1: クラスターの作成
ACKクラスターの作成方法の詳細については、「ACK管理クラスターの作成」をご参照ください。 ACKクラスターの更新方法の詳細については、「ACKクラスターの手動アップグレード」をご参照ください。 ACK Proクラスターが作成され、次の要件を満たしています。
クラスターのKubernetesバージョンはv1.24以降です。
ノード仕様: 少なくとも8つのvCPUと32 GBのメモリを提供するノードが作成されます。
ステージング環境では、推奨される最小仕様を使用できます。 オンデマンドでGPU高速化ノードを設定できます。
Elastic Compute Service (ECS) インスタンスタイプの詳細については、「インスタンスファミリーの概要」をご参照ください。
クラスターに対してSimple Log Serviceが有効になっています。
クラスターでPrometheusのサービス管理が有効になっています。
kubectlクライアントがクラスターに接続されています。 詳細については、「クラスターのkubeconfigファイルを取得し、kubectlを使用してクラスターに接続する」をご参照ください。
(オプション) Tairインスタンス
高可用性とフォールトトレランスをサポートするRayクラスターをデプロイするには、この例ではApsaraDB for Redisインスタンスを使用します。 オンデマンドでApsaraDB for Redisインスタンスを作成できます。 Tair (Redis OSS互換) インスタンスが作成されました。 インスタンスは次の要件を満たしています。
ApsaraDB for Redisインスタンスは、ACK Proクラスターと同じリージョンと仮想プライベートクラウド (VPC) にデプロイする必要があります。 詳細については、「手順1: インスタンスの作成」をご参照ください。
VPC CIDRブロックからのアクセスを許可するホワイトリストを追加します。 詳細については、「手順2: ホワイトリストの設定」をご参照ください。
ApsaraDB for Redisインスタンスのエンドポイントを取得します。 VPCエンドポイントを使用することを推奨します。 詳細については、「エンドポイントの表示」をご参照ください。
ApsaraDB for Redisインスタンスのパスワードを取得します。 詳細については、「パスワードの変更またはリセット」をご参照ください。
ステップ2: Kubernetes-Operatorのインストール
Kubernetes-ACKクラスターが提供するオペレーターは招待プレビュー中です。 このコンポーネントを使用するには、チケットを起票
して申請します。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
作成したクラスターの名前をクリックします。 クラスターの詳細ページで、 をクリックし、[Kubernetes-Operator] をインストールします。

手順3: Rayクラスターのデプロイ
次のコマンドを実行して、myfirst-Ray-clusterという名前のrayクラスターを作成し、デプロイメントステータスを表示します。
次のコマンドを実行してRayクラスターを作成します。
次のコマンドを実行して、Rayクラスターのデプロイメントステータスを照会します。
kubectl get raycluster NAME DESIRED WORKERS AVAILABLE WORKERS CPUS MEMORY GPUS STATUS AGE myfirst-ray-cluster 1 1 5 5G 0 ready 4m19sRayクラスターを実行するポッドを照会します。
kubectl get pod NAME READY STATUS RESTARTS AGE myfirst-ray-cluster-head-5q2hk 1/1 Running 0 4m37s myfirst-ray-cluster-work1-worker-zkjgq 1/1 Running 0 4m31sRayクラスターに関連付けられたサービスを照会します。
kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 192.168.0.1 <none> 443/TCP 21d myfirst-ray-cluster-head-svc ClusterIP None <none> 10001/TCP,8265/TCP,8080/TCP,6379/TCP,8000/TCP 6m57s
2 Simple Log Serviceとの統合
Simple Log ServiceをRayクラスターと統合して、ログを永続化できます。
次のコマンドを実行してグローバルAliyunLogConfigオブジェクトを作成し、ACKクラスターのLogtailコンポーネントがRayクラスターのポッドによって生成されたログを収集し、そのログをSimple Log Serviceプロジェクトに配信できるようにします。
パラメーター
説明
logPathポッドの
/tmp/ray/session_*-*-*_*/logsディレクトリにあるすべてのログを収集します。 カスタムパスを指定できます。advanced.k8s.ExternalK8sLabelTag収集したログにログ取得用のタグを追加します。 デフォルトでは、
_raycluster_name_および_node_type_タグが追加されます。AliyunLogConfigパラメーターの詳細については、「CRDを使用してDaemonSetモードでコンテナログを収集する」をご参照ください。 Simple Log Serviceは有料サービスです。 詳細については、「課金の概要」をご参照ください。
Rayクラスターのログ情報を表示します。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。 作成したクラスターの名前をクリックします。 クラスターの詳細ページで、次の図に示すように、 をクリックし、[Log Serviceプロジェクト] の右側にあるハイパーリンクをクリックしてSimple Log Serviceプロジェクトにアクセスします。

raycclustersに対応するLogstoreを選択し、ログの内容を表示します。_raycluster_name_などのタグに基づいて、さまざまなRayクラスターのログを表示できます。
3の管理対象サービスとの統合
RayクラスターでPrometheusモニタリングサービスを使用できます。 Prometheusモニタリングサービスの詳細については、「Prometheusのマネージドサービス」をご参照ください。
次のコマンドを実行してPod MonitorとService Monitorをデプロイし、Rayクラスターのメトリクスデータを収集します。
次のコマンドを実行して、Podモニターをデプロイします。
次のコマンドを実行して、サービスモニターを展開します。
コンソールにログインして、リソースのデプロイと統合のステータスを確認します。
ログインしてARMSコンソール
を使用します。 左側のナビゲーションウィンドウで、[統合センター] を選択し、検索ボックスに [Ray] と入力し、[Ray] を検索して選択します。 Rayパネルで、作成したACKクラスターを選択し、[OK] をクリックします。

ACKクラスターがマネージドサービスfor Prometheusと統合されたら、[統合管理] を選択して [統合管理] ページに移動します。 [コンポーネント管理] タブで、[コンポーネントタイプ] セクションの [ダッシュボード] をクリックし、[レイクラスター] をクリックします。

名前空間、RayClusterName、およびSessionNameを指定して、Rayクラスターで実行されるタスクのモニタリングデータをフィルター処理します。

関連ドキュメント
ローカルネットワークからRay Dashboardにアクセスできます。 詳細については、「ローカルネットワークからのアクセスレイダッシュボード」をご参照ください。
Rayクラスターでジョブを送信する方法の詳細については、「Rayジョブの送信」をご参照ください。
Rayオートスケーラーを使用してECSノードを自動的にスケーリングする方法の詳細については、「RayオートスケーラーとACKオートスケーラーに基づくエラスティックスケーリング」をご参照ください。
Rayオートスケーラーを使用して仮想Elastic Container Instanceノードを自動的にスケーリングする方法の詳細については、「Rayオートスケーラーに基づくElastic Container InstanceノードのElastic scaling」をご参照ください。
