Kämpar du med AI eller fullstack-utveckling? Våra experter finns här för att vägleda dig: skräddarsydda råd, teknisk integration och mycket mer. Nå ut till oss på [email protected].

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

Framväxten av generativ AI (GenAI) har förändrat branscher, från bearbetning av naturligt språk till generering av kreativt innehåll. Det är dock fortfarande en utmaning att använda dessa kraftfulla modeller effektivt i stor skala.

TensorRT-LLM, vLLM, Hugging Face TGI och LMDeploy

Inferensmotorer spelar en avgörande roll när det gäller att optimera prestanda, minska latens och maximera resursutnyttjandet. I den här artikeln dyker vi ner i fyra ledande lösningar: TensorRT-LLM, vLLM, Hugging Face TGI och LMDeploy.

Alla har unika styrkor, oavsett om det handlar om NVIDIA:s hårdvaruaccelererade precision, vLLM:s innovativa minneshantering, TGI:s produktionsklara ekosystem eller LMDeploys fokus på hastighet och enkelhet. Följ med oss när vi jämför dessa motorer för att hjälpa dig att hitta den perfekta lösningen för dina GenAI-arbetsbelastningar.

TensorRT-LLM: NVIDIA:s kraftpaket för optimerad inferens

TensorRT-LLM är NVIDIA:s svar på hur man får stora språkmodeller att köra snabbt och smidigt. Det är byggt på deras TensorRT-ramverk och är utformat för att pressa varje droppe prestanda ur NVIDIA GPU: er. Det gör det med knep som lagerfusion, precisionsjustering (FP16, INT8, FP8 ...) och kärnoptimering som minskar beräkningstiden utan att bryta modellens noggrannhet.

TensorRT-LLM

Det handlar inte bara om hastighet. TensorRT-LLM hanterar stora modeller effektivt genom att hantera minnet smart, så att du inte kraschar mitt i körningen. Det stöder också dynamisk batchning, så att du kan bearbeta flera förfrågningar samtidigt utan att få slut på minne. Om du redan använder NVIDIA-hårdvara är det en no-brainer eftersom det är tätt limmat till deras ekosystem, som CUDA och cuDNN, och det integreras till och med med NVIDIA: s Triton Inference Server och NVIDIA Dynamo.

Med det sagt är det inte perfekt för alla. Installationen kan vara jobbig om du inte är bekväm med NVIDIA:s verktyg, och det är mindre flexibelt om du använder hårdvara som inte kommer från NVIDIA. Men för rå kraft och optimering på NVIDIA GPU:er är det ändå svårt att slå.

vLLM: Inferens med hög genomströmning och PagedAttention

vLLM är mycket bra på att hantera stora volymer av inferensjobb snabbt. Det är ett öppen källkodsprojekt som glänser när du behöver hög genomströmning utan att sakta ner. Den hemliga såsen är PagedAttention, ett trick som hanterar minnet mycket bättre än de flesta. Istället för att ladda allt på en gång och äta upp RAM-minnet delar den upp nyckelvärdescachen i bitar och hämtar bara det som behövs. Mindre slöseri, mer hastighet.

vLLM

Den är också mycket flexibel. Den fungerar med populära modeller som LLaMA eller Mistral direkt från start och stöder många olika hårdvaror, inklusive NVIDIA- eller AMD-GPU:er. Du får också dynamisk batching för att gruppera förfrågningar effektivt och hålla pipelinen igång smidigt. Installationen är ganska okomplicerad om du är van vid Python och PyTorch.

Den främsta begränsningen med vLLM är att det är relativt omoget på marknaden, vilket innebär att det kanske ännu inte erbjuder den omfattande uppsättning funktioner som finns i mer etablerade lösningar. För organisationer som söker en effektiv lösning som ger högpresterande inferens är vLLM dock ett utmärkt val.

Kramande ansikte TGI: En produktionsfärdig lösning för textgenerering

Hugging Face TGI (Text Generation Inference) är gjord för människor som vill få modeller igång utan huvudvärk. Det är ett verktyg byggt av Hugging Face-teamet, så det spelar bra med deras massiva bibliotek med förutbildade modeller - tänk BERT, GPT och mer. Den är utformad för verklig användning, som att driva chatbots eller appar där textgenerering måste fungera snabbt och inte krascha.

Kramande ansikte TGI

TGI sköter det tunga arbetet med funktioner som kontinuerlig batchning, som håller systemet sysselsatt genom att byta in nya förfrågningar när gamla är klara. Det stöder GPU-acceleration och kan skalas upp om du har hårdvaran. Dessutom har det inbyggd säkerhet - som att filtrera bort dåliga utdata - vilket är praktiskt för produktion. Du kan distribuera det med Docker i några steg, så det är relativt enkelt att installera.

Haken med det hela? Det är knutet till Hugging Faces ekosystem, så om du inte redan är i den världen kan det kännas begränsande. För ett plug-and-play-alternativ som är redo att användas är TGI ändå ett bra val.

LMDeploy: Effektiv utplacering med överlägsen avkodningshastighet

LMDeploy är en verktygslåda från MMRazor- och MMDeploy-teamen, byggd för att komprimera, distribuera och köra stora språkmodeller utan krångel. Vad får det att sticka ut? Den har en utmärkt avkodningshastighet - upp till 1,8 gånger fler förfrågningar per sekund än vLLM på en A100 GPU. Det är tack vare knep som ihållande batchning, blockerad KV-cachelagring och smarta CUDA-kärnor som håller GPU:n sysselsatt.

LMDeploy

Den har två motorer: TurboMind för maximal prestanda och en PyTorch en för enklare tinkering. TurboMind är stjärnan här - den driver 4-bitars inferens 2,4x snabbare än FP16, och den hanterar stora modeller som Llama-2 70B med lätthet. Du kan också kvantisera vikter och KV-cacher för att spara minne utan att skada noggrannheten. Driftsättning är också en barnlek - ett kommando ställer in en server över flera maskiner om du behöver det. Dessutom kommer den ihåg chathistoriken i samtal med flera rundor, så att den inte slösar tid på att göra om gammalt arbete.

Nackdelen? TurboMind är picky - det spelar inte bra med glidande fönsteruppmärksamhetsmodeller som Mistral ännu. Och om du inte är på NVIDIA GPU: er sitter du fast med den långsammare PyTorch-motorn. För snabbhet och enkelhet på rätt hårdvara är LMDeploy ändå ett utmärkt val.

Jämförelse av prestanda: Latency, genomströmning och skalbarhet

Låt oss dela upp hur dessa motorer står sig när det gäller latens (hur snabbt en förfrågan avslutas), genomströmning (hur många förfrågningar de kan ta emot) och skalbarhet (hur väl de hanterar större belastningar eller mer hårdvara).

TensorRT-LLM glänser när det gäller latens om du har NVIDIA GPU:er. Det är mycket optimerat för NVIDIA-hårdvara, så enskilda förfrågningar avslutas snabbt: under 50 ms för de flesta modeller på en A100. Genomströmningen är också utmärkt, särskilt med dynamisk batchning. Benchmarks från BentoML visar att den här motorn når 700 tokens per sekund vid 100 samtidiga användare för Llama 3 70B Q4 på en A100 80GB GPU. TensorRT-LLM presterar starkt i scenarier med långa inmatningar och höga förfrågningsfrekvenser, vilket ger bra genomströmning. Skalbarhet på flera GPU:er stöds direkt från start med utmärkta prestanda.

vLLM har också bra genomströmning, särskilt i avkodningstunga arbetsbelastningar, med hög genomströmning och låg latens efter de senaste uppdateringarna. Benchmarks från BentoML visar att den här motorn når 600-650 tokens per sekund vid 100 samtidiga användare för Llama 3 70B Q4 på en A100 80GB GPU. Latensen är bra men inte lika bra som TensorRT-LLM: cirka 60-80 ms för solokörningar. Det skalar bra över GPU: er, till och med blandande varumärken, men det är mindre polerat för stora inställningar.

Hugging Face TGI presterar på samma sätt som vLLM, vilket ger en balans mellan prestanda och användarvänlighet. Latensen är hyfsad: 50-70 ms på en bra GPU. Benchmarks från BentoML visar att den här motorn når 600-650 tokens per sekund vid 100 samtidiga användare för Llama 3 70B Q4 på en A100 80GB GPU. Den är byggd för att skala för produktion, så den hanterar fler användare eller maskiner smidigt, särskilt med Docker.

LMDeploy vinner på avkodningshastighet. Den utmärker sig i tokengenereringshastighet, särskilt för mindre modeller, och har låg tid till första token (TTFT) för kvantiserade stora modeller. Fördröjningen är låg: 40-60 ms. Och genomströmningen är utmärkt. Benchmarks från BentoML visar att denna motor når 700 tokens per sekund vid 100 samtidiga användare för Llama 3 70B Q4 på en A100 80GB GPU. Skalning är enkelt med serverinstallationen, men den lutar sig hårt på NVIDIA GPU: er för bästa resultat; PyTorch-läget släpar efter.

Slutsats: TensorRT-LLM och LMDeploy leder på rå hastighet. Ditt val beror på din hårdvara och hur många förfrågningar du hanterar.

Funktioner för kvantisering

Kvantisering minskar modellprecisionen för att minska minnesanvändningen och påskynda inferens, vilket är viktigt för resursbegränsade miljöer. Här är hur varje motor presterar:

TensorRT-LLM stöder FP8, FP4, INT4 med AWQ (Activation-aware Weight Quantization) och INT8 med SmoothQuant, vilket ger robusta alternativ för optimering av NVIDIA GPU-prestanda.

vLLM ger flexibilitet med GPTQ, AWQ, INT4, INT8 och FP8 och kan anpassas till olika hårdvaru- och precisionsbehov.

Hugging Face TGI integrerar bitsandbytes för 8-bitars och 4-bitars kvantisering och GPT-Q för kvantisering med enbart vikt, vilket är lämpligt för produktionsinstallationer.

LMDeploy erbjuder 4-bitars AWQ, 8-bitars kvantisering och online INT8/INT4 KV-cachekvantisering, vilket ökar effektiviteten för stora modeller på begränsad maskinvara.

Kompatibilitet med hårdvara

Hårdvarustöd avgör var du kan distribuera dessa motorer, vilket påverkar skalbarhet och prestanda:

TensorRT-LLM är exklusivt för NVIDIA CUDA och utnyttjar GPU-acceleratorer för hög prestanda.

vLLM stöder NVIDIA CUDA, AMD ROCm, AWS Neuron och CPU, vilket ger bred kompatibilitet för olika inställningar.

Hugging Face TGI fungerar med NVIDIA CUDA, AMD ROCm, Intel Gaudi och AWS Inferentia, vilket ger flexibilitet för olika hårdvarumiljöer.

LMDeploy är optimerad för NVIDIA CUDA, vilket garanterar topprestanda på NVIDIA GPU:er men med begränsat stöd för andra plattformar.

Användarvänlighet

Installations- och integrationsprocessen kan påverka utvecklingstiderna. Här är hur varje motor klarar sig:

TensorRT-LLM kräver att man konverterar kontrollpunkter, bygger TensorRT-motorn och konfigurerar parametrar, vilket gör det utmanande och tidskrävande för ingenjörer.

vLLM är användarvänligt med omfattande dokumentation, enkel installation och sömlös integrering av Python-bibliotek.

Hugging Face TGI drar nytta av Hugging Faces ekosystem, som erbjuder förbyggda Docker-bilder och grundlig dokumentation för snabb driftsättning.

LMDeploy har en enkel installation med ett enda kommando för att starta servern och Python API:er för anpassning, vilket ger en balans mellan enkelhet och flexibilitet.

Slutsats

Valet av rätt motor beror på ditt användningsområde, din maskinvara och dina kunskaper.

TensorRT-LLM är din inferensmotor om du kör stora modeller på NVIDIA GPU:er och behöver varje uns av hastighet (tänk applikationer med låg latens som chattbottar i realtid eller AI-assistenter där svar måste genereras på millisekunder). Det är perfekt för företag som redan är djupt inne i NVIDIAs värld, men det kan vara överdrivet om du letar efter enkelhet.

vLLM är en bra avvägning mellan snabbhet och enkelhet. Det fungerar riktigt bra för nystartade företag eller forskare som vill ha något flexibelt och snabbt att installera.

Hugging Face TGI är likvärdigt med vLLM när det gäller hastighet och enkelhet. Det är enkelt att driftsätta, skalar smidigt och kopplas till Hugging Faces modellhubb, så det är perfekt för team som vill ha en lösning utan krångel.

LMDeploy glänser på prestanda, som TensorRT-LLM. Det passar användare med NVIDIA GPU:er som vill ha enkel installation och topprestanda, men det är mindre praktiskt om dina modeller inte spelar bra med TurboMind.

Om du inte kan eller vill distribuera din egen GenAI-modell själv kan du använda NLP Cloud och utnyttja snabba generativa AI-modeller i stor skala i produktionen. Prova snabb inferens på NLP Cloud nu!

Om du har frågor om inferensmotorer i allmänhet, tveka inte att fråga oss, det är alltid ett nöje att ge råd!

Julien
CTO på NLP Cloud