L'accumulation de gradients locaux accélère l'entraînement par 1,7x

La vitesse d'entraînement se heurte souvent à un mur en raison des temps d'inactivité dans les pipelines. Ce temps d'inactivité est appelé une « bulle ».

Une nouvelle méthode appelée PACI résout ce problème. Elle élimine ces bulles et accélère l'entraînement par 1,69x.

La plupart des équipes utilisent une stratégie appelée 1F1B-flush. Cette méthode maintient la cohérence des poids mais crée des créneaux vides où le système attend les données. Ces temps d'attente ralentissent l'ensemble du processus.

D'autres méthodes asynchrones tentent de corriger cela. Elles utilisent des astuces complexes comme le « weight stashing » ou des copies dupliquées. Ces astuces consomment trop de mémoire et rendent souvent l'entraînement instable.

PACI emprunte une voie différente. Elle utilise l'accumulation de gradients locaux. Cela permet de maintenir le pipeline actif sans nécessiter de synchronisation globale.

Voici pourquoi PACI est importante :

  • Elle égale la stabilité des méthodes standards.
  • Elle utilise la même quantité de mémoire.
  • Elle atteint la vitesse de configurations plus rapides mais plus lourdes.
  • Elle réduit le temps d'atteinte de la précision par 1,69x.

Lors de tests avec GPT-2 Medium, PACI a atteint la précision cible beaucoup plus rapidement. Cela montre qu'il est possible d'échanger une légère dérive des poids (weight drift) contre des gains d'efficacité massifs.

Pour les équipes d'ingénierie, cela signifie une réduction de 40 % des coûts matériels. Vous obtenez des résultats plus rapides sans avoir à acheter plus de GPU ou à ajouter de la mémoire.

Les chercheurs ont testé cela sur un pipeline à 8 étapes avec des modèles de type GPT. Vous devrez peut-être ajuster la fenêtre d'accumulation si vous modifiez la profondeur de votre pipeline ou la taille de votre lot (batch size).

Vous pouvez tester cela vous-même. Les auteurs fournissent un wrapper d'accumulation locale dans leur dépôt. Remplacez votre synchroniseur de vidage (flush synchronizer) actuel par celui-ci pour constater l'accélération.

Source: https://dev.to/olaughter/local-gradient-accumulation-speeds-training-17x-2mdk

Communauté d'apprentissage optionnelle : https://t.me/GyaanSetuAi