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
¿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
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
- 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 siguen este patrón.
- 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.
- 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 .
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
.