Ray on Databricks とは?
Ray は、Python アプリケーションをスケーリングするためのオープンソースフレームワークです。 AI ワークロードに固有のライブラリが含まれているため、AI アプリケーションの開発に特に適しています。 Databricks 上の Ray を使用すると、Databricks のすべてのプラットフォームの利点と機能を利用しながら、Ray アプリケーションを実行できます。
Ray 2.3.0 以降では、Ray クラスターを作成し、 を使用してApache Spark クラスターで Ray アプリケーションを実行できます。Databricks
チュートリアルや例など、Ray での機械学習の使用を開始する方法については、 Ray のドキュメントを参照してください。 Ray と Apache Spark の統合の詳細については、 Ray on Spark API のドキュメントを参照してください。
レイとは?
Ray は、分散アプリケーションをゼロから作成するための基本的な Python プリミティブを提供することで、分散システムを簡素化します。 分散システムに不慣れなPython開発者にとっては、オーケストレーション、スケジューリング、フォールトトレランスを管理しながら、標準のPythonと同じ使いやすさを提供します。
Ray と Apache Spark は補完的なフレームワークです。 Ray は論理並列処理に優れており、機械学習や強化学習など、コンピュートを多用する動的タスクを処理します。 Apache Spark はデータ並列処理に特化しており、ETL やデータ分析などのタスクのために大規模なデータセットを効率的に処理します。 これらを組み合わせることで、データ処理と複雑な計算の両方に強力な組み合わせを提供します。
Ray を Databricks で実行する理由
DatabricksでRayを実行すると、Databricksエコシステムの幅広さを活用でき、オープンソースのRayでは利用できないサービスや統合を使用して、データ処理と機械学習のワークフローを強化できます。 Databricks 内で Ray を実行する利点は次のとおりです。
- 統合プラットフォーム : Databricks は、Apache Spark と並行して Ray アプリケーションを実行できる統合プラットフォームを提供します。 この統合により、同じコンピュート環境内でのシームレスなデータ ETL 操作、効率的なデータ転送、および強力な並列コンピューティングがサポートされます。
- ガバナンスと制御 :Unity Catalog を使用して、すべてのデータアセット、ファイル、モデルなどに対して、リネージトラッキング、データバージョニング、アクセス制御のメリットを享受し、コンプライアンスとセキュリティを確保します。
- インフラストラクチャ管理 : Databricks Terraform Provider や Databricks Asset Bundle などのインフラストラクチャ ツールを利用してクラスターとジョブを管理し、運用の効率化とスケーラビリティを確保します。
- Managed Ray クラスター : Ray クラスターは、実行中の Apache Spark クラスターと同じ実行環境で管理されます。 これにより、スケーラビリティ、信頼性、使いやすさが確保され、複雑なインフラストラクチャのセットアップが不要になります。
- モデルサービング and モニタリング : Ray Train でトレーニングされたモデルを Mosaic AI Model Serving に接続し、高可用性と低レイテンシのデプロイを実現します。 さらに、レイクハウスモニタリングを使用して、モデルの予測品質とドリフトを追跡し、一貫したパフォーマンスを確保します。
- ML開発の強化 : フルマネージド Databricks MLflow サービスと統合してモデル開発を追跡し、エクスペリメントの管理と Ray アプリケーション全体の再現性を促進します。
- 自動化されたワークフロー : Databricks Jobs を使用してプロセスを自動化し、運用を合理化し、手動の介入を減らす本番運用に対応したパイプラインを作成します。
- コード管理とコラボレーション : Databricks Git フォルダーを使用してコードを効率的に管理し、シームレスな Git 統合による Ray アプリケーション コードのバージョン管理と共同開発を可能にします。
- 効率的なデータアクセス : Ray アプリケーションを Delta Lake に接続し、Databricks の幅広いデータ統合エコシステムを活用して、Ray の機能を幅広いアプリケーションと出力に拡張します。
Ray を Databricks で実行することで、データ処理、機械学習、運用ワークフローを強化する統合エコシステムにアクセスできます。
ユースケース - 機械学習とその先
Ray は、Pythonの機能をDataFrame操作の制限を超えて拡張する汎用性の高いツールであり、高度にカスタマイズされ、特殊化された分散アルゴリズムに最適です。
機械学習とディープラーニング
Ray の機械学習ライブラリを活用して、ML ワークフローを強化します。
- ハイパーパラメーターチューニング : Ray Tune を使用してモデルのパフォーマンスを最適化し、パフォーマンスと拡張性に優れたハイパーパラメーター検索を実現します。
- Distributed ディープラーニング トレーニング : PyTorch、 TensorFlow、HuggingFace、 Kerasなどの一般的なフレームワークをサポートすることで、ディープラーニング モデルを複数のノードにスケーリングします。 コンピュータービジョンや大規模言語モデル(LLM)のモデルのトレーニングに最適です。
- 従来の機械学習 : Ray を使用して、scikit-learn や XGBoost などの一般的なライブラリで構築された従来の ML モデルのトレーニング、評価、バッチ推論を分散します。
ハイパフォーマンスコンピューティング(HPC)
RayはHPCワークロードの分散に優れており、次の用途に適しています。
- 数学的計算 :Ray Coreを使用して、物理学、ゲノミクス、金融などの分野で複雑な計算を実行し、効率的な並列処理を実現します。
- 時系列予測 : 予測モデルを拡張し、Prophet や ARIMA などの予測パッケージと並行して推定を実行します。
データ処理と特徴量エンジニアリング
Ray は、さまざまなデータ処理タスクも処理できます。
- コンピュート機能 : 複雑なコンピュート集約型特徴量エンジニアリング タスクは、Ray の分散計算アーキテクチャの恩恵を受けることができます。
- オーディオ、画像、ビデオ処理 :マルチメディアデータの処理を分散および高速化するため、音声認識、画像分類、ビデオ分析のアプリケーションに最適です。
制限
- Ray on Apache Spark は、専用アクセス モード、分離なし共有アクセス モード、およびジョブ クラスターでのみサポートされています。 Ray クラスターは、サーバレスベースのランタイムを使用してクラスターで開始することはできません。 「アクセスモード」を参照してください。
- 実行中の Ray クラスターにパッケージをインストールする
%pip
を実行すると、クラスターがシャットダウンされるため、避けてください。 代わりに、クラスターを初期化する前にライブラリをインストールしてください。 ray.util.spark.setup_ray_cluster
からの設定を上書きする統合を使用すると、Ray クラスターが不安定になる可能性があります。3rd party アプリケーションで Ray クラスター リソースをオーバーサブスクライブしないようにします。ncclInternalError: Internal check failed
のようなエラーが発生した場合は、クラスター内の GPU 間のネットワーク通信に問題があることを示しています。このエラーを解決するには、トレーニング コードに次のスニペットを追加して、プライマリ ネットワーク インターフェイスを使用します。
import os
os.environ["NCCL_SOCKET_IFNAME"] = "eth0"
このセクションの他の記事を参照してください。