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 CLI | 1つ以上のノードの固定セット | 再利用可能なブートストラップ スクリプトを使用して、ノード 0 でヘッドを起動し、残りのノードをワーカーとして参加させます。 |
ノートブックで Ray を使用する
ノートブックがAI ランタイム GPUコンピュートに接続されているときに、 Databricks AI ランタイム SDKのray_init()を使用して、接続されたノードでRayを起動します。
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 をインストールしてください。環境のセットアップを参照してください。
ノートブックの例
例 | 説明 |
|---|---|
アタッチされたコンピュート上で非同期 GPU タスクを送信し、Ray ダッシュボードでスケジューリングを検査して、結果を取得します。 | |
PyTorch 画像分類器の並列(コンカレント)なフラクショナル GPU 試行をランし、非同期連続半減アルゴリズム(ASHA)を使用してパフォーマンスの低い構成を早期に停止します。 | |
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 ライブラリを紹介し、共通のクラスター・ブートストラップパターンを使用しています。
例 | 説明 |
|---|---|
2基のA10 GPUでRayクラスターを起動し、GPU 1基につき1つのRay Coreタスクをスケジュールします。 | |
GPUごとに1つのRay Trainワーカーを使用して、合成データ上で小規模な多層パーセプトロンをトレーニングする。 | |
Ray クラスター全体で合成データ処理パイプラインをランします。 | |
GPU 1基につき1回の試行で、合成データを使用して小規模な多層パーセプトロン(MLP)をチューニングします。 |
その他の CLI の例
例 | 説明 |
|---|---|
2つのノードにまたがり、A10 GPU 1基につき1つの分散データ並列ワーカーでResNet-50をファインチューニングします。 | |
8× H100 ノード上で、GPU ごとに 1 つの分散データ並列ワーカーを使用して Qwen2.5-3B をファインチューニングします。 | |
Qwen2.5-7B-Instructで応答を生成し、結果をParquetとしてUnity Catalogボリュームに書き込みます。 | |
4つのA10 GPUにわたってQwen2.5-0.5BのLoRA構成を検索し、性能の低い試行をASHAスケジューラで停止します。 | |
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ワークロードを移行するには:
- インタラクティブなシングルノード開発にはノートブックを選択し、シングルノードまたはマルチノードのジョブには Databricks CLI を選択します。
- 既存のクラスターリソースを AI Runtime アクセラレータタイプおよびアクセラレータ数にマップします。ハードウェアオプションを参照してください。
- ノートブックでの既存のクラスターStartup、またはDatabricks CLIワークロードでドキュメント化されているヘッドおよびワーカーのブートストラップを
ray_init()に置き換えます。 - ワークロードの Python 依存関係を宣言し、そのデータ、チェックポイント、モデル、出力のパスを更新します。
- 最小限の該当する構成でワークロードを検証します。意図した固定トポロジをテストする前に、データアクセス、リソースリクエスト、出力を確認します。
制限事項
AI ランタイム上の Ray には、次の制限事項があります。
- Rayクラスターには、ワークロードの実行期間中、固定のノード数があります。Rayクラスターのオートスケールはサポートされていません。
- ワークロード内のすべてのノードで同じ
accelerator_typeが使用されます。Rayクラスターに、CPUのみのワーカーグループとGPUワーカーグループを個別に含めたり、CPUとGPUの容量を個別にスケーリングしたりすることはできません。 - ノートブックは、アタッチされた単一ノード上でRayを起動します。マルチノードのRayクラスターにはDatabricks CLIを使用します。
- Databricks ドライバー プロキシを介した Ray ダッシュボードへのアクセスは、現在ノートブック ワークロードでのみ利用できます。
CPU の準備と GPU の処理を別々のステージとして実行できる場合は、マルチタスクの Lakeflow Job を使用し、Unity Catalog ボリュームを介してタスク間でデータを渡します。