概要
- Monarch は分散型PyTorchワークフローを単一コントローラで簡素化する新フレームワーク
- プログラマは Python的な記述 でクラスタ全体をローカルのように制御可能
- メッシュAPI や 分散テンソル、 RDMA転送 などを提供
- 障害回復 や高度な分散処理も直感的に実装可能
- PyTorch・RLフレームワーク との統合事例も紹介
Monarch: 単一コントローラによる分散PyTorchワークフロー
- 機械学習ワークフローの 非同期性・動的性・障害対応 の複雑化
- 従来のPyTorchは HPC型マルチコントローラ(SPMD) モデル依存
- 各ノードがローカルな状態のみで判断するため、 実装が困難
- 単一コントローラモデル への転換で、分散プログラミングを容易化
- Pythonのクラス・関数・ループ・タスク・Future で分散アルゴリズムを表現可能
Monarchの主な特徴
-
クラスタを配列のように操作
- ホスト、プロセス、アクターを メッシュ として管理
- メッシュやそのスライスに対し シンプルなAPI で操作
- 分散・ベクトル化はMonarchが自動で処理
-
進化的な障害処理
- コードは障害が無い前提で記述可能
- 障害発生時はデフォルトでプログラム全体を停止(例外未処理時と同様)
- 必要に応じて細粒度な障害回復を追加可能(Pythonの例外ハンドリング)
-
制御とデータの分離
- コントロールプレーン (メッセージ)と データプレーン (RDMA転送)を分割
- GPU間で直接メモリ転送を実現
-
ローカルのような分散テンソル
- PyTorchとシームレス統合
- テンソル演算はローカル風だが、裏側で大規模クラスタ全体に分散
プログラミングモデルとAPI
-
プロセスメッシュ・アクターメッシュ
- リソースを多次元配列(メッシュ)として管理
- NumPyやPyTorchの配列プログラミング感覚で操作
- 例:1GPU=1プロセス、アクターを各プロセスに配置
- ローカル開発時も同じAPIで動作
-
高度API:テンソルエンジン・RDMAバッファ
- クラスタ全体を1台のマシンのように扱う分散テンソル
- RDMAバッファAPIで高スループットなデータ転送
コード例
-
シンプルなアクターの例
from monarch.actor import Actor, endpoint, this_host procs = this_host().spawn_procs({"gpus": 8}) class Example(Actor): @endpoint def say_hello(self, txt): return f"hello {txt}" actors = procs.spawn("actors", Example) hello_future = actors.say_hello.call("world") print(hello_future.get())- 8GPU上でアクターを生成、コントローラが制御
-
メッシュのスライス操作
- メッシュを部分的に操作し、異なるメソッドを呼び分け
- 例:gpus=0~3でhello、gpus=4~7でbye
-
障害回復の例
- Pythonのtry-exceptでリモート例外も自然にハンドリング
Monarchのバックエンド構成
- Pythonフロントエンド :PyTorchやJupyterとの統合容易
- Rustバックエンド :高性能・スケーラブルな実装
- hyperactor :低レベル分散アクターシステム
- hyperactor_mesh :大規模メッシュ向けベクトル化アクター
- スケーラブルメッセージング
- マルチキャストツリーとマルチパートメッセージで効率化
- コントロールプレーンとデータプレーンの分離で高速化
事例紹介
強化学習(Reinforcement Learning, RL)
-
RLは 大規模分散ワークフロー の典型例
-
生成器・トレーナー・推論・報酬パイプラインを メッシュ で表現
-
オーケストレーションは通常のPythonスクリプトとして記述
-
RDMAによる直接データ転送 で効率的なパイプライン構築
-
VERL Volcano Engine Reinforcement Learning (VERL)
- MonarchとVERLを統合し、Qwen-2.5-7B数理モデルを大規模GPUクラスタで学習
- Megatron-LMで16〜2048GPUまでスケール、安定動作・数値的なパリティを実証
- 今後、VERL向けMonarch統合のOSS化を予定
-
TorchForge
- MonarchネイティブなPyTorch RLフレームワーク
- 研究者が擬似コード感覚でアルゴリズムを表現可能
このように Monarch は、分散機械学習ワークフローの複雑性を大幅に低減し、今後のAIアプリケーション開発の基盤となることが期待される。