Worstel je met AI of full-stack ontwikkeling? Onze experts staan klaar om je te begeleiden: advies op maat, technische integratie en meer. Neem contact op met [email protected].

Inzet van GPT-NeoX 20B in productie en een focus op Deepspeed

GPT-NeoX 20B in productie nemen is een uitdaging en we hebben het op de harde manier geleerd bij NLP Cloud... In dit artikel vertellen we u meer over verschillende trucs met betrekking tot het gebruik van GPT-NeoX 20B, en in het bijzonder hoe om te gaan met DeepSpeed in productie.

GPT-NeoX

GPT-NeoX 20B

GPT-NeoX 20B is het grootste open-source model voor natuurlijke taalverwerking op het moment van dit schrijven.

Het werd 2 weken geleden vrijgegeven door EleutherAI. Het werd getraind op 20 miljard parameters, na 1 jaar hard werken vol uitdagingen. Een van hun grootste moeilijkheden leek de mogelijkheid te zijn om een goede parallelle architectuur op te zetten, zodat het model efficiënt op meerdere GPU's kan worden getraind.

Hun vorige model, GPT-J, werd getraind op Google TPU's en was ontworpen om te worden gebruikt op TPU's. GPT-NeoX 20B's innerlijke architectuur is radicaal anders en is gemaakt om te worden gebruikt op GPU's. Het is de bedoeling dat dit de eerste is van een reeks nog grotere modellen (het doel is hier om GPT-3 in te halen).

GPT-NeoX 20 is een tekstgeneratie model, wat betekent dat het tekst voor u kan schrijven en eigenlijk bijna elke Natural Language Processing use case kan bereiken met een grote nauwkeurigheid: blog post generatie, chatbots, tekst classificatie, sentiment analyse, trefwoord extractie, code generatie, entiteit extractie, intent classificatie, vraag beantwoorden, en nog veel meer...

Ongetwijfeld zullen veel onderzoekers en bedrijven gebruik maken van dit nieuwe model en geweldige resultaten boeken. Maar er is een uitdaging: hoe kan GPT-NeoX 20B worden ingezet?

Hardware-eisen

De eerste uitdaging waarmee men wordt geconfronteerd wanneer men GPT-NeoX 20B in productie wil nemen, is de geavanceerde hardware die daarvoor nodig is.

Het was nog steeds mogelijk om GPT-J in te zetten op consumentenhardware, zelfs als die erg duur was. Je kon het bijvoorbeeld implementeren op een zeer goede CPU (zelfs als het resultaat pijnlijk traag was) of op een geavanceerde gaming GPU zoals de NVIDIA RTX 3090. Maar GPT-NeoX 20B is zo groot dat dat niet meer mogelijk is.

In principe vereist GPT-NeoX ten minste 42 GB VRAM en 40 GB schijfruimte (en ja, we hebben het hier over de slanke fp16-versie). Er zijn maar weinig GPU's die aan deze eisen voldoen. De belangrijkste zijn de NVIDIA A100, A40, en RTX A6000.

Deze GPU's zijn niet alleen erg duur, maar het is tegenwoordig ook moeilijk om er een te pakken te krijgen vanwege het wereldwijde tekort aan halfgeleiders.

De beste oplossing hier is te kiezen voor een multi-GPU architectuur.

Multi-GPU met Deepspeed

Als uw model niet op één GPU past, kunt u proberen het op te splitsen over meerdere GPU's.

Het is een interessante optie om 2 redenen. Ten eerste is horizontaal schalen van een infrastructuur vaak goedkoper dan verticaal schalen. Dat geldt voor servers en dat geldt ook voor GPU's. Ten tweede is het eenvoudiger om meerdere kleine GPU's zoals de NVIDIA Tesla T4 in handen te krijgen dan grotere GPU's zoals de NVIDIA A40.

Helaas is het splitsen van een machine learning model over meerdere GPU's een technische uitdaging. Hugging Face maakte een geweldig artikel over model parallellisme en de keuzes die je hebt. lees het hier. Maar gelukkig heeft EleutherAI GPT-NeoX 20B zo ontworpen dat het gemakkelijk te parallelliseren is op meerdere GPU's, of het nu voor training is of voor inferentie.

De GPT-NeoX-architectuur is gebaseerd op Deepspeed. Deepspeed is een framework van Microsoft dat oorspronkelijk ontworpen is om trainingen te parallelliseren over meerdere GPU's, en het wordt ook steeds meer gebruikt voor inferentie. EleutherAI heeft al het harde werk gedaan, dus het parallelliseren van GPT-NeoX is zo simpel als het veranderen van een getal in een configuratiebestand.

GPT-NeoX Parallellisme
Extract from the GPT-NeoX docs about parallelism

Echter, Deepspeed inzetten in productie voor online inferentie via een API is moeilijk... Deepspeed is niet ontworpen om gemakkelijk geïntegreerd te worden in webservers. Bij NLP Cloud hebben we het op de harde manier geleerd, maar na hard werken zijn we er uiteindelijk in geslaagd om een efficiënte manier te bedenken om Deepspeed en GPT-NeoX achter onze API te laten werken.

Gebruik trucs

Dus laten we aannemen dat u erin geslaagd bent om de juiste hardware te provisioneren en GPT-NeoX 20B correct te implementeren met Deepspeed. Er zijn nu een paar caveats waar u zich bewust van moet zijn.

Ten eerste hebben de parameters (top k, top p, en temperatuur) in vergelijking met GPT-J niet dezelfde effecten op het model. Dus als je erin geslaagd bent een goede configuratie te vinden voor GPT-J, neem dat dan niet voor lief: je zult nieuwe tests moeten doen met GPT-NeoX.

Tenslotte, zelfs als de grootte van de invoer tot 2048 tokens kan gaan, zal dat meer geheugen vergen dan de basis 42GB die hierboven is genoemd...

Batch Inferentie?

GPT-modellen zijn vrij traag, en GPT-NeoX 20B is daarop geen uitzondering. Dus om de doorvoer van uw toepassing te verbeteren, kunt u misschien beter werken aan een oplossing voor batch-inferentie.

Op dit moment hebben we daar bij NLP Cloud nog geen goede oplossing voor gevonden.

De GPT-NeoX code is zo gemaakt dat men meerdere inferenties tegelijk kan uitvoeren binnen een enkel verzoek. Maar in onze tests groeide de responstijd lineair met het aantal inferenties, wat het doel van batch inferentie een beetje teniet doet...

Conclusie

GPT-NeoX 20B is beslist moeilijk in productie te nemen. De kwaliteit van de tekstgeneratie is verbluffend, maar weinigen zullen de capaciteit hebben om dit model daadwerkelijk te installeren.

Meer dan ooit lijkt het erop dat de oplossing erin zal bestaan een beroep te doen op een Cloud-dienst zoals NLP Cloud om dit model te gebruiken.

Als u feedback heeft op dit artikel, aarzel dan niet om contact met ons op te nemen, het zal geweldig zijn om uw mening hierover te horen!

Julien Salinas
CTO bij NLP Cloud