Kæmper du med AI eller full-stack-udvikling? Vores eksperter er her for at vejlede dig: skræddersyet rådgivning, teknisk integration og meget mere. Kontakt os på [email protected].

Hvordan installeres og implementeres LLaMA 3 i produktionen?

Den generative AI-model LLaMA 3 blev frigivet af Meta for et par dage siden, og den viser allerede imponerende evner.

Lær, hvordan du installerer og implementerer LLaMA 3 i produktionen med denne trin-for-trin-guide. Fra hardwarekrav til implementering og skalering dækker vi alt, hvad du har brug for at vide for at få en problemfri implementering.

LLaMA 3

Introduktion til LLaMA 3

Meta har introduceret de første versioner af deres Llama 3 open-source AI-model, som kan bruges til tekstoprettelse, programmering eller chatbots. Desuden annoncerede Meta sine planer om at indarbejde LLaMA 3 i sine primære applikationer til sociale medier. Dette skridt sigter mod at konkurrere med andre AI-assistenter, såsom OpenAI's ChatGPT, Microsofts Copilot og Googles Gemini.

I lighed med Llama 2 skiller Llama 3 sig ud som en frit tilgængelig stor sprogmodel med åbne vægte, der tilbydes af en førende AI-virksomhed (selvom den ikke kvalificerer sig som "open source" i konventionel forstand).

I øjeblikket kan Llama 3 downloades gratis fra Metas hjemmeside i to forskellige parameterstørrelser: 8 milliarder (8B) og 70 milliarder (70B). Brugere kan tilmelde sig for at få adgang til disse versioner. Llama 3 tilbydes i to varianter: pre-trained, som er en grundlæggende model til forudsigelse af næste token, og instruction-tuned, som er finjusteret til at overholde brugerkommandoer. Begge versioner har en kontekstgrænse på 8.192 tokens.

I et interview med Dwarkesh Patel nævnte Mark Zuckerberg, CEO for Meta, at de trænede to specialbyggede modeller ved hjælp af en 24.000-GPU-klynge. 70B-modellen blev trænet med ca. 15 billioner tokens af data, og den nåede aldrig et mætningspunkt eller en grænse for dens evner. Bagefter besluttede Meta at fokusere på at træne andre modeller. Virksomheden afslørede også, at de i øjeblikket arbejder på en 400B-parameterversion af Llama 3, som eksperter som Nvidias Jim Fan mener kan præstere på samme måde som GPT-4 Turbo, Claude 3 Opus og Gemini Ultra på benchmarks som MMLU, GPQA, HumanEval og MATH.

Ifølge Meta er Llama 3 blevet vurderet ved hjælp af forskellige benchmarks, herunder MMLU (viden på bachelorniveau), GSM-8K (matematik i folkeskolen), HumanEval (kodning), GPQA (spørgsmål på kandidatniveau) og MATH (matematiske ordproblemer). Disse benchmarks viser, at 8B-modellen overgår modeller med åbne vægte som Googles Gemma 7B og Mistral 7B Instruct, og 70B-modellen er konkurrencedygtig i forhold til Gemini Pro 1.5 og Claude 3 Sonnet.

Meta rapporterer, at Llama 3-modellen er blevet forbedret med evnen til at forstå kodning, ligesom Llama 2, og for første gang er den blevet trænet i at bruge både billeder og tekst. Dens nuværende output er dog begrænset til tekst.

LLaMA 3 Benchmarks LLaMA 3 Benchmarks

LLaMA 3-hardwarekrav og valg af de rigtige instanser på AWS EC2

Da mange organisationer bruger AWS til deres produktionsworkloads, lad os se, hvordan man implementerer LLaMA 3 på AWS EC2.

Der er flere forhindringer, når det kommer til at implementere LLM'er, såsom VRAM-forbrug (GPU-hukommelse), inferenshastighed, throughput og udnyttelse af diskplads. I dette scenarie skal vi sikre, at vi tildeler en GPU-instans på AWS EC2 med tilstrækkelig VRAM-kapacitet til at understøtte udførelsen af vores modeller.

LLaMA 3 8B kræver omkring 16 GB diskplads og 20 GB VRAM (GPU-hukommelse) i FP16. Du kan selvfølgelig implementere LLaMA 3 på en CPU, men latenstiden vil være for høj til en reel produktionsanvendelse. Hvad angår LLaMA 3 70B, kræver den omkring 140 GB diskplads og 160 GB VRAM i FP16.

Det er ret nemt at få fat i 20 GB VRAM til LLaMA 3 8B. Jeg anbefaler, at du provisionerer en NVIDIA A10 GPU: Denne GPU leveres med 24 GB VRAM, og det er en hurtig GPU baseret på Ampere-platformen. På AWS EC2 skal du vælge en G5-instans for at kunne provisionere en A10 GPU. En g5.xlarge vil være nok.

Implementering af LLaMA 3 70B-modellen er dog meget mere udfordrende. Ingen GPU har nok VRAM til denne model, så du bliver nødt til at provisionere en multi-GPU-instans. Hvis du provisionerer en g5.48xlarge-instans på AWS, får du 192 GB VRAM (8 x A10 GPU'er), hvilket vil være nok til LLaMA 3 70B.

I en sådan konfiguration kan du forvente følgende latenstider (svartider): 50 tokens genereret på 1 sekund for LLaMA 3 8B, og 50 tokens genereret på 5 sekunder for LLaMA 3 70B.

For at reducere driftsomkostningerne for disse modeller og øge latenstiden kan du undersøge kvantiseringsteknikker, men vær opmærksom på, at sådanne optimeringer kan skade nøjagtigheden af din model. Kvantisering ligger uden for rammerne af denne artikel.

For at kunne oprette sådanne instanser skal du logge ind på din AWS EC2-konsol og starte en ny instans: Vælg NVIDIA deep learning AMI på en g5.xlarge eller g5.48xlarge instans. Glem ikke også at afsætte nok diskplads.

Deep Learning AMI på G5-instans på AWS

Produktionsinferens med vLLM

vLLM er et bibliotek, der er designet til hurtig og nem LLM-inferens og -implementering. Dets effektivitet tilskrives forskellige sofistikerede metoder, herunder paged attention for optimal styring af opmærksomhedsnøgle og værdihukommelse, realtidsbehandling af indgående forespørgsler i batches og personaliserede CUDA-kerner.

Derudover giver vLLM en høj grad af tilpasningsevne ved at anvende distribueret beregning (ved hjælp af tensorparallelisme), streaming i realtid og kompatibilitet med både NVIDIA- og AMD-grafikkort.

Specifikt vil vLLM i høj grad hjælpe med at implementere LLaMA 3, så vi kan bruge AWS EC2-instanser udstyret med flere kompakte NVIDIA A10 GPU'er. Dette er en fordel i forhold til at bruge en enkelt stor GPU, såsom NVIDIA A100 eller H100. Desuden vil vLLM forbedre vores models effektivitet betydeligt gennem kontinuerlig batch-inferens.

Opsætningen af vLLM er ganske enkel. Lad os oprette en SSH-forbindelse til vores nyligt oprettede AWS-instans og installere vLLM ved hjælp af pip:

pip install vllm

Da vi planlægger at udføre distribueret inferens ved hjælp af vLLM på 8 x A10 GPU'er, er installationen af Ray også påkrævet:

pip install ray

Hvis du støder på kompatibilitetsproblemer under installationen, kan det være nemmere for dig at kompilere vLLM fra kilden eller bruge deres Docker-image: Se installationsvejledningen til vLLM.

Start inferensserveren

Lad os nu oprette vores Python-inferensscript:

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 køre ovenstående script. Hvis det er første gang, du kører scriptet, skal du vente på, at modellen bliver downloadet og indlæst på GPU'en, hvorefter du vil få noget i denne stil:

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 at forstå. Du skal blot justere tensor_parallel_size i forhold til antallet af GPU'er, du har.

Vi ønsker nu at starte en passende inferensserver, der er i stand til at håndtere mange forespørgsler og udføre samtidige inferenser. Til at begynde med starter vi serveren:

Til LLaMA 3 8B:

python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Meta-Llama-3-8B-Instruct

Til 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 tage op til 1 minut for modellen at blive indlæst på GPU'en. Derefter kan du starte en anden terminal og begynde at lave nogle forespørgsler:

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 nu en rigtig produktionsklar inferensserver, der kan håndtere mange parallelle forespørgsler takket være kontinuerlig batching. På et tidspunkt, hvis antallet af forespørgsler er for højt, vil GPU'en dog blive overbelastet. I så fald bliver du nødt til at replikere modellen på flere GPU-instanser og belastningsbalancere dine anmodninger (men det er uden for rammerne af denne artikel).

Konklusion

Som du kan se, kræver implementering af LLaMA 3 i produktion ikke nogen kompleks kode takket være inferensservere som vLLM.

Det er dog en udfordring at skaffe den rigtige hardware. Først og fremmest fordi disse GPU'er er meget dyre, men også på grund af den nuværende globale GPU-mangel. Hvis det er første gang, du prøver at provisionere en GPU-server hos AWS, har du måske ikke tilladelse til at oprette en GPU-server. I så fald skal du kontakte support og forklare din brugssag. I denne artikel brugte vi AWS EC2, men andre leverandører er selvfølgelig tilgængelige (Azure, GCP, OVH, Scaleway...).

Hvis du ikke selv er interesseret i at implementere LLaMA 3, foreslår vi, at du bruger vores NLP Cloud API. Denne mulighed kan være mere effektiv og potentielt meget mere omkostningseffektiv end at administrere din egen LLaMA 3-infrastruktur. Prøv LLaMA 3 på NLP Cloud nu!

Hvis du har spørgsmål om LLaMA 3 og AI-implementering generelt, så tøv ikke med at spørge os, det er altid en fornøjelse at hjælpe!

Julien
CTO hos NLP Cloud