FSDP versus DeepSpeed ZeRO: wat past bij mijn trainingsopzet?
Automatische vertaling
Dit artikel is automatisch vertaald vanuit de oorspronkelijke Engelse versie.
Begin met FSDP wanneer een PyTorch-trainingsomgeving gedistribueerde sharding van de toestand nodig heeft. Test DeepSpeed als je de selecteerbare ZeRO-stadia of offload naar CPU en NVMe nodig hebt. Geen van beide frameworks levert altijd de beste prestaties; vergelijk de vereiste configuratie op je cluster.
Beide kunnen parameters, gradiënten en de toestand van de optimizer over GPUs verdelen. Hun APIs, beleid en verwerking van checkpoints verschillen.
Volledige sharding volgt hetzelfde basisproces
Bij volledige parametersharding slaat elke GPU een deel van het model op. Voordat het framework een groep lagen berekent, verzamelt het de parameters die deze groep nodig heeft. Daarna voert het de berekening uit, geeft het de verzamelde parameters vrij volgens het reshardingbeleid en combineert en verdeelt het de gradiënten via reduce-scatter.
Keuzes voor groepering en prefetching bepalen het tijdelijke geheugengebruik en de overlap tussen communicatie en berekening. Elke kleine bewerking apart sharden kan ervoor zorgen dat communicatie het grootste deel van het werk wordt; zeer grote groepen verzamelen kan een tijdelijke geheugenpiek veroorzaken.
| Vereiste | Kandidaat om te testen |
|---|---|
| PyTorch-native APIs en gedistribueerde tensortoestand | FSDP2 |
| Sharding van de optimizertoestand met nog steeds gerepliceerde parameters | DeepSpeed ZeRO-1 of ZeRO-2 |
| Volledige sharding van de toestand | FSDP of ZeRO-3 |
| Offload van de toestand naar NVMe | DeepSpeed ZeRO-Infinity |
De FSDP2-handleiding gebruikt fully_shard en DTensor-parameters. Ook kun je reshardingbeleid instellen: parameters na de forward-pass behouden kost meer geheugen, maar vermindert het aantal latere verzameloperaties. Maak de optimizer aan nadat je de vereiste shardingtransformaties hebt toegepast.
Vergelijk een volledige trainingsstap
Houd het model, de data, de precisie, de sequentielengte, de effectieve batchgrootte en de GPU-topologie gelijk. Meet het piekgebruik van toegewezen geheugen, de staptijd en de communicatie. Controleer of een opgeslagen checkpoint de modeltoestand, de optimizertoestand en de beoogde trainingsvoortgang kan herstellen.
Hugging Face Accelerate kan via startconfiguraties FSDP of DeepSpeed selecteren voor code die op deze integraties is voorbereid. Dat betekent niet dat elk willekeurig trainingsscript zonder aanpassingen kan overschakelen, vooral bij checkpoints, offload en aangepaste verwerking van optimizers.
De FSDP-vergelijking in de LLM Engineering Guide verbindt deze keuzes met het geheugengebruik van de trainingstoestand.