Kukuza LLM kwa Uzalishaji: Mwongozo

Kutumia APIs kwa Ujumuishaji wa LLM

Ujumuishaji wa LLMs katika msimbo wa programu unaweza kupatikana kupitia njia mbalimbali, lakini matumizi ya API inayolingana na OpenAI inapendekezwa sana kwa utumiaji wa uzalishaji. Njia hii inatoa kubadilika ili kukabiliana na mazingira ya modeli yanayoendelea kwa haraka. Modeli zinazochukuliwa kuwa za kisasa miezi michache iliyopita zinaweza kupitwa na wakati haraka.

Tangu mlipuko wa akili bandia ulioanza na ChatGPT mnamo 2022, kiolesura cha API cha OpenAI kimejitokeza kama kiwango cha de facto cha kuunganisha programu na LLMs. Kiwango hiki kinaruhusu wasanidi programu kuunda programu kwa kutumia rasilimali zinazopatikana, kama vile kuanzia na Mistral 7B katika Llama.cpp kwenye daftari na kubadilika kwa urahisi kwenda kwa seva za API za Mistral AI kwa utumiaji wa uzalishaji. Hii huondoa kufungiwa kwa modeli moja, injini ya uendeshaji, au mtoa huduma wa API.

Huduma za uendeshaji zinazotegemea wingu hutoa njia rafiki kwa matumizi ya mtaji (capex) ya kukuza matumizi ya akili bandia. Huduma hizi huondoa hitaji la usimamizi wa maunzi na usanidi wa modeli, badala yake hutoa API kwa ujumuishaji wa programu.

Mbali na matoleo ya API kutoka kwa wajenzi wakuu wa modeli, idadi inayoongezeka ya kampuni zinazoanzisha miundombinu ya akili bandia hutoa uendeshaji kama huduma kwa modeli za uzani wazi. Watoa huduma hawa hutofautiana katika mbinu zao. Wengine, kama vile SambaNova, Cerebras, na Groq, hutumia maunzi maalum au mbinu kama vile uamuzi wa kubahatisha ili kuharakisha uendeshaji lakini hutoa uteuzi mdogo wa modeli. Wengine, kama vile Fireworks AI, huunga mkono utumiaji wa modeli zilizoboreshwa za kibinafsi kwa kutumia adapta za Low Rank Adaptation (LoRA). Tofauti za mfumo wa ikolojia wa akili bandia zinahitaji utafiti wa kina kabla ya kujitolea kwa mtoa huduma maalum.

Mambo ya Kuzingatia kwa Utumiaji wa LLM Ndani ya Nchi

Katika hali ambapo mbinu zinazotegemea wingu haziwezekani kwa sababu ya faragha, kanuni, au vikwazo vya miundombinu iliyopo (kwa mfano, kampuni tayari imewekeza katika seva za GPU), utumiaji wa ndani ya nchi unakuwa muhimu. Hii inaweza kuleta changamoto kadhaa. Baadhi ya maswali ya kawaida yanayojitokeza ni pamoja na:

  • Uteuzi wa Modeli: Modeli inayofaa inategemea kesi maalum ya matumizi. Modeli iliyoundwa kwa ajili ya chatbot ya huduma kwa wateja itakuwa na mahitaji tofauti na ile inayotumiwa kwa kizazi kilichoimarishwa na urejeshaji au kama msaidizi wa msimbo. Kutumia wakati na watoa huduma wa API ili kubaini modeli ambayo inakidhi mahitaji inashauriwa.
  • Mahitaji ya Maunzi: Kuamua maunzi muhimu ni muhimu, kwani GPUs ni ghali na inaweza kuwa ngumu kupata. Modeli yenyewe inaweza kutoa maarifa katika maunzi yanayohitajika ili kuiendesha. Modeli kubwa zinahitaji maunzi zaidi. Makadirio mabaya ya kumbukumbu ya chini ya GPU yanaweza kuhesabiwa kwa kuzidisha hesabu ya parameta (katika mabilioni) na 2GB kwa modeli zilizofunzwa kwa usahihi wa biti 16. Kwa modeli za biti 8, 1GB kwa bilioni ya parameta inahitajika. Mbinu za ukandamizaji wa modeli kama vile quantization zinaweza kupunguza hii hadi 512MB kwa bilioni ya parameta. Hii ni kikomo cha chini. Kumbukumbu ya ziada inahitajika ili kutoa modeli kwa watumiaji wengi kwa wakati mmoja kwa sababu ya akiba ya ufunguo-thamani, ambayo hufanya kama kumbukumbu ya muda mfupi ya modeli. Matrix ya usaidizi ya Nvidia inatoa mwongozo juu ya GPUs zinazohitajika kuendesha modeli mbalimbali.
  • Uredundaji: Mbali na kuweka ukubwa wa maunzi kwa modeli, urudufu lazima uzingatiwe. Nodi moja ya GPU iko hatarini kwa kushindwa, kwa hivyo kupeleka mifumo miwili au zaidi kwa ubadilishaji na usawazishaji wa mzigo ni muhimu.
  • Njia za Utumiaji: LLMs zinaweza kutumiwa na kutolewa katika uzalishaji kwa kutumia njia mbalimbali: chuma tupu na visawazisha mzigo, mashine pepe, au vyombo katika Docker au Kubernetes. Kubernetes hurahisisha matumizi makubwa kwa kuendesha kiotomatiki uundaji wa kontena, mitandao, na usawazishaji wa mzigo.

Kubernetes kwa Utumiaji wa LLM

Kubernetes huondoa ugumu mwingi unaohusishwa na matumizi makubwa kwa kuendesha kiotomatiki uundaji wa kontena, mitandao, na usawazishaji wa mzigo. Biashara nyingi tayari zimepitisha na zinaelewa Kubernetes. Nvidia, Hugging Face, na wengine wanapendelea mazingira ya kontena na Nvidia Inference Microservices (NIMs) na Hugging Face Generative AI Services (HUGS), iliyosanidiwa mapema kwa mzigo wa kawaida wa kazi na matumizi.

Injini za Uendeshaji

Injini mbalimbali za uendeshaji zinapatikana kwa kuendesha modeli, pamoja na Ollama na Llama.cpp, ambazo zinaoana na anuwai ya maunzi. Kwa kuongeza modeli, maktaba kama vile vLLM, TensorRT LLM, SGLang, na PyTorch hutumiwa mara nyingi. Mwongozo huu unazingatia kupeleka modeli kwa kutumia vLLM, kwa sababu inasaidia uteuzi mpana wa modeli maarufu na inatoa msaada mpana na utangamano katika Nvidia, AMD, na maunzi mengine.

Kuandaa Mazingira ya Kubernetes

Kuweka mazingira ya Kubernetes kufanya kazi na GPUs kunahitaji viendeshaji na utegemezi wa ziada ikilinganishwa na usanidi wa kawaida wa Kubernetes. Mchakato wa usanidi utatofautiana kwa maunzi ya AMD na Nvidia.

Mwongozo huu unatumia K3S katika usanidi wa nodi moja. Hatua za msingi zinafanana na mazingira ya nodi nyingi, lakini utegemezi lazima uridishwe kwenye kila nodi ya mfanyakazi wa GPU, na usanidi wa hifadhi unaweza kuhitaji marekebisho.

Lengo ni kutoa msingi thabiti wa kupeleka mzigo wa kazi wa uendeshaji kwa njia rafiki ya uzalishaji. Mahitaji yafuatayo yanahitajika:

  • Seva au kituo cha kazi na angalau bodi moja ya GPU ya AMD au Nvidia inayoungwa mkono
  • Usakinishaji mpya wa Ubuntu 24.04 LTS

Utegemezi wa Nvidia

Kuweka mazingira ya K3S yanayoendeshwa na Nvidia kunahitaji kusakinisha CUDA Drivers Fabric Manager na viendeshaji vya seva isiyo na kichwa. Sakinisha huduma za seva za Nvidia kwa utatuzi wa masuala ya viendeshaji.

Maelezo ya Kina ya Sehemu Muhimu

1. Uchaguzi wa Modeli na Ukubwa wa Maunzi

Uchaguzi wa modeli ni hatua muhimu sana katika kupeleka LLMs kwa uzalishaji. Kuna mambo mengi ya kuzingatia, kama vile:

  • Kazi Maalum: Je, modeli itatumika kwa nini? Je, ni chatbot, muhtasari wa maandishi, kizazi cha msimbo, au kitu kingine? Kila kazi itahitaji seti tofauti ya uwezo. Kwa mfano, chatbot itahitaji kuwa na uwezo wa kuelewa lugha ya asili, kutoa majibu yanayofaa, na kukumbuka mwingiliano wa awali.
  • Ukubwa wa Modeli: Modeli kubwa kwa ujumla zinaweza kufanya vizuri zaidi kuliko modeli ndogo, lakini pia zinahitaji rasilimali zaidi za kuendesha. Una mizania rasilimali ngapi na ubora wa matokeo? Kuna kubadilishana hapa.
  • Upatikanaji: Je, unahitaji modeli ambayo inapatikana hadharani, au unahitaji kuifunza mwenyewe? Mafunzo ya modeli mwenyewe yanaweza kuwa ghali na kuchukua muda, lakini pia inakupa udhibiti zaidi juu ya uwezo wa modeli.
  • Leseni: Je, leseni ya modeli inakuruhusu kuitumia katika mazingira ya kibiashara? Baadhi ya modeli zina vikwazo vya leseni ambavyo vinaweza kukuzuia kuzitumia kwa madhumuni fulani.

Mara tu unapokuwa na uelewa mzuri wa mahitaji yako, unaweza kuanza kutafuta modeli zinazokidhi mahitaji yako. Kuna vyanzo vingi vya kupata LLMs, kama vile Hugging Face Model Hub, Google AI, na OpenAI.

Mara baada ya kuchagua modeli, unahitaji kuamua ukubwa wa maunzi unahitaji kuiendesha. Hii itategemea ukubwa wa modeli, idadi ya watumiaji, na mahitaji ya muda wa majibu.

Kwa ujumla, unahitaji GPU yenye kumbukumbu ya kutosha kushikilia modeli nzima. Unaweza kukadiria mahitaji ya kumbukumbu kwa kuzidisha idadi ya parameta katika modeli kwa ukubwa wa aina ya data. Kwa mfano, modeli yenye parameta bilioni 7 iliyofunzwa kwa usahihi wa biti 16 itahitaji takriban 14 GB ya kumbukumbu.

Kwa kuongeza kumbukumbu, unahitaji pia CPU na RAM ya kutosha ili kushughulikia mzigo wa kazi. Unahitaji pia kuzingatia kasi ya GPU na CPU. GPU ya haraka itatoa majibu haraka, lakini pia itakuwa ghali zaidi.

2. Mbinu za Uendeshaji: API vs. Ndani ya Nchi

Kuna njia mbili kuu za kupeleka LLMs kwa uzalishaji:

  • API: Njia ya API ni kutumia huduma ya API iliyoandaliwa na mtoa huduma mwingine. Hii ni chaguo rahisi na la gharama nafuu kwa kesi nyingi za matumizi. Mtoa huduma atashughulikia maunzi, programu, na matengenezo. Unahitaji tu kulipa kwa matumizi.
  • Ndani ya Nchi: Njia ya ndani ya nchi ni kupeleka modeli kwenye miundombinu yako mwenyewe. Hii inakupa udhibiti zaidi juu ya mazingira, lakini pia ni ghali zaidi na ngumu zaidi. Unahitaji kusimamia maunzi, programu, na matengenezo mwenyewe.

Chaguo bora kwako itategemea mahitaji yako maalum. Ikiwa unahitaji udhibiti mwingi juu ya mazingira na una rasilimali za kuisimamia, basi uendeshaji wa ndani ya nchi unaweza kuwa chaguo bora. Hata hivyo, kwa kesi nyingi za matumizi, kutumia API ni chaguo rahisi na la gharama nafuu.

3. Kubernetes kama Orchestrator

Kubernetes ni mfumo wa kupanga kontena ambao unaweza kutumika kusimamia matumizi ya LLM. Kubernetes inaweza kusaidia kwa:

  • Utoaji: Kubernetes inaweza kutoa kiotomatiki matumizi ya LLM. Hii inaweza kuokoa muda na juhudi.
  • Kuongeza: Kubernetes inaweza kuongeza kiotomatiki matumizi ya LLM. Hii inaweza kusaidia kuhakikisha kuwa programu zako zinaweza kushughulikia kilele cha trafiki.
  • Uponyaji: Kubernetes inaweza kuponya kiotomatiki matumizi ya LLM. Hii inaweza kusaidia kuhakikisha kuwa programu zako zinapatikana kila wakati.
  • Usawazishaji wa Mzigo: Kubernetes inaweza kusawazisha mzigo kiotomatiki kwa matumizi ya LLM. Hii inaweza kusaidia kuhakikisha kuwa programu zako zinafanya kazi kwa ufanisi.

Kubernetes ni zana yenye nguvu ambayo inaweza kusaidia kurahisisha usimamizi wa matumizi ya LLM. Hata hivyo, pia ni ngumu, kwa hivyo ni muhimu kuwa na uelewa mzuri wa Kubernetes kabla ya kujaribu kuitumia kupeleka LLMs.

4. Injini za Uendeshaji: vLLM, TensorRT LLM, na Zaidi

Injini ya uendeshaji ni programu ambayo hutumika kuendesha LLMs. Kuna injini nyingi tofauti za uendeshaji zinazopatikana, kila moja ikiwa na nguvu na udhaifu wake. Baadhi ya injini maarufu za uendeshaji ni pamoja na:

  • vLLM: vLLM ni injini ya uendeshaji iliyoandikwa katika Python ambayo imeundwa kwa matumizi ya LLM yenye utendaji wa juu. vLLM inajulikana kwa kasi yake, matumizi bora ya kumbukumbu, na msaada kwa anuwai ya modeli.
  • TensorRT LLM: TensorRT LLM ni injini ya uendeshaji iliyoandaliwa na NVIDIA ambayo imeundwa kwa ajili ya kuendesha LLMs kwenye GPUs za NVIDIA. TensorRT LLM inajulikana kwa utendaji wake bora na msaada kwa aina mbalimbali za GPUs za NVIDIA.
  • SGLang: SGLang ni lugha ya programu ambayo imeundwa kwa ajili ya kuendesha LLMs. SGLang inajulikana kwa unyumbufu wake, msaada kwa anuwai ya majukwaa, na uwezo wake wa kuboresha utendaji.

Chaguo bora la injini ya uendeshaji itategemea mahitaji yako maalum. Ikiwa unahitaji injini ya uendeshaji yenye utendaji wa juu ambayo inaweza kuendesha anuwai ya modeli, basi vLLM ni chaguo zuri. Ikiwa unahitaji injini ya uendeshaji ambayo imeboreshwa kwa GPUs za NVIDIA, basi TensorRT LLM ni chaguo zuri. Ikiwa unahitaji lugha ya programu ambayo inaweza kutumika kuendesha LLMs kwenye anuwai ya majukwaa, basi SGLang ni chaguo zuri.

5. Usanidi wa Kubernetes kwa Uendeshaji wa GPU

Kuweka Kubernetes kufanya kazi na GPUs kunahitaji hatua za ziada. Unahitaji:

  1. Sakinisha viendeshaji vya GPU: Unahitaji kusakinisha viendeshaji vya GPU kwenye kila nodi ya mfanyakazi wa GPU.
  2. Sakinisha NVIDIA Container Toolkit: NVIDIA Container Toolkit ni seti ya zana ambazo hurahisisha kuendesha vyombo vya GPU kwenye Kubernetes.
  3. Sanidi Kubernetes kutumia GPUs: Unahitaji kusanidi Kubernetes kutumia GPUs. Hii inahusisha kuunda kadi ya nyenzo ya GPU na kuweka mipaka ya rasilimali ya GPU kwenye vyombo vyako.

Kuna hatua za ziada ambazo zinaweza kuhitajika kutegemea aina ya GPU unazotumia. Kwa habari zaidi, angalia hati za Kubernetes na NVIDIA.

6. Hatua za Usakinishaji wa K3S kwenye Ubuntu 24.04

K3S ni usambazaji mwepesi wa Kubernetes ambao unaweza kusakinishwa kwa urahisi kwenye Ubuntu 24.04. Ili kusakinisha K3S, fuata hatua hizi:

  1. Pakua K3S: Pakua binary ya K3S kutoka kwa tovuti ya K3S.
  2. Fanya binary iweze kutekelezwa: Fanya binary ya K3S iweze kutekelezwa kwa kutumia amri chmod +x k3s.
  3. Sakinisha K3S: Sakinisha K3S kwa kutumia amri sudo ./k3s install.
  4. Anzisha K3S: Anzisha K3S kwa kutumia amri sudo systemctl start k3s.
  5. Thibitisha kwamba K3S inaendesha: Thibitisha kwamba K3S inaendesha kwa kutumia amri kubectl get nodes.

Mara baada ya K3S kusakinishwa, unaweza kuanza kupeleka programu zako.

7. Kuweka Mipaka ya Rasilimali na Ombi

Ni muhimu kuweka mipaka ya rasilimali na ombi kwa matumizi yako ya LLM. Mipaka ya rasilimali huweka kiwango cha juu cha rasilimali ambazo chombo kinaweza kutumia. Ombi la rasilimali linaeleza kiwango cha rasilimali ambazo chombo kinahitaji.

Kwa kuweka mipaka ya rasilimali na ombi, unaweza kuhakikisha kuwa matumizi yako ya LLM hayatumii rasilimali nyingi na kwamba yana rasilimali za kutosha kufanya kazi kwa ufanisi.

8. Ufuatiliaji na Kumbukumbu

Ufuatiliaji na kumbukumbu ni muhimu kwa matumizi ya LLM. Ufuatiliaji hukusaidia kufuatilia utendaji wa programu zako na kutambua matatizo. Kumbukumbu hukusaidia kuchunguza matatizo na kuelewa jinsi programu zako zinavyofanya kazi.

Kuna zana nyingi tofauti za ufuatiliaji na kumbukumbu zinazopatikana. Baadhi ya zana maarufu ni pamoja na Prometheus, Grafana, na Elasticsearch.

9. Usalama

Usalama ni muhimu kwa matumizi ya LLM. Unahitaji kuhakikisha kuwa programu zako zinalindwa kutokana na ufikiaji usioidhinishwa na mashambulizi.

Kuna mbinu nyingi tofauti ambazo unaweza kutumia ili kulinda programu zako. Baadhi ya mbinu za kawaida ni pamoja na:

  • Uthibitishaji: Uthibitishaji hukusaidia kuthibitisha utambulisho wa watumiaji.
  • Uidhinishaji: Uidhinishaji hukusaidia kudhibiti ufikiaji wa rasilimali.
  • Usimbaji: Usimbaji hukusaidia kulinda data dhidi ya ufikiaji usioidhinishwa.
  • Ukaguzi: Ukaguzi hukusaidia kufuatilia shughuli za watumiaji na kutambua shughuli za tuhuma.

10. Kuboresha Utendaji

Kuna njia nyingi tofauti za kuboresha utendaji wa matumizi yako ya LLM. Baadhi ya mbinu za kawaida ni pamoja na:

  • Kutumia GPU: GPUs zinaweza kuharakisha uendeshaji wa LLMs.
  • Kutumia quantization ya modeli: Quantization ya modeli inaweza kupunguza ukubwa wa modeli na kuboresha utendaji.
  • Kutumia uendeshaji wa wingi: Uendeshaji wa wingi unaweza kuendeshwa na mienendo ya wakati mmoja.
  • Kutumia akiba: Akiba inaweza kuboresha utendaji kwa kuhifadhi matokeo yanayotumiwa mara kwa mara.

Kwa kufuata miongozo hii, unaweza kupeleka LLMs kwa uzalishaji na kuhakikisha kuwa zinafanya kazi kwa ufanisi, kwa usalama, na kwa gharama nafuu.