Imate težave z umetno inteligenco ali razvojem celotnega paketa? Naši strokovnjaki so vam na voljo za pomoč: prilagojeni nasveti, tehnična integracija in še več. Obrnite se na [email protected].

Inferenčni motorji GenAI: TensorRT-LLM vs vLLM vs Hugging Face TGI vs LMDeploy

Vzpon generativne umetne inteligence (GenAI) je spremenil panoge, od obdelave naravnega jezika do ustvarjanja kreativnih vsebin. Vendar pa je učinkovita uporaba teh zmogljivih modelov v velikem obsegu še vedno izziv.

TensorRT-LLM, vLLM, Hugging Face TGI in LMDeploy

Inferenčni motorji imajo ključno vlogo pri optimizaciji delovanja, zmanjševanju zakasnitev in čim večji izkoriščenosti virov. V tem članku bomo predstavili štiri vodilne rešitve: TensorRT-LLM, vLLM, Hugging Face TGI in LMDeploy.

Vsak od njih prinaša edinstvene prednosti, naj gre za strojno pospešeno natančnost družbe NVIDIA, inovativno upravljanje pomnilnika družbe vLLM, ekosistem družbe TGI, ki je pripravljen za proizvodnjo, ali osredotočenost družbe LMDeploy na hitrost in preprostost. Pridružite se nam pri primerjavi teh pogonov, da bi vam pomagali najti najprimernejšega za vaše delovne obremenitve GenAI.

TensorRT-LLM: NVIDIA-jeva moč za optimizirano sklepanje

TensorRT-LLM je rešitev družbe NVIDIA za hitro in gladko delovanje velikih jezikovnih modelov. Zgrajen je na ogrodju TensorRT in zasnovan tako, da iz grafičnih procesorjev NVIDIA iztisne vsako kapljico zmogljivosti. To počne s triki, kot so združevanje plasti, prilagajanje natančnosti (FP16, INT8, FP8 ...) in optimizacija jedra, ki skrajšuje čas računanja, ne da bi pri tem okrnila natančnost modela.

TensorRT-LLM

Ne gre le za hitrost. TensorRT-LLM učinkovito obdeluje velike modele s pametnim upravljanjem pomnilnika, tako da ne pride do sesutja med izvajanjem. Podpira tudi dinamično združevanje, ki vam omogoča obdelavo več zahtevkov hkrati, ne da bi vam zmanjkalo pomnilnika. Če že uporabljate strojno opremo NVIDIA, je ta program brez težav, saj je tesno povezan z njihovim ekosistemom, kot sta CUDA in cuDNN, ter se celo povezuje s strežnikom NVIDIA Triton Inference Server in NVIDIA Dynamo.

Kljub temu ni popoln za vsakogar. Nastavitev je lahko težavna, če ne znate uporabljati orodij NVIDIA, in manj prilagodljiva, če uporabljate strojno opremo, ki ni NVIDIA. Kljub temu ga je težko premagati, če gre za surovo moč in optimizacijo na grafičnih procesorjih NVIDIA.

vLLM: Visoko prepustno sklepanje s PagedAttention

vLLM je zelo dober pri hitrem obravnavanju velikega števila opravil za sklepanje. Gre za odprtokodni projekt, ki se odlično obnese, kadar potrebujete visoko prepustnost brez upočasnjevanja. Skrivna omaka je PagedAttention, trik, ki upravlja pomnilnik veliko bolje kot večina drugih. Namesto da bi naložil vse naenkrat in porabil pomnilnik, predpomnilnik ključ-vrednost razdeli na dele in pobere le tisto, kar je potrebno. Manj zapravljanja, več hitrosti.

vLLM

Prav tako je zelo prilagodljiv. Deluje s priljubljenimi modeli, kot sta LLaMA ali Mistral, že takoj po namestitvi in podpira veliko strojne opreme, vključno z grafičnimi procesorji NVIDIA ali AMD. Na voljo je tudi dinamično združevanje v skupine, ki omogoča učinkovito združevanje zahtevkov in zagotavlja nemoteno delovanje cevovoda. Nastavitev je precej preprosta, če ste navajeni na program Python in PyTorch.

Glavna omejitev vLLM je njegova relativna nezrelost na trgu, kar pomeni, da morda še ne ponuja obsežnega nabora funkcij, ki so na voljo v bolj uveljavljenih rešitvah. Vendar je vLLM odlična izbira za organizacije, ki iščejo učinkovito rešitev, ki zagotavlja visoko zmogljivo sklepanje.

Objemni obraz TGI: Rešitev za generiranje besedil, pripravljena za proizvodnjo

Hugging Face TGI (Text Generation Inference) je ustvarjen za ljudi, ki želijo modele vzpostaviti in zagnati brez glavobola. Gre za orodje, ki ga je izdelala ekipa Hugging Face, zato se dobro ujema z njihovo obsežno knjižnico vnaprej usposobljenih modelov, kot so BERT, GPT in drugi. Zasnovano je za uporabo v resničnem svetu, na primer za pogovorne robote ali aplikacije, kjer mora ustvarjanje besedila delovati hitro in se ne sme zrušiti.

Objemni obraz TGI

Storitev TGI je težka s funkcijami, kot je neprekinjeno doziranje, ki sistem zaposluje z zamenjavo novih zahtevkov, ko se stari zaključijo. Podpira pospeševanje z grafičnim procesorjem in se lahko poveča, če imate na voljo strojno opremo. Poleg tega ima vgrajeno varnost, kot je filtriranje slabih rezultatov, kar je priročno za produkcijo. V nekaj korakih ga lahko namestite s programom Docker, zato ga je razmeroma enostavno vzpostaviti.

Ugotovitev? Povezana je z ekosistemom aplikacije Hugging Face, zato se vam bo morda zdela omejujoča, če še niste v tem svetu. Kljub temu je TGI odlična izbira za možnost "plug-and-play", ki je pripravljena za uporabo.

LMDeploy: Učinkovito uvajanje z izjemno hitrostjo dekodiranja

LMDeploy je orodje ekip MMRazor in MMDeploy za stiskanje, nameščanje in izvajanje velikih jezikovnih modelov brez težav. Po čem izstopa? Ima odlično hitrost dekodiranja - do 1,8-krat več zahtevkov na sekundo kot vLLM na grafičnem procesorju A100. Za to so zaslužni triki, kot so vztrajno doziranje, blokirano predpomnjenje KV in spretna jedra CUDA, ki zaposlujejo grafični procesor.

LMDeploy

Ima dva motorja: TurboMind za maksimalno zmogljivost in PyTorch za lažje delo. TurboMind je tu glavna zvezda - 4-bitno sklepanje je 2,4-krat hitrejše od FP16 in z lahkoto obvladuje velike modele, kot je Llama-2 70B. Prav tako lahko kvantiziramo uteži in predpomnilnike KV ter tako prihranimo pomnilnik, ne da bi pri tem škodovali natančnosti. Tudi namestitev je preprosta - z enim samim ukazom nastavite strežnik na več računalnikih, če ga potrebujete. Poleg tega si zapomni zgodovino pogovorov v več krogih, tako da ne izgublja časa s ponovnim opravljanjem starega dela.

Slaba stran? TurboMind je izbirčen - še ne sodeluje z modeli pozornosti z drsnim oknom, kot je Mistral. Če ne uporabljate grafičnih procesorjev NVIDIA, boste morali uporabljati počasnejši pogon PyTorch. Kljub temu je LMDeploy odlična izbira za hitrost in preprostost na pravi strojni opremi.

Primerjava učinkovitosti: Zakasnitev, prepustnost in skalabilnost

Razčlenimo, kako se ti motorji odrežejo glede na zakasnitev (kako hitro se konča ena zahteva), prepustnost (koliko zahtev lahko zaužijejo) in skalabilnost (kako dobro prenesejo večje obremenitve ali več strojne opreme).

Če imate grafične procesorje NVIDIA, je TensorRT-LLM najboljši pri zakasnitvah. Zelo je optimiziran za strojno opremo NVIDIA, zato se posamezni zahtevki končajo hitro: manj kot 50 ms za večino modelov na računalniku A100. Tudi prepustnost je odlična, zlasti z dinamičnim združevanjem. Benchmarki BentoML kažejo, da ta pogon doseže 700 žetonov na sekundo pri 100 sočasnih uporabnikih za Llama 3 70B Q4 na grafičnem procesorju A100 80GB. TensorRT-LLM se dobro obnese v scenarijih z dolgimi vhodi in visokimi stopnjami zahtevkov ter ponuja dobro prepustnost. Skalabilnost na več grafičnih procesorjih je podprta že v izhodišču z odlično zmogljivostjo.

Tudi vLLM ima dobro prepustnost, zlasti pri obremenitvah, ki zahtevajo dekodiranje, po nedavnih posodobitvah pa ima visoko prepustnost in nizko zakasnitev. Benchmarki BentoML kažejo, da ta pogon doseže 600-650 žetonov na sekundo pri 100 sočasnih uporabnikih za Llama 3 70B Q4 na grafičnem procesorju A100 80GB. Zakasnitev je dobra, vendar ne tako dobra kot pri TensorRT-LLM: približno 60-80 ms pri samostojnih zagonih. Dobro se skalira med grafičnimi procesorji, tudi z mešanjem blagovnih znamk, vendar je manj dodelan za velike konfiguracije.

Objemni obraz TGI deluje podobno kot vLLM ter zagotavlja ravnovesje med zmogljivostjo in enostavnostjo uporabe. Zakasnitev je spodobna: 50-70 ms na dobrem grafičnem procesorju. Benchmarki BentoML kažejo, da ta pogon doseže 600-650 žetonov na sekundo pri 100 sočasnih uporabnikih za Llama 3 70B Q4 na grafičnem procesorju A100 80GB. Zgrajen je tako, da ga je mogoče skalirati za produkcijo, zato nemoteno obvladuje več uporabnikov ali strojev, zlasti z Dockerjem.

LMDeploy zmaga pri hitrosti dekodiranja. Odlikuje ga hitrost generiranja žetonov, zlasti pri manjših modelih, pri kvantiziranih velikih modelih pa ima nizek čas do prvega žetona (TTFT). Zakasnitev je nizka: 40-60 ms. In prepustnost je odlična. Primerjalna merila BentoML kažejo, da ta motor doseže 700 žetonov na sekundo pri 100 sočasnih uporabnikih za Llama 3 70B Q4 na grafičnem procesorju A100 80 GB. Z njegovo strežniško nastavitvijo je razširjanje enostavno, vendar se za najboljše rezultate močno opira na grafične procesorje NVIDIA; način PyTorch zaostaja.

Spodnja vrstica: TensorRT-LLM in LMDeploy vodita po hitrosti. Vaša izbira je odvisna od strojne opreme in števila zahtevkov, ki jih obdelujete.

zmožnosti kvantizacije

Kvantizacija zmanjša natančnost modela, da bi zmanjšala porabo pomnilnika in pospešila sklepanje, kar je pomembno za okolja z omejenimi viri. V nadaljevanju si oglejte, kako se obnese posamezen pogon:

TensorRT-LLM podpira FP8, FP4, INT4 z AWQ (Activation-aware Weight Quantization) in INT8 s SmoothQuant, kar ponuja zanesljive možnosti za optimizacijo zmogljivosti grafičnega procesorja NVIDIA.

vLLM zagotavlja prilagodljivost z GPTQ, AWQ, INT4, INT8 in FP8 ter se tako prilagaja različnim potrebam strojne opreme in natančnosti.

TGI Hugging Face združuje bitsandbytes za 8-bitno in 4-bitno kvantizacijo ter GPT-Q za kvantizacijo samo z utežmi, kar je primerno za produkcijske namestitve.

LMDeploy ponuja 4-bitno AWQ, 8-bitno kvantizacijo in spletno kvantizacijo predpomnilnika INT8/INT4 KV, kar povečuje učinkovitost velikih modelov na omejeni strojni opremi.

Združljivost strojne opreme

Podpora strojne opreme določa, kje lahko namestite te motorje, kar vpliva na razširljivost in zmogljivost:

TensorRT-LLM je ekskluziven za NVIDIA CUDA, saj za visoko zmogljivost uporablja pospeševalnike GPU.

vLLM podpira NVIDIA CUDA, AMD ROCm, AWS Neuron in CPU, kar zagotavlja široko združljivost za različne konfiguracije.

Objemni obraz TGI deluje z NVIDIA CUDA, AMD ROCm, Intel Gaudi in AWS Inferentia, kar zagotavlja prilagodljivost za različna strojna okolja.

LMDeploy je optimiziran za NVIDIA CUDA, kar zagotavlja vrhunsko zmogljivost na grafičnih procesorjih NVIDIA, vendar ima omejeno podporo za druge platforme.

Enostavnost uporabe

Postopek namestitve in integracije lahko vpliva na časovni razpored razvoja. Tukaj si oglejte, kako se odrežejo posamezni pogoni:

TensorRT-LLM zahteva pretvorbo kontrolnih točk, izgradnjo gonilnika TensorRT in konfiguracijo parametrov, kar je za inženirje zahtevno in dolgotrajno.

vLLM je uporabniku prijazen z izčrpno dokumentacijo, enostavno namestitvijo in nemoteno integracijo knjižnice Python.

Hugging Face TGI ima koristi od ekosistema Hugging Face, ki ponuja vnaprej pripravljene slike Docker in temeljito dokumentacijo za hitro uvajanje.

LMDeploy omogoča preprosto nastavitev z enim samim ukazom za zagon strežnika in API-ji Pythona za prilagajanje, kar zagotavlja ravnovesje med enostavnostjo in prilagodljivostjo.

Zaključek

Izbira pravega motorja je odvisna od primera uporabe, strojne opreme in znanja.

TensorRT-LLM je motor za sklepanje, če uporabljate velike modele na grafičnih procesorjih NVIDIA in potrebujete vsako unčo hitrosti (pomislite na aplikacije z nizkimi zakasnitvami, kot so klepetalni roboti v realnem času ali pomočniki umetne inteligence, kjer je treba odgovore ustvariti v milisekundah). To je kot nalašč za podjetja, ki so že globoko v svetu družbe NVIDIA, vendar je morda pretirano, če iščete preprostost.

vLLM je odličen kompromis med hitrostjo in preprostostjo. Zelo dobro se obnese za zagonska podjetja ali raziskovalce, ki želijo nekaj prilagodljivega in hitro nastavljivega.

Objemni obraz TGI je po hitrosti in enostavnosti enakovreden vLLM. Enostavno ga je uvesti, se nemoteno širi in povezuje z modelnim vozliščem Hugging Face, zato je idealen za ekipe, ki želijo rešitev brez zapletov.

LMDeploy se podobno kot TensorRT-LLM odlikuje po zmogljivosti. Primeren je za uporabnike z grafičnimi procesorji NVIDIA, ki želijo preprosto nastavitev in vrhunsko zmogljivost, vendar je manj priročen, če se vaši modeli ne ujemajo s programom TurboMind.

Če ne morete ali ne želite sami namestiti lastnega modela GenAI, lahko uporabite NLP Cloud in v produkciji uporabite hitre generativne modele umetne inteligence v velikem obsegu. Preizkusite hitro sklepanje v oblaku NLP Cloud zdaj!

Če imate vprašanja o inferenčnih motorjih na splošno, nas vprašajte, saj vam vedno z veseljem svetujemo!

Julien
Tehnični direktor v podjetju NLP Cloud