AnalyticDB Ray は、AnalyticDB for MySQL が提供するフルマネージドの Ray サービスです。このサービスは、カーネルパフォーマンスの向上と運用管理の簡素化により、オープンソースの Ray を強化・最適化します。AnalyticDB Ray は、マルチモーダル処理、検索とレコメンデーション、金融リスク管理などの複雑な AI シナリオ向けに設計されています。企業が統合された Data + AI アーキテクチャを効率的に構築し、AI アプリケーションを大規模にデプロイするのに役立ちます。
前提条件
AnalyticDB for MySQL の Enterprise Edition、Basic Edition、または Data Lakehouse Edition クラスターが作成されていること。
AnalyticDB Ray とは
オープンソースの Ray は、AI とハイパフォーマンスコンピューティング (HPC) 向けに設計された分散コンピューティングフレームワークです。シンプルな API 抽象化を使用して、効率的な分散スケジューリングを実現します。わずか数行のコードでシングルマシンタスクを数千ノードのクラスターにスケールアップし、ローカル関数を呼び出すかのようにリモートリソースをスケジュールできます。Ray Tune、Ray Train、Ray Serve などの組み込みモジュールは、TensorFlow や PyTorch などのフレームワークとシームレスに互換性があります。活発なオープンソースコミュニティと Anyscale などの企業に支えられ、Ray は AI アプリケーションを構築するための重要なツールとなっています。
オープンソースの Ray は非常に柔軟な分散コンピューティング機能を提供しますが、企業は本番環境で依然として課題に直面しています。これらの課題には、分散ジョブの最適化、詳細なリソーススケジューリング、複雑なクラスターの運用保守 (O&M)、システムの安定性と高可用性の確保などがあります。
これらの課題に対処するため、AnalyticDB for MySQL は、フルマネージドの Ray サービスである AnalyticDB Ray (ADB Ray) を導入しました。ADB Ray は、オープンソース Ray の豊富なエコシステムを基盤としています。マルチモーダル処理、エンボディードインテリジェンス、検索とレコメンデーション、金融リスク管理などのシナリオで実績があります。ADB Ray は Ray カーネルとそのサービス機能を強化し、カーネルパフォーマンスを最適化し、クラスターの O&M を簡素化します。また、AnalyticDB for MySQL のデータレイクハウスプラットフォームとシームレスに統合されます。この統合により、企業は Data + AI アーキテクチャを構築し、エンタープライズ AI の大規模なデプロイを加速できます。
課金詳細
Ray クラスターリソースグループの作成には、次のように課金されます。
-
Worker ディスク容量は、設定されたストレージ容量に基づいて課金されます。
-
Worker リソースタイプが CPU に設定されている場合、使用された弾性リソースグループ ACU の数に基づいて課金されます。
-
Worker リソースタイプが GPU に設定されている場合、GPU の仕様と数量に基づいて課金されます。
注意事項
-
ワーカーノードの削除または再起動には、以下の影響があります。予期しないデータ損失やジョブの失敗を防ぐため、Ray クラスターリソースグループのワーカー設定の変更はオフピーク時に行い、再起動が予定されているワーカーノードへのジョブのスケジューリングは避けてください。
-
ワーカーノードで実行中の Driver、Actor、Task は失敗します。ただし、Ray は Actor と Task を自動的に再送信します。
-
Ray 分散オブジェクトストア内のデータは失われます。再起動したワーカー上のデータに依存する他の Task がある場合、それらの Task も失敗します。
-
-
リソースグループの変更:
-
リソースグループの削除:リソースグループでタスクが実行中の場合、グループを削除するとタスクは中断されます。
-
ワーカーグループの削除:Ray クラスターリソースグループ内のワーカーグループを削除すると、ワーカーノードが削除されます。詳細については、「ワーカーノード削除の影響」をご参照ください。
-
ワーカー数の変更:新しいワーカーの最大数が以前のワーカーの最小数よりも少ない場合、ワーカーノードが削除されます。詳細については、「ワーカーノード削除の影響」をご参照ください。
-
その他の設定変更:ワーカーの最小数とワーカーの最大数以外のパラメーター (ヘッドリソースタイプやワーカーリソースタイプなど) を変更すると、対応するワーカーグループのヘッドノードまたはワーカーノードが再起動します。詳細については、「ワーカーノード再起動の影響」をご参照ください。
-
-
オートスケーリング:
-
Ray クラスターは、物理リソースの使用率ではなく、論理リソースの要求に基づいてスケールアウトします。そのため、物理リソースの使用率が低くても、Ray クラスターがオートスケーリングをトリガーする場合があります。
-
一部のサードパーティアプリケーションは、リソースを完全に利用するために、できるだけ多くの Task を作成します。オートスケーリングが有効になっている場合、多くの Task が作成され、Ray はすぐに最大サイズまでスケールアウトします。そのため、サードパーティのプログラムを実行する前に、Task を作成する内部ロジックを理解し、不要なリソース消費を避けるようにしてください。
-
-
災害復旧:ADB Ray は Redis ベースの災害復旧メカニズムを使用しています。このメカニズムにより、ヘッドノードが再起動した場合でも、Ray クラスターの状態、Actor の状態、Task の状態を回復できます。
Ray サービスの作成
AnalyticDB for MySQL コンソールにログインします。コンソールの左上でリージョンを選択します。左側のナビゲーションウィンドウで クラスターリスト をクリックします。管理したいクラスターを見つけ、クラスター ID をクリックします。
-
左側のナビゲーションウィンドウで、クラスター管理 > リソース管理 を選択します。リソースグループ管理 タブをクリックします。次に、リソースグループリストの右上隅にある 新規リソースグループ をクリックします。
-
リソースグループに名前を付け、タスクタイプ を [AI] に設定し、以下のパラメーターを設定します。
パラメーター
説明
デプロイモード
リソースグループのデプロイモードです。[RayCluster] を選択します。
ヘッドリソース仕様
ヘッドノードは Ray メタデータの管理、Global Control Store (GCS) サービスの実行、タスクのスケジューリングを担当しますが、タスクは実行しません。
ヘッドリソース仕様は CPU コア数を指します。small、m.xlarge、m.2xlarge などの仕様を選択できます。CPU コア数は、ヘッドリソース仕様と Spark リソース仕様で同じです。詳細については、「Spark リソース仕様」をご参照ください。
重要ヘッドノードはジョブのスケジューリングを担当します。Ray クラスター全体の規模に基づいてヘッドリソース仕様を選択してください。
ワーカーグループ名
ワーカーグループの名前です。1 つの AI リソースグループに、異なる名前の複数のワーカーグループを設定できます。
ワーカーリソースタイプ
ワーカーグループのタイプです。有効な値:[CPU] と [GPU]。
-
業務に日常的な計算タスク、マルチタスキング、または複雑な論理演算が含まれる場合は、[CPU] を選択することを推奨します。
-
業務に大規模なデータ並列処理、機械学習、またはディープラーニングのトレーニングが含まれる場合は、[GPU] を選択することを推奨します。
ワーカーリソース仕様
-
ワーカーリソースタイプパラメーターを [CPU] に設定した場合、small、m.xlarge、m.2xlarge などの仕様を選択できます。CPU コア数は、ヘッドリソース仕様と Spark リソース仕様で同じです。詳細については、「Spark リソース仕様」をご参照ください。
-
ワーカーリソースタイプパラメーターを [GPU] に設定した場合、仕様は GPU モデルと在庫に関連するため、チケットを送信して技術支援を依頼してください。
ワーカーディスクストレージ
ディスクストレージは、Ray のログ、一時データ、および Ray 分散オブジェクトストレージからのオーバーフローデータを格納するために使用されます。単位:GB。有効な値:30~2000。デフォルト値:100。
重要ディスクは一時的なデータストレージに使用され、長期的なストレージには使用できません。
ワーカーの最小数
ワーカーの最大数
ワーカーの最小数:ワーカーグループで必要なワーカーノードの最小数で、最小値は 1 です。
ワーカーの最大数:ワーカーグループで許可されるワーカーノードの最大数で、最大値は 8 です。
各ワーカーグループは自動的にスケーリングできます。ワーカーグループのワーカーノードの最小数と最大数が異なる場合、AnalyticDB for MySQL は現在のタスク数に基づいてワーカーノードの数を動的に調整します。複数のワーカーグループが存在する場合、AnalyticDB for MySQL は自動的にマッチングを行い、単一のワーカーグループが過負荷または過小利用されるのを防ぎます。
分配ユニット
各ワーカーノードに割り当てられる GPU の数です。例:1/3。
重要このパラメーターは、ワーカーリソースタイプパラメーターを [GPU] に設定した場合にのみ必須です。
-
-
決定 をクリックします。
Ray サービスへの接続と使用
ステップ 1:エンドポイントの取得
-
左側のナビゲーションウィンドウで、 を選択し、リソースグループ管理 タブをクリックします。
-
リソースグループの 操作 列で、 をクリックしてエンドポイントを表示します。
-
Ray grafana:Grafana 可視化ツールのエンドポイントです。エンドポイントをクリックすると、Grafana の可視化ページに移動します。
-
Ray クラスターエンドポイント:内部エンドポイントです。
-
Ray Dashboard:パブリックエンドポイントとダッシュボードアドレスです。エンドポイントをクリックすると Ray の可視化インターフェイスに移動し、Ray クラスターリソースグループとジョブのステータスを表示できます。
-
ステップ 2:ジョブの送信
前提条件
Python 3.7 以降がインストールされていること。
手順
次の 2 つの方法のいずれかでジョブを送信できます。
-
CTL を使用してジョブを送信する (推奨):CTL を使用してスクリプトファイルをパッケージ化し、Ray クラスターにアップロードして実行します。エントリプログラムは Ray クラスターで実行され、Ray クラスターリソースグループのリソースを消費します。
-
ray.init を使用して Ray クラスターに接続してジョブを実行する:ray.init メソッドを使用して Ray クラスターに接続します。エントリプログラムはローカルで実行され、Ray クラスターリソースグループのリソースを消費しません。ローカルの Ray と Python のバージョンは、Ray クラスター上のバージョンと一致している必要があります。Ray クラスターのバージョンが変更された場合は、ローカルの環境構成をそれに応じて更新する必要があります。
CTL を使用したジョブの送信
-
次のコマンドを実行して Ray をインストールします。
pip3 install ray[default] -
(オプション) 環境変数を設定します。
説明グローバル環境変数を設定してエンドポイントを指定するか、ジョブを送信するときにエンドポイントを指定できます。
export RAY_ADDRESS="RAY_URL"パラメーターの説明:
RAY_URL:「エンドポイントの取得」ステップで取得した Ray の接続アドレスです。このパラメーターに設定します。 -
ジョブを送信します。
重要ジョブを送信すると、システムは
working-dirパラメーターで指定されたディレクトリからすべてのファイルをパッケージ化して Ray ヘッドにアップロードし、実行します。したがって、次の点に注意してください。-
working-dirパラメーターで指定されたディレクトリは、できるだけ小さくしてください。そうしないと、ディレクトリが大きすぎてアップロードに失敗する可能性があります。 -
すべての依存スクリプトファイルは、
working-dirパラメーターで指定されたディレクトリにある必要があります。そうしないと、依存関係の欠落によりジョブが失敗する可能性があります。
-
環境変数を設定している場合は、次のステートメントを実行してジョブを送信します。
ray job submit --working-dir your_working_directory -- python your_python.pyパラメーターの説明:
-
your_working_directory:スクリプトファイルが配置されているパスです。このトピックでは、サンプルパスは/root/Rayです。 -
your_python.py:スクリプトファイルです。このトピックでは、サンプルスクリプトファイルはscripts.pyです。
例:
ray job submit --working-dir /root/Ray -- python scripts.py -
-
環境変数を設定していない場合は、次のステートメントを実行してジョブを送信します。
ray job submit --address ray_url --working-dir your_working_directory -- python your_python.pyパラメーターの説明:
-
ray_url:Ray の接続アドレスです。「エンドポイントの取得」ステップで取得した接続アドレスを入力します。 -
your_working_directory:スクリプトファイルが配置されているパスです。 -
your_python.py:スクリプトファイルです。このトピックでは、サンプルスクリプトファイルはscripts.pyです。
例:
ray job submit --address http://amv-uf64gwe14****-rayo.ads.aliyuncs.com:8265 --working-dir /root/Ray -- python scripts.py -
-
-
ジョブの実行ステータスを確認します。
次の 2 つの方法のいずれかでジョブのステータスを確認できます。
-
コマンドを使用する:
ray job list -
可視化インターフェイスを使用する:
-
リソースグループ管理 タブで、リソースグループの 操作 列にある をクリックします。
-
Ray Dashboard アドレスをクリックして、可視化インターフェイスを開きます。
-
-
ray.init を使用した Ray クラスターへの接続とジョブの実行
-
次のコマンドを実行して Ray をインストールします。
pip3 install ray -
(オプション) グローバル環境変数を設定します。
説明グローバル環境変数を設定してエンドポイントを指定するか、スクリプトファイルでエンドポイントを指定できます。
export RAY_ADDRESS="RAY_URL"パラメーターの説明:
RAY_URL:Ray の接続アドレスです。「エンドポイントの取得」ステップで取得したアドレスはダッシュボードアドレスであり、ポート 8265 を使用します。`ray.init()` を使用して接続するには、プロトコルを `ray` に、ポートを 10001 に変更する必要があります。たとえば、ダッシュボードアドレスが
http://amv-uf64gwe14****-rayo.ads.aliyuncs.com:8265の場合、ray://amv-uf64gwe14****-rayo.ads.aliyuncs.com:10001に変更する必要があります。 -
プログラムを実行します。
-
グローバル環境変数を設定している場合は、次のコマンドを実行してプログラムを実行します。
python scripts.py -
グローバル環境変数を設定していない場合は、次のコマンドを実行してプログラムを実行します。
-
スクリプトファイルを変更してエンドポイントを指定します。
ray.init(address="RAY_URL")パラメーターの説明:
RAY_URL:Ray の接続アドレスです。「エンドポイントの取得」ステップで取得したアドレスはダッシュボードアドレスであり、ポート 8265 を使用します。`ray.init()` を使用して接続するには、プロトコルを `ray` に、ポートを 10001 に変更する必要があります。たとえば、ダッシュボードアドレスが
http://amv-uf64gwe14****-rayo.ads.aliyuncs.com:8265の場合、ray://amv-uf64gwe14****-rayo.ads.aliyuncs.com:10001に変更する必要があります。重要Ray エンドポイントが正しく設定されていない場合、ray.init() はローカルクラスターを起動してプログラムを実行します。出力ログを確認して、Ray クラスターに正しく接続されていることを確認してください。
-
次のコマンドを実行してプログラムを実行します。
python scripts.py
-
-