Mohamed Gacha Ingénieur logiciel
Retour aux projets

Étude de cas

Euro-Information Code Contest

3e sur 177 : choisir quels modèles d'IA entraîner sous contrainte d'énergie.

Rôle
Participant individuel
Période
50 heures, 2026
Stack
  • Python
  • NumPy
  • SciPy
  • HiGHS
  • OR-Tools CP-SAT
  • SCIP
  • C
  • C++
  • Bash
sur 177 participants
3e
de compétition
50 h
datasets dans la plus grande instance
250 000
instances aux contraintes différentes
7
  1. 01Relaxation LPborner et guider la sélection
  2. 02Bin packing à intervallesréaliser les affectations
  3. 03CP-SAT · MIPsous-problèmes exacts, réparations
  4. 04Génération de colonnesinstance la plus contrainte
  5. 05LNS · C/C++améliorer, boucles critiques
  6. 06Recherche distribuéeplusieurs machines, fusion
Taille des 7 instances (datasets, échelle linéaire)
InstanceModèlesDatasets
Q1 “Example”5 modèles
5
Q2 “So it begins.”3 000 modèles
10 000
Q3 “Everything is free!”5 000 modèles
20 000
Q4 “Those models are demanding!”8 000 modèles
40 000
Q5 “Looks like there's a discount on our electricity bill.”11 000 modèles
100 000
Q6 “Where are the files?”15 000 modèles
5 000
Q7 “We're in the endgame now.”50 000 modèles
250 000

Le problème

Un data center doit entraîner des modèles d'IA sans dépasser un plafond d'énergie. Chaque modèle a une valeur, un coût énergétique et des besoins en données par type (numérique, texte, image, code), chacun dans une fourchette : en dessous le modèle est mal entraîné, au-dessus c'est de l'énergie gaspillée.

Chaque dataset ne sert qu'à un seul modèle. Utiliser des données sous copyright, ou des données générées par un autre modèle, divise la valeur par deux. Un modèle mono-besoin peut servir de générateur, mais un modèle alimenté ainsi ne peut pas en alimenter un autre.

Sept instances, de 5 modèles à 50 000 modèles et 250 000 datasets. Le classement compare chaque solution à la meilleure.

Approche

  • Relaxation LP sur les « modes » de chaque modèle (propre, dégradé, générateur) pour borner l'optimum et guider la sélection.
  • Réalisation par bin packing à intervalles : remplir chaque besoin avec des tailles de datasets dans sa fourchette.
  • Sous-problèmes exacts et réparations avec CP-SAT (OR-Tools) et MIP (HiGHS, SCIP).
  • Génération de colonnes avec pricing exact par programmation dynamique sur l'instance la plus contrainte.
  • Recherche à grand voisinage (LNS) pour améliorer les solutions, avec les boucles critiques en C et C++.
  • Recherche distribuée : plusieurs machines lancées en parallèle, synchronisation et fusion des meilleures solutions par scripts.

Résultat

3e sur 177 participants. Merci à Euro-Information pour l'organisation.