「Rebalancer」オープンソース化:汎用性と高性能を両立する割り当て問題解決ライブラリの全貌
Rebalancerの概要と設計哲学
Metaは、9年以上にわたり社内のリソース割り当て問題解決に利用してきた汎用性の高い高性能割り当て問題解決ライブラリ「Rebalancer」のオープンソース化を発表しました。Rebalancerは、「オブジェクトをビンに割り当てる」という一般的な課題に対し、特定の目標を最適化しつつ、一連の制約を満たす方法を提供するものです。このライブラリは、システム運用の現場で生じる実世界のポリシーを厳密な数理最適化の定式化に変換することの難しさ(ユーザビリティ)と、NP困難な問題に起因するスケーラビリティの課題という、2つの主要な問題に対処するために設計されています。
Rebalancerの設計哲学の中核は「関心の分離」にあります。これは、割り当て問題の指定方法、メモリ内での効率的な格納方法、解決方法、そしてデバッグ方法を明確に分離することで実現されています。この分離アプローチは、ライブラリの使いやすさ、スケーラビリティ、および拡張性にとって不可欠であるとされています。問題を記述するための高レベルな言語を提供し、オブジェクト、ビン、制約、目的という概念を用いて、抽象度の高い記述を可能にします。例えば、サーバーのメモリ容量やタスクに必要なメモリ量といった「ディメンション」、オブジェクトのグループ化を示す「パーティション」、ビンの階層構造を示す「スコープ」といったモデリング構成要素が導入されています。
技術的深掘り:表現グラフ、アルゴリズム、スケーラビリティ
Rebalancerは、指定された割り当て問題を「表現グラフ(expression graph)」と呼ばれる有向非巡回グラフに変換します。この表現グラフは、問題の仕様を効率的に表現し、最適化アルゴリズムの基盤となります。このグラフ表現は、混合整数計画法(MIP)の問題定式化でよく見られるO(|objects|×|bins|)の複雑さに対し、O(|objects|+|bins|)というスケーラブルなサイズを実現しています。
問題解決のために、Rebalancerは主に2つの異なる技術を提供します。
-
局所探索ヒューリスティック (Local Search Heuristic): 任意の初期割り当てから開始し、目的関数を改善する有効な「移動」(例:オブジェクトを別のビンに移動する、2つのオブジェクトを交換するなど)を繰り返し実行します。これは大MIPモデルに比べ非常に大規模な問題にもスケーラブルに対応できますが、必ずしも大域的最適解を保証するものではありません。
-
最適ソルバー (Optimal Solver) / 混合整数計画法 (MIP): 表現グラフをFICO Xpress、Gurobiなどの商用ソルバーや、HiGHSなどのオープンソースソルバーに入力可能な混合整数計画法の式セットに変換します。このモードでは、十分な時間があれば最適解を見つけることが保証されますが、問題が非常に大規模になるとスケーラビリティが課題となることがあります。特に、ビンの利用率をバイナリ決定変数(オブジェクトごとに1つ)の重み付き合計で表現する場合、MIPモデルが非常に大きくなる可能性があります。
RebalancerのコアソルバーはC++で記述されており、マルチスレッド並列処理を伴う単一プロセスで実行されます。現在、約100万個のオブジェクトとコンテナを合理的に処理できる能力を持っています。また、新しい解決アルゴリズムや表現への拡張が容易であるように設計されています。
Metaにおける実践的活用と開発者へのインサイト
Rebalancerは、過去10年近くにわたりMetaのインフラストラクチャ全体で活用され、以下のような多岐にわたるリソース割り当て問題を解決してきました。
- ハードウェア配置: データセンター内のラック配置を最適化し、電力や冷却の制約を尊重。
- サービス配置: サーバーをサービスに割り当て、障害耐性やパッキング効率を最適化。
- タスク配置: タスクをサーバーに割り当て、リソース制限を遵守しつつ、障害耐性やコロケーション要件を最適化。
- トラフィックルーティング: 数十億人のユーザーからのトラフィックを分散型データセンターにルーティングし、ネットワーク遅延とデータセンター負荷を最適化。
- オンラインMLトレーニングワークロードのリージョン間バランシング。
さらに、Rebalancerには「Rebalancer Explorer」という強力なデバッグツールが付属しています。これは、問題のオブジェクト、コンテナ、制約、目標を閲覧し、ソリューションがそれらに対してどのように評価されるかを確認できるウェブUIです。ExplorerのバックエンドはC++ Thriftサービスで、JSONプロキシを介してHTTPでAPIを公開しており、Docker Composeを利用して簡単にセットアップできます。
開発者・エンジニア視点での考察
-
Rebalancerが提供する高レベルな仕様言語とモデリング構成要素(ディメンション、パーティション、スコープ)は、実世界の複雑な割り当て問題を抽象化し、ビジネスロジックを直接的に表現することを可能にします。これにより、従来の数理最適化手法で必要とされた高度な数学的変換作業が軽減され、システム開発者がポリシーを実装する際の障壁を大幅に低減するでしょう。
-
局所探索ヒューリスティックと最適ソルバー(MIP)という2つの異なる解決アプローチを内包していることは、開発者にとって大きな柔軟性を提供します。MIPが最適解を保証する一方で、スケーラビリティに課題がある大規模な問題に対しては、高速で実用的な解を提供する局所探索を選択できるため、問題の規模と要求される最適性レベルに応じて最適な戦略を適用することが可能です。
-
Rebalancer Explorerのような視覚的なデバッグツールが提供されていることは、複雑な最適化問題の理解と改善において極めて重要です。問題定義や制約が意図通りに機能しているか、または解が期待通りの結果をもたらしているかをグラフィカルに確認できることで、開発者はアルゴリズムの挙動を迅速に分析し、イテレーションサイクルを短縮し、よりロバストなソリューションを構築できるようになります。
Source / 元記事
この記事について
この記事は、公開されているニュース、論文、公式発表、RSSフィードなどをもとに、AIが要約・補足調査・考察を行って作成しています。
元記事の完全な翻訳・逐語的な要約ではなく、AIによる背景説明や開発者向けの考察を含みます。
重要な技術仕様・価格・提供状況などは、必ず元記事または公式情報をご確認ください。


