Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

Data Parallelism

ia

Définition

Le Data Parallelism (DP) est la technique la plus fondamentale de parallelisme pour l'entrainement des LLMs : plusieurs copies identiques du modele sont maintenues sur differents GPUs, chaque replique traitant un sous-ensemble (mini-batch) different du batch d'entrainement. Les gradients sont synchronises par un all-reduce a la fin de chaque step pour garder les repliques coherentes. PyTorch DDP (DistributedDataParallel) est l'implementation standard : il synchronise les gradients via un all-reduce NCCL (sur GPU NVIDIA) ou GLOO (sur CPU) apres chaque backward pass. DDP est extremement efficace quand le modele tient dans la VRAM d'un seul GPU car la synchronisation se fait uniquement sur les gradients (pas les poids). Le principal avantage du Data Parallelism : throughput lineaire avec le nombre de GPUs. 8 GPUs en DP traitent theoriquement 8x plus de tokens par seconde qu'un seul GPU. En pratique, avec NVLink, l'efficacite est de 90-95%. Sans NVLink (sur Ethernet 100Gb), l'efficacite peut descendre a 70-80% pour les grands modeles a cause de la latence de communication all-reduce. La limite du Data Parallelism standard (DDP) : chaque GPU doit stocker le modele complet + les gradients + l'etat de l'optimiseur. Pour un modele 70B en BF16, cela necessite >400GB par GPU (poids 140GB + gradients 140GB + AdamW momentum/variance 280GB). C'est pourquoi ZeRO (DeepSpeed) et FSDP ont ete developpes pour distribuer cet etat entre les GPUs. En production, le Data Parallelism est combine avec le Tensor et Pipeline Parallelism dans les configurations 3D parallelism : Data Parallelism gere le scaling du throughput (plus de tokens/seconde), Tensor/Pipeline Parallelism gere le scaling de la taille du modele (plus de parametres).

Data Parallelism avec PyTorch DDP

import torch.distributed as dist
from torch.nn.parallel import DistributedDataParallel as DDP

def train_ddp(rank, world_size):
    dist.init_process_group('nccl', rank=rank, world_size=world_size)
    model = MyModel().to(rank)
    model = DDP(model, device_ids=[rank])

    # Chaque processus lit des batches differents
    sampler = DistributedSampler(dataset, num_replicas=world_size, rank=rank)
    dataloader = DataLoader(dataset, sampler=sampler, batch_size=4)

    for batch in dataloader:
        loss = model(batch).loss
        loss.backward()
        # DDP all-reduce automatique ici (hook)
        optimizer.step()

# Lancer sur 4 GPUs
# torchrun --nproc_per_node=4 train.py

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis