Google maakt GPipe opensource voor efficiënte training diepe neurale netwerken

Googles AI-onderzoeksdivisie heeft de code van GPipe vrijgegeven voor ontwikkelaars. De bibliotheek voor het efficiënt trainen van diepe neurale netwerken onder Lingvo, een TensorFlow-raamwerk voor sequentiemodellering, stelt onderzoekers in staat om eenvoudig prestaties te schalen.

Diepe neurale netwerken (DNN’s) worden onderscheiden van andere neurale netwerken door hun diepte. Een diep neuraal netwerk is een neuraal netwerk met meerdere verborgen lagen tussen de input- en outputlagen. Iets dat complexe transformaties mogelijk maakt. Volgens Yanping Huang, AI-software engineer bij Google, is GPipe van toepassing op elk netwerk dat uit meerdere opeenvolgende lagen bestaat. 

“DNN’s hebben veel machine-learningtaken naar voren gebracht, waaronder spraakherkenning, visuele herkenning en taalverwerking. Grotere DNN-modellen leiden tot betere taakprestaties. Bovendien toonde eerdere vooruitgang in visuele herkenningstaken een sterke correlatie aan tussen de modelgrootte en nauwkeurigheid van classificatie. Met GPipe demonstreren we het gebruik van pijplijn-parallelliteit om DNN-training op te schalen om zo deze beperking te overwinnen”, zegt Huang.

AI-trainingstechnieken

In het rapport ‘GPipe: Efficient Training of Giant Neural Networks using Pipeline Parallelism’ beschrijft Huang samen met collega’s twee AI-trainingstechnieken. Eén daarvan is ‘synchronous stochastic gradient descent’, een optimalisatie-algoritme, dat wordt gebruikt om de parameters van een gegeven AI-model bij te werken. Een tweede techniek betreft ‘pipeline parallelism’. Hierbij gaat het om een taakuitvoersysteem, waarin de uitvoer van één stap wordt gestreamd als invoer voor de volgende stap.

Volgens Venturebeat zijn de prestaties van GPipe veelal te wijten aan een betere geheugentoewijzing voor AI-modellen. Voor wat betreft de tweede generatie Google Cloud-tensorverwerkingseenheden (TPU’s), die elk acht processorcores en 64 GB geheugen (8 GB per kern) bevatten, reduceerde GPipe het intermediate geheugenverbruik van 6,26 GB tot 3,46 GB, wat 318 miljoen parameters op één versnellingskern toelaat. Huang beweert dat een enkele kern zonder GPipe maximaal 82 miljoen modelparameters kan trainen.

Significante prestatieverbeteringen

GPipe zou nog meer voordelen hebben volgens Google. Zo partitioneert het modellen over verschillende accelerators en splitst het automatisch mini-batches van trainingsvoorbeelden in kleinere “micro-batches”. Bovendien zou GPipe pipelines over micro-batches uitvoeren. Hierdoor werken kernen parallel, waardoor wordt voorkomen dat de partities de kwaliteit van het model beïnvloeden.

Google heeft volgens Huang significante prestatieverbeteringen vastgesteld in eigen experimenten: “De voortdurende ontwikkeling en het succes van veel praktische machine-learningapplicaties, zoals autonoom rijden en medische beeldvorming, zijn afhankelijk van het bereiken van de hoogst mogelijke nauwkeurigheid. Aangezien dit vaak grotere en complexere modellen vereist, bieden we GPipe graag aan de bredere onderzoeksgemeenschap en hopen dat het een nuttige infrastructuur is voor efficiënte training van grootschalige DNN’s.”