Zubnet AIApprendreWiki › Entraînement distribué
Infrastructure

Entraînement distribué

Aussi appelé : Parallélisme de données, parallélisme de modèle, FSDP
Entraîner un modèle sur plusieurs GPU ou machines simultanément. Le parallélisme de données donne à chaque GPU une copie du modèle et divise les données d'entraînement. Le parallélisme de modèle divise le modèle lui-même entre les GPU quand il est trop gros pour un seul. Les approches modernes comme FSDP (Fully Sharded Data Parallel) et DeepSpeed combinent les deux, permettant l'entraînement de modèles avec des centaines de milliards de paramètres.

Pourquoi c'est important

Aucun modèle de frontière ne tient sur un seul GPU. Entraîner GPT-4 ou Claude nécessite des milliers de GPU travaillant ensemble pendant des mois. L'entraînement distribué est l'ingénierie qui rend ça possible — c'est aussi critique que l'architecture ou les données. L'efficacité de ton entraînement distribué détermine directement la taille du modèle que tu peux entraîner pour un budget donné.

En profondeur

Parallélisme de données (DP) : chaque GPU a une copie complète du modèle, traite un mini-lot différent, et les gradients sont moyennés entre les GPU. Simple et efficace pour les modèles qui tiennent sur un GPU. Parallélisme de tenseurs (TP) : les couches individuelles sont divisées entre les GPU, chaque GPU calculant une partie de chaque multiplication matricielle. Nécessaire quand les poids d'une seule couche ne tiennent pas sur un GPU. Parallélisme de pipeline (PP) : différentes couches tournent sur différents GPU, avec des micro-lots circulant dans le pipeline.

FSDP et DeepSpeed

Fully Sharded Data Parallel (FSDP, de PyTorch) et DeepSpeed ZeRO (de Microsoft) fragmentent les paramètres du modèle, les gradients et les états de l'optimiseur entre les GPU. Chaque GPU ne stocke qu'une fraction du modèle, et les paramètres sont rassemblés à la demande pour le calcul, puis libérés. Ça permet d'entraîner des modèles bien plus gros que la mémoire d'un seul GPU. DeepSpeed ZeRO a trois étapes : l'étape 1 fragmente les états de l'optimiseur, l'étape 2 ajoute les gradients, l'étape 3 ajoute les paramètres.

Le goulot d'étranglement de la communication

Le défi fondamental de l'entraînement distribué est la communication : les GPU doivent synchroniser les gradients (en parallélisme de données) ou échanger les activations (en parallélisme de modèle/pipeline). Cette communication passe par NVLink (au sein d'un nœud, 900 Go/s) ou InfiniBand (entre nœuds, 400 Gb/s). L'efficacité d'entraînement chute quand les GPU passent plus de temps à attendre la communication qu'à calculer. Les configurations optimales minimisent la communication inter-nœuds en gardant les opérations fortement couplées (comme le parallélisme de tenseurs) au sein d'un nœud et les opérations faiblement couplées (comme le parallélisme de données) entre les nœuds.

Concepts connexes

← Tous les termes
← Endpoint Entraînement en précision mixte →