ZeRO Zero Redundancy Optimizer
Technique de Microsoft pour entraîner de grands modèles en cessant de stocker la même chose sur chaque GPU. Elle partitionne l'état de l'optimiseur, les gradients, puis finalement les paramètres eux-mêmes entre les cartes.
Dans le parallélisme de données classique, chaque carte conserve une copie complète de tout, et pour un modèle entraîné avec Adam en précision mixte, environ les trois quarts de la mémoire vont à l'état de l'optimiseur et aux gradients, identiques partout. ZeRO supprime cette redondance en trois étapes : l'étape un partitionne l'état de l'optimiseur, l'étape deux ajoute les gradients, et l'étape trois les poids également, rassemblés couche par couche pendant le calcul lui-même. Les économies de mémoire deviennent quasi proportionnelles au nombre de cartes, au prix de davantage de communication. Avec l'offload, l'état peut en outre être déporté vers la mémoire hôte ou le NVMe. L'idée a été réimplémentée dans PyTorch sous le nom de FSDP.