Lokale gradiëntaccumulatie versnelt training met 1,7x
Trainingssnelheid loopt vaak vast door inactiviteit in pipelines. Deze inactiviteit wordt een 'bubble' genoemd.
Een nieuwe methode genaamd PACI lost dit probleem op. Het verwijdert deze bubbles en versnelt de training met 1,69x.
De meeste teams gebruiken een strategie genaamd 1F1B-flush. Deze methode houdt de gewichten consistent, maar creëert lege slots waarin het systeem op data moet wachten. Deze wachttijden vertragen het hele proces.
Andere asynchrone methoden proberen dit op te lossen. Ze maken gebruik van complexe trucs zoals 'weight stashing' of dubbele kopieën. Deze trucs verbruiken te veel geheugen en maken de training vaak instabiel.
PACI kiest een andere weg. Het maakt gebruik van lokale gradiëntaccumulatie. Dit houdt de pipeline bezig zonder dat er globale synchronisatie nodig is.
Hierom is PACI belangrijk:
- Het evenaart de stabiliteit van standaardmethoden.
- Het gebruikt dezelfde hoeveelheid geheugen.
- Het bereikt de snelheid van snellere maar zwaardere configuraties.
- Het vermindert de 'time-to-accuracy' met 1,69x.
In tests met GPT-2 Medium bereikte PACI de gewenste nauwkeurigheid veel sneller. Het laat zien dat je een kleine hoeveelheid 'weight drift' kunt inruilen voor enorme efficiëntiewinst.
Voor engineeringteams betekent dit een reductie van 40% in hardwarekosten. Je krijgt snellere resultaten zonder meer GPU's te kopen of meer geheugen toe te voegen.
De onderzoekers hebben dit getest op een 8-traps pipeline met GPT-stijl modellen. Mogelijk moet je het 'accumulation window' aanpassen als je de diepte van je pipeline of de batchgrootte verandert.
Je kunt dit zelf testen. De auteurs bieden een 'local-accumulation wrapper' aan in hun repository. Vervang je huidige 'flush synchronizer' door deze wrapper om de versnelling te zien.
Bron: https://dev.to/olaughter/local-gradient-accumulation-speeds-training-17x-2mdk
Optionele leercommunity: https://t.me/GyaanSetuAi