Jibu fupi: Ili kuboresha mifumo ya AI, chagua kikwazo kimoja cha msingi (ucheleweshaji, gharama, kumbukumbu, ubora, uthabiti, au matokeo), kisha andika msingi unaoaminika kabla ya kubadilisha chochote. Ondoa vikwazo vya bomba kwanza, kisha tumia faida zenye hatari ndogo kama vile usahihi mchanganyiko na upangaji; ikiwa ubora utadumu, endelea kwenye zana za mkusanyaji/uendeshaji na kisha tu punguza ukubwa wa mfumo kupitia upimaji au uchanganyaji inapohitajika.
Mambo muhimu ya kuzingatia:
Kizuizi : Chagua kipimo kimoja au viwili lengwa; uboreshaji ni mandhari ya maelewano, si ushindi wa bure.
Kipimo : Taja mzigo halisi wa kazi kwa kutumia p50/p95/p99, matokeo ya kazi, matumizi, na vilele vya kumbukumbu.
Bomba : Rekebisha tokeni, vipakiaji data, usindikaji wa awali, na upangaji kabla ya kugusa modeli.
Huduma : Tumia hifadhi ya data, kupanga kwa makusudi, kurekebisha sarafu kwa wakati mmoja, na uangalie kwa makini muda wa kusubiri.
Vizuizi : Tekeleza vidokezo vya dhahabu, vipimo vya kazi, na ukaguzi wa uhakika baada ya kila mabadiliko ya utendaji.

🔗 Jinsi ya kutathmini mifumo ya akili bandia kwa ufanisi
Vigezo na hatua muhimu za kuhukumu mifumo kwa haki na kwa uhakika.
🔗 Jinsi ya kupima utendaji wa akili bandia kwa kutumia vipimo halisi.
Tumia vipimo, muda wa kuchelewa, gharama, na ishara za ubora ili kulinganisha.
🔗 Jinsi ya kujaribu mifumo ya akili bandia (AI) kabla ya uzalishaji.
Mtiririko wa kazi wa majaribio ya vitendo: mgawanyiko wa data, hali za mkazo, na ufuatiliaji.
🔗 Jinsi ya kutumia AI kwa ajili ya uundaji wa maudhui
Badilisha mawazo kuwa rasimu haraka zaidi kwa kutumia vidokezo vilivyopangwa na marudio.
1) Maana ya "Boresha" katika Utendaji (Kwa sababu Kila Mtu Anaitumia Tofauti) 🧠
Watu wanaposema "boresha mfumo wa akili bandia," wanaweza kumaanisha:
-
Ifanye iwe haraka zaidi (punguza muda wa kusubiri)
-
Ifanye iwe nafuu (saa chache za GPU, matumizi ya chini ya wingu)
-
Ifanye iwe ndogo (alama ya kumbukumbu, uwekaji wa ukingo)
-
Ifanye iwe sahihi zaidi (maboresho ya ubora, punguza ndoto za kuona mambo bila mpangilio)
-
Ifanye iwe imara zaidi (tofauti ndogo, hitilafu chache katika uzalishaji)
-
Irahisishe kuhudumia (uzalishaji, upangaji wa bidhaa, utendaji unaotabirika)
Hapa kuna ukweli unaokera kidogo: huwezi kutumia haya yote kwa wakati mmoja. Uboreshaji ni kama kufinya puto - sukuma upande mmoja ndani na upande mwingine hutoka. Sio kila wakati, lakini mara nyingi vya kutosha kwamba unapaswa kupanga kwa ajili ya maelewano.
Kwa hivyo kabla ya kugusa chochote, chagua kizuizi chako cha msingi :
-
Ikiwa unawahudumia watumiaji moja kwa moja, unajali kuhusu ucheleweshaji wa p95 ( asilimia ya AWS CloudWatch ) na utendaji wa mkia ( mazoezi bora ya "ucheleweshaji wa mkia" ) 📉
-
Ukiwa unafanya mazoezi, unajali kuhusu muda na matumizi ya GPU 🔥
-
Ukiwa unaweka vifaa kwenye vifaa, unajali kuhusu RAM na nguvu 🔋
2) Toleo Nzuri la Uboreshaji wa Mifumo ya AI Linaonekanaje ✅
Toleo zuri la uboreshaji si tu "kutumia upimaji na kuomba." Ni mfumo. Mipangilio bora kwa kawaida huwa na:
-
Msingi unaouamini
Ikiwa huwezi kurudia matokeo yako ya sasa, huwezi kujua umeboresha chochote. Rahisi… lakini watu huiruka. Kisha huzunguka. -
Kipimo cha lengo lengwa kilicho wazi
"Haraka" si dhahiri. "Kata muda wa kusubiri p95 kutoka 900ms hadi 300ms kwa alama sawa ya ubora" ni shabaha halisi. -
Vizuizi vya ubora
Kila ushindi wa utendaji una hatari ya kurudi nyuma kwa ubora kimya kimya. Unahitaji vipimo, vipimo, au angalau seti ya hali ya akili timamu. -
Ufahamu wa vifaa
Mfano "wa kasi" kwenye GPU moja unaweza kutambaa kwenye nyingine. CPU ni aina yao maalum ya machafuko. -
Mabadiliko ya mara kwa mara, si uandishi mpya wa big-bang
Unapobadilisha vitu vitano kwa wakati mmoja na utendaji unaboreka, hujui ni kwa nini. Ambayo ni ... kutatanisha.
Uboreshaji unapaswa kuhisi kama kurekebisha gitaa - marekebisho madogo, sikiliza kwa makini, rudia 🎸. Ikiwa inahisi kama kupiga visu, kuna kitu kibaya.
3) Jedwali la Ulinganisho: Chaguo Maarufu za Kuboresha Mifumo ya AI 📊
Hapa chini kuna jedwali la kulinganisha la haraka na lisilo nadhifu la zana/mbinu za kawaida za uboreshaji. Hapana, si "haki" kikamilifu - maisha halisi pia si sawa.
| Zana / Chaguo | Hadhira | Bei | Kwa nini inafanya kazi |
|---|---|---|---|
Tochi ya PyTorch.compile ( hati za PyTorch ) |
Watu wa PyTorch | Bure | Mbinu za kunasa grafu + za kukusanya data zinaweza kupunguza gharama za uendeshaji… wakati mwingine ni uchawi ✨ |
| Muda wa Kuendesha wa ONNX ( Hati za Muda wa Kuendesha wa ONNX ) | Timu za ugawaji | Huru-ish | Uboreshaji mkubwa wa hitimisho, usaidizi mpana, mzuri kwa huduma sanifu |
| TensorRT ( hati za NVIDIA TensorRT ) | Utekelezaji wa NVIDIA | Mitindo ya kulipwa (mara nyingi huwekwa pamoja) | Muunganisho mkali wa kernel + utunzaji sahihi, haraka sana inapobofya |
| DeepSpeed ( hati za ZeRO ) | Timu za mafunzo | Bure | Uboreshaji wa kumbukumbu + upitishaji (ZeRO n.k.). Inaweza kuhisi kama injini ya jeti |
| FSDP (PyTorch) (Nyaraka za PyTorch FSDP ) | Timu za mafunzo | Bure | Vigezo/mipana ya vipande, hufanya mifumo mikubwa isiogopeshe |
| upimaji wa bitsandbaiti ( bitsandbaiti ) | Watengenezaji wa LLM | Bure | Uzito wa biti ndogo, akiba kubwa ya kumbukumbu - ubora unategemea, lakini whew 😬 |
| Uchafuzi ( Hinton et al., 2015 ) | Timu za bidhaa | "Gharama ya muda" | Mfano mdogo wa mwanafunzi hurithi tabia, kwa kawaida faida bora ya muda mrefu |
| Kupogoa ( mafunzo ya kupogoa ya PyTorch ) | Utafiti + bidhaa | Bure | Huondoa uzito uliokufa. Hufanya kazi vizuri zaidi inapounganishwa na mazoezi ya upya |
| Uangalifu wa Flash / kokwa zilizounganishwa ( Karatasi ya FlashAttention ) | Wasomi wa utendaji | Bure | Usikivu wa haraka, tabia bora ya kumbukumbu. Ushindi halisi kwa transfoma |
| Seva ya Uashirio ya Triton ( Uunganishaji Unaobadilika ) | Ops/inframe | Bure | Huduma ya uzalishaji, upangaji, mabomba ya mifumo mingi - yanaonekana kama ya biashara |
Kukiri kwa umbizo la ajabu: "Bei" si safi kwa sababu chanzo huria bado kinaweza kukugharimu wikendi ya utatuzi wa matatizo, ambayo ni ... bei. 😵💫
4) Anza na Vipimo: Wasifu Kama Unavyomaanisha 🔍
Ukifanya jambo moja tu kutoka kwa mwongozo huu wote, fanya hivi: pima ipasavyo.
Katika majaribio yangu mwenyewe, "mafanikio makubwa zaidi ya uboreshaji" yalitokana na kugundua kitu rahisi sana kama:
-
kipakiaji data kinasababisha GPU kukosa nguvu
-
Kikwazo cha usindikaji wa awali wa CPU
-
ukubwa mdogo wa kundi unaosababisha kernel kuzindua juu ya uendeshaji
-
uwekaji tokeni polepole (waweka tokeni wanaweza kuwa wabaya kimya kimya)
-
kugawanyika kwa kumbukumbu ( maelezo ya mgawanyaji wa kumbukumbu ya PyTorch CUDA )
-
hesabu inayotawala safu moja
Kipi cha kupima (seti ya chini kabisa)
-
Muda wa kusubiri (uk. 50, uk. 95, uk. 99) ( SRE kwenye asilimia za muda wa kusubiri )
-
Matokeo (tokeni/sekunde, maombi/sekunde)
-
Matumizi ya GPU (hesabu + kumbukumbu)
-
Vilele vya VRAM / RAM
-
Gharama kwa kila tokeni za 1k (au kwa kila makadirio)
Mtazamo wa vitendo wa uandishi wa wasifu
-
Wasifu wa hali moja unayoijali (sio kidokezo cha vitu vya kuchezea).
-
Rekodi kila kitu katika "shajara ndogo ya urembo."
Ndiyo, inachosha ... lakini inakuokoa kutokana na kujichosha baadaye.
(Ikiwa unataka kifaa halisi cha kuanza nacho: PyTorch Profiler ( torch.profiler docs ) na Nsight Systems ( NVIDIA Nsight Systems ) ndizo zinazoshukiwa kwa kawaida.)
5) Uboreshaji wa Data + Mafunzo: Nguvu Nzuri ya Utulivu 📦🚀
Watu huzingatia usanifu wa mifumo na kusahau bomba. Wakati huo huo bomba huchoma nusu ya GPU kimya kimya.
Ushindi rahisi unaoonekana haraka
-
Tumia usahihi mchanganyiko (FP16/BF16 ambapo ni thabiti) ( PyTorch AMP / torch.amp )
Kawaida ni haraka zaidi, mara nyingi ni sawa - lakini angalia tabia za nambari. -
Mkusanyiko wa gradient wakati ukubwa wa kundi ni mdogo ( 🤗 Mwongozo wa kuongeza kasi )
Huweka uboreshaji imara bila kulipuka kwa kumbukumbu. -
Ukaguzi wa gradient ( torch.utils.checkpoint )
Hufanya biashara ya hesabu kwa kumbukumbu - hufanya muktadha mkubwa uwezekane. -
Utoaji tokeni wenye ufanisi ( 🤗 Tokenizers )
Utoaji tokeni unaweza kuwa kikwazo kwa kiwango kikubwa. Sio wa kuvutia; ni muhimu. -
Urekebishaji wa kipakiaji data
Wafanyakazi zaidi, kumbukumbu iliyobanwa, uwekaji mapema - haionyeshi lakini ina ufanisi 😴➡️💪 ( Mwongozo wa Urekebishaji wa Utendaji wa PyTorch )
Urekebishaji bora wa vigezo
Ukirekebisha mifumo mikubwa, mbinu za PEFT (kama vile adapta za mtindo wa LoRA) zinaweza kupunguza gharama ya mafunzo kwa kiasi kikubwa huku zikiendelea kuwa imara kwa kushangaza ( 🤗 Mwongozo wa PEFT wa Transformers , karatasi ya LoRA ). Huu ni mmoja wa wale walio na wakati wa "kwa nini hatukufanya hivi mapema?".
6) Uboreshaji wa Kiwango cha Usanifu: Mfano wa Ukubwa wa Kulia 🧩
Wakati mwingine njia bora ya kuboresha ni… kuacha kutumia modeli ambayo ni kubwa sana kwa kazi hiyo. Najua, kufuru 😄.
Piga simu kwa misingi michache:
-
Amua kama unahitaji hisia kamili za akili ya jumla, au mtaalamu.
-
Weka dirisha la muktadha kubwa iwezekanavyo, si kubwa zaidi.
-
Tumia modeli iliyofunzwa kwa kazi iliyopo (modeli za uainishaji kwa kazi ya uainishaji, na kadhalika).
Mikakati ya vitendo ya ukubwa wa kulia
-
Badilisha hadi uti wa mgongo mdogo kwa maombi mengi.
Kisha elekeza "maswali magumu" hadi kwenye modeli kubwa zaidi. -
Tumia mpangilio wa hatua mbili.
Rasimu za haraka za modeli, modeli imara zaidi huthibitisha au kuhariri.
Ni kama kuandika na rafiki ambaye ni mchaguzi - anayekera, lakini mwenye ufanisi. -
Punguza urefu wa matokeo
Tokeni za matokeo hugharimu pesa na muda. Ikiwa modeli yako itabadilika, unalipia gharama ya mabadiliko.
Nimeona timu zikipunguza gharama kwa kiasi kikubwa kwa kutekeleza matokeo mafupi. Inahisi kama ni ndogo. Inafanya kazi.
7) Uboreshaji wa Kikusanyaji + Grafu: Kasi Inatoka Wapi 🏎️
Hii ni safu ya "kuifanya kompyuta ifanye mambo ya kompyuta nadhifu zaidi".
Mbinu za kawaida:
-
Muunganisho wa opereta (changanya kerneli) ( "muunganisho wa tabaka" wa NVIDIA TensorRT )
-
Kukunja mara kwa mara (thamani zisizobadilika za kompyuta mapema) ( Uboreshaji wa grafu ya Runtime ya ONNX )
-
Uteuzi wa kernel umerekebishwa kulingana na vifaa
-
Ukamataji wa grafu ili kupunguza gharama ya uendeshaji ya Python (
torch.compileoverview )
Kwa maneno rahisi: mfumo wako unaweza kuwa wa kasi kihisabati, lakini polepole katika utendaji. Vikusanyaji hurekebisha baadhi ya hayo.
Maelezo ya vitendo (pia hujulikana kama makovu)
-
Uboreshaji huu unaweza kuwa nyeti kwa mabadiliko ya umbo la modeli.
-
Baadhi ya mifano huharakisha sana, mingine hubadilika kidogo.
-
Wakati mwingine unapata mdudu wa kasi na mdudu wa kutatanisha - kama gremlin aliyehamishwa ndani 🧌
Hata hivyo, inapofanya kazi, ni mojawapo ya ushindi safi zaidi.
8) Upimaji, Kupogoa, Kuchachusha: Ndogo Bila Kulia (Kupita Kiasi) 🪓📉
Hii ndiyo sehemu ambayo watu wanataka… kwa sababu inaonekana kama utendaji huru. Inaweza kuwa hivyo, lakini lazima uichukulie kama upasuaji.
Upimaji (uzito/uanzishaji wa usahihi wa chini)
-
Nzuri kwa kasi ya hitimisho na kumbukumbu
-
Hatari: kushuka kwa ubora, hasa kwenye sehemu zenye ukingo
-
Mbinu bora: tathmini kwenye seti halisi ya majaribio, si hisia
Ladha za kawaida utasikia kuhusu:
-
INT8 (mara nyingi ni thabiti) ( Aina za kipimo cha TensorRT )
-
INT4 / biti ya chini (akiba kubwa, hatari ya ubora huongezeka) ( upimaji wa bitsandbytes k-bit )
-
Kiasi mchanganyiko (sio kila kitu kinahitaji usahihi sawa)
Kupogoa (ondoa vigezo)
-
Huondoa uzito au miundo "isiyo muhimu" ( mafunzo ya kupogoa ya PyTorch )
-
Kwa kawaida huhitaji mafunzo upya ili kurejesha ubora
-
Inafanya kazi vizuri zaidi kuliko watu wanavyofikiria… inapofanywa kwa uangalifu
Kuyeyusha (mwanafunzi hujifunza kutoka kwa mwalimu)
Hii ni lever yangu binafsi ninayopenda ya muda mrefu. Kuyeyusha kunaweza kutoa modeli ndogo ambayo hufanya vivyo hivyo, na mara nyingi ni thabiti zaidi kuliko upimaji uliokithiri ( Kuyeyusha Maarifa katika Mtandao wa Neva ).
Sitiari isiyokamilika: kunyunyizia ni kama kumimina supu ngumu kupitia kichujio na kupata… supu ndogo. Hiyo si jinsi supu inavyofanya kazi, lakini unapata wazo 🍲.
9) Kuhudumia na Kuhitimisha: Eneo Halisi la Vita 🧯
Unaweza "kuboresha" mfumo na bado ukautumia vibaya. Kuhudumia ndiko ambapo ucheleweshaji na gharama huonekana kuwa halisi.
Kutumikia hushinda jambo hilo
-
Kuunganisha
Huboresha upitishaji. Lakini huongeza muda wa kuchelewa ukizidisha. Isawazishe. ( Kuunganisha kwa nguvu kwa Triton ) -
Kuhifadhi Aktiki
Kuhifadhi haraka na utumiaji tena wa kashe ya KV kunaweza kuwa kubwa kwa muktadha unaorudiwa. ( Maelezo ya kashe ya KV ) -
Matokeo ya utiririshaji
Watumiaji wanahisi ni haraka zaidi hata kama muda wote unafanana. Mtazamo ni muhimu 🙂. -
Kupunguza gharama ya ziada ya tokeni kwa tokeni
Baadhi ya rafu hufanya kazi ya ziada kwa kila tokeni. Punguza gharama hiyo ya ziada na unashinda sana.
Jihadhari na ucheleweshaji wa mkia
Wastani wako unaweza kuonekana mzuri ilhali p99 yako ni janga. Kwa bahati mbaya, watumiaji wanaishi kwenye mkia. ( “Ucheleweshaji wa mkia” na kwa nini wastani hudanganya )
10) Uboreshaji Unaozingatia Maunzi: Linganisha Mfano na Mashine 🧰🖥️
Kuboresha bila ufahamu wa vifaa ni kama kurekebisha gari la mbio bila kuangalia matairi. Hakika, unaweza kufanya hivyo, lakini ni ujinga kidogo.
Mambo ya kuzingatia kuhusu GPU
-
Kipimo cha upana wa kumbukumbu mara nyingi huwa kikwazo, si hesabu mbichi
-
Ukubwa mkubwa wa kundi unaweza kusaidia, hadi wasipofanya hivyo
-
Muunganiko wa kernel na uboreshaji wa umakini ni mkubwa kwa transfoma ( FlashAttention: umakini kamili unaozingatia IO )
Mambo ya kuzingatia kuhusu CPU
-
Uundaji wa nyuzi, uundaji wa vekta, na eneo la kumbukumbu ni muhimu sana
-
Gharama ya tokeni inaweza kutawala ( 🤗 tokeni za "Haraka" )
-
Huenda ukahitaji mikakati tofauti ya upimaji kuliko kwenye GPU
Mazingatio ya Edge / simu
-
Kumbukumbu inakuwa kipaumbele namba moja
-
Tofauti ya muda wa kusubiri ni muhimu kwa sababu vifaa vina… hisia kali
-
Mifano midogo na maalum mara nyingi hushinda mifano mikubwa ya jumla
11) Vizuizi vya Ubora: Usijifanyie "Ubora" Kuwa Mdudu 🧪
Kila ushindi wa kasi unapaswa kuja na ukaguzi wa ubora. Vinginevyo utasherehekea, utasafirisha, na kisha utapata ujumbe kama "kwa nini msaidizi anaongea ghafla kama maharamia?" 🏴☠️
Vizuizi vya vitendo:
-
Vidokezo vya dhahabu (seti thabiti ya vidokezo unavyojaribu kila wakati)
-
Vipimo vya kazi (usahihi, F1, BLEU, chochote kinachofaa)
-
Ukaguzi wa doa la binadamu (ndio, kwa uzito)
-
Vizingiti vya urejeshaji ("kupungua kwa zaidi ya X% hakuruhusiwi")
Pia fuatilia hali za kushindwa:
-
umbizo la mkondo
-
mabadiliko ya tabia ya kukataa
-
masafa ya ndoto
-
urefu wa majibu mfumuko wa bei
Uboreshaji unaweza kubadilisha tabia kwa njia za kushangaza. Kwa njia ya kipekee. Inakera. Kwa kutabirika, kwa kuzingatia mambo ya nyuma.
12) Orodha ya Ukaguzi: Jinsi ya Kuboresha Mifumo ya AI Hatua kwa Hatua ✅🤖
Ukitaka mpangilio wazi wa shughuli za Jinsi ya Kuboresha Mifumo ya AI , hapa kuna mtiririko wa kazi unaowaweka watu katika hali ya akili timamu:
-
Fafanua mafanikio
Chagua vipimo 1-2 vya msingi (ucheleweshaji, gharama, matokeo, ubora). -
Pima
Wasifu wa msingi mzigo halisi wa kazi, rekodi p50/p95, kumbukumbu, gharama. ( PyTorch Profiler ) -
Rekebisha vikwazo vya bomba la mafuta.
Upakiaji wa data, uwekaji tokeni, usindikaji wa awali, upangaji wa data. -
Tumia ushindi wa hesabu wenye hatari ndogo
Usahihi mchanganyiko, uboreshaji wa kernel, upangaji bora. -
Jaribu uboreshaji wa mkusanyaji/wakati wa utekelezaji
Ukamataji wa grafu, muda wa utekelezaji wa makadirio, muunganisho wa opereta. ( mafunzo yatorch.compile, hati za wakati wa utekelezaji za ONNX ) -
Punguza gharama ya modeli.
Pima kwa uangalifu, nyunyiza ikiwa unaweza, pogoa ikiwa inafaa. -
Rekebisha huduma
Kuhifadhi data, ulinganifu wa sarafu, upimaji wa mzigo, marekebisho ya muda wa kusubiri. -
Thibitisha ubora
Fanya majaribio ya urejelezaji na ulinganishe matokeo sambamba. -
Rudia
Mabadiliko madogo, futa maelezo, rudia. Haionyeshi - yenye ufanisi.
Na ndio, hii bado ni Jinsi ya Kuboresha Mifumo ya AI hata kama inahisi zaidi kama "Jinsi ya kuacha kukanyaga reki." Jambo lile lile.
13) Makosa ya Kawaida (Kwa hivyo Usirudie Kama Sisi Wengine) 🙃
-
Kuboresha kabla ya kupima
Utapoteza muda. Na kisha utaboresha kitu kibaya kwa ujasiri… -
Kufuatilia vigezo vya kiwango kimoja
ni kwa kutofanya hivyo. Mzigo wako wa kazi ndio ukweli. -
Kupuuza kumbukumbu
Matatizo ya kumbukumbu husababisha kupungua kwa kasi, ajali, na msisimko. ( Kuelewa matumizi ya kumbukumbu ya CUDA katika PyTorch ) -
Kuhesabu mapema sana
Kiasi kidogo cha biti kinaweza kuwa cha kushangaza, lakini anza na hatua salama zaidi kwanza. -
Hakuna mpango wa kurudi nyuma
Ikiwa huwezi kurudi haraka, kila uanzishaji unakuwa wa msongo wa mawazo. Msongo wa mawazo husababisha hitilafu.
Maelezo ya Kufunga: Njia ya Kibinadamu ya Kuboresha 😌⚡
Jinsi ya Kuboresha Mifumo ya AI si ujanja mmoja. Ni mchakato wenye tabaka: pima, rekebisha bomba, tumia vikusanyaji na muda wa utekelezaji, rekebisha huduma, kisha punguza modeli kwa kutumia upimaji au uchanganyaji ikiwa unahitaji. Ifanye hatua kwa hatua, weka vizuizi vya ubora, na usiamini "inahisi haraka" kama kipimo (hisia zako ni nzuri, hisia zako si kielelezo cha wasifu).
Ukitaka chakula kifupi zaidi cha kuchukua:
-
Pima kwanza 🔍
-
Boresha bomba linalofuata 🧵
-
Kisha boresha mfumo 🧠
-
Kisha boresha huduma 🏗️
-
Hakikisha unaangalia ubora kila wakati ✅
Na ikisaidia, jikumbushe: lengo si "mfano kamili." Lengo ni mfano ambao ni wa haraka, wa bei nafuu, na wa kutegemewa vya kutosha kiasi kwamba unaweza kulala usiku ... usiku mwingi 😴.
Maswali Yanayoulizwa Mara kwa Mara
Kuboresha mfumo wa akili bandia kunamaanisha nini katika vitendo?
"Boresha" kwa kawaida humaanisha kuboresha kikwazo kimoja kikuu: ucheleweshaji, gharama, alama ya kumbukumbu, usahihi, uthabiti, au matokeo ya huduma. Sehemu ngumu ni mabadiliko - kusukuma eneo moja kunaweza kupunguza lingine. Mbinu ya vitendo ni kuchagua shabaha iliyo wazi (kama vile ucheleweshaji wa p95 au wakati-kwa-ubora) na kuboresha kuelekea hilo. Bila shabaha, ni rahisi "kuboresha" na bado kupoteza.
Jinsi ya kuboresha mifumo ya akili bandia bila kuharibu ubora kimya kimya
Chukulia kila kasi au mabadiliko ya gharama kama urejeshaji kimya kimya unaowezekana. Tumia vizuizi kama vile vidokezo vya dhahabu, vipimo vya kazi, na ukaguzi wa haraka wa doa wa kibinadamu. Weka kizingiti kilicho wazi cha kuteleza kwa ubora unaokubalika na ulinganishe matokeo sambamba. Hii inazuia "ni haraka" isigeuke kuwa "kwa nini ghafla ikawa ya ajabu katika uzalishaji?" baada ya kusafirisha.
Mambo ya kupima kabla ya kuanza kuboresha
Anza na asilimia ya muda wa kusubiri (p50, p95, p99), matokeo ya kupita (tokeni/sekunde au maombi/sekunde), matumizi ya GPU, na kilele cha VRAM/RAM. Fuatilia gharama kwa kila makadirio au kwa tokeni za 1k ikiwa gharama ni kikwazo. Wazia hali halisi unayotoa, si kidokezo cha kuchezea. Kuweka "shajara ndogo ya utendaji" hukusaidia kuepuka kubahatisha na kurudia makosa.
Ushindi wa haraka na hatari ndogo kwa utendaji wa mafunzo
Usahihi mchanganyiko (FP16/BF16) mara nyingi ndio kigezo cha kwanza cha haraka zaidi, lakini angalia tabia za nambari. Ikiwa ukubwa wa kundi ni mdogo, mkusanyiko wa gradient unaweza kuleta utulivu wa uboreshaji bila kuharibu kumbukumbu. Ukaguzi wa gradient hubadilishana hesabu ya ziada kwa kumbukumbu ya chini, na kuwezesha miktadha mikubwa. Usipuuze urekebishaji wa tokeni na urekebishaji wa kipakiaji data - zinaweza kuzima GPU kimya kimya.
Wakati wa kutumia torch.compile, ONNX Runtime, au TensorRT
Zana hizi zinalenga uendeshaji wa uendeshaji: upigaji picha wa grafu, muunganiko wa kernel, na uboreshaji wa grafu ya muda wa utekelezaji. Zinaweza kutoa kasi safi ya makadirio, lakini matokeo hutofautiana kulingana na umbo la modeli na vifaa. Baadhi ya mipangilio huhisi kama ya ajabu; mingine husogea kidogo. Tarajia unyeti kwa mabadiliko ya umbo na hitilafu za mara kwa mara za "gremlin" - pima kabla na baada ya mzigo wako halisi wa kazi.
Ikiwa upimaji wa hesabu unafaa, na jinsi ya kuepuka kwenda mbali sana
Upimaji unaweza kupunguza kumbukumbu na kuharakisha makadirio, hasa kwa kutumia INT8, lakini ubora unaweza kuteleza kwenye sehemu zenye ukingo. Chaguo za biti ya chini (kama vile INT4/k-bit) huleta akiba kubwa zaidi yenye hatari kubwa. Tabia salama zaidi ni kutathmini kwenye seti halisi ya majaribio na kulinganisha matokeo, si hisia ya utumbo. Anza na hatua salama zaidi kwanza, kisha nenda kwa usahihi wa chini tu ikiwa inahitajika.
Tofauti kati ya kupogoa na kunereka kwa ajili ya kupunguza ukubwa wa modeli
Kupogoa huondoa vigezo "vilivyokufa" na mara nyingi huhitaji mafunzo upya ili kurejesha ubora, hasa inapofanywa kwa nguvu. Kupogoa hufundisha mfumo mdogo wa wanafunzi kuiga tabia ya mwalimu mkubwa, na inaweza kuwa faida kubwa ya muda mrefu kuliko upimaji uliokithiri. Ukitaka mfumo mdogo unaofanya kazi sawa na kubaki imara, upogoaji mara nyingi ndio njia safi zaidi.
Jinsi ya kupunguza gharama ya makadirio na ucheleweshaji kupitia maboresho ya huduma
Kuhudumia ndiko ambapo uboreshaji unakuwa dhahiri: upangaji huongeza upitishaji lakini unaweza kuathiri muda wa kusubiri ukifanywa kupita kiasi, kwa hivyo irekebishe kwa uangalifu. Kuhifadhi (hifadhi ya haraka na utumiaji tena wa kashe ya KV) kunaweza kuwa kubwa wakati muktadha unarudiwa. Matokeo ya utiririshaji huboresha kasi inayoonekana hata kama muda wote ni sawa. Pia tafuta gharama ya juu ya tokeni kwa tokeni kwenye rundo lako - kazi ndogo ya kila tokeni huongezeka haraka.
Kwa nini muda wa kuchelewa kwa mkia ni muhimu sana wakati wa kuboresha mifumo ya AI
Wastani unaweza kuonekana mzuri huku p99 ikiwa janga, na watumiaji huwa wanaishi katika hali ya mkia. Ucheleweshaji wa mkia mara nyingi hutokana na mtetemo: kugawanyika kwa kumbukumbu, kuongezeka kwa usindikaji wa awali wa CPU, kupungua kwa tokeni, au tabia mbaya ya kupanga. Ndiyo maana mwongozo huu unasisitiza asilimia na mzigo halisi wa kazi. Ukiboresha p50 pekee, bado unaweza kutuma uzoefu ambao "huhisi polepole nasibu."
Marejeleo
-
Huduma za Wavuti za Amazon (AWS) - Asilimia za AWS CloudWatch (ufafanuzi wa takwimu) - docs.aws.amazon.com
-
Google - Mkia katika Kiwango (mazoezi bora ya kuchelewa kwa mkia) - sre.google
-
Google - Malengo ya Kiwango cha Huduma (Kitabu cha SRE) - asilimia za kuchelewa - sre.google
-
PyTorch - torch.compile - docs.pytorch.org
-
PyTorch - FullySharedDataParallel (FSDP) - docs.pytorch.org
-
PyTorch - PyTorch Profiler - docs.pytorch.org
-
PyTorch - Semantiki ya CUDA: usimamizi wa kumbukumbu (maelezo ya mgawaji kumbukumbu wa CUDA) - docs.pytorch.org
-
PyTorch - Usahihi Mchanganyiko Kiotomatiki (torch.amp / AMP) - docs.pytorch.org
-
PyTorch - torch.utils.checkpoint - docs.pytorch.org
-
PyTorch - Mwongozo wa Kurekebisha Utendaji - docs.pytorch.org
-
PyTorch - Mafunzo ya Kupogoa - docs.pytorch.org
-
PyTorch - Kuelewa matumizi ya kumbukumbu ya CUDA katika PyTorch - docs.pytorch.org
-
PyTorch - mafunzo ya torch.compile / muhtasari - docs.pytorch.org
-
Muda wa Kuendesha wa ONNX - Nyaraka za Muda wa Kuendesha wa ONNX - onnxruntime.ai
-
NVIDIA - Nyaraka za TensorRT - docs.nvidia.com
-
NVIDIA - Aina za kipimo cha TensorRT - docs.nvidia.com
-
NVIDIA - Mifumo ya Nsight - developer.nvidia.com
-
NVIDIA - Seva ya Uashirio ya Triton - uunganishaji unaobadilika - docs.nvidia.com
-
za DeepSpeed - ZeRO Stage 3 - deepspeed.readthedocs.io
-
bitsandbytes (msingi wa bitsandbytes) - bitsandbytes - github.com
-
Uso Unaokumbatiana - Kuharakisha: Mwongozo wa Kukusanya Gradient - huggingface.co
-
Uso Unaokumbatiana - Nyaraka za Tokenizers - huggingface.co
-
Uso Unaokumbatiana - Transfoma: Mwongozo wa PEFT - huggingface.co
-
Uso Unaokumbatiana - Transfoma: Maelezo ya kashe ya KV - huggingface.co
-
Uso Unaokumbatiana - Transfoma: Viashiria vya "Haraka" (madarasa ya viashiria) - huggingface.co
-
arXiv - Kusambaza Maarifa katika Mtandao wa Neva (Hinton et al., 2015) - arxiv.org
-
arXiv - LoRA: Urekebishaji wa Viwango vya Chini wa Mifano ya Lugha Kubwa - arxiv.org
-
arXiv - FlashAttention: Uangalifu Halisi wa Haraka na Ufanisi wa Kumbukumbu kwa Kutumia Uelewa wa IO - arxiv.org