Le matériel hétérogène est le principal casse-tête dont personne ne parle dans l’entraînement distribué. Vous avez un cluster mêlant des RTX 3090 et des 4090, avec différentes configurations de VRAM (12 Go contre 24 Go), des débits réseau très variables et ce nœud maudit qui ralentit tout.

La plupart des frameworks d’entraînement partent du principe que les configurations sont homogènes. Ils répartissent naïvement la charge, synchronisent tout le monde et s’enrayent dès que les caractéristiques du matériel divergent. Dans la réalité, les développeurs open source se retrouvent à surveiller leurs clusters, à partitionner manuellement les charges de travail ou à se résigner à une utilisation désastreuse des GPU.

Le problème fondamental : les frameworks traitent tous les nœuds de la même manière. Pourtant, une 3090 ne devrait pas recevoir la même taille de lot qu’une 4090. Les liaisons réseau lentes nécessitent des mises à jour asynchrones des gradients. Les nœuds limités en mémoire ont besoin de stratégies différentes pour répartir le modèle.

C’est pourquoi des projets comme DeepSpeed, Megatron et PyTorch distribué restent si peu pratiques avec des configurations hétérogènes. Ils n’ont pas été conçus pour la réalité chaotique du calcul communautaire ni pour les parcs de GPU de générations différentes.