FSDP (Fully Sharded Data Parallel)
iaDéfinition
FSDP (Fully Sharded Data Parallel) est une technique de parallelisme distribue pour l'entrainement des LLMs, implementee nativement dans PyTorch depuis la version 1.11. Elle etend le Data Parallelism standard en shardant (partitionnant) non seulement les donnees d'entrainement mais aussi les poids du modele, les optimiseurs, et les gradients sur tous les GPU du cluster. Dans le Data Parallelism classique (DDP), chaque GPU maintient une copie complete du modele. FSDP resout le probleme de memoire en shardant les poids sur tous les GPU : chaque GPU ne stocke qu'une fraction (1/N) des poids. Lors de la forward pass, les GPU communiquent pour reassembler temporairement les poids necessaires (all-gather), effectuent le calcul, puis liberent les poids reassembles. Pendant la backward pass, les gradients sont egalement shardés. FSDP est l'equivalent open-source de ZeRO Stage 3 (DeepSpeed) et Megatron-LM, mais integre directement dans PyTorch sans dependances supplementaires. Il a ete utilise par Meta pour entrainer Llama 2 et Llama 3, ce qui en fait la reference pratique pour les equipes qui veulent reproduire ces entrainements. Les modes FSDP : FULL_SHARD (shard tout — poids, gradients, optimiseurs — economise le plus de memoire), SHARD_GRAD_OP (shard uniquement les gradients et optimiseurs — poids repliques comme DDP mais gradients shardes), NO_SHARD (equivalent DDP standard — pas de shard). Le mode recommande pour les grands modeles est FULL_SHARD. En pratique, FSDP avec FULL_SHARD permet d'entrainer des modeles 7-8 fois plus grands qu'avec DDP sur le meme cluster, au prix d'une communication supplementaire (all-gather et reduce-scatter). Avec NVLink, cet overhead est negligeable ; sur Ethernet 100Gb, il peut degrader le throughput de 20-30%.
Configuration FSDP pour LLaMA
from torch.distributed.fsdp import FullyShardedDataParallel as FSDP
from torch.distributed.fsdp import ShardingStrategy, CPUOffload
from torch.distributed.fsdp.wrap import transformer_auto_wrap_policy
from transformers.models.llama.modeling_llama import LlamaDecoderLayer
model = FSDP(
model,
sharding_strategy=ShardingStrategy.FULL_SHARD, # Shard tout
auto_wrap_policy=transformer_auto_wrap_policy(
{LlamaDecoderLayer} # Wrapper chaque decoder block
),
cpu_offload=CPUOffload(offload_params=True), # Offload CPU pour plus grande memoire
mixed_precision=MixedPrecision(
param_dtype=torch.bfloat16,
reduce_dtype=torch.bfloat16,
buffer_dtype=torch.bfloat16
)
)FSDP vs alternatives
| Solution | Integre PyTorch | Effort setup | Performance |
|---|---|---|---|
| FSDP | Oui (1.11+) | Moyen | Tres bonne |
| DeepSpeed ZeRO-3 | Non (externe) | Eleve | Excellente |
| Megatron-LM | Non | Tres eleve | Optimale (NVIDIA) |
| DDP (standard) | Oui | Faible | Limitee (repliques) |
Articles liés
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés.
Un projet cybersécurité ?
Expert dispo · Réponse 24h