Umjetna inteligencija
Budućnost zaključivanja bez poslužitelja za modele velikih jezika
Nedavni napredak u velikim jezičnim modelima (LLM) poput GPT-4, PaLM doveo je do transformativnih mogućnosti u zadacima prirodnog jezika. LLM-ovi se ugrađuju u razne aplikacije kao što su chatbotovi, tražilice i pomoćnici u programiranju. Međutim, opsluživanje LLM-a u velikom broju ostaje izazovno zbog njihovih značajnih zahtjeva za GPU i memoriju.
Pristupi za prevladavanje ovoga općenito spadaju u dvije glavne kategorije:
- Tehnike kompresije modela
Ove tehnike imaju za cilj smanjiti veličinu modela uz zadržavanje točnosti. Uobičajeni pristupi uključuju:
- obrezivanje – Uklanjanje suvišnih ili manje važnih parametara iz modela. Ovo stvara rijedak model s manje parametara.
- kvantizacija – Korištenje brojeva niže preciznosti kao što su int8 ili bfloat16 za predstavljanje težina umjesto fp32 ili fp16. Ovo smanjuje memorijski otisak.
- Destilacija znanja – Osposobljavanje manjeg modela “učenika” da oponaša veliki model “učitelja”. Manji model se zatim koristi za zaključivanje.
- Selektivno izvršenje
Umjesto komprimiranih modela, ove tehnike selektivno izvršavaju samo dijelove modela po zaključku:
- Rijetke aktivacije – Preskakanje računanja pri nula aktivacija.
- Uvjetno računanje – Izvršavanje samo određenih slojeva uvjetovanih unosom.
Na komplementarnoj strani prema strani softverskog arhitekta; kako bi se omogućila brža implementacija LLM-ova, istraživači su predložili sustave zaključivanja bez poslužitelja. U arhitekturama bez poslužitelja, LLM-ovi se nalaze na zajedničkim GPU klasterima i dinamički se dodjeljuju na temelju zahtjeva. To omogućuje učinkovito korištenje GPU-a i smanjuje troškove za programere. Istaknute implementacije uključuju Amazon SageMaker, Microsoft Azure ML i opcije otvorenog koda kao što je KServe.
Unatoč obećanju LLM-ova bez poslužitelja, postojeći sustavi pokazuju velike troškove kašnjenja koji degradiraju korisničko iskustvo u interaktivnim aplikacijama:
- Skupa preuzimanja kontrolnih točaka: LLM-ovi imaju veliki memorijski otisak, često veličine od gigabajta do terabajta. Preuzimanje kontrolnih točaka iz udaljene pohrane oduzima puno vremena, traje više od 20 sekundi čak i s optimiziranim mrežama.
- Neučinkovito učitavanje kontrolne točke: Čak i s lokalnom SSD pohranom, učitavanje kontrolnih točaka u GPU memoriju traje desetke sekundi zbog faktora kao što su tenzorska deserijalizacija i dodjela. Ovo dodaje značajna kašnjenja izvan vremena pokretanja spremnika.
Kako bi se riješili ti problemi, predložili su istraživači s MIT-a CSAIL ServerlessLLM, inovativni sustav koji postiže zaključivanje bez poslužitelja s niskom latencijom za LLM. ServerlessLLM poboljšava lokalitet iskorištavanjem obilnog, ali nedovoljno iskorištenog kapaciteta i propusnosti u višeslojnoj pohrani poslužitelja za implementaciju LLM-a.
Ključne inovacije u ServerlessLLM-u ServerlessLLM uključuje nekoliko novih dizajna za smanjenje vremena učitavanja LLM-a u okruženjima bez poslužitelja:
- Brzo učitavanje kontrolne točke
- Format kontrolne točke optimiziran za učitavanje koji omogućuje brzo sekvencijalno čitanje i učinkovito adresiranje tenzora u memoriji.
- Višeslojni cjevovod za učitavanje kontrolnih točaka koji maksimalno povećava iskorištenost propusnosti preko mreže, SSD-ova, DRAM-a i GPU memorije putem tehnika kao što su izravni I/O, prijenos prikvačene memorije i paralelizam.
- Migracija uživo za zaključivanje na temelju lokacije
- Migracija temeljena na tokenima koja putem mreže prenosi samo bitne promptne tokene, izbjegavajući spori prijenos snimke.
- Dvofazna migracija koja omogućuje neprekinuto zaključivanje asinkronim ponovnim izračunavanjem stanja predmemorije na odredišnom poslužitelju prije prijenosa konačnih tokena.
- Dodjela poslužitelja optimizirana za kašnjenje
- Precizni modeli za procjenu vremena učitavanja kontrolnih točaka sa svake razine i vremena migracije za poslužitelj.
- Planer s obzirom na lokaciju koji odabire poslužitelje minimizirajući očekivanu latenciju pokretanja koristeći gore navedene modele.
Ove optimizacije omogućuju ServerlessLLM-u da smanji vrijeme učitavanja LLM-a za 4-8X i vrijeme pokretanja od kraja do kraja za više od 25X u usporedbi s postojećim sustavima kao što su PyTorch, TensorFlow i KServe.
Zaronimo dublje u to kako ServerlessLLM postiže ove značajne dobitke u performansama.
Ubrzavanje učitavanja kontrolne točke
Prvo veliko usko grlo koje rješava ServerlessLLM je velika latencija učitavanja LLM kontrolnih točaka iz pohrane u GPU memoriju.
Kako bi se omogućilo brzo učitavanje kontrolnih točaka, ServerlessLLM uvodi:
- Format kontrolne točke optimiziran za učitavanje
Standardne kontrolne točke koje koriste okviri poput PyTorcha dizajnirane su za obuku modela i otklanjanje pogrešaka. Ali za zaključivanje bez poslužitelja, kontrolne točke su samo za čitanje i pristupa im se više puta.
Za optimizaciju za tako intenzivno čitanje, ServerlessLLM pretvara kontrolne točke u format s dva ključna svojstva:
- Sekvencijalno čitanje na temelju blokova: Tenzori su grupirani u binarne datoteke po GPU-u, olakšavajući velika sekvencijalna čitanja.
- Učinkovito adresiranje tenzora: Indeks preslikava imena tenzora u memorijske pomake, dopuštajući izravno vraćanje u memoriju bez deserijalizacije.
- Višeslojni cjevovod za učitavanje kontrolnih točaka
ServerlessLLM iskorištava višeslojnu arhitekturu GPU poslužitelja, s medijima za pohranu poput SSD-ova i mrežnim povezivanjem s GPU-ima putem PCIe, NVMe itd.
Sustav uključuje višestupanjski cjevovod za maksimalnu iskorištenost propusnosti na svim razinama:
- Dijelovi podataka u memoriji dodjeljuju se pomoću prikvačene memorije za brzi prijenos GPU-a.
- Izravni I/O koristi se za učinkovito čitanje SSD-a bez dodatnih troškova predmemoriranja.
- Višestruke niti paralelno čitaju različite dijelove pohrane.
- Koordinacija između faza odvija se putem asinkronih redova zadataka.
Zajedno, ovo omogućuje zasićenje kapaciteta propusnosti čak i najbržih razina kao što je NVMe RAID. Eksperimenti otkrivaju da ServerlessLLM postiže 6-8X brže učitavanje od PyTorch/TensorFlow, smanjujući vrijeme pokretanja za velike LLM-ove s više od jedne minute na ispod 10 sekundi.
Zaključak LLM-a na temelju lokacije putem migracije uživo
Uz ubrzano učitavanje, ServerlessLLM se suočava s novim izazovom – kako iskoristiti unaprijed učitane kontrolne točke za lokalitet bez prekidanja tekućih zaključaka na zauzetim poslužiteljima?
ServerlessLLM uvodi novu tehniku – živu migraciju zaključivanja LLM-a preko GPU poslužitelja. To omogućuje besprijekoran prijenos izvršenja na poslužitelje s dostupnim lokalnim kontrolnim točkama.
Ključni pokretači migracije LLM-a uživo:
- Migracija na temelju tokena
Umjesto snimanja cijelog stanja modela, ServerlessLLM migrira samo minimalne promptne tokene preko mreže. Time se prenosi red veličine manje podataka nego snimkama.
- Dvofazna migracija
Odredišni poslužitelj asinkrono unaprijed izračunava stanja predmemorije iz brzih tokena. Nakon što je spreman, izvorni poslužitelj prenosi konačne tokene prije oslobađanja resursa. Ovo sprječava zastoje u zaključivanju.
Eksperimenti otkrivaju da migracija na temelju tokena smanjuje vrijeme migracije s desetaka sekundi na manje od sekunde čak i za duge sekvence. Migracija uživo ključna je za sprječavanje kašnjenja u čekanju pri postizanju dodjele na temelju lokacije.
Zakazivanje modela optimizirano za kašnjenje
Kako bi se smanjila latencija od kraja do kraja, ServerlessLLM poboljšava planer za optimizaciju odabira poslužitelja s obzirom na lokalitet. Ovo uključuje:
- Fino zrnati procjenitelj vremena učitavanja
Modeli predviđaju vremena učitavanja iz mreže, SSD predmemorije i memorije za svaki poslužitelj koristeći metrike kao što su kašnjenja u redu čekanja, veličine modela i izmjerena propusnost.
- Precizan prediktor vremena migracije
Raspoređivač procjenjuje vremena migracije za poslužitelje koristeći broj brzih i izlaznih tokena. Asinkrono prati napredovanje zaključivanja kako bi se izbjeglo opterećenje.
- Dodjela s obzirom na lokalitet
Za svaki zahtjev za zaključivanjem, planer procjenjuje procijenjena vremena učitavanja i migracije između poslužitelja. Odabire poslužitelj minimalizirajući očekivanu latenciju pokretanja.
Raspoređivač također održava redove čekanja zadataka poslužitelja i koristi jako dosljednu pohranu za toleranciju grešaka. Zajedno, ove inovacije smanjuju režijske troškove raspoređivanja dok maksimiziraju lokalne prednosti.
Procjena performansi ServerlessLLM
Sveobuhvatni eksperimenti uspoređuju end-to-end učinkovitost ServerlessLLM-a u odnosu na postojeće sustave koristeći modele iz stvarnog svijeta kao što je OPT-175B i radna opterećenja modelirana prema Azure tragovima.
Ključni rezultati:
- Mikrobenchmarkovi: ServerlessLLM ubrzava učitavanje kontrolnih točaka za 3.6-8.2X preko PyTorcha/TensorFlowa. U potpunosti zasićuje propusnost pohrane, čak i za vrhunski NVMe RAID.
- Zakazivanje: ServerlessLLM smanjuje kašnjenje dodjele za 4-12X u usporedbi s nasumičnim rasporedom, ističući prednosti svijesti o lokalnosti. Migracija uživo sprječava kašnjenja u čekanju.
- Posluživanje od kraja do kraja: Za velike modele poput OPT-30B, ServerlessLLM poboljšava latenciju 99. percentila za 28-200X u odnosu na sustave kao što su KServe i Ray Serve. Također povećava učinkovitost resursa.
Ovi značajni dobici pokazuju sposobnost ServerlessLLM-a da prevlada uska grla u postojećim implementacijama bez poslužitelja i otključa snagu LLM-ova za interaktivne usluge.
Optimizacije uvedene u ServerlessLLM, kao što je višeslojno učitavanje, živa migracija i planiranje na temelju latencije, mogu pomoći pri oblikovanju budućih arhitektura bez poslužitelja. Sposobnost sustava da smanji vrijeme učitavanja i pokretanja deblokira skalabilnu implementaciju velikih jezičnih modela za praktične primjene.
Pogled unaprijed: izazovi koji su u tijeku
Iako značajan korak naprijed, ServerlessLLM predstavlja samo prvi korak u optimizaciji zaključivanja bez poslužitelja za velike LLM-ove. Ostaje nekoliko otvorenih problema, uključujući:
- Predviđanje potražnje modela u stvarnom vremenu za usmjeravanje pružanja i predučitavanja
- Inteligentno postavljanje kontrolnih točaka na poslužitelje kako bi se maksimizirali rezultati predmemorije
- Učinkovito skaliranje algoritama raspoređivanja za rukovanje većim klasterima
- Osiguravanje pravednosti u raspodjeli resursa između modela i programera
- Generaliziranje inovacija poput migracije uživo na druga radna opterećenja bez poslužitelja
Rješavanje ovih područja može pomoći u izgradnji obećanja LLM-ova bez poslužitelja i učiniti njihove mogućnosti još dostupnijima. Osim optimizacija na razini sustava, smanjenje nevjerojatnog ugljičnog otiska i potencijalnih šteta velikih modela također ostaje hitan prioritet.
ServerlessLLM pokazuje da postoji ogroman prostor za inovacije u sljedećoj generaciji arhitektura bez poslužitelja za AI radna opterećenja. Kako LLM nastavljaju rasti u veličini i popularnosti, rješenja poput ServerlessLLM koja otključavaju njihovu skalabilnost postat će još učinkovitija. Spoj istraživanja sustava i strojnog učenja može uvesti nove paradigme u posluživanje, dijeljenje i skaliranje AI modela na siguran i održiv način.