Sliter du med AI eller fullstack-utvikling? Ekspertene våre er her for å veilede deg: skreddersydde råd, teknisk integrasjon og mer. Ta kontakt på [email protected].

GenAI-inferensmotorer: TensorRT-LLM vs vLLM vs Hugging Face TGI vs LMDeploy

Fremveksten av generativ AI (GenAI) har forandret mange bransjer, fra naturlig språkbehandling til generering av kreativt innhold. Det er imidlertid fortsatt en utfordring å ta i bruk disse kraftige modellene effektivt og i stor skala.

TensorRT-LLM, vLLM, Hugging Face TGI og LMDeploy

Inferensmotorer spiller en avgjørende rolle når det gjelder å optimalisere ytelsen, redusere ventetid og maksimere ressursutnyttelsen. I denne artikkelen ser vi nærmere på fire ledende løsninger: TensorRT-LLM, vLLM, Hugging Face TGI og LMDeploy.

Hver av dem har unike styrker, enten det er NVIDIAs maskinvareakselererte presisjon, vLLMs innovative minnehåndtering, TGIs produksjonsklare økosystem eller LMDeploys fokus på hastighet og enkelhet. Bli med oss når vi sammenligner disse motorene for å hjelpe deg med å finne den perfekte løsningen for GenAI-arbeidsbelastningene dine.

TensorRT-LLM: NVIDIAs kraftverk for optimalisert inferens

TensorRT-LLM er NVIDIAs svar på hvordan du får store språkmodeller til å kjøre raskt og jevnt. TensorRT-LLM er bygget på deres TensorRT-rammeverk og er designet for å presse hver eneste dråpe ytelse ut av NVIDIA GPU-er. Dette gjøres ved hjelp av triks som lagfusjon, presisjonsjustering (FP16, INT8, FP8...) og kjerneoptimalisering som reduserer beregningstiden uten å ødelegge modellens nøyaktighet.

TensorRT-LLM

Det handler ikke bare om hastighet. TensorRT-LLM håndterer store modeller effektivt ved å administrere minnet smart, slik at du ikke krasjer midt i kjøringen. Den støtter også dynamisk batching, slik at du kan behandle flere forespørsler samtidig uten å gå tom for minne. Hvis du allerede bruker NVIDIA-maskinvare, er det en no-brainer, siden det er tett knyttet til deres økosystem, som CUDA og cuDNN, og det integreres til og med med NVIDIAs Triton Inference Server og NVIDIA Dynamo.

Når det er sagt, er det ikke perfekt for alle. Oppsettet kan være vanskelig hvis du ikke er komfortabel med NVIDIAs verktøy, og det er mindre fleksibelt hvis du bruker maskinvare som ikke er fra NVIDIA. Men når det gjelder rå kraft og optimalisering på NVIDIA GPU-er, er det likevel vanskelig å slå.

vLLM: Inferens med høy gjennomstrømning og PagedAttention

vLLM er svært god til å håndtere store mengder inferensjobber raskt. Det er et åpen kildekode-prosjekt som briljerer når du trenger høy gjennomstrømning uten å bremse ned. Den hemmelige sausen er PagedAttention, et triks som håndterer minnet mye bedre enn de fleste. I stedet for å laste inn alt på én gang og bruke opp RAM-minnet, deler den opp nøkkelverdi-cachen i biter og henter bare det som trengs. Mindre sløsing, mer hastighet.

vLLM

Den er også svært fleksibel. Den fungerer med populære modeller som LLaMA eller Mistral rett ut av esken, og den støtter mange typer maskinvare, inkludert NVIDIA- og AMD-GPU-er. Du får også dynamisk batching for å gruppere forespørsler effektivt, slik at pipelinen kjører jevnt. Oppsettet er ganske enkelt hvis du er vant til Python og PyTorch.

Den primære begrensningen ved vLLM er at den er relativt umoden i markedet, noe som betyr at den kanskje ikke tilbyr like omfattende funksjoner som mer etablerte løsninger. For organisasjoner som er på jakt etter en effektiv løsning som gir høy ytelse, er vLLM imidlertid et utmerket valg.

TGI med klemmeansikt: En produksjonsklar løsning for tekstgenerering

Hugging Face TGI (Text Generation Inference) er laget for folk som ønsker å få modeller opp og gå uten hodepine. Det er et verktøy bygget av Hugging Face-teamet, så det spiller fint med deres enorme bibliotek med forhåndstrenede modeller - tenk BERT, GPT og mer. Det er designet for bruk i den virkelige verden, som å drive chatbots eller apper der tekstgenerering må fungere raskt og ikke krasje.

Hugging Face TGI

TGI tar seg av de tunge løftene med funksjoner som kontinuerlig batching, som holder systemet opptatt ved å bytte inn nye forespørsler etter hvert som gamle blir ferdige. Den støtter GPU-akselerasjon og kan skaleres opp hvis du har maskinvaren. I tillegg har den innebygd sikkerhet - som filtrering av dårlige utganger - noe som er praktisk for produksjon. Du kan distribuere den med Docker i noen få trinn, så den er relativt enkel å sette opp.

Haken? Det er knyttet til Hugging Faces økosystem, så hvis du ikke allerede er i den verdenen, kan det føles begrensende. Likevel, for et plug-and-play-alternativ som er klart til bruk, er TGI et godt valg.

LMDeploy: Effektiv distribusjon med overlegen dekodingshastighet

LMDeploy er en verktøykasse fra MMRazor- og MMDeploy-teamene, utviklet for å komprimere, distribuere og kjøre store språkmodeller uten problemer. Hva er det som gjør at det skiller seg ut? Den har utmerket avkodingshastighet - opptil 1,8 ganger flere forespørsler per sekund enn vLLM på en A100 GPU. Det er takket være triks som vedvarende batching, blokkert KV-caching og smarte CUDA-kjerner som holder GPU-en opptatt.

LMDeploy

Den har to motorer: TurboMind for maksimal ytelse og en PyTorch-motor for enklere mekking. TurboMind er stjernen her - den presser 4-biters inferens 2,4 ganger raskere enn FP16, og den håndterer store modeller som Llama-2 70B med letthet. Du kan også kvantisere vekter og KV-cacher for å spare minne uten at det går ut over nøyaktigheten. Det er også enkelt å distribuere - én kommando setter opp en server på flere maskiner hvis du trenger det. I tillegg husker den chat-historikken i samtaler som går over flere runder, slik at du slipper å kaste bort tid på å gjøre om gammelt arbeid.

Ulempen? TurboMind er kresen - den spiller ikke på lag med glidende vindusmodeller som Mistral ennå. Og hvis du ikke bruker NVIDIA GPU-er, må du nøye deg med den tregere PyTorch-motoren. For hastighet og enkelhet på riktig maskinvare er LMDeploy likevel et godt valg.

Sammenligning av ytelse: Latenstid, gjennomstrømning og skalerbarhet

La oss se nærmere på hvordan disse motorene ligger an når det gjelder ventetid (hvor raskt en forespørsel er ferdig), gjennomstrømning (hvor mange forespørsler de kan ta inn) og skalerbarhet (hvor godt de håndterer større belastninger eller mer maskinvare).

TensorRT-LLM er best på ventetid hvis du har NVIDIA GPU-er. Den er svært optimalisert for NVIDIA-maskinvare, så enkeltforespørsler fullføres raskt: under 50 ms for de fleste modeller på en A100. Gjennomstrømningen er også utmerket, spesielt med dynamisk batching. BentoMLs referansetester viser at denne motoren oppnår 700 tokens per sekund med 100 samtidige brukere for Llama 3 70B Q4 på en A100 80GB GPU. TensorRT-LLM presterer sterkt i scenarier med lange inndata og høye forespørselshastigheter, og gir god gjennomstrømning. Skalerbarhet på flere GPU-er støttes uten videre med utmerket ytelse.

vLLM har også god gjennomstrømning, spesielt i avkodingstunge arbeidsbelastninger, med høy gjennomstrømning og lav latenstid etter de siste oppdateringene. BentoMLs referanseverdier viser at denne motoren når 600-650 tokens per sekund ved 100 samtidige brukere for Llama 3 70B Q4 på en A100 80GB GPU. Latenstiden er god, men ikke like god som TensorRT-LLM: rundt 60-80 ms for solokjøringer. Det skalerer godt på tvers av GPUer, til og med blanding av merker, men det er mindre polert for store oppsett.

Hugging Face TGI fungerer på samme måte som vLLM, og gir en balanse mellom ytelse og brukervennlighet. Latenstiden er anstendig: 50-70 ms på en god GPU. BentoMLs referansetester viser at denne motoren når 600-650 tokens per sekund ved 100 samtidige brukere for Llama 3 70B Q4 på en A100 80GB GPU. Den er bygget for å skalere for produksjon, så den håndterer flere brukere eller maskiner uten problemer, spesielt med Docker.

LMDeploy vinner på avkodingshastighet. Den utmerker seg når det gjelder tokengenereringshastighet, spesielt for mindre modeller, og har lav tid til første token (TTFT) for kvantiserte store modeller. Latenstiden er lav: 40-60 ms. Og gjennomstrømningen er utmerket. BentoMLs referansetester viser at denne motoren når 700 tokens per sekund ved 100 samtidige brukere for Llama 3 70B Q4 på en A100 80GB GPU. Skalering er enkelt med serveroppsettet, men det lener seg hardt på NVIDIA GPUer for de beste resultatene; PyTorch-modus henger etter.

Bunnlinjen: TensorRT-LLM og LMDeploy leder på rå hastighet. Valget ditt avhenger av maskinvaren din og hvor mange forespørsler du håndterer.

Muligheter for kvantisering

Kvantisering reduserer modellens presisjon for å redusere minnebruken og øke hastigheten på inferens, noe som er viktig i miljøer med begrensede ressurser. Her er hvordan hver motor presterer:

TensorRT-LLM støtter FP8, FP4, INT4 med Activation-aware Weight Quantization (AWQ) og INT8 med SmoothQuant, noe som gir robuste alternativer for optimalisering av NVIDIA GPU-ytelsen.

vLLM gir fleksibilitet med GPTQ, AWQ, INT4, INT8 og FP8, og kan tilpasses ulike maskinvare- og presisjonsbehov.

Hugging Face TGI integrerer bitsandbytes for 8-bits og 4-bits kvantisering og GPT-Q for kvantisering med kun vekt, noe som er egnet for produksjonsinstallasjoner.

LMDeploy tilbyr 4-bits AWQ, 8-bits kvantisering og online INT8/INT4 KV-cache-kvantisering, noe som øker effektiviteten for store modeller på begrenset maskinvare.

Maskinvarekompatibilitet

Maskinvarestøtten avgjør hvor du kan distribuere disse motorene, noe som påvirker skalerbarheten og ytelsen:

TensorRT-LLM er eksklusivt for NVIDIA CUDA, og utnytter GPU-akseleratorer for høy ytelse.

vLLM støtter NVIDIA CUDA, AMD ROCm, AWS Neuron og CPU, noe som gir bred kompatibilitet for ulike oppsett.

Hugging Face TGI fungerer med NVIDIA CUDA, AMD ROCm, Intel Gaudi og AWS Inferentia, noe som gir fleksibilitet for ulike maskinvaremiljøer.

LMDeploy er optimalisert for NVIDIA CUDA, noe som sikrer topp ytelse på NVIDIA GPU-er, men med begrenset støtte for andre plattformer.

Brukervennlighet

Oppsett- og integrasjonsprosessen kan påvirke utviklingstidene. Her er hvordan de ulike motorene gjør det:

TensorRT-LLM krever konvertering av sjekkpunkter, bygging av TensorRT-motoren og konfigurering av parametere, noe som gjør det utfordrende og tidkrevende for ingeniører.

vLLM er brukervennlig med omfattende dokumentasjon, enkel installasjon og sømløs integrering av Python-biblioteket.

Hugging Face TGI drar nytte av Hugging Faces økosystem, som tilbyr forhåndsbygde Docker-bilder og grundig dokumentasjon for rask distribusjon.

LMDeploy har et enkelt oppsett med én enkelt kommando for å starte serveren og Python-API-er for tilpasning, noe som balanserer enkelhet med fleksibilitet.

Konklusjon

Hvilken motor du skal velge, avhenger av bruksområde, maskinvare og ferdigheter.

TensorRT-LLM er inferensmotoren du bør bruke hvis du kjører store modeller på NVIDIA GPU-er og trenger all den hastigheten du kan få (tenk på applikasjoner med lav latenstid, for eksempel chatbots i sanntid eller AI-assistenter der svarene må genereres på millisekunder). Det er perfekt for selskaper som allerede er dypt inne i NVIDIAs verden, men det kan være overkill hvis du er ute etter enkelhet.

vLLM er et godt kompromiss mellom hastighet og enkelhet. Det fungerer veldig bra for nystartede bedrifter eller forskere som ønsker noe fleksibelt og raskt å sette opp.

Hugging Face TGI tilsvarer vLLM når det gjelder hastighet og enkelhet. Den er enkel å ta i bruk, skalerer problemfritt og er knyttet til Hugging Faces modellhub, så den er ideell for team som ønsker en løsning som ikke krever noe oppstyr.

LMDeploy briljerer på ytelse, i likhet med TensorRT-LLM. Det passer for brukere med NVIDIA GPU-er som ønsker enkelt oppsett og topp ytelse, men det er mindre praktisk hvis modellene dine ikke spiller på lag med TurboMind.

Hvis du ikke kan eller vil distribuere din egen GenAI-modell selv, kan du bruke NLP Cloud og utnytte raske generative AI-modeller i stor skala i produksjonen. Prøv rask inferens på NLP Cloud nå!

Hvis du har spørsmål om inferensmotorer generelt, ikke nøl med å spørre oss, det er alltid en glede å gi deg råd!

Julien
Teknisk direktør i NLP Cloud