Meta AI met « Rebalancer » en open source : un solveur de problèmes d’affectation en C++ qui traite environ 40 millions de problèmes d’affectation par jour

L’écosystème de l’intelligence artificielle continue sa progression à un rythme soutenu.

Meta AI met « Rebalancer » en open source : un solveur de problèmes d’affectation en C++ qui traite environ 40 millions de problèmes d’affectation par jour

Meta a open-sourcé Rebalancer, une bibliothèque C++ dotée d’une interface Python destinée à résoudre des problèmes d’affectation. Elle détermine quels objets sont affectés à quels compartiments en fonction de contraintes et d’objectifs. Selon l’article publié par l’équipe d’ingénierie de Meta, Rebalancer gère l’allocation des ressources au sein de Meta depuis plus de 9 ans. Cette version est distribuée sous licence Apache 2.0 et comprend une documentation, un paquet PyPI ainsi qu’une interface utilisateur de débogage appelée Rebalancer Explorer.

Précisons, est-il déployable ? Oui. La commande « pip install rebalancer » installe la version 1.0.4 pour Python 3.12 et versions ultérieures, avec des paquets « wheel » précompilés pour Linux x86-64 et macOS 14 et versions ultérieures (ARM64). Des paquets .deb, .rpm et Homebrew sont également disponibles. PyPI classe toujours le projet en version Alpha.

Les problèmes d’affectation se posent à tous les niveaux de la pile technologique de Meta. Les racks sont affectés aux centres de éléments, les serveurs aux services, les tâches aux serveurs et le trafic utilisateur aux centres de données. Meta identifie deux obstacles majeurs : l’ergonomie et l’évolutivité. Les ingénieurs peinent à traduire les politiques en formules précises, et de nombreux problèmes relèvent de la classe NP-difficile et sont trop volumineux pour les solveurs commerciaux.

La solution proposée par Rebalancer consiste à dissocier la définition d’un problème de sa résolution. Cette conception est détaillée dans l’article présenté lors de la conférence OSDI 2024, intitulé « Optimizing Resource Allocation in Hyperscale Datacenters » (Optimisation de l’allocation des ressources dans les centres de données hyperscale).

Dans l’exemple de Meta, les tâches sont considérées comme des objets, les serveurs comme des bacs et les racks comme un périmètre. La spécification « ACapacitySpec » définit la capacité du processeur et du stockage par serveur. La spécification « AGroupCountSpec » limite à un seul type de tâche par rack. La spécification « ABalanceSpec » équilibre l’utilisation de chaque serveur selon ces deux dimensions.

Rebalancer compile la spécification en un graphe d’expressions acyclique orienté. Les nœuds feuilles contiennent les valeurs d’utilisation ; les nœuds d’agrégation et de transformation se situent au-dessus d’eux. Les utilisateurs fournissent une affectation initiale et une condition d’arrêt. Les contraintes que l’affectation initiale enfreint déjà deviennent des objectifs hautement prioritaires.

Ce qu’il faut garder à l’esprit :

  • La solution proposée par Rebalancer consiste à dissocier la définition d’un problème de sa résolution.
  • Dans l’exemple de Meta, les tâches sont considérées comme des objets, les serveurs comme des bacs et les racks comme un périmètre.
  • Les nœuds feuilles contiennent les valeurs d’utilisation ; les nœuds d’agrégation et de transformation se situent au-dessus d’eux.

Les implications concrètes de cette annonce se dessineront progressivement.

Sur le même sujet :


Lire l’article original sur MarkTechPost : MarkTechPost