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
制限事項
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"