AB
AiBoss
ニュース

Meta AI 开源 Rebalancer:C++ 分配求解器日处理约 4000 万个放置问题

Meta 开源了 Rebalancer,一个带 Python 接口的 C++ 分配问题求解库,用于在约束与目标下决定对象放入哪些容器。据 Meta 工程博客,它已在 Meta 内部承担资源分配超过 9 年,日处理约 4000 万个分配问题。

核心事实

Meta 已开源 Rebalancer,一个带 Python 接口的 C++ 库,用于求解分配问题,即在约束与目标下决定哪些对象放入哪些容器。据 Meta 工程博客,Rebalancer 已在 Meta 内部承担跨业务的资源分配超过 9 年。该版本以 Apache 2.0 许可发布,附带文档、PyPI 包以及名为 Rebalancer Explorer 的调试界面。

安装方式为 pip install rebalancer,对应 v1.0.4,要求 Python 3.12 及以上,提供 Linux x86-64 与 macOS 14+ ARM64 的预编译 wheel,另有 .deb、.rpm 与 Homebrew 包。PyPI 仍将该项目标记为 Alpha。具体支持范围与版本请以官网当前信息为准。

背景与影响

分配问题贯穿 Meta 的技术栈:机架放入数据中心、服务器分配给服务、任务分配给服务器、用户流量导向数据中心。Meta 指出两个障碍:可用性与可扩展性——工程师难以把策略转成精确公式,而许多问题属于 NP-hard,规模超出商用求解器能力。Rebalancer 的思路是把「如何描述问题」与「如何求解问题」分离,设计细节见 OSDI 2024 论文《Optimizing Resource Allocation in Hyperscale Datacenters》。

规格语言分三层:建模构造(维度、分区、作用域、利用率)、表达式 API(SUM、MAX 聚合与 SQUARE 等变换)、以及规格 API(数十个预定义目标与约束)。规格会被编译成有向无环表达式图,随后由两条路径求解:最优求解器把图翻译成混合整数规划,后端支持 FICO Xpress、Gurobi 与 HiGHS;局部搜索求解器直接在表达式图上探索对象迁移,评估并行化,并做搜索空间剪枝。Meta 称几乎所有大规模问题使用局部搜索,中小规模使用 MIP。

据 Meta 披露,其生产环境每天求解约 4000 万个分配问题,覆盖 30 多种不同建模;在 26.5 万个对象、3200 个容器上 P99 求解时间为 12 秒;超过 100 万对象、5000 容器的问题平均耗时 171 秒,累计 3400 多次运行。这些数字来自 Meta 自身披露,尚未获独立验证。

限制与来源

Rebalancer 聚焦通用分配场景,而 Google OR-Tools 覆盖更多问题类别,Timefold 面向 JVM 调度与路由。其差异化在于同一份分配规格可同时跑局部搜索与 MIP。上述信息来自 MarkTechPost 报道及 Meta 工程博客,本文未做实测,性能与可用性以官方文档为准。