Den generative AI-modellen LLaMA 3 ble lansert av Meta for et par dager siden, og den viser allerede imponerende egenskaper.
Lær hvordan du installerer og distribuerer LLaMA 3 i produksjon med denne trinnvise veiledningen. Vi tar for oss alt du trenger å vite for å få en problemfri implementering, fra maskinvarekrav til distribusjon og skalering.
Meta har introdusert de første versjonene av AI-modellen Llama 3 med åpen kildekode, som kan brukes til tekstskaping, programmering og chatbots. Videre kunngjorde Meta sine planer om å innlemme LLaMA 3 i sine primære applikasjoner for sosiale medier. Målet er å konkurrere med andre AI-assistenter som OpenAIs ChatGPT, Microsofts Copilot og Googles Gemini.
I likhet med Llama 2 skiller Llama 3 seg ut som en fritt tilgjengelig stor språkmodell med åpne vekter, tilbudt av et ledende AI-selskap (selv om den ikke kvalifiserer som "åpen kildekode" i konvensjonell forstand).
Foreløpig kan Llama 3 lastes ned gratis fra Metas nettsted i to forskjellige parameterstørrelser: 8 milliarder (8B) og 70 milliarder (70B). Brukere kan registrere seg for å få tilgang til disse versjonene. Llama 3 tilbys i to varianter: pre-trained, som er en grunnleggende modell for prediksjon av neste token, og instruction-tuned, som er finjustert for å følge brukerkommandoer. Begge versjonene har en kontekstgrense på 8192 tokens.
I et intervju med Dwarkesh Patel fortalte Mark Zuckerberg, administrerende direktør i Meta, at de trente opp to spesialbygde modeller ved hjelp av en 24 000-GPU-klynge. 70B-modellen ble trent med omtrent 15 billioner tokens av data, og den nådde aldri et metningspunkt eller en grense for kapasiteten. Etterpå bestemte Meta seg for å fokusere på opplæring av andre modeller. Selskapet avslørte også at de for tiden jobber med en 400B-parameterversjon av Llama 3, som eksperter som Nvidias Jim Fan mener kan prestere på samme måte som GPT-4 Turbo, Claude 3 Opus og Gemini Ultra på benchmarks som MMLU, GPQA, HumanEval og MATH.
Ifølge Meta har Llama 3 blitt vurdert ved hjelp av ulike benchmarks, blant annet MMLU (kunnskaper på bachelornivå), GSM-8K (matematikk på grunnskolenivå), HumanEval (koding), GPQA (spørsmål på høyere nivå) og MATH (matematiske ordproblemer). Disse testene viser at 8B-modellen utkonkurrerer modeller med åpne vekter som Googles Gemma 7B og Mistral 7B Instruct, og 70B-modellen er konkurransedyktig i forhold til Gemini Pro 1.5 og Claude 3 Sonnet.
Meta rapporterer at Llama 3-modellen har blitt forbedret med evnen til å forstå koding, i likhet med Llama 2, og for første gang har den blitt trent på både bilder og tekst. Foreløpig er den imidlertid begrenset til tekst.
LLaMA 3 Benchmarks
Ettersom mange organisasjoner bruker AWS for sine produksjonsarbeidsbelastninger, skal vi se på hvordan du distribuerer LLaMA 3 på AWS EC2.
Det er flere hindringer når det gjelder implementering av LLM, for eksempel VRAM-forbruk (GPU-minne), inferenshastighet, gjennomstrømning og bruk av diskplass. I dette scenariet må vi sørge for at vi allokerer en GPU-forekomst på AWS EC2 med tilstrekkelig VRAM-kapasitet til å støtte kjøringen av modellene våre.
LLaMA 3 8B krever rundt 16 GB diskplass og 20 GB VRAM (GPU-minne) i FP16. Du kan selvfølgelig distribuere LLaMA 3 på en CPU, men latenstiden vil være for høy for en reell produksjonsbruk. LLaMA 3 70B krever rundt 140 GB diskplass og 160 GB VRAM i FP16.
Det er ganske enkelt å få tak i 20 GB VRAM for LLaMA 3 8B. Jeg anbefaler at du klargjør en NVIDIA A10 GPU: Denne GPU-en leveres med 24 GB VRAM og er en rask GPU basert på Ampere-plattformen. På AWS EC2 bør du velge en G5-instans for å klargjøre en A10 GPU. En g5.xlarge er tilstrekkelig.
Det er imidlertid mye mer utfordrende å distribuere LLaMA 3 70B-modellen. Ingen GPU har nok VRAM for denne modellen, så du må klargjøre en multi-GPU-instans. Hvis du klargjør en g5.48xlarge-instans på AWS, får du 192 GB VRAM (8 x A10 GPU-er), noe som er nok for LLaMA 3 70B.
I en slik konfigurasjon kan du forvente følgende ventetider (responstider): 50 tokens generert på 1 sekund for LLaMA 3 8B, og 50 tokens generert på 5 sekunder for LLaMA 3 70B.
For å redusere driftskostnadene for disse modellene og øke latenstiden kan du undersøke kvantiseringsteknikker, men vær oppmerksom på at slike optimaliseringer kan skade modellens nøyaktighet. Kvantisering ligger utenfor rammen av denne artikkelen.
For å klargjøre slike forekomster logger du inn på AWS EC2-konsollen og starter en ny forekomst: velg NVIDIA deep learning AMI på en g5.xlarge- eller g5.48xlarge-forekomst. Ikke glem å avsette nok diskplass også.
vLLM er et bibliotek som er utviklet for rask og enkel LLM-inferens og distribusjon. Effektiviteten skyldes en rekke sofistikerte metoder, blant annet "paged attention" for optimal håndtering av oppmerksomhetsnøkkel og verdiminne, sanntidsbehandling av innkommende spørringer i batcher og tilpassede CUDA-kjerner.
I tillegg gir vLLM en høy grad av tilpasningsevne ved hjelp av distribuerte beregninger (ved hjelp av tensorparallellisme), sanntidsstrømming og kompatibilitet med både NVIDIA- og AMD-grafikkort.
Spesielt vil vLLM være til stor hjelp ved distribusjon av LLaMA 3, da det gjør det mulig for oss å bruke AWS EC2-instanser utstyrt med flere kompakte NVIDIA A10 GPU-er. Dette er en fordel sammenlignet med å bruke én stor GPU, for eksempel NVIDIA A100 eller H100. Videre vil vLLM forbedre modellens effektivitet betydelig gjennom kontinuerlig batch-inferens.
Det er ganske enkelt å sette opp vLLM. Vi oppretter en SSH-tilkobling til vår nyopprettede AWS-forekomst og installerer vLLM ved hjelp av pip:
pip install vllm
Siden vi planlegger å utføre distribuert inferens ved hjelp av vLLM på 8 x A10 GPU-er, er det også nødvendig å installere Ray:
pip install ray
Hvis du støter på kompatibilitetsproblemer under installasjonen, kan det være enklere for deg å kompilere vLLM fra kilden eller bruke Docker-imaget: ta en titt på installasjonsinstruksjonene for vLLM.
La oss nå opprette Python-inferensskriptet vårt:
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?"))
Du kan kjøre skriptet ovenfor. Hvis dette er første gang du kjører dette skriptet, må du vente på at modellen lastes ned og lastes inn på GPU-en, og deretter får du noe slikt som dette:
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
Det er ganske enkelt å forstå. Du trenger bare å justere tensor_parallel_size i henhold til antall GPU-er du har.
Vi ønsker nå å starte en passende inferensserver som er i stand til å håndtere mange forespørsler og utføre samtidige inferenser. Vi begynner med å starte serveren:
For LLaMA 3 8B:
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Meta-Llama-3-8B-Instruct
For LLaMA 3 70B:
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Meta-Llama-3-70B-Instruct
--tensor-parallel-size 8
Det bør ta opptil 1 minutt før modellen lastes inn på GPU-en. Deretter kan du starte en annen terminal og begynne å gjøre noen forespørsler:
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?"
}'
Du har nå en skikkelig produksjonsklar inferensserver som kan håndtere mange parallelle forespørsler takket være kontinuerlig batching. Hvis antallet forespørsler er for høyt, vil GPU-en på et tidspunkt bli overbelastet. I så fall må du replikere modellen på flere GPU-instanser og lastbalansere forespørslene dine (men dette er utenfor omfanget av denne artikkelen).
Som du ser, er det ikke nødvendig med komplisert kode for å sette LLaMA 3 i produksjon, takket være inferensservere som vLLM.
Det er imidlertid utfordrende å skaffe riktig maskinvare. For det første fordi disse GPU-ene er svært kostbare, men også på grunn av den nåværende globale GPU-mangelen. Hvis dette er første gang du prøver å klargjøre en GPU-server hos AWS, har du kanskje ikke tillatelse til å opprette en GPU-server. I så fall må du kontakte kundestøtte og forklare bruksområdet ditt. I denne artikkelen har vi brukt AWS EC2, men andre leverandører er selvsagt også tilgjengelige (Azure, GCP, OVH, Scaleway...).
Hvis du ikke er interessert i å distribuere LLaMA 3 selv, foreslår vi at du bruker vårt NLP Cloud API. Dette alternativet kan være mer effektivt og potensielt mye mer kostnadseffektivt enn å administrere din egen LLaMA 3-infrastruktur. Prøv LLaMA 3 på NLP Cloud nå!
Hvis du har spørsmål om LLaMA 3 og AI-distribusjon generelt, er det bare å ta kontakt med oss - vi hjelper deg gjerne!
Julien
Teknisk direktør i NLP Cloud