Kratek odgovor: Za optimizacijo modelov umetne inteligence izberite eno primarno omejitev (latenca, stroški, pomnilnik, kakovost, stabilnost ali prepustnost) in nato zajemite zanesljivo izhodišče, preden karkoli spremenite. Najprej odstranite ozka grla v cevovodu, nato pa uporabite izboljšave z nizkim tveganjem, kot sta mešana natančnost in paketno obdelavo; če se kakovost ohrani, nadaljujte z orodji za prevajalnik/izvajanje in šele nato po potrebi zmanjšajte velikost modela s kvantizacijo ali destilacijo.
Ključne ugotovitve:
Omejitev : Izberite eno ali dve ciljni metriki; optimizacija je pokrajina kompromisov, ne brezplačnih zmag.
Merjenje : Profilirajte dejanske delovne obremenitve s p50/p95/p99, prepustnostjo, izkoriščenostjo in pomnilniškimi vrhovi.
Cevovod : Preden se dotaknete modela, popravite tokenizacijo, nalagalnike podatkov, predobdelavo in paketno obdelavo.
Streženje : Uporabite predpomnjenje, namerno paketno obdelavo, uglaševanje sočasnosti in pozorno spremljajte zakasnitev repa.
Zaščitne ograje : Po vsaki spremembi učinkovitosti delovanja zaženite zlate pozive, meritve opravil in naključne preglede.

🔗 Kako učinkovito oceniti modele umetne inteligence
Ključna merila in koraki za pravično in zanesljivo presojo modelov.
🔗 Kako meriti učinkovitost umetne inteligence z resničnimi metrikami
Za primerjavo uporabite merila uspešnosti, zakasnitev, stroške in signale kakovosti.
🔗 Kako testirati modele umetne inteligence pred produkcijo
Praktični potek testiranja: delitev podatkov, stresni primeri in spremljanje.
🔗 Kako uporabljati umetno inteligenco za ustvarjanje vsebin
S strukturiranimi pozivi in iteracijami ideje hitreje spremenite v osnutke.
1) Kaj beseda »optimiziraj« pomeni v praksi (ker jo vsak uporablja drugače) 🧠
Ko ljudje rečejo »optimizirati model umetne inteligence«, lahko mislijo:
-
Pospeši (zmanjšaj latenco)
-
Naj bo ceneje (manj ur grafične kartice, nižja poraba v oblaku)
-
Zmanjšajte (poraba pomnilnika, uvedba na robu)
-
Natančnejša (izboljšave kakovosti, manj halucinacij)
-
Naredite ga stabilnejšim (manj variance, manj napak v produkciji)
-
Olajšajte strežbo (prepustnost, šaržiranje, predvidljiva zmogljivost)
Tukaj je nekoliko moteča resnica: vsega tega ne morete maksimizirati hkrati. Optimizacija je kot stiskanje balona - eno stran potisnete noter, druga stran pa izskoči. Ne vedno, ampak dovolj pogosto, da bi morali načrtovati kompromise.
Preden se česar koli dotaknete, izberite svojo primarno omejitev :
-
Če uporabnike strežete v živo, vas zanimata latenca p95 ( percentili AWS CloudWatch ) in zmogljivost repa ( najboljša praksa »latenca repa« ) 📉
-
Če se usposabljaš, te zanima čas za doseganje kakovosti in izkoriščenost grafičnega procesorja 🔥
-
Če nameščate na naprave, vas zanimata RAM in poraba energije 🔋
2) Kako izgleda dobra različica optimizacije modela umetne inteligence ✅
Dobra različica optimizacije ni le "uporabi kvantizacijo in moli". Je sistem. Najboljše nastavitve imajo običajno:
-
Osnova, ki ji zaupate
Če ne morete reproducirati trenutnih rezultatov, ne morete vedeti, da ste kaj izboljšali. Preprosto ... ampak ljudje to preskočijo. Potem pa se znajdejo v začaranem krogu. -
Jasna ciljna metrika
»Hitreje« je nejasna. »Zmanjšati latenco p95 z 900 ms na 300 ms ob enaki oceni kakovosti« je pravi cilj. -
Varnostne ograje za kakovost
Vsaka zmaga pri uspešnosti tvega tiho nazadovanje kakovosti. Potrebujete teste, ocene ali vsaj paket za mentalno zdravje. -
Zavedanje o strojni opremi
»Hiter« model na enem grafičnem procesorju se lahko plazi po drugem. Procesorji so svoj poseben kaos. -
Iterativne spremembe, ne pa naglo prepisovanje.
Ko spremeniš pet stvari hkrati in se učinkovitost izboljša, ne veš, zakaj. Kar je ... zaskrbljujoče.
Optimizacija bi se morala zdeti kot uglaševanje kitare – majhne prilagoditve, pozorno poslušajte, ponovite 🎸. Če se zdi kot žongliranje z noži, je nekaj narobe.
3) Primerjalna tabela: Priljubljene možnosti za optimizacijo modelov umetne inteligence 📊
Spodaj je kratka in nekoliko neurejena primerjalna tabela pogostih orodij/pristopov za optimizacijo. Ne, ni povsem »poštena« – tudi resnično življenje ni.
| Orodje / Možnost | Občinstvo | Cena | Zakaj deluje |
|---|---|---|---|
PyTorch torch.compile ( dokumentacija PyTorcha ) |
Ljudje s PyTorcha | Brezplačno | Zajem grafov + triki prevajalnika lahko zmanjšajo stroške ... včasih je to čarovnija ✨ |
| Izvajalno okolje ONNX ( dokumentacija izvajalnega okolja ONNX ) | Ekipe za napotitev | Prostovoljno | Močne optimizacije sklepanja, široka podpora, dobro za standardizirano serviranje |
| TensorRT ( dokumentacija NVIDIA TensorRT ) | Uvajanje NVIDIA | Plačljive vibracije (pogosto v paketu) | Agresivna fuzija jeder + natančno rokovanje, zelo hitro, ko klikne |
| DeepSpeed ( dokumentacija ZeRO ) | Trenerske ekipe | Brezplačno | Optimizacije pomnilnika + pretočnosti (ZeRO itd.). Lahko se zdi kot reaktivni motor |
| FSDP (PyTorch) ( dokumentacija PyTorch FSDP ) | Trenerske ekipe | Brezplačno | Parametri/gradienti drobcev, zaradi česar so veliki modeli manj strašljivi |
| kvantizacija bitov in bajtov ( bitsandbytes ) | LLM montažerji | Brezplačno | Nizke bitne teže, ogromen prihranek pomnilnika - kakovost je odvisna, ampak uf 😬 |
| Destilacija ( Hinton et al., 2015 ) | Produktne ekipe | "Časovni stroški" | Manjši model študenta podeduje vedenje, običajno dolgoročno najboljšo donosnost naložbe |
| Obrezovanje ( vadnica za obrezovanje PyTorch ) | Raziskava + produkcija | Brezplačno | Odstranjuje mrtvo težo. Deluje bolje v kombinaciji s prekvalifikacijo |
| Flash Attention / spojena jedra ( papir FlashAttention ) | Navdušenci nad uspešnostjo | Brezplačno | Hitrejša pozornost, boljši spomin. Prava zmaga za transformatorje |
| Strežnik za sklepanje Triton ( dinamično batching ) | Operacije/infrastruktura | Brezplačno | Produkcijska strežba, šaržiranje, večmodelni cevovodi - deluje podjetniško |
Priznanje o posebnosti oblikovanja: »Cena« je neurejena, ker vas lahko odprtokodna programska oprema še vedno stane vikend odpravljanja napak, kar je ... cena. 😵💫
4) Začnite z merjenjem: Profilirajte, kot da mislite resno 🔍
Če iz celotnega vodnika naredite samo eno stvar, naredite tole: pravilno izmerite.
V mojem lastnem testiranju so največji "optimizacijski preboji" izhajali iz odkritja nečesa sramotno preprostega, kot je:
-
nalagalnik podatkov, ki izčrpava grafični procesor
-
Ozko grlo predobdelave CPU-ja
-
majhne velikosti paketov, ki povzročajo stroške zagona jedra
-
počasna tokenizacija (tokenizatorji so lahko tihi zlobneži)
-
fragmentacija pomnilnika ( opombe o alokatorju pomnilnika PyTorch CUDA )
-
enoslojno prevladujoče računanje
Kaj meriti (minimalni nabor)
-
Latenca (p50, p95, p99) ( SRE na percentilih latence )
-
Pretočnost (žetoni/s, zahteve/s)
-
Izkoriščenost grafičnega procesorja (izračunavanje + pomnilnik)
-
Vrhovi VRAM/RAM
-
Cena na 1000 žetonov (ali na sklep)
Praktična miselnost profiliranja
-
Napišite en scenarij, ki vas zanima (ne igra igre).
-
Vse si zapišite v majhen »dnevnik uspešnosti«.
Da, dolgočasno je ... ampak vam prihrani, da bi se kasneje obremenjevali s plinskim ožigom.
(Če želite za začetek konkretno orodje: PyTorch Profiler ( dokumentacija torch.profiler ) in Nsight Systems ( NVIDIA Nsight Systems ) sta običajna osumljenca.)
5) Optimizacija podatkov + usposabljanja: Tiha supermoč 📦🚀
Ljudje so obsedeni z arhitekturo modela in pozabijo na cevovod. Medtem cevovod tiho porabi polovico grafičnega procesorja.
Enostavne zmage, ki se hitro pojavijo
-
Uporabite mešano natančnost (FP16/BF16, kjer je stabilna) ( PyTorch AMP / torch.amp ).
Običajno je hitrejše, pogosto v redu - vendar bodite pozorni na numerične posebnosti. -
Kopičenje gradientov , ko je velikost serije omejena ( 🤗 Vodnik za pospešitev )
Ohranja stabilnost optimizacije brez eksplozije pomnilnika. -
Gradientna kontrolna točka ( torch.utils.checkpoint )
Zamenja računanje za pomnilnik – omogoča večje kontekste. -
Učinkovita tokenizacija ( 🤗 Tokenizatorji )
Tokenizacija lahko postane ozko grlo v velikem obsegu. Ni glamurozna; pomembna je. -
Uglaševanje nalagalnika podatkov
Več delavcev, pripet pomnilnik, prednalaganje - neprivlačno, a učinkovito 😴➡️💪 ( Vodnik za uglaševanje delovanja PyTorcha )
Parametrsko učinkovito fino nastavljanje
Če izpopolnjujete velike modele, lahko metode PEFT (kot so adapterji v slogu LoRA) močno zmanjšajo stroške usposabljanja, hkrati pa ostanejo presenetljivo močne ( 🤗 vodnik po Transformers PEFT , članek o LoRA ). To je eden tistih trenutkov "zakaj tega nismo storili prej?".
6) Optimizacija na ravni arhitekture: Pravilna velikost modela 🧩
Včasih je najboljši način za optimizacijo ... prenehati uporabljati model, ki je prevelik za delo. Vem, bogoskrunstvo 😄.
Pokličite na podlagi nekaj osnovnih stvari:
-
Odločite se, ali potrebujete popolne vibracije splošne obveščevalne službe ali specialista.
-
Kontekstno okno naj bo tako veliko, kot je potrebno, ne večje.
-
Uporabite model, usposobljen za delo, ki ga imate pri roki (klasifikacijski modeli za klasifikacijsko delo itd.).
Praktične strategije za pravilno dimenzioniranje
-
Za večino zahtev
preklopite na manjšo hrbtenico. Nato usmerite »težke poizvedbe« na večji model. -
Uporabite dvostopenjsko nastavitev.
Hitro osnutek modela, močnejši model pa ga preveri ali uredi.
To je kot pisanje s prijateljem, ki je izbirčen – nadležno, a učinkovito. -
Zmanjšajte dolžino izhodnih
podatkov Izhodni žetoni stanejo denar in čas. Če vaš model ni jasen, plačate za negotovost.
Videl sem ekipe, ki so drastično znižale stroške z uveljavljanjem krajših rezultatov. Zdi se malenkostno. Deluje.
7) Optimizacija prevajalnika + grafa: od kod prihaja hitrost 🏎️
To je plast »naj računalnik počne pametnejše računalniške stvari«.
Pogoste tehnike:
-
Združevanje operatorjev (združevanje jeder) ( NVIDIA TensorRT »združevanje plasti« )
-
Konstantno zlaganje (predračunane fiksne vrednosti) ( optimizacije grafov ONNX Runtime )
-
Izbira jedra, prilagojena strojni opremi
-
Zajem grafov za zmanjšanje stroškov v Pythonu ( pregled
torch.compile)
Preprosto povedano: vaš model je morda matematično hiter, a operativno počasen. Prevajalniki to nekaj popravijo.
Praktične opombe (tj. brazgotine)
-
Te optimizacije so lahko občutljive na spremembe oblike modela.
-
Nekateri modeli zelo pospešijo, nekateri pa se komaj premaknejo.
-
Včasih pride do pospešitve in zagonetne napake - kot da bi se vselil gremlin 🧌
Kljub temu, ko deluje, je to ena najčistejših zmag.
8) Kvantizacija, obrezovanje, destilacija: Manjše brez joka (preveč) 🪓📉
To je del, ki si ga ljudje želijo ... ker se sliši kot brezplačen nastop. Lahko je, vendar ga morate obravnavati kot operacijo.
Kvantizacija (uteži/aktivacije z nižjo natančnostjo)
-
Odlično za hitrost sklepanja in spomin
-
Tveganje: padec kakovosti, zlasti pri robnih primerih
-
Najboljša praksa: ocenjevanje na resničnem testnem naboru, ne na vibracijah
Pogosti okusi, o katerih boste slišali:
-
INT8 (pogosto trdno) ( kvantizirani tipi TensorRT )
-
INT4 / nizek bit (ogromni prihranki, tveganje kakovosti se poveča) ( kvantizacija bitov in bajtov k-bitov )
-
Mešana količina (ni vse zahteva enake natančnosti)
Obrezovanje (odstranitev parametrov)
-
Odstrani »nepomembne« uteži ali strukture ( vadnica za obrezovanje PyTorch )
-
Običajno je potrebno prekvalifikacijo za obnovitev kakovosti
-
Deluje bolje, kot si ljudje mislijo ... če je storjeno previdno
Destilacija (učenec se uči od učitelja)
To je moj osebno najljubši dolgoročni vzvod. Destilacija lahko ustvari manjši model, ki se obnaša podobno, in je pogosto stabilnejša od ekstremne kvantizacije ( Destilacija znanja v nevronski mreži ).
Nepopolna metafora: destilacija je kot prelivanje zapletene juhe skozi filter in pridobivanje ... manjše juhe. Juha sicer ne deluje tako, ampak razumete, kaj mislim 🍲.
9) Serviranje in sklepanje: Pravo bojišče 🧯
Model lahko »optimizirate« in ga še vedno slabo strežete. Streženje je tisto, kjer postaneta zakasnitev in stroški resnični.
Servirne zmage, ki štejejo
-
Združevanje v pakete
izboljša prepustnost. Vendar poveča zakasnitev, če pretiravate. Uravnotežite ga. ( Tritonovo dinamično združevanje v pakete ) -
Predpomnjenje
Predpomnjenje promptov in ponovna uporaba predpomnilnika KV sta lahko obsežna za ponavljajoče se kontekste. ( Razlaga predpomnilnika KV ) -
pretakanje
hitrejše, tudi če je skupni čas podoben. Zaznavanje je pomembno 🙂. -
Zmanjšanje režijskih stroškov za vsak žeton posebej
Nekateri skladi opravijo dodatno delo na žeton. Zmanjšajte te režijske stroške in veliko boste zmagali.
Pazite na latenco repa
Vaše povprečje je morda videti odlično, medtem ko je vaš p99 katastrofa. Uporabniki žal živijo v repu. ( »Latenca repa« in zakaj povprečja lažejo )
10) Optimizacija, ki upošteva strojno opremo: Uskladite model s strojem 🧰🖥️
Optimizacija brez poznavanja strojne opreme je kot uglaševanje dirkalnika brez preverjanja pnevmatik. Seveda, lahko to storite, ampak je malo neumno.
Premisleki glede grafičnih procesorjev
-
Pasovna širina pomnilnika je pogosto omejujoč dejavnik, ne pa surovo računanje
-
Večje serije lahko pomagajo, dokler ne prenehajo
-
Združevanje jeder in optimizacija pozornosti sta izjemnega pomena za transformatorje ( FlashAttention: natančna pozornost, ki se zaveda V/I ).
Premisleki glede procesorja
-
Niti, vektorizacija in lokalnost pomnilnika so zelo pomembni
-
Stroški tokenizacije lahko prevladujejo ( 🤗 »Hitri« tokenizatorji )
-
Morda boste potrebovali drugačne strategije kvantizacije kot na GPU-ju
Premisleki glede robnih/mobilnih naprav
-
Pomnilniški odtis postane prioriteta številka ena
-
Varianta zakasnitve je pomembna, ker so naprave ... muhaste
-
Manjši, specializirani modeli pogosto prekašajo velike splošne modele
11) Kakovostne ograje: Ne "optimizirajte" se v hrošča 🧪
Vsaka zmaga v hitrem načinu bi morala imeti preverjanje kakovosti. Sicer boste praznovali, poslali pošiljko in nato prejeli sporočilo, kot je "zakaj asistent nenadoma govori kot pirat?" 🏴☠️
Pragmatične varovalne ograje:
-
Zlati pozivi (fiksen nabor pozivov, ki jih vedno preizkusite)
-
Metrike nalog (natančnost, F1, BLEU, karkoli ustreza)
-
Človeški naključni pregledi (ja, resno)
-
Pragovi regresije (»dovoljen padec največ X %)
Spremljajte tudi načine odpovedi:
-
premik oblikovanja
-
spremembe vedenja zavrnitve
-
pogostost halucinacij
-
inflacija dolžine odziva
Optimizacija lahko spremeni vedenje na presenetljive načine. Nenavadno. Nadležno. Predvidljivo, gledano za nazaj.
12) Kontrolni seznam: Kako optimizirati modele umetne inteligence korak za korakom ✅🤖
Če želite jasen vrstni red operacij za Kako optimizirati modele umetne inteligence , je tukaj potek dela, ki ljudem običajno pomaga ohranjati razum:
-
Definirajte uspeh.
Izberite 1-2 primarni metriki (latenca, stroški, prepustnost, kakovost). -
Izmerite izhodiščni
profil dejanskih delovnih obremenitev, zabeležite p50/p95, pomnilnik, stroške. ( PyTorch Profiler ) -
Odpravite ozka grla v cevovodu
Nalaganje podatkov, tokenizacija, predobdelava, paketno združevanje. -
Uporabite nizko tvegane računske zmage
Mešana natančnost, optimizacije jedra, boljše paketno obdelavo. -
Poskusite optimizacije prevajalnika/izvajalnega okolja:
zajem grafov, izvajalna okolja sklepanja, združevanje operatorjev ( vadnicaza torch.compile, dokumentacija za izvajanje ONNX ). -
Zmanjšajte stroške modela.
Kvantificirajte previdno, po možnosti destilirajte, po potrebi obrežite. -
Streženje nastavitev
Predpomnjenje, sočasnost, testiranje obremenitve, popravki zakasnitve repa. -
Potrdite kakovost.
Izvedite regresijske teste in primerjajte rezultate drug ob drugem. -
Ponavljanje
Majhne spremembe, jasne opombe, ponavljanje. Neopazno - učinkovito.
In ja, to je še vedno Kako optimizirati modele umetne inteligence, čeprav se bolj zdi kot "Kako nehati stopati po grabljah". Ista stvar.
13) Pogoste napake (da jih ne boste ponavljali kot mi ostali) 🙃
-
Optimizacija pred merjenjem
Izgubili boste čas. In potem boste samozavestno optimizirali napačno stvar ... -
Lov na eno samo merilo
Merila lažejo zaradi opustitve. Vaša delovna obremenitev je resnica. -
Ignoriranje
pomnilnika Težave s pomnilnikom povzročajo upočasnitve, sesutja in tresenje. ( Razumevanje uporabe pomnilnika CUDA v PyTorchu ) -
Prehitra prekomerna kvantizacija
Nizkobitna kvantizacija je lahko neverjetna, vendar najprej začnite z varnejšimi koraki. -
Brez načrta za povrnitev prejšnjo različico
Če se ne morete hitro vrniti nazaj, postane vsaka namestitev stresna. Stres povzroča napake.
Zaključne opombe: Človeški način optimizacije 😌⚡
Optimizacija modelov umetne inteligence ni en sam trik. Gre za večplasten proces: merjenje, popravljanje cevovoda, uporaba prevajalnikov in izvajalnih okolij, uglaševanje strežbe in nato po potrebi skrčenje modela s kvantizacijo ali destilacijo. Počnite korak za korakom, ohranite kakovostne omejitve in ne zaupajte metriki »občutek je hitrejši« (vaši občutki so čudoviti, vaši občutki niso profiler).
Če želite najkrajši obrok za s seboj:
-
Najprej izmeri 🔍
-
Nato optimizirajte prodajni proces 🧵
-
Nato optimizirajte model 🧠
-
Nato optimizirajte postrežbo 🏗️
-
Vedno preverjajte kakovost ✅
In če vam pomaga, se spomnite: cilj ni »popoln model«. Cilj je model, ki je hiter, cenovno dostopen in dovolj zanesljiv, da lahko spite ponoči ... večino noči 😴.
Pogosta vprašanja
Kaj optimizacija modela umetne inteligence pomeni v praksi
»Optimizacija« običajno pomeni izboljšanje ene primarne omejitve: latence, stroškov, pomnilniškega odtisa, natančnosti, stabilnosti ali pretočnosti strežbe. Najtežji del so kompromisi – spodbujanje enega področja lahko škoduje drugemu. Praktičen pristop je izbrati jasen cilj (kot je latenca p95 ali čas do kakovosti) in optimizirati v skladu z njim. Brez cilja je enostavno »izboljšati« in še vedno izgubiti.
Kako optimizirati modele umetne inteligence, ne da bi pri tem tiho škodovali kakovosti
Vsako spremembo hitrosti ali stroškov obravnavajte kot potencialno tiho regresijo. Uporabite varovala, kot so zlati pozivi, metrike opravil in hitri človeški pregledi. Določite jasen prag za sprejemljivo odstopanje kakovosti in primerjajte rezultate drug ob drugem. To preprečuje, da bi se "hitreje je" po izdaji spremenilo v "zakaj je nenadoma postalo čudno v produkciji?".
Kaj je treba izmeriti, preden začnete z optimizacijo
Začnite s percentili zakasnitve (p50, p95, p99), prepustnostjo (žetoni/sekundo ali zahteve/sekundo), izkoriščenostjo GPU-ja in največjo količino VRAM/RAM-a. Spremljajte stroške na sklepanje ali na 1000 žetonov, če so stroški omejitev. Naredite profil resničnega scenarija, ki ga uporabljate, ne pa igračke. Vodenje majhnega »dnevnika delovanja« vam pomaga preprečiti ugibanje in ponavljanje napak.
Hitre zmage z nizkim tveganjem za učinkovitost treninga
Mešana natančnost (FP16/BF16) je pogosto najhitrejša prva ročica, vendar bodite pozorni na numerične posebnosti. Če je velikost serije omejena, lahko kopičenje gradientov stabilizira optimizacijo, ne da bi pri tem porabilo veliko pomnilnika. Kontrolne točke gradientov zamenjajo dodatne izračune za manj pomnilnika, kar omogoča večje kontekste. Ne zanemarjajte tokenizacije in uglaševanja nalagalnika podatkov – lahko tiho izčrpata grafični procesor.
Kdaj uporabiti torch.compile, ONNX Runtime ali TensorRT
Ta orodja so namenjena operativnim režijskim obremenitvam: zajemanju grafov, fuziji jeder in optimizaciji grafov med izvajanjem. Lahko zagotovijo čiste pospešitve sklepanja, vendar se rezultati razlikujejo glede na obliko modela in strojno opremo. Nekatere nastavitve se zdijo kot čarovnija; druge se komaj premikajo. Pričakujte občutljivost na spremembe oblike in občasne napake »gremlin« – izmerite pred in po vaši dejanski delovni obremenitvi.
Ali se kvantizacija splača in kako se izogniti pretiravanju
Kvantizacija lahko zmanjša porabo pomnilnika in pospeši sklepanje, zlasti pri INT8, vendar lahko kakovost pade v robnih primerih. Možnosti z nižjimi bitmi (kot je INT4/k-bit) prinašajo večje prihranke z večjim tveganjem. Najvarnejša navada je ocenjevanje na resničnem testnem naboru in primerjava rezultatov, ne pa občutka. Najprej začnite z varnejšimi koraki, nato pa po potrebi uporabite nižjo natančnost.
Razlika med obrezovanjem in destilacijo za zmanjšanje velikosti modela
Obrezovanje odstrani parametre »mrtve teže« in pogosto zahteva ponovno učenje, da se povrne kakovost, še posebej, če se izvaja agresivno. Destilacija uči manjši model učenca, da posnema vedenje večjega učitelja, in je lahko dolgoročno boljša donosnost naložbe kot ekstremna kvantizacija. Če želite manjši model, ki se obnaša podobno in ostane stabilen, je destilacija pogosto čistejša pot.
Kako zmanjšati stroške sklepanja in zakasnitev z izboljšavami strežbe
Pri streženju postane optimizacija oprijemljiva: paketno združevanje poveča prepustnost, vendar lahko, če se z njim pretirava, poslabša zakasnitev, zato ga je treba skrbno prilagoditi. Predpomnjenje (takojšnje predpomnjenje in ponovna uporaba predpomnilnika KV) je lahko ogromno, ko se konteksti ponavljajo. Pretočno predvajanje izboljša zaznano hitrost, tudi če je skupni čas podoben. Bodite pozorni tudi na stroške posameznih žetonov v svojem skladu – majhno delo na žeton se hitro sešteva.
Zakaj je repna latenca tako pomembna pri optimizaciji modelov umetne inteligence
Povprečja so lahko videti odlična, medtem ko je p99 katastrofa, uporabniki pa ponavadi živijo v repu. Zakasnitev repa pogosto izvira iz tresenja: fragmentacije pomnilnika, skokov predobdelave CPE-ja, upočasnitve tokenizacije ali slabega delovanja paketnega obdelanja. Zato priročnik poudarja percentile in dejanske delovne obremenitve. Če optimizirate samo p50, lahko še vedno ustvarite izkušnjo, ki se »naključno zdi počasna«
Reference
-
Amazon Web Services (AWS) - percentili AWS CloudWatch (definicije statističnih podatkov) - docs.aws.amazon.com
-
Google - Rep v merilu (najboljša praksa za zakasnitev repa) - sre.google
-
Google - Cilji ravni storitev (knjiga SRE) - percentili zakasnitve - sre.google
-
PyTorch - torch.compile - docs.pytorch.org
-
PyTorch - FullyShardedDataParallel (FSDP) - docs.pytorch.org
-
PyTorch – Profiler PyTorch – docs.pytorch.org
-
PyTorch - CUDA semantika: upravljanje pomnilnika (opombe o alokatorju pomnilnika CUDA) - docs.pytorch.org
-
PyTorch - Samodejna mešana natančnost (torch.amp / AMP) - docs.pytorch.org
-
PyTorch - torch.utils.checkpoint - docs.pytorch.org
-
PyTorch - Vodnik za optimizacijo delovanja - docs.pytorch.org
-
PyTorch - Vadnica za obrezovanje - docs.pytorch.org
-
PyTorch - Razumevanje uporabe pomnilnika CUDA v PyTorchu - docs.pytorch.org
-
PyTorch - vadnica / pregled za torch.compile - docs.pytorch.org
-
Izvajalno okolje ONNX - Dokumentacija izvajalnega okolja ONNX - onnxruntime.ai
-
NVIDIA - Dokumentacija za TensorRT - docs.nvidia.com
-
NVIDIA - Kvantizirani tipi TensorRT - docs.nvidia.com
-
NVIDIA - Nsight Systems - developer.nvidia.com
-
NVIDIA - Triton Inference Server - dinamično batching - docs.nvidia.com
-
DeepSpeed - Dokumentacija za 3. fazo ZeRO - deepspeed.readthedocs.io
-
bitsandbytes (fundacija bitsandbytes) - bitsandbytes - github.com
-
Objemajoči obraz - Pospeševanje: Vodnik za kopičenje gradientov - huggingface.co
-
Dokumentacija Hugging Face - - huggingface.co
-
Objemajoči obraz - Transformerji: Vodnik po PEFT - huggingface.co
-
Objemajoči obraz - Razlaga zakladnice Transformers: KV - huggingface.co
-
Hugging Face - Transformers: "Hitri" tokenizatorji (razredi tokenizatorjev) - huggingface.co
-
arXiv - Destilacija znanja v nevronski mreži (Hinton et al., 2015) - arxiv.org
-
arXiv - LoRA: Prilagoditev modelov velikih jezikov nizkega ranga - arxiv.org
-
arXiv - FlashAttention: Hitra in pomnilniško učinkovita natančna pozornost z zavedanjem V/I - arxiv.org