Ray は、スケーラブルな AI および Python アプリケーションを構築するためのオープンソースの分散コンピューティングフレームワークです。EMR Serverless Ray ワークスペースは、フルマネージドの Ray クラスターを提供し、運用上のオーバーヘッドなく Python ネイティブの分散コンピューティング、ML モデルトレーニング、推論タスクを実行できます。
Ray の概要
Ray は、Python ネイティブのオープンソース AI コンピューティングエンジンで、統合分散コンピューティングフレームワークです。並列実行、リソーススケジューリング、クラスターの自動スケーリングをカプセル化しており、AI、機械学習、および一般的な Python ワークロードを、単一のマシンから数千の GPU を持つマルチノードクラスターまでスケールできます。
Ray の統合コンピューティングフレームワークは、以下の 3 つの層で構成されます。
|
層 |
説明 |
|
Ray AI Libraries |
ML シナリオ向けの上位ライブラリのコレクションで、データ処理、モデルトレーニング、ハイパーパラメータ最適化、モデルサービングをカバーします。 |
|
Ray Core |
分散コンピューティングの中核となる層で、並列および分散 Python コードを記述するためのタスク、アクター、分散オブジェクトストアなどの基本的なプリミティブを提供します。 |
|
Ray Cluster |
1 つのヘッドノードと複数のワーカーノードで構成されるコンピューティングクラスターで、リソーススケジューリングとタスク分散を担当します。 |
Ray の詳細については、「ray.io」をご参照ください。
EMR Serverless Ray によるオープンソース Ray のエンタープライズ向け機能強化
EMR Serverless Ray ワークスペースは、フルマネージドの Ray クラスターを提供します。Ray のヘッドノードとワーカーノードをデプロイまたはメンテナンスする必要はありません。クラスターを作成した後、Ray ジョブを送信できます。
EMR Serverless Ray は、オープンソースの Ray をベースに、大規模な本番環境向けに、可観測性、弾力性、ガバナンス、AI データアクセスの 4 つの側面でオープンソース Ray のプラットフォーム機能を強化しています。
ハイブリッドスケジューリングと弾力性
-
動的スケジューリング:CPU と GPU の使用状況およびキューのバックログに基づいてリソースをスケジューリングします。GPU がアイドル状態の場合、アップストリームの同時実行性が自動的に増加し、CPU スケーリングをトリガーします。
-
秒単位の弾力性:数秒以内に数万コアを起動でき、最小の弾力性粒度は 1 コア、1 GB です。
-
Ray Data の弾力性最適化:Ray Data のデータ処理の並列性を自動的に高め、エンドツーエンドの処理性能を向上させます。
可観測性とプラットフォームガバナンス
-
集中管理されたHistory Server:Ray ジョブが停止した後も、ダッシュボード UI とランタイムログを永続的に表示できます。
-
クラスターのスナップショット比較:Ray クラスターの繰り返し起動と停止をサポートしており、過去のクラスターのスナップショットを保持して、本番環境のリソース差分を比較できます。
-
カスタムランタイム環境:フルマネージドモードでもカスタムイメージをサポートしており、ビジネスでカスタマイズされたシステムライブラリとシームレスに互換性があります。
-
モニタリング:ノードレベルのメトリクスは Cloud Monitor の Prometheus およびアラートシステムと統合されており、NVIDIA Nsight の GPU プロファイリングが提供されます。
セキュリティと高可用性
-
エンタープライズレベルのセキュリティ認証:Kerberos 認証と Ranger 認可システムとのネイティブ統合をサポートします。
-
多層的なフォールトトレランスとバックプレッシャースケジューリング:Ray のヘッドノードはフォールトトレランスをサポートします。ディスクのウォーターマーク検出に対応しており、ウォーターマークに基づいた優先スケジューリングとバックプレッシャーメカニズムを備えています。
-
自己修復:ウォーターマークに負荷がかかるとエラスティックスケーリングをプロアクティブにトリガーし、GPU の障害を検出してノードを自動的に移行します。
AI と高速データアクセス
-
マルチモーダルLLMの呼び出し:ray.ai パッケージは AI 関数をサポートしており、単一の関数を通じてマルチモーダルデータで LLM を直接呼び出すことができます。
-
高度に最適化されたオペレーターマーケットプレイス:Daft のマルチモーダルオペレーター (ビデオフレーム抽出、画像エンコーディング・デコーディング、ビデオサンプリングなど) を提供し、オープンソースに比べて数倍のパフォーマンスを発揮します。
-
高速データアクセス:Ray と Cache を組み合わせたアーキテクチャを使用し、Ray のトレーニングシナリオにおけるデータスループットを大幅に向上させます。
製品アーキテクチャ
EMR Serverless Ray のアーキテクチャは、トレーニング、マルチモーダルな具現化された知能と自動運転パイプライン、および推論サービスのシナリオを対象としています。CPU と GPU の異種リソースを統一的にスケジューリングするため、マルチエンジンリソースプーリング、エラスティックなリソースオーケストレーション、エンタープライズレベルのセキュリティ機能を提供します。
このアーキテクチャは、上から順に以下の層で構成されます。
|
層 |
説明 |
|
ビジネスシナリオ |
トレーニング、マルチモーダルな具現化された知能と自動運転パイプライン、および推論サービス。 |
|
マルチエンジンリソースプーリング |
Ray エンジンは Ray Cluster/Job、Ray Serve、History Server を提供し、Spark エンジンは構造化データ処理を担います。両者は同じリソースプールを共有します。 |
|
リソースプールのハイブリッドスケジューリング |
単一クラスター内でのクロスキュースケジューリングをサポートしており、CPU と GPU リソースがパイプラインで並列処理されます。CPU キューグループは Ray のヘッドノード、データ前処理、後処理をホストし、GPU キューグループはモデル推論、ディープラーニング、特徴抽出、その他の GPU アクセラレーションタスクをホストします。 |
|
ストレージとマルチモーダルデータ |
OSS、CPFS、DLF、Lance などのストレージシステムに接続し、テキスト、画像、ビデオ、オーディオのマルチモーダルデータをサポートします。 |
|
エンタープライズレベルのセキュリティ |
すべての層にまたがり、Kerberos 認証、Ranger 認可、フルマネージドのセキュリティ分離を提供します。 |
技術アーキテクチャ
EMR Serverless Ray は、エラスティックな CPU および GPU リソースをベースに、マネージド型の分散 AI およびデータ処理機能を提供します。技術アーキテクチャを以下の図に示します。
各コンポーネントの説明は以下のとおりです。
|
コンポーネント |
説明 |
|
ユーザーアクセス |
Python SDK および API、または Ray ジョブ CLI を通じてジョブを送信および管理します。 |
|
適用シナリオ |
モデルトレーニング (ML とモデルのファインチューニング)、マルチモーダルデータパイプライン (具現化された知能と自動運転)、オンライン推論 (リアルタイムのモデルサービング)、およびデータ処理 (ETL とバッチ推論)。 |
|
EMR Serverless ワークスペース |
マネージド型の Ray を提供し、クラスターとジョブのライフサイクル管理を担当します。Ray エンジンには、Ray Data (データ前処理とバッチ推論)、Ray Train (トレーニングとファインチューニング)、Ray Serve (モデルサービングとレプリカの自動スケーリング) が含まれます。1 つのワークスペースで複数の独立した Ray クラスターを実行できます。クラスターは Ray Core 上に構築され、Ray のヘッドノード (クラスターの調整と自動スケーリング)、CPU ワーカーノード (データ処理)、GPU ワーカーノード (トレーニングと推論) で構成され、CPU と GPU のノードグループとして編成されます。 |
|
リソースオーケストレーション |
共有リソースプールは、リソースキューを通じてエラスティックな CPU および GPU のキャパシティを提供します。CPU リソースは、データ準備と後処理のために Ray のヘッドノードと CPU ワーカーノードをホストします。GPU リソースは、リソース要件に基づいてスケジューリングされる Ray の GPU ワーカーノードグループをホストします。 |
|
ストレージとマルチモーダルデータ |
共有データ基盤は、構造化データ、テキスト、画像、ビデオ、オーディオ、およびベクトル埋め込みをサポートします。OSS はオブジェクトストレージとデータレイクを、CPFS は高性能な共有ファイルストレージを、DLF はデータカタログとメタデータによるマルチモーダルデータ管理を、Lance はマルチモーダルデータテーブルとベクトルを提供します。 |
|
管理と運用 |
ジョブのライフサイクル (送信、モニタリング、停止) と Serve アプリケーション (デプロイ、更新、表示) を管理します。リソースキューを通じてキャパシティとスケーリングポリシーを設定します。メトリクスとログ、Ray ダッシュボード (リアルタイムのクラスターとジョブのステータス)、および Ray 履歴インターフェイス (過去のジョブの表示) を通じてランタイムの状態を監視します。 |
|
エンタープライズレベルのセキュリティ |
RAM とロールによる ID およびアクセス管理、ロールと権限によるワークスペースのアクセス制御、VPC ネットワーク接続によるネットワークガバナンスを実装します。 |
ユースケース
-
Pythonアプリケーションの並列化:シミュレーション、クローラー、バッチ処理の Python プログラムを並行して実行されるタスクに分割し、マルチコア、マルチマシン、または異種の CPU/GPU リソースに分散させます。
-
マルチモーダルデータの処理:Ray Data を使用して、構造化および非構造化データを分散して読み込み、変換、ストリーミングします。画像、ビデオ、オーディオ、テキストに適用可能です。
-
LLMと生成AI:データ準備、トレーニング、ファインチューニング、ハイパーパラメータ最適化、オンラインまたはオフライン推論のデプロイを含む、エンドツーエンドの LLM、マルチモーダルモデル、および RAG ワークフローをサポートします。
-
分散モデルトレーニングとファインチューニング:Ray Train を使用して、マルチノード、マルチ GPU のトレーニングをオーケストレーションし、LLM のモデル並列処理や一般的なトレーニングフレームワークとの統合をサポートします。
-
バッチオフライン推論:大規模なデータセットに対してオフライン予測を実行し、同じパイプライン内で CPU と GPU を組み合わせてアクセラレーターの利用率を向上させ、コストを抑制します。
-
オンラインモデルサービング:Ray Serve を使用して推論 API とビジネスロジックをデプロイし、マルチモデルのオーケストレーション、オンラインおよびバッチ推論、独立したスケーリング、多数のモデルの本番環境へのデプロイをサポートします。
はじめに
EMR Serverless Ray で Ray を使用するには、以下の手順に沿って操作してください。
-
Ray クラスターを作成して起動し、ジョブの送信に必要なアドレスとトークンを取得します。詳細については、「Ray クラスターの管理」をご参照ください。
-
対話型開発、SDK、または CLI を使用して Ray ジョブを送信します。詳細については、「Ray クイックスタート」をご参照ください。