Meta tiene Rebalancer de código abierto, una biblioteca de C++ con una interfaz de Python para resolver problemas de asignación. Decide qué objetos van a qué contenedores según las restricciones y los objetivos. Según el artículo de ingeniería de Meta, Rebalancer se ha ocupado de la asignación de recursos en Meta durante más de 9 años. La versión viene con Apache 2.0 e incluye documentación, un paquete PyPI y una interfaz de usuario de depuración

llamada Rebalancer Explorer.

¿Se puede implementar? ¿Sí?. pip install rebalancer instala la versión 1.0.4 para Python 3.12+, con ruedas prediseñadas para Linux x86-64 y macOS 14+ ARM64. También existen los paquetes .deb, .rpm y Homebrew. PyPI sigue clasificando

el proyecto como Alpha.

¿Qué problema resuelve Rebalancer?

Los problemas de asignación aparecen en toda la pila de Meta. Los racks van a los centros de datos, los servidores a los servicios, las tareas a los servidores y el tráfico de usuarios a los centros de datos. Meta nombra dos obstáculos: usabilidad y escalabilidad. Los ingenieros se esfuerzan por convertir las políticas en fórmulas precisas, y muchos problemas son difíciles de resolver y son demasiado grandes para

quienes los solucionan comercialmente.

La respuesta de Rebalancer es separar la forma en que se especifica un problema de la forma en que se resuelve. El diseño se detalla en el documento OSDI 2024, titulado Optimización de la asignación de recursos en

centros de datos de hiperescala.

Cómo funciona la capa de especificación

El lenguaje de especificaciones tiene 3 capas:

  • Construcciones de modelado: dimensiones (atributos como la CPU o el almacenamiento), particiones (grupos de objetos), ámbitos (grupos de contenedores) y utilización.
  • API de expresiones: agregue la utilización con SUM o MAX, o transfórmela con operaciones como SQUARE.
  • API de especificaciones: docenas de objetivos y restricciones predefinidos, que se enumeran en la documentación.

El ejemplo de Meta modela las tareas como objetos, los servidores como contenedores y los racks como un ámbito. Un CapacitySpec limita la CPU y el almacenamiento por servidor. Un GroupCountSpec conserva 1 tipo de trabajo por rack. Un BalanceSpec equilibra la utilización de cada servidor

en ambas dimensiones.

Un gráfico de expresiones, dos solucionadores

Rebalancer compila la especificación en un gráfico de expresiones acíclicas dirigidas. Los nodos hoja contienen los valores de utilización; los nodos de agregación y transformación se encuentran por encima de ellos. Los usuarios proporcionan una asignación inicial y una condición de parada. Las restricciones que la asignación inicial ya infringe se convierten en objetivos de alta prioridad.

Solucionador óptimo: el gráfico se traduce a un programa de enteros mixtos para FICO Xpress, Gurobi o HighS. Modelos de agregación variable y reducción por ruptura de simetría. El tamaño del modelo en el peor de los casos sigue siendo O (objetos × contenedores). Los mayores problemas de Meta son demasiado grandes para cualquier

solucionador de MIP.

Búsqueda local: este solucionador funciona directamente en el gráfico de expresiones. Explora los movimientos de objetos a otras agrupaciones, con una vecindad de O (objetos más compartimentos) en el peor de los casos. A continuación, aplica el mejor candidato que no rompa ninguna restricción. La evaluación se realiza en paralelo, alcanzando millones de evaluaciones por segundo, y el espacio de búsqueda se reduce

.

Meta usa la búsqueda local para casi todos los problemas grandes y el MIP para los pequeños y medianos, y a menudo crea prototipos primero con MIP.

Números de producción en Meta

  • Aproximadamente 40 millones de problemas de asignación se resuelven por día, en más de 30 formulaciones únicas.
  • Los P99 resuelven un tiempo de 12 segundos en 265 000 objetos y 3,2 000 contenedores.
  • Los problemas con más de 1 millón de objetos y 5000 compartimentos tienen una media de 171 segundos en más de 3,4 000 ejecuciones.

Los mejores casos de uso de Rebalancer

  1. Colocación de fragmentos, tareas o contenedores en un clúster: asigne trabajo a los servidores por debajo de los límites de CPU y memoria mientras distribuye las réplicas en los racks. El Shard Manager y RAS de Meta
  2. siguen este patrón.
  3. Equilibrar el tráfico y las cargas de trabajo entre regiones: dirige el tráfico de los usuarios o los trabajos a los centros de datos, intercambiando la latencia con la carga. Taiji hace esto para el tráfico periférico, y Meta equilibra el entrenamiento de aprendizaje automático por prioridad.
  4. Asignación operativa fuera de la infraestructura: asigne las entradas de soporte a los ingenieros, las reuniones a las salas o los escritorios a las personas según las reglas de capacidad. Meta ha hecho las 3
  5. .

Depuración con Rebalancer Explorer

Los modeladores de Meta dedicaban la mayor parte de su tiempo a depurar el comportamiento de los solucionadores. Rebalancer Explorer es una interfaz de usuario web dockerizada creada para esto. Muestra las restricciones vinculantes, los efectos de relajación y la razón por la que un objeto cayó en una papelera

.

Explicador interactivo

Rebalancer vs Closest Open Source Alternatives

FeatureMeta RebalancerGoogle OR-ToolsTimefold Solver (Community)
LicenseApache 2.0Apache 2.0Apache 2.0 (Enterprise edition is commercial)
Core languageC++C++Java
APIsC++, PythonC++, Python, Java, C#Java, Kotlin
FocusGeneric assignment (objects to bins)Broad suite: CP-SAT, LP, MIP wrappers, routing, packing, assignmentPlanning: routing, rostering, scheduling, task assignment
Local searchYes, parallel, on expression graphYes, in routing solver (guided local search, simulated annealing, tabu)Yes, core engine (tabu, simulated annealing, late acceptance)
MIP backendsFICO Xpress, Gurobi, HiGHSWrappers for commercial and open source MIP solversNot used
Debugging UIRebalancer Explorer (Docker)Not listed in READMEBenchmarker; score analysis in commercial editions
Installpip install rebalancerpip install ortoolsMaven, JDK 21+

OR-Tools covers more problem classes, and Timefold targets JVM scheduling and routing. Rebalancer’s edge is one assignment spec that runs on both local search and MIP.

Key Takeaways

  • Rebalancer models any assignment problem as objects, bins, constraints and objectives.
  • Specs compile into an expression graph solved by local search or a MIP solver.
  • MIP backends include FICO Xpress, Gurobi and open source HiGHS.
  • Meta runs about 40M problems a day; P99 is 12s on 265k objects and 3.2k bins.
  • Apache 2.0, C++ and Python APIs, installable from PyPI today.


Check out the Paper, GitHub Repo and Technical details. All credit goes to the researcher of this project. Also, feel free to follow us on Twitter and don’t forget to join our 150k+ML SubReddit and Subscribe to our Newsletter. Wait! are you on telegram? now you can join us on telegram as well.

[Sponsored] The web is the one API most agents are missing. Databases, calendars and repos have APIs. The open web mostly doesn’t. The TinyFish MCP server gives any MCP client four tools: TinySearch, TinyFetch (full pages as markdown, JavaScript included), TinyBrowser for logins and forms, and TinyAgent for multi-step jobs. Search and Fetch are free.

The post Meta AI Open-Sources Rebalancer: A C++ Assignment Solver That Runs About 40 Million Placement Problems a Day appeared first on MarkTechPost.

¿Tiene un proyecto de software o plataforma SaaS en mente?

Hable directamente con nuestros arquitectos de software en SoftAndino. Le brindamos asesoría técnica y cotización inmediata sin compromiso.