Het LLaMA 3 generatieve AI-model is een paar dagen geleden uitgebracht door Meta en het laat nu al indrukwekkende mogelijkheden zien.
Leer hoe je LLaMA 3 installeert en in productie neemt met deze stap-voor-stap handleiding. Van hardwarevereisten tot implementatie en schaling, we behandelen alles wat je moet weten voor een soepele implementatie.
Meta heeft de eerste versies van hun Llama 3 open-source AI-model geïntroduceerd, dat kan worden gebruikt voor het maken van teksten, programmeren of chatbots. Verder kondigde Meta zijn plannen aan om LLaMA 3 op te nemen in zijn primaire social media-applicaties. Deze stap is bedoeld om te concurreren met andere AI-assistenten, zoals OpenAI's ChatGPT, Microsoft's Copilot en Google's Gemini.
Net als Llama 2 onderscheidt Llama 3 zich als een vrij toegankelijk groot taalmodel met open gewichten, aangeboden door een toonaangevend AI-bedrijf (hoewel het niet kan worden aangemerkt als "open source" in de conventionele zin).
Momenteel kan Llama 3 gratis worden gedownload van Meta's website in twee verschillende parameterformaten: 8 miljard (8B) en 70 miljard (70B). Gebruikers kunnen zich aanmelden om toegang te krijgen tot deze versies. Llama 3 wordt aangeboden in twee varianten: voorgetraind, wat een basismodel is voor de voorspelling van de volgende token, en instructie-afgestemd, wat verfijnd is om zich aan gebruikerscommando's te houden. Beide versies hebben een contextlimiet van 8.192 tokens.
In een interview met Dwarkesh Patel vertelde Mark Zuckerberg, de CEO van Meta, dat ze twee op maat gemaakte modellen hebben getraind met behulp van een 24.000-GPU cluster. Het 70B-model werd getraind met ongeveer 15 biljoen tokens aan gegevens en het bereikte nooit een verzadigingspunt of een limiet aan zijn mogelijkheden. Daarna besloot Meta zich te richten op het trainen van andere modellen. Het bedrijf onthulde ook dat ze momenteel werken aan een versie van Llama 3 met 400B parameters, waarvan experts zoals Jim Fan van Nvidia denken dat het vergelijkbaar zou kunnen presteren met GPT-4 Turbo, Claude 3 Opus en Gemini Ultra op benchmarks zoals MMLU, GPQA, HumanEval en MATH.
Volgens Meta is Llama 3 beoordeeld aan de hand van verschillende benchmarks, waaronder MMLU (kennis op universitair niveau), GSM-8K (wiskunde op de basisschool), HumanEval (codering), GPQA (vragen op universitair niveau) en MATH (woordproblemen wiskunde). Deze benchmarks laten zien dat het 8B-model beter presteert dan modellen met open gewichten, zoals Google's Gemma 7B en Mistral 7B Instruct, en dat het 70B-model kan concurreren met Gemini Pro 1.5 en Claude 3 Sonnet.
Meta meldt dat het Llama 3 model is verbeterd met de mogelijkheid om codering te begrijpen, vergelijkbaar met Llama 2, en voor het eerst is het getraind met behulp van zowel afbeeldingen als tekst. De huidige uitvoer is echter beperkt tot tekst.
LLaMA 3-benchmarks
Omdat veel organisaties AWS gebruiken voor hun productiewerklasten, laten we eens kijken hoe we LLaMA 3 op AWS EC2 kunnen implementeren.
Er zijn meerdere obstakels bij het implementeren van LLM's, zoals VRAM-verbruik (GPU-geheugen), inferentiesnelheid, doorvoer en schijfruimtegebruik. In dit scenario moeten we ervoor zorgen dat we een GPU-instance toewijzen op AWS EC2 met voldoende VRAM-capaciteit om de uitvoering van onze modellen te ondersteunen.
LLaMA 3 8B heeft ongeveer 16 GB schijfruimte nodig en 20 GB VRAM (GPU-geheugen) in FP16. Je zou LLaMA 3 natuurlijk op een CPU kunnen implementeren, maar de latentie zou te hoog zijn voor een echte productie-omgeving. LLaMA 3 70B vereist ongeveer 140 GB schijfruimte en 160 GB VRAM in FP16.
Het is vrij eenvoudig om 20 GB VRAM te krijgen voor LLaMA 3 8B. Ik raad aan om een NVIDIA A10 GPU te gebruiken: deze GPU wordt geleverd met 24 GB VRAM en is een snelle GPU op basis van het Ampere-platform. Op AWS EC2 moet je een G5-instance selecteren om een A10 GPU te kunnen gebruiken. Een g5.xlarge is voldoende.
Het implementeren van het LLaMA 3 70B model is echter veel uitdagender. Geen enkele GPU heeft genoeg VRAM voor dit model, dus je moet een multi-GPU instance implementeren. Als je een g5.48xlarge instance op AWS installeert, krijg je 192 GB VRAM (8 x A10 GPU's), wat genoeg is voor LLaMA 3 70B.
In een dergelijke configuratie kunt u de volgende latenties (responstijden) verwachten: 50 tokens gegenereerd in 1 seconde voor LLaMA 3 8B, en 50 tokens gegenereerd in 5 seconden voor LLaMA 3 70B.
Om de operationele kosten van deze modellen te verlagen en de latentie te verhogen, kun je kwantisatietechnieken onderzoeken, maar wees je ervan bewust dat dergelijke optimalisaties de nauwkeurigheid van je model kunnen schaden. Kwantisering valt buiten het bereik van dit artikel.
Om dergelijke instanties te provisioneren, log je in op je AWS EC2-console en start je een nieuwe instantie: selecteer de NVIDIA deep learning AMI, op een g5.xlarge of g5.48xlarge instantie. Vergeet niet om ook voldoende schijfruimte toe te wijzen.
vLLM is een bibliotheek die is ontworpen voor snelle en eenvoudige LLM-inferentie en implementatie. De efficiëntie wordt toegeschreven aan verschillende geavanceerde methoden, waaronder paged attention voor optimaal beheer van het geheugen voor aandachtssleutels en -waarden, real-time verwerking van binnenkomende query's in batches en gepersonaliseerde CUDA kernels.
Daarnaast biedt vLLM een hoge mate van aanpasbaarheid door gebruik te maken van gedistribueerde berekeningen (met behulp van tensorparallellisme), real-time streaming en compatibiliteit met zowel NVIDIA als AMD grafische kaarten.
In het bijzonder zal vLLM enorm helpen bij het implementeren van LLaMA 3, omdat het ons in staat stelt om AWS EC2-instanties te gebruiken die zijn uitgerust met meerdere compacte NVIDIA A10 GPU's. Dit is voordeliger dan het gebruik van één grote GPU, zoals de NVIDIA A100 of H100. Dit is voordeliger dan het gebruik van één grote GPU, zoals de NVIDIA A100 of H100. Bovendien zal vLLM de efficiëntie van ons model aanzienlijk verbeteren door continue batch-inferentie.
Het instellen van vLLM is vrij eenvoudig. Laten we een SSH-verbinding maken met onze onlangs aangemaakte AWS-instantie en vLLM installeren met pip:
pip install vllm
Aangezien we van plan zijn om gedistribueerde inferentie uit te voeren met vLLM op 8 x A10 GPU's, is de installatie van Ray ook vereist:
pip install ray
Als u compatibiliteitsproblemen ondervindt tijdens de installatie, is het misschien eenvoudiger voor u om vLLM vanaf de broncode te compileren of hun Docker image te gebruiken: bekijk de vLLM installatie-instructies.
Laten we nu ons Python-inferentiescript maken:
from vllm import LLM
# Use LLaMA 3 8B on 1 GPU
llm = LLM("meta-llama/Meta-Llama-3-8B-Instruct")
# Use LLaMA 3 70B on 8 GPUs
# llm = LLM("meta-llama/Meta-Llama-3-70B-Instruct", tensor_parallel_size=8)
print(llm.generate("What are the most popular quantization techniques for LLMs?"))
Je kunt het bovenstaande script uitvoeren. Als dit de eerste keer is dat je dit script uitvoert, moet je wachten tot het model is gedownload en geladen op de GPU, daarna krijg je zoiets als dit:
The most popular quantization techniques for Large Language Models (LLMs) are:
1. Integer Quantization
2. Floating-Point Quantization
3. Mixed-Precision Training
4. Knowledge Distillation
Het is vrij eenvoudig te begrijpen. Je moet gewoon de tensor_parallel_size aanpassen aan het aantal GPU's dat je bezit.
We zijn nu op zoek naar een geschikte inferentieserver die meerdere verzoeken kan verwerken en gelijktijdige inferenties kan uitvoeren. Start om te beginnen de server:
Voor LLaMA 3 8B:
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Meta-Llama-3-8B-Instruct
Voor LLaMA 3 70B:
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Meta-Llama-3-70B-Instruct
--tensor-parallel-size 8
Het zou tot 1 minuut moeten duren voordat het model geladen is op de GPU. Daarna kun je een tweede terminal starten en wat aanvragen doen:
curl http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "meta-llama/Meta-Llama-3-8B-Instruct",
"prompt": "What are the most popular quantization techniques for LLMs?"
}'
Je hebt nu een inferentieserver die klaar is voor productie en die veel parallelle verzoeken kan verwerken dankzij continue batching. Op een gegeven moment, als het aantal verzoeken te hoog is, zal de GPU echter overbelast raken. In dat geval zul je het model moeten repliceren op meerdere GPU-instanties en je verzoeken moeten load balanceren (maar dit valt buiten het bereik van dit artikel).
Zoals je kunt zien, is er geen complexe code nodig om LLaMA 3 in productie te nemen dankzij inferentieservers zoals vLLM.
Het leveren van de juiste hardware is echter een uitdaging. Ten eerste omdat deze GPU's erg duur zijn, maar ook vanwege het huidige wereldwijde GPU-tekort. Als dit de eerste keer is dat je een GPU-server bij AWS probeert aan te maken, kan het zijn dat je geen toestemming hebt om een GPU-server aan te maken. In dat geval moet je contact opnemen met support en je use case uitleggen. In dit artikel hebben we AWS EC2 gebruikt, maar andere leveranciers zijn natuurlijk ook beschikbaar (Azure, GCP, OVH, Scaleway...).
Als je niet geïnteresseerd bent in het zelf implementeren van LLaMA 3, raden we je aan om gebruik te maken van onze NLP Cloud API. Deze optie kan efficiënter en mogelijk veel kosteneffectiever zijn dan het beheren van uw eigen LLaMA 3 infrastructuur. Probeer LLaMA 3 nu op NLP Cloud!
Als je vragen hebt over LLaMA 3 en AI-implementatie in het algemeen, aarzel dan niet om het ons te vragen, het is altijd een genoegen om te helpen!
Julien
CTO bij NLP Cloud