メインコンテンツまでスキップ

AI ランタイム 上の Ray

備考

プレビュー

この機能は パブリック プレビュー段階です。

注記

Databricks Runtime 機械学習を使用したDatabricksクラシックコンピュートでRayを使用している場合は、Ray on Databricksを参照してください。

Ray は、Python ワークロードをスケーリングするためのオープンソースフレームワークです。基盤となる GPU インフラストラクチャをプロビジョニングまたは管理することなく、AI ランタイム上で Ray を実行できます。

AI Runtime で Ray を使用する理由​

Ray は、モデルのトレーニング、バッチ推論、データ処理、ハイパーパラメーターチューニングなどの Python ワークロードを分散させるために一般的に使用されます。AI ランタイムでは、Ray は Unity Catalog ボリューム内のデータにアクセスしたり、MLflow でエクスペリメントをトラッキングしたり、本番運用ワークフローの一部として実行したりできます。

AI ランタイムでは、Ray Core、Ray Data、Ray Train、Ray Tune などの一般的な Ray ライブラリを使用できます。既存の Ray ワークロードでは、ライブラリの標準 APIs を引き続き使用できます。

Ray と AI Runtime の連携方法​

すべてのRayアプリケーションは、1つ以上のノードを含むことができるRayクラスター上で実行されます。AI Runtimeがノードをプロビジョニングし、Rayが利用可能なCPUおよびGPUリソース全体でタスクとアクターをスケジュールします。Rayの起動方法は、実行インターフェイスによって異なります。

インターフェース

ノード

Rayの起動

ノートブック

ノートブックにアタッチされた単一ノード

AI ランタイム SDK (databricks.air) から ray_init() を呼び出す

Databricks CLI

1つ以上のノードの固定セット

再利用可能なブートストラップ スクリプトを使用して、ノード 0 でヘッドを起動し、残りのノードをワーカーとして参加させます。

インターフェース

ノード

Rayの起動

ノートブック

ノートブックにアタッチされた単一ノード

AI ランタイム SDK (databricks.air) から ray_init() を呼び出す

Databricks CLI

1つ以上のノードの固定セット

再利用可能なブートストラップ スクリプトを使用して、ノード 0 でヘッドを起動し、残りのノードをワーカーとして参加させます。

ノートブックで Ray を使用する​

ノートブックがAI ランタイム GPUコンピュートに接続されているときに、 Databricks AI ランタイム SDKのray_init()を使用して、接続されたノードでRayを起動します。

Python
from databricks.air import ray_init

ray_init()

ray_init() 標準の ray.init() APIを呼び出し、Databricksドライバープロキシ経由でアクセスできるようにRayダッシュボードを構成し、ノートブックの出力にダッシュボードのURLを出力します。コードの実行中にダッシュボードを使用して、Rayのジョブ、タスク、アクター、Logs、リソース使用量を検査します。

注記

ray_init() 環境バージョン 5 以降が必要です。バージョン 5 では、 databricks.air ではなく serverless_gpu からインポートしてください。Databricks AI v6 には Ray が含まれています。Standard v6 を使用する場合は、 ray_init() を呼び出す前に Ray をインストールしてください。環境のセットアップを参照してください。

ノートブックの例​

例

説明

Ray Core の Hello World

アタッチされたコンピュート上で非同期 GPU タスクを送信し、Ray ダッシュボードでスケジューリングを検査して、結果を取得します。

Ray Tune による CIFAR-10 のハイパーパラメーターチューニング

PyTorch 画像分類器の並列(コンカレント)なフラクショナル GPU 試行をランし、非同期連続半減アルゴリズム(ASHA)を使用してパフォーマンスの低い構成を早期に停止します。

Ray DataとvLLMを使用したQwen2.5-32Bバッチ推論

8台の H100 GPU で8個の永続的 vLLM レプリカを使用して多言語バッチ推論を実行し、結果を Unity Catalog ボリュームに Parquet として保存します。

例

説明

Ray Core の Hello World

アタッチされたコンピュート上で非同期 GPU タスクを送信し、Ray ダッシュボードでスケジューリングを検査して、結果を取得します。

Ray Tune による CIFAR-10 のハイパーパラメーターチューニング

PyTorch 画像分類器の並列(コンカレント)なフラクショナル GPU 試行をランし、非同期連続半減アルゴリズム(ASHA)を使用してパフォーマンスの低い構成を早期に停止します。

Ray DataとvLLMを使用したQwen2.5-32Bバッチ推論

8台の H100 GPU で8個の永続的 vLLM レプリカを使用して多言語バッチ推論を実行し、結果を Unity Catalog ボリュームに Parquet として保存します。

Databricks CLIでRayを使用する​

「AI ランタイム用の Databricks CLI コマンド」は、シングルノードおよびマルチノードの Ray ワークロードをサポートします。ワークロード構成で、固定の accelerator_type と合計 num_accelerators を指定します。「Ray Core の利用開始レシピ」には、再利用可能なブートストラップスクリプトが含まれています。ワークロードの command で、RAY_ENTRYPOINT を Python ファイルのパスに設定し、ブートストラップスクリプトを実行します。ブートストラップスクリプトは次の処理を実行します。

  • ノード 0 でRayヘッドを起動し、構成されたエントリポイントを実行します。
  • 他のすべてのノードでRayワーカーを起動し、エントリポイントの実行中も接続を維持します。
  • エントリポイントの処理が完了すると、Ray プロセスが停止します。

アプリケーションで、ray.init(address="auto") を使用してクラスターに接続します。

Standard 環境では、ray または ray[data]、ray[train]、ray[tune]などの必要な追加の依存関係をワークロードの依存関係に追加します。Databricks AI v6 には Ray が含まれています。

Rayを起動する​

次の最小限の例では、主要な Ray ライブラリを紹介し、共通のクラスター・ブートストラップパターンを使用しています。

例

説明

Ray Core

2基のA10 GPUでRayクラスターを起動し、GPU 1基につき1つのRay Coreタスクをスケジュールします。

Ray トレーニングする

GPUごとに1つのRay Trainワーカーを使用して、合成データ上で小規模な多層パーセプトロンをトレーニングする。

Ray Data

Ray クラスター全体で合成データ処理パイプラインをランします。

Ray Tune

GPU 1基につき1回の試行で、合成データを使用して小規模な多層パーセプトロン(MLP)をチューニングします。

例

説明

Ray Core

2基のA10 GPUでRayクラスターを起動し、GPU 1基につき1つのRay Coreタスクをスケジュールします。

Ray トレーニングする

GPUごとに1つのRay Trainワーカーを使用して、合成データ上で小規模な多層パーセプトロンをトレーニングする。

Ray Data

Ray クラスター全体で合成データ処理パイプラインをランします。

Ray Tune

GPU 1基につき1回の試行で、合成データを使用して小規模な多層パーセプトロン(MLP)をチューニングします。

その他の CLI の例​

例

説明

Ray トレーニングするによるResNet-50のファインチューニング

2つのノードにまたがり、A10 GPU 1基につき1つの分散データ並列ワーカーでResNet-50をファインチューニングします。

Ray Train による Qwen2.5-3B のファインチューニング

8× H100 ノード上で、GPU ごとに 1 つの分散データ並列ワーカーを使用して Qwen2.5-3B をファインチューニングします。

Ray Data と vLLM を使用したバッチ推論

Qwen2.5-7B-Instructで応答を生成し、結果をParquetとしてUnity Catalogボリュームに書き込みます。

Ray TuneによるLoRAハイパーパラメーター検索

4つのA10 GPUにわたってQwen2.5-0.5BのLoRA構成を検索し、性能の低い試行をASHAスケジューラで停止します。

Ray Tune による XGBoost ハイパーパラメーター検索

4つのA10 GPUにわたってXGBoostハイパーパラメーターを検索し、最適な構成をMLflowにLogし、Unity Catalogにモデルを登録します。

例

説明

Ray トレーニングするによるResNet-50のファインチューニング

2つのノードにまたがり、A10 GPU 1基につき1つの分散データ並列ワーカーでResNet-50をファインチューニングします。

Ray Train による Qwen2.5-3B のファインチューニング

8× H100 ノード上で、GPU ごとに 1 つの分散データ並列ワーカーを使用して Qwen2.5-3B をファインチューニングします。

Ray Data と vLLM を使用したバッチ推論

Qwen2.5-7B-Instructで応答を生成し、結果をParquetとしてUnity Catalogボリュームに書き込みます。

Ray TuneによるLoRAハイパーパラメーター検索

4つのA10 GPUにわたってQwen2.5-0.5BのLoRA構成を検索し、性能の低い試行をASHAスケジューラで停止します。

Ray Tune による XGBoost ハイパーパラメーター検索

4つのA10 GPUにわたってXGBoostハイパーパラメーターを検索し、最適な構成をMLflowにLogし、Unity Catalogにモデルを登録します。

データとDatabricksの機能を操作する​

Rayワークロードは、Unity Catalogボリューム内のデータへのアクセス、MLflowでのランの記録、およびDeclarative Automation Bundlesで定義されたLakeflow Jobsタスクとしての実行を行うことができます。

Unity Catalog のデータにアクセスする​

Unity Catalog テーブル内の表形式データの場合は、ray.data.read_databricks_tables() を使用してテーブルを読み取るか、Databricks SQL ウェアハウスを介して SQL クエリーを実行します。AI Runtime はローカルの Spark セッションを提供しないため、warehouse ID、カタログ、およびスキーマを指定します。Ray が結果を処理する前に、SQL を使用して結合、集計、およびフィルター処理を実行できます。

ファイルベースおよび非構造化データの場合は、Unity Catalog ボリュームを使用します。Ray ワーカーは、/Volumes/<catalog>/<schema>/<volume>/... パスを使用してファイルにアクセスできます。たとえば、Ray Data は ray.data.read_parquet() で Parquet ファイルを読み込み、Dataset.write_parquet() で結果を書き込むことができます。

ワークロードのトラッキングとオーケストレーション​

MLflowを使用して、Rayワークロードのパラメーター、メトリクス、アーティファクトを記録します。エクスペリメントの追跡と観察可能性を参照してください。

ワークロードのスケジュールを設定するか、CPUデータ準備タスクと組み合わせるには、Lakeflow JobsとDeclarative Automation Bundlesを使用します。GPUワークロードのスケジュールとタスクの組み合わせを参照してください。

既存の Ray ワークロードを移行する​

自己管理型の Ray ワークロードの移行には、そのインフラストラクチャ構成とサービス統合を AI ランタイムの実行モデルに置き換える作業が含まれます。

ワークロードを評価する​

移行する前に、制限事項を確認してください。ワークロードが、1つのアクセラレータタイプを持つ固定サイズクラスターで実行できることを確認します。

ワークロードを移行する​

自己管理型のRayワークロードを移行するには:

  1. インタラクティブなシングルノード開発にはノートブックを選択し、シングルノードまたはマルチノードのジョブには Databricks CLI を選択します。
  2. 既存のクラスターリソースを AI Runtime アクセラレータタイプおよびアクセラレータ数にマップします。ハードウェアオプションを参照してください。
  3. ノートブックでの既存のクラスターStartup、またはDatabricks CLIワークロードでドキュメント化されているヘッドおよびワーカーのブートストラップを ray_init() に置き換えます。
  4. ワークロードの Python 依存関係を宣言し、そのデータ、チェックポイント、モデル、出力のパスを更新します。
  5. 最小限の該当する構成でワークロードを検証します。意図した固定トポロジをテストする前に、データアクセス、リソースリクエスト、出力を確認します。

制限事項​

AI ランタイム上の Ray には、次の制限事項があります。

  • Rayクラスターには、ワークロードの実行期間中、固定のノード数があります。Rayクラスターのオートスケールはサポートされていません。
  • ワークロード内のすべてのノードで同じ accelerator_type が使用されます。Rayクラスターに、CPUのみのワーカーグループとGPUワーカーグループを個別に含めたり、CPUとGPUの容量を個別にスケーリングしたりすることはできません。
  • ノートブックは、アタッチされた単一ノード上でRayを起動します。マルチノードのRayクラスターにはDatabricks CLIを使用します。
  • Databricks ドライバー プロキシを介した Ray ダッシュボードへのアクセスは、現在ノートブック ワークロードでのみ利用できます。
ヒント

CPU の準備と GPU の処理を別々のステージとして実行できる場合は、マルチタスクの Lakeflow Job を使用し、Unity Catalog ボリュームを介してタスク間でデータを渡します。