Ray は、Python アプリケーションをスケーリングするためのオープンソース フレームワークです。 これには、AI に固有のライブラリが含まれており、AI アプリケーションの開発に特に適しています。 Ray on Azure Databricks を使用すると、Azure Databricks プラットフォームのすべての利点と機能を取得しながら、Ray アプリケーションを実行できます。
Ray 2.3.0 以上を使用すると、Azure Databricks を使用した Apache Spark クラスター上で Ray クラスターを作成し、Ray アプリケーションを実行できます。
チュートリアルや例を含む、Ray 上の機械学習の概要については、「Ray のドキュメント」を参照してください。 Ray と Apache Spark の統合の詳細については、「Ray on Spark API のドキュメント」を参照してください。
Ray とは
Ray は、分散型アプリケーションを最初から作成するための基本的な Python プリミティブを提供して分散システムを簡素化します。 分散システムを初めて使用する Python 開発者でも、オーケストレーション、スケジュール設定、フォールト トレランスを管理しながら、標準の Python と同じくらい簡単に使用できます。
Ray と Apache Spark は補完的なフレームワークです。 Ray は論理的な並列処理に優れており、機械学習や強化学習などの動的なコンピューティング集中型タスクを処理します。 Apache Spark はデータ並列処理に特化されており、ETL やデータ分析などのタスクに使用される大規模なデータセットを効率的に処理します。 これらを組み合わせると、データ処理と複雑なコンピューティングの両方に強力な組み合わせになります。
Ray on Azure Databricks を実行する理由
Ray on Azure Databricks を実行すると、Azure Databricks の広範なエコシステムを活用でき、オープン ソースの Ray では利用できないサービスや統合によってデータ処理と機械学習のワークフローを強化できます。 Azure Databricks で Ray を実行する利点は次のとおりです。
- 統合プラットフォーム: Azure Databricks によって、Apache Spark と共に Ray アプリケーションを実行できる統合プラットフォームが提供されます。 この統合により、シームレスなデータ ETL 操作、効率的なデータ転送、同じコンピューティング環境内での強力な並列コンピューティングがサポートされます。
- ガバナンスと制御: すべてのデータ アセット、ファイル、モデルなどについて、Unity Catalog を使用した系列の追跡、データのバージョン管理、アクセス制御を利用でき、コンプライアンスとセキュリティが確保されます。
- インフラストラクチャ管理: Azure Databricks Terraform プロバイダーや Azure Databricks アセット バンドルなどのインフラストラクチャ ツールを使用してクラスターとジョブを管理でき、効率的な操作とスケーラビリティが確保されます。
- マネージド Ray クラスター: Ray クラスターは、実行中の Apache Spark クラスターと同じ実行環境で管理されます。 これにより、インフラストラクチャの複雑なセットアップを行うことなく簡単に使用でき、スケーラビリティと信頼性も確保されます。
- Model Serving と監視: Ray Train でトレーニングされたモデルを Mosaic AI Model Serving に接続して、高可用性、低遅延のデプロイを実現します。 さらに、レイクハウス モニタリングを使用して、モデル予測の品質とドリフトを追跡し、一貫したパフォーマンスを確保します。
- 強化された ML 開発: フル マネージドの Azure Databricks MLflow サービスと統合してモデル開発を追跡し、Ray アプリケーション全体の実験管理を容易にし、再現性を促進します。
- 自動化されたワークフロー: Lakeflow ジョブを使用してプロセスを自動化し、運用を合理化し、手動による介入を減らす運用対応のパイプラインを作成します。
- コード管理とコラボレーション: Azure Databricks Git フォルダーを使用してコードを効率的に管理し、Ray アプリケーション コードのバージョン管理と共同開発のためのシームレスな Git 統合を可能にします。
- 効率的なデータ アクセス: Azure Databricks の広範なデータ統合エコシステムを利用して Ray アプリケーションを Delta Lake に接続し、Ray の機能をより広範なアプリケーションと出力に拡張します。
Ray on Azure Databricks を実行すると、データ処理、機械学習、運用ワークフローを強化する統合エコシステムにアクセスできます。
ユース ケース: 機械学習およびその他のケース
Ray は、DataFrame 操作の制限を超えて Python の機能を拡張する汎用性の高いツールであり、高度にカスタマイズされた特殊な分散アルゴリズムに最適です。
機械学習とディープ ラーニング
Ray の機械学習ライブラリを活用して、ML ワークフローを強化します。
- ハイパーパラメーターの調整: Ray Tune を使用してモデルのパフォーマンスを最適化し、パフォーマンスとスケーラビリティに優れたハイパーパラメーター検索を実現します。
- 分散型ディープ ラーニング トレーニング: 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 クラスターが不安定になる可能性があります。 サードパーティ製アプリケーションで Ray クラスター リソースを過剰にサブスクライブしないでください。 -
ncclInternalError: Internal check failed
のようなエラーが発生した場合、これは、クラスター内の GPU 間でネットワーク通信の問題が発生していることを示します。 このエラーを解決するには、次のスニペットをトレーニング コードに追加して、プライマリ ネットワーク インターフェイスを使用します。
import os
os.environ["NCCL_SOCKET_IFNAME"] = "eth0"
このセクションの他の記事を参照してください。