Databricks の Ray とは何ですか?

Rayは、 Pythonアプリケーションをスケーリングするためのオープンソース フレームワークです。 AI ワークロードに特化したライブラリが含まれているため、AI アプリケーションの開発に特に適しています。 Databricks 上の Ray を使用すると、Databricks のすべてのプラットフォームの利点と機能を活用できると同時に、Ray アプリケーションを実行できます。

Ray 2.3.0 以降では、Ray クラスターを作成し、Databricks を使用して Apache Spark クラスター上で Ray アプリケーションを実行できます。

チュートリアルや例など、Ray での機械学習の使用を開始する方法については、 Ray のドキュメントを参照してください。 Ray と Apache Spark の統合の詳細については、 Ray on Spark API のドキュメントを参照してください。

このセクションの他の記事を参照してください。

レイとは?

Ray は、分散アプリケーションをゼロから作成するための基本的な Python プリミティブを提供することで、分散システムを簡素化します。 分散システムを初めて使用する Python 開発者にとって、オーケストレーション、スケジューリング、フォールト トレランスを管理しながら、標準の Python と同じ使いやすさが提供されます。

Ray と Apache Spark は補完的なフレームワークです。 Ray は論理的並列処理に優れており、機械学習や強化学習などの動的でコンピュート集約型のタスクを処理します。 Apache Spark はデータ並列処理に特化しており、ETL やデータ分析などのタスクのために大規模なデータセットを効率的に処理します。 これらを組み合わせることで、データ処理と複雑な計算の両方に強力な組み合わせが提供されます。

Databricks で Ray を実行する理由は何ですか?

Databricks で Ray を実行すると、Databricks エコシステムの幅広い機能を活用でき、オープンソースの Ray では利用できないサービスや統合によってデータ処理と機械学習のワークフローを強化できます。 Databricks 内で Ray を実行する利点は次のとおりです。

  • 統合プラットフォーム: Databricks は、Apache Spark と並行して Ray アプリケーションを実行できる統合プラットフォームを提供します。 この統合により、シームレスなデータETL操作、効率的なデータ転送、および同じコンピュート環境内での強力な並列コンピューティングがサポートされます。

  • ガバナンスと制御: Unity Catalog使用すると、すべてのデータアセット、ファイル、モデルなどに対してリネージ追跡、データのバージョン管理、アクセス制御のメリットが得られ、ガバナンスとセキュリティが確保されます。

  • インフラストラクチャ管理: Databricks Terraform Provider や Databricks Asset Bundles などのインフラストラクチャ ツールを使用してクラスターとジョブを管理し、効率的な操作とスケーラビリティを確保します。

  • マネージド Ray クラスター: Ray クラスターは、実行中のApache Sparkクラスターと同じ実行環境で管理されます。 これにより、スケーラビリティ、信頼性、使いやすさが保証され、複雑なインフラストラクチャのセットアップは必要ありません。

  • モデルサービングとモニタリング: Ray トレーニングでトレーニングしたモデルをMosaic AI Model Servingに接続して、高可用性と低レイテンシのデプロイメントを実現します。 さらに、レイクハウス モニタリングを使用してモデルの予測品質とドリフトを追跡し、一貫したパフォーマンスを確保します。

  • 強化されたML開発: フルマネージドDatabricks MLflowサービスと統合してモデル開発を追跡し、Ray アプリケーション全体でのエクスペリメント管理と再現性を促進します。

  • 自動化されたパイプライン: Databricksパイプラインを使用してプロセスを自動化し、本番運用対応のパイプラインを作成して操作を効率化し、手動による介入を減らします。

  • コード管理とコラボレーション: Databricks Git フォルダーを使用してコードを効率的に管理し、Ray アプリケーション コードのバージョン管理と共同開発のためのシームレスな Git 統合を実現します。

  • 効率的なデータ アクセス: Ray アプリケーションを Delta Lake に接続し、Databricks の広範なデータ統合エコシステムを活用して、Ray の機能をより幅広いアプリケーションと出力に拡張します。

Databricks で Ray を実行すると、データ処理、機械学習、運用ワークフローを強化する統合エコシステムにアクセスできるようになります。

ユースケース - 機械学習とその先

Ray は、DataFrame 操作の制限を超えて Python の機能を拡張する多目的ツールであり、高度にカスタマイズされた特殊な分散アルゴリズムに最適です。

機械学習とディープラーニング

Ray の機械学習ライブラリを活用して ML ワークフローを強化します。

  • ハイパーパラメータチューニング: パフォーマンスが高くスケーラブルなハイパーパラメータ検索のために Ray Tune を使用してモデルのパフォーマンスを最適化します。

  • 分散型ディープラーニング トレーニング: PyTorch、TensorFlow、HuggingFace、Keras などの一般的なフレームワークをサポートし、複数のノードにわたってディープラーニング モデルを拡張します。 コンピューター ビジョンや大規模言語モデル (LLM) のモデルのトレーニングに最適です。

  • 従来の機械学習 : RayML を使用して、Scikit-Learn や などの一般的なライブラリで構築された従来の モデルのトレーニング、評価、バッチ推論を分散します。XGBoost

ハイパフォーマンスコンピューティング(HPC)

RayはHPCワークロードの分散に優れているため、次の用途に適しています。

  • 数学的計算: Ray Core を使用して、物理学、ゲノミクス、金融などの分野で複雑な計算を実行し、効率的な並列処理を実現します。

  • 時系列予測: 予測モデルを拡張し、Prophet や ARIMA などの予測パッケージと同時に推定を実行します。

データ処理と特徴エンジニアリング

Ray はさまざまなデータ処理タスクも処理できます。

  • コンピュート機能: 複雑なコンピュート集約型機能エンジニアリング タスクは、Ray の分散計算アーキテクチャの恩恵を受けることができます。

  • オーディオ、画像、およびビデオ処理: マルチメディア データの処理を分散および高速化するため、音声認識、画像分類、およびビデオ分析のアプリケーションに最適です。

制限事項

  • Apache Spark 上の Ray は、単一ユーザー (割り当て済み) アクセス モード、分離なしの共有アクセス モード、およびジョブ クラスターのみでサポートされます。 Ray クラスターは、サーバーレス ベースのランタイムを使用する クラスター 上で開始できません。

  • 実行中の Ray クラスターにパッケージをインストールするには、 %pip実行しないでください。クラスターがシャットダウンします。 代わりに、クラスターを初期化する前にライブラリをインストールしてください。

  • ray.util.spark.setup_ray_clusterからの構成をオーバーライドする統合を使用すると、Ray クラスターが不安定になる可能性があります。 サードパーティ アプリケーションで Ray クラスター リソースを過剰にサブスクライブしないようにします。

  • ncclInternalError: Internal check failedのようなエラーが発生した場合は、クラスター内の GPU 間のネットワーク通信に問題があることを示しています。 このエラーを解決するには、トレーニング コードに次のスニペットを追加して、プライマリ ネットワーク インターフェースを使用します。

import os
os.environ["NCCL_SOCKET_IFNAME"] = "eth0"