Aperçu
ZeRO (Zero Redundancy Optimizer) élimine le gaspillage de mémoire dû au parallélisme des données en partageant l'état, les gradients et les pondérations de l'optimiseur entre les GPU. Il vous permet d'entraîner d'énormes modèles avec la simplicité du parallélisme des données mais avec une fraction de la mémoire par GPU.
ZeRO et Sharded Optimizers constituent un élément de base technique qui affecte la qualité du modèle, le coût de l'infrastructure, la latence et la fiabilité à grande échelle.
Plongée profonde
Dans le parallélisme de données ordinaire, chaque GPU stocke une copie complète redondante de l'état, des gradients et des paramètres de l'optimiseur, ce qui représente un énorme gaspillage, en particulier pour Adam, où l'état de l'optimiseur peut être plusieurs fois supérieur à la taille du modèle lui-même. ZeRO, introduit par Microsoft dans DeepSpeed, supprime cette redondance en partitionnant ces tenseurs entre les GPU afin que chaque appareil ne possède qu'une tranche. ZeRO se décline en trois étapes progressives : l'étape 1 partage l'état de l'optimiseur de fragments, l'étape 2 ajoute le partitionnement par gradient et l'étape 3 fragmente les paramètres eux-mêmes. Si nécessaire, les GPU rassemblent les tranches manquantes via la communication, les calculent, puis les libèrent. Le résultat est une mémoire considérablement réduite par GPU, permettant la formation de milliards, voire de milliards de paramètres, tout en conservant le modèle de programmation simple du parallélisme des données.
Aperçu technique
ZeRO échange des communications supplémentaires contre des économies de mémoire. À l'étape 3, avant le passage en avant d'une couche, un regroupement complet collecte tous les paramètres de cette couche sur chaque GPU ; Ensuite, les tranches non possédées sont supprimées pour récupérer de la mémoire. Les dégradés sont réduits et dispersés afin que chaque GPU conserve uniquement la tranche de dégradé correspondant aux paramètres qu'il possède. Le FSDP (Fully Sharded Data Parallel) de PyTorch implémente la même idée de manière native, en encapsulant les modules pour les fragmenter et les repartir à la volée.
Maîtriser les optimiseurs ZeRO et Sharded
ZeRO (Zero Redundancy Optimizer) élimine le gaspillage de mémoire dû au parallélisme des données en partageant l'état, les gradients et les pondérations de l'optimiseur entre les GPU. Il vous permet d'entraîner d'énormes modèles avec la simplicité du parallélisme des données mais avec une fraction de la mémoire par GPU. ZeRO et Sharded Optimizers constituent un élément de base technique qui affecte la qualité du modèle, le coût de l'infrastructure, la latence et la fiabilité à grande échelle. Pour acquérir une compréhension approfondie, traitez ZeRO et Sharded Optimizers comme un modèle opérationnel et non comme une seule fonctionnalité : définissez les résultats souhaités, clarifiez les hypothèses et séparez ce que le système peut faire de manière fiable de ce qui nécessite encore un jugement d'expert.
Dans la pratique, des équipes solides utilisant ZeRO et Sharded Optimizers optimisent les choix d'architecture, de données et d'infrastructure en fonction de la fiabilité et des coûts. Ils documentent des critères de réussite explicites, testent par rapport à des données et des flux de travail réalistes et itèrent en fonction des modèles d'échec observés plutôt que des victoires de référence ponctuelles. C’est là que la compréhension théorique se transforme en capacité durable au niveau des produits, des politiques et des opérations.
Les décisions en matière d'architecture déterminent les performances et les coûts d'exploitation pendant des années. Dans le même temps, l’optimisation d’un benchmark peut masquer des faiblesses plus larges du système. L'approche la plus résiliente consiste à combiner vitesse d'expérimentation et discipline de gouvernance : exécuter des projets pilotes, capturer des preuves, publier des journaux de décision et mettre à jour en permanence les protections à mesure que le comportement du modèle, les attentes des utilisateurs et les exigences réglementaires évoluent.
Impact stratégique
Les décisions en matière d'architecture déterminent les performances et les coûts d'exploitation pendant des années.
Les décisions en matière d'architecture déterminent les performances et les coûts d'exploitation pendant des années. Dans les déploiements de haute qualité, cela se traduit par des règles de fonctionnement mesurables, des limites de propriété et des rituels d'examen récurrents afin que les équipes puissent accroître la confiance au lieu de l'ambiguïté.
La formation technique aide les équipes à choisir la bonne pile, pas seulement la plus récente.
La formation technique aide les équipes à choisir la bonne pile, pas seulement la plus récente. Dans les déploiements de haute qualité, cela se traduit par des règles de fonctionnement mesurables, des limites de propriété et des rituels d'examen récurrents afin que les équipes puissent accroître la confiance au lieu de l'ambiguïté.
De meilleurs choix d’ingénierie réduisent les incidents de fiabilité en production.
De meilleurs choix d’ingénierie réduisent les incidents de fiabilité en production. Dans les déploiements de haute qualité, cela se traduit par des règles de fonctionnement mesurables, des limites de propriété et des rituels d'examen récurrents afin que les équipes puissent accroître la confiance au lieu de l'ambiguïté.
Mise en œuvre dans le monde réel
Utilisation de DeepSpeed ZeRO Stage 2 pour affiner un modèle de langage de plusieurs milliards de paramètres qui, autrement, déborderait la mémoire du GPU.
Formation avec PyTorch FSDP, qui partage les paramètres, les dégradés et l'état de l'optimiseur sur les GPU et les rassemble par couche à la demande.
Application de ZeRO-Offload pour transférer l'état de l'optimiseur vers la mémoire du processeur, permettant à un seul GPU d'entraîner un modèle plusieurs fois plus grand que sa VRAM.
Mise à l'échelle d'un modèle comportant des milliards de paramètres avec ZeRO-Infinity en diffusant des fragments de paramètres à partir du stockage NVMe lorsque la mémoire GPU et CPU est épuisée.
Modèles de mise en œuvre
ZeRO et Sharded Optimizers en pratique
Utilisation de DeepSpeed ZeRO Stage 2 pour affiner un modèle de langage de plusieurs milliards de paramètres qui, autrement, déborderait la mémoire du GPU.
Utilisation de DeepSpeed ZeRO Stage 2 pour affiner un modèle de langage de plusieurs milliards de paramètres qui, autrement, saturerait la mémoire du GPU. Les équipes obtiennent généralement de meilleurs résultats lorsqu'elles définissent des seuils de qualité à l'avance, gardent un chemin de remontée humain pour les cas extrêmes et suivent à la fois les gains de productivité et les coûts d'erreur au fil du temps.
ZeRO et Sharded Optimizers en pratique
Formation avec PyTorch FSDP, qui partage les paramètres, les dégradés et l'état de l'optimiseur sur les GPU et les rassemble par couche à la demande.
Formation avec PyTorch FSDP, qui partage les paramètres, les gradients et l'état de l'optimiseur sur les GPU et les rassemble par couche à la demande. Les équipes obtiennent généralement de meilleurs résultats lorsqu'elles définissent des seuils de qualité à l'avance, gardent un chemin d'escalade humain pour les cas extrêmes et suivent à la fois les gains de productivité et les coûts d'erreur au fil du temps.
ZeRO et Sharded Optimizers en pratique
Application de ZeRO-Offload pour transférer l'état de l'optimiseur vers la mémoire du processeur, permettant à un seul GPU d'entraîner un modèle plusieurs fois plus grand que sa VRAM.
En appliquant ZeRO-Offload pour transférer l'état de l'optimiseur vers la mémoire CPU, en laissant un seul GPU entraîner un modèle plusieurs fois plus grand que sa VRAM, les équipes obtiennent généralement de meilleurs résultats lorsqu'elles définissent des seuils de qualité à l'avance, maintiennent un chemin d'escalade humaine pour les cas extrêmes et suivent à la fois les gains de productivité et les coûts d'erreur au fil du temps.
ZeRO et Sharded Optimizers en pratique
Mise à l'échelle d'un modèle comportant des milliards de paramètres avec ZeRO-Infinity en diffusant des fragments de paramètres à partir du stockage NVMe lorsque la mémoire GPU et CPU est épuisée.
Mise à l'échelle d'un modèle comportant des milliards de paramètres avec ZeRO-Infinity en diffusant des fragments de paramètres à partir du stockage NVMe lorsque la mémoire du GPU et du CPU est épuisée. Les équipes obtiennent généralement de meilleurs résultats lorsqu'elles définissent des seuils de qualité à l'avance, conservent un chemin d'escalade humain pour les cas extrêmes et suivent à la fois les gains de productivité et les coûts d'erreur au fil du temps.
Risques et garde-fous
L’optimisation d’un benchmark peut masquer des faiblesses plus larges du système.
Les coûts d’infrastructure et de maintenance sont souvent sous-estimés.
Les lacunes en matière de sécurité et d’observabilité peuvent se creuser à mesure que les systèmes deviennent plus complexes.
Feuille de route de mise en œuvre
Définissez les objectifs de latence, de qualité et de coût avant la mise en œuvre.
Définissez les objectifs de latence, de qualité et de coût avant la mise en œuvre. Traitez chaque étape comme une porte de preuves : si les critères ne sont pas remplis, suspendez le déploiement, comblez l'écart, puis étendez l'utilisation.
Benchmark dans des conditions de charge et de données réalistes.
Benchmark dans des conditions de charge et de données réalistes. Traitez chaque étape comme une porte de preuves : si les critères ne sont pas remplis, suspendez le déploiement, comblez l'écart, puis étendez l'utilisation.
Surveillance des instruments pour détecter les erreurs, la dérive et l'impact sur l'utilisateur.
Surveillance des instruments pour détecter les erreurs, la dérive et l'impact sur l'utilisateur. Traitez chaque étape comme une porte de preuves : si les critères ne sont pas remplis, suspendez le déploiement, comblez l'écart, puis étendez l'utilisation.
Préparez les chemins de restauration et de réponse aux incidents avant la mise à l’échelle.
Préparez les chemins de restauration et de réponse aux incidents avant la mise à l’échelle. Traitez chaque étape comme une porte de preuves : si les critères ne sont pas remplis, suspendez le déploiement, comblez l'écart, puis étendez l'utilisation.