Įvadas: Apie „paprastus“ pokalbių karkasus
Su kūrėjų įrankiais, kurie vadinasi „paprastais“, dažniausiai būna taip, kad jie tokie nėra. Jie paprasti taip pat, kaip ir įlaipinimas į lėktuvą yra „paprastas“. Eilės, zonos ir įlaipinimo bilietas, kurio nerandate, nes programėlė jus išregistravo prie vartų. , atvirojo kodo pokalbių karkasas, kurį žmonės pritvirtina prie LLM, dažnai vadinamas paprastu. Kaip yra iš tikrųjų? Jis paprastas, jei tiksliai žinote, ką darote. Jei ne, tai yra prievadų, modelių ir GPU matematikos raizginys, kuris atrodo taip, tarsi dalyvautų Christopher Nolan siužeto posūkyje.
Šis vadovas yra mano paprastas požiūris į tai, kaip naudoti , nepaverčiant savo savaitgalio derinimo rekolekcijomis. Aptarsime, kaip naudoti lokaliai, kaip aptarnauti modelius, kaip prijungti su suderinamą galinį punktą ir kaip paleisti vartotojo sąsają, kuri nesugrius pirmą kartą susidūrus su realybe. Aš atkreipsiu dėmesį į tai, kas yra trapu, kas yra greita ir kas yra reklamuojama kaip greita. (Tai dažnai yra trys skirtingi dalykai.)
Kas iš tikrųjų yra ?
yra atvirojo kodo sistema, skirta aptarnauti ir kalbėtis su dideliais kalbos modeliais. Pagalvokite apie „ API kloną“, bet jūs atsinešate savo modelius. Jį sudaro:
- Valdiklis (eismo reguliuotojas),
- Vienas ar daugiau modelių darbuotojų (žmonės, kurie iš tikrųjų atlieka darbą),
- Su suderinamas REST API sluoksnis,
- Žiniatinklio vartotojo sąsaja, kuri yra geriau nei nieko ir blogiau nei bet kas, kas sukurta specialiai tam tikslui.
Jei kada nors paleidote vietinį LLM su vienu įdėklu ir pagalvojote: nėra jokio būdo, kad tai būtų paruošta gamybai – jūs teisus. yra priešingybė: jis nori būti panašus į gamybinį. Jūs sujungiate komponentus, labiau panašiai kaip Technic nei Duplo. Atsiperka lankstumas. Kaina – žinojimas, ką darote.
Kaip naudoti : trumpa versija
- Įdiekite ir jo priklausomybes (Python, CUDA, jei jums rūpi greitis, modelio svorius).
- Paleiskite bent vieną modelio darbuotoją ir nukreipkite jį į valdiklį.
- (Neprivaloma, bet naudinga) Paleiskite su suderinamą API serverį.
- (Neprivaloma, bet sveiko proto taupymo priemonė) Paleiskite žiniatinklio vartotojo sąsają.
- Siųskite užklausas per stiliaus API arba įmontuotą vartotojo sąsają. Kartokite, kol nustosite keiktis.
Tai yra pagrindinis ciklas. Visa kita yra apie tai, kaip tai padaryti nesukepinus GPU ar kantrybės.
Nustatymas: nuobodžios dalys, kurios vėliau sutaupo jums valandų
- Python: naudokite virtualią aplinką, kurios neužteršite. yra išrankus versijoms. Išranki programinė įranga neatsiprašo.
- GPU: jei turite aparatinę įrangą, įdiekite CUDA įrankių rinkinį, kuris iš tikrųjų atitinka jūsų tvarkykles. Jei ne, paleisite CPU, o tai prilygsta važiavimui minivenu į Pikes Peak – įmanoma, lėčiau nei manote, ir stebėsitės, kodėl bandėte.
- Modeliai: nepridedamas su modeliais. Jūs nukreipiate jį į modelio svorius – variantus, , ir kt. Taip pat galite paleisti kvantuotus modelius, jei jūsų GPU VRAM yra labiau „MacBook“ nei „duomenų centras“.
Pagrindinis diegimas: Laikykite jį švarų
- Sukurkite naują Python venv.
- pip install fastchat. Jei jums reikia CUDA palaikančio PyTorch, įdiekite jį pirmiausia. Jei nežinote, ar jums to reikia, greičiausiai reikia.
- Patikrinkite, ar torch mato jūsų GPU: jei ne, pataisykite tai prieš kaltindami . Kaltinti karkasus dėl trūkstamų tvarkyklių yra devops versija, kai žiemą kaltinamas termostatas.
Paleiskite valdiklį: oro eismo bokštas
Paleiskite valdiklį. Jis seka modelių darbuotojus ir nukreipia užklausas. Be jo niekas su niekuo nebendrauja. Pagalvokite apie tai kaip apie DNS jūsų išvadų ūkiui. Nuobodu, būtina, nematoma, kai veikia.
Paleiskite modelio darbuotoją: kur iš tikrųjų vyksta magija
- Pasirinkite modelį, kurį galite sau leisti VRAM. 7B parametrų modelis FP16 formatu vis dar gali sugadinti kuklų GPU. Išbandykite 4 bitų arba 8 bitų kvantavimą, jei esate suvaržytas.
- Paleiskite darbuotoją, nukreipkite jį į valdiklį ir nustatykite modelio kelią. Jei nepavyksta įkelti, dažniausiai todėl, kad modelio tikslumas netinka arba žetonizatorius nesutampa. Perskaitykite žurnalus. Jie yra tiesmukiški taip, kaip tiesmukiški yra chirurgai.
Su suderinama API: naudinga dalis
pateikia stiliaus API. Tai reiškia, kad jūsų esami scenarijai ir įrankiai, kurie tikisi galinių punktų, teoriškai gali tiesiog veikti. Praktiškai pritaikysite bazinius URL ir saugositės funkcijų, kurių modelis negali atlikti (funkcijų iškvietimas, vaizdo įvestys), nebent jūsų darbuotojas jas palaiko. Bet dalyko forma – JSON, pokalbių / užbaigimo galiniai punktai – sutampa. Tai yra skirtumas tarp savaitgalio projekto ir kažko, ką galite prijungti prie paslaugos.
Žiniatinklio vartotojo sąsaja: nes kartais norite spustelėti
Įmontuota vartotojo sąsaja tinka bandymams. Tai nėra produktas; tai yra langas. Jei jums reikia tik kūrėjo konsolės savo smegenims dėžutėje, to pakanka. Jei norite darbo sričių, gijų, daugiarūšių įvesčių ar apgalvotų gyvenimo kokybės funkcijų, vis tiek parašysite savo apvalkalą arba naudosite klientą, kuris jau išsiaiškino kraštutinius atvejus.
Kaip naudoti vietiniam kūrimui
- Atskirkite valdiklį ir darbuotoją atskiruose terminaluose. Nenukaskite jų į tmux, kol jais nepasitikėsite.
- Naudokite curl arba mažytį Python scenarijų, kad pasiektumėte su suderinamą galinį punktą: nusiųskite bandomąjį raginimą, kuris būtų trumpas ir nedviprasmiškas.
- Nustatykite generavimo parametrus: temperatūrą, top_p, max_tokens. Pradėkite konservatyviai. Žmonės per daug sureguliuoja atsitiktinumą ir tada skundžiasi haliucinacijomis, tarsi modelis pabudo išdykęs.
- Patvirtinkite, kad žetonizacijos elgesys atitinka jūsų lūkesčius. Jei dažnai keičiate modelius, rasite kraštutinių atvejų. Tai nėra kaltė. Tai yra „LLM yra keisti“.
Kaip naudoti komandos prototipų kūrimui
- Paleiskite valdiklį stabiliame prieglobos serveryje.
- Paleiskite kelis darbuotojus su tuo pačiu modeliu, kad imituotumėte fondą, arba sumaišykite modelius pagal galimybes.
- Pateikite su suderinamą galinį punktą viduje. Duokite savo komandai vieną URL ir API raktą.
- Pridėkite registravimą. Tai nėra nauja idėja, bet komandų, veikiančių aklai, skaičius priverstų raudonuoti Las Vegaso lažybų punktą. Jums reikia raginimų ir atsakymų derinimo tikslais; redaguokite slaptas dalis, jei reikia.
Našumas: ką reiškia „greitas“, priklauso nuo jūsų
suteikia jums pakankamai virvės, kad būtumėte greiti – arba pasikartumėte su pernelyg ambicingomis konfigūracijomis. Realumo patikrinimai:
- VRAM: jei neturite pakankamai, kvantuokite. Jei vis dar neturite, naudokite mažesnius modelius. Joks karkasas neištaiso fizikos.
- Paketo dydis: gerai pralaidumui, dažnai blogai delsai. Pasirinkite vieną. Jei jums reikia abiejų, jums reikia daugiau darbuotojų.
- KV talpykla: naudokite ją pakartotinai, jei jūsų darbuotojas ją palaiko. Priešingu atveju mokate už kontekstą, už kurį jau sumokėjote.
- Žetonų atranka: įmantrios dekodavimo schemos duoda mažėjančią grąžą, kai jūsų bazinio modelio kokybė tampa ribojančiu veiksniu.
Sauga: tai nėra žaislas
Jei įdėjote į serverį, kurį gali paliesti kiti žmonės:
- Pridėkite autentifikavimą. Net ir grubus API raktas yra geriau nei „viltis“.
- Normos apribojimas. Jūsų ateities aš jums padėkos, kai scenarijus taps rekursyvus 2 val. nakties.
- Padalinkite srautą tarp viešųjų ir privačių modelių, jei sumaišote licencijuotus svorius su atvirais. Teisininkai mėgsta dviprasmybes; nešerkite jų.
Kaip naudoti su tikrais įrankiais
- Nešiojamieji kompiuteriai: nukreipkite savo klientą į bazinį URL ir pirmyn. Tai mažiausiai erzinantis kelias duomenų mokslininkams.
- CLI: turėkite po ranka mažytį scenarijų dūmų testams. Jei negalite gauti protingo atsakymo per 10 sekundžių, sustokite ir pataisykite dujotiekį.
- Žiniatinklio programos: elkitės su kaip su vidine mikroservisa. Sveikatos patikrinimai, pakartotiniai bandymai, skirtasis laikas. Jums nereikia knygos, kad tai padarytumėte – jums reikia disciplinos.
Modelių pasirinkimas: dalis, dėl kurios visi ginčijasi
Kaip atsakingai naudoti , prasideda nuo modelio pasirinkimo. Keletas greitų euristikų:
- Trumpos formos pokalbiai su aiškiais atsakymais: mažesni instrukcijų sureguliuoti modeliai dažnai smūgiuoja virš savo svorio.
- Kodų turtingi raginimai: naudokite modelius, kurie iš tikrųjų buvo apmokyti naudojant kodą su leidžiančiomis licencijomis. „Pakankamai arti“ nėra.
- Ilgas kontekstas: jei jums reikia 32K+ žetonų, pirmiausia suplanuokite savo aparatinę įrangą. Tada sumažinkite savo lūkesčius.
- Daugiarūšis: suderinamumas skiriasi. Jei jums reikia vaizdų ar garso, pasirinkite darbuotoją ir modelį, kurie aiškiai jį palaiko, arba neapsimeskite, kad tai darote.
Su suderinamumo spąstai
Maloni dalis apie su suderinamą API yra ta, kad galite pakeisti galinius galus. Nemaloni dalis yra ta, kad žmonės pradeda elgtis su visais modeliais taip, tarsi jie būtų vienodi. Jie tokie nėra. Galinis punktas, kuris atrodo identiškas, gali elgtis visiškai skirtingai tarp modelių – argumentavimas, žodingumas, saugos filtrai, visa asmenybė. Jūsų programa stebuklingai neprisitaikys vien todėl, kad JSON schema atitinka. Išbandykite su tikrais modeliais, kuriuos paleisite. Tada dar kartą patikrinkite, kai ką nors pakeisite.
Stebėjimas: negalite pataisyti to, ko nematote
- Registruokite raginimus, parametrus ir delsas.
- Sekite žetonų skaičių ir atmeskite raginimus, kurie viršija jūsų biudžetą.
- Laikykite kiekvieno modelio informacijos suvestines. Taip, tai yra daug „pokalbių serveriui“. Tai taip pat yra skirtumas tarp stabilumo ir atmosferos.
Gedimų režimai: kur atsiperka
- Darbuotojas miršta dėl OOM: šiek tiek per daug atspėjote tikslumą. Sumažinkite jį arba gaukite GPU su daugiau VRAM – jokia burtininkystė patikimai nesuspaudžia FP16 13B į 8 GB.
- Valdiklis praranda ryšį su darbuotojais: tinklo trukdžiai. Pridėkite pakartotinių bandymų ir neįdiekite visko tame pačiame silpname Wi-Fi tinkle, tarsi būtumėte kavinės LAN vakarėlyje.
- Šlykštūs delsos šuoliai: jūsų paketas yra per daug ambicingas arba jūsų CPU stabdo žetonizaciją. Profilį prieš teorizuodami.
Kaip naudoti RAG, neprarandant savaitės
Žmonės nuolat pritvirtina prie paieškos dujotiekių ir elgiasi nustebę, kai modelis improvizuoja, o ne cituoja. Patarimai:
- Atlikite paiešką kažkur kitur švariai (vektorių DB, įdėklai) ir pateikite modeliui trumpą, struktūruotą kontekstą.
- Laikykitės disciplinuotų raginimų. „Atsakykite su citatomis“ nėra burtas; tai yra pasiūlymas. Jei jums reikia citatų, įgyvendinkite struktūrą apdorojant arba naudokite modelį, kuris buvo apmokytas elgtis.
- Talpinkite atsakymus į pasikartojančias užklausas. Dauguma „dinamiškų“ žinių bazių yra 80% tos pačios šešios klausimai iš skirtingų kampų.
Kaina: laikas yra brangi dalis
Paleisti vietoje yra pigu popieriuje ir brangu dėmesiu. Jei jūsų tikslas yra mokytis, puiku. Jei jūsų tikslas yra išsiųsti, pagalvokite, kur keliauja jūsų laikas: pakavimas, atnaujinimai, stebėjimas, atsarginiai variantai. Nėra gėda naudotis valdoma paslauga, jei darbas, pagal kurį iš tikrųjų esate vertinamas, yra bet kas, išskyrus „paleido pokalbių serverį“.
Jei norite protingos kliento patirties – gijos, raginimų valdymas, greitas perjungimas tarp vietinių ir debesų modelių – Sider.AI iš tikrųjų veikia neprašydamas jūsų pirmiausia perskaityti trijų YAML failų. Galite nukreipti jį į su suderinamą galinį punktą (pvz., ) arba naudoti prieglobos modelius, kai jūsų GPU pradeda švokšti. Tai nėra pakaitalas; tai yra dalis, kuri paverčia jūsų nelygumus kažkuo, ką žmonės gali naudoti be kūrėjo, stovinčio šalia ir paaiškinančio tai. Jei jūsų prioritetas yra žaisti su darbuotojais ir valdikliais, likite . Jei tai daro tikrą darbą, , sėdintis ant jūsų galinio punkto, yra dalis, dėl kurios nesigailėsite. Kaip naudoti , žingsnis po žingsnio (be rankų mostagavimo)
- Įdiekite priklausomybes: Python, CUDA, jei taikoma, PyTorch su CUDA.
- Įdiekite naujoje aplinkoje.
- Paleiskite valdiklį nuspėjamu prievadu.
- Atsisiųskite modelį, kurį iš tikrųjų galite paleisti. Nepradėkite nuo didžiausio dalyko lyderių lentelėje, kaip paauglys, renkantis pirmąjį automobilį.
- Paleiskite darbuotoją su tuo modeliu. Patvirtinkite VRAM naudojimą ir pirmąjį žetoną.
- Paleiskite su suderinamą API serverį.
- Išbandykite su gerai žinomu raginimu, naudodami savo klientą, nustatytą į jūsų vietinį bazinį URL.
- Sureguliuokite dekodavimo parametrus, nustatykite protingas numatytąsias vertes ir užrakinkite jas konfigūracijoje.
- Prieš kam nors kitam jį palietus, pridėkite registravimą, pagrindinį autentifikavimą ir normos apribojimus.
- Neprivaloma: paleiskite žiniatinklio vartotojo sąsają arba prijunkite geresnį klientą, pvz., Sider.AI.
Dažnos klaidos, su kuriomis susidursite lygiai vieną kartą (jei tai perskaitysite)
- Mišrios CUDA / PyTorch versijos: atrodys gerai iki pirmo tikro apkrovos. Tikslingai suderinkite versijas.
- Žetonizatoriaus neatitikimas: Hugging Face modelio ir žetonizatoriaus poslinkis sukuria subtilią nesąmonę. Laikykite juos sinchronizuotus.
- Pernelyg ilgi sistemos raginimai: mokate žetonus už padrąsinimus. Padarykite sistemos raginimą trumpą, konkretų ir nuobodų.
- Ignoruojamas srautinis perdavimas: įjunkite srautinį perdavimą, kad būtų reaguojama. Galutiniai vartotojai prilygina „greitą rašymo pradžią“ su „išmaniu“, ir, tiesą sakant, jie nėra neteisūs.
Mastelis: kai vieno darbuotojo nepakanka
- Horizontalūs darbuotojai: keli darbuotojai, užregistruoti valdiklyje. Tai nėra raketų mokslas, bet jums reikia plano dėl modelių svorių kiekviename įrenginyje.
- Mišrūs modeliai: nukreipkite trumpus atsakymus į mažesnius modelius; siųskite sunkius klausimus sunkiam smūgiuotojui. Jums reikės nukreipimo logikos; valdiklis nebus jūsų programos tėvas.
- Talpinimas į talpyklą: įsiminkite dažnus raginimus. Niekas nesijaučia greičiau nei praleisti darbą, kurį jau atlikote.
Kodėl vietoj kito karkaso?
Nes norite kontrolės nekurdamas visos katedros. Valdiklio / darbuotojo padalijimas yra protingas. Su suderinama API yra pragmatiška. Ir ji neapsimeta esanti daugiau nei yra. Nuo „idėjos“ iki „naudojamo“ galite pereiti per popietę, jei jūsų ambicijos atitinka termodinamikos dėsnius.
Bet neapgaudinėkite savęs
Kaip gerai naudoti , reiškia priimti kompromisus:
- Atsisakysite šiek tiek blizgesio dėl lankstumo.
- Skaitysite žurnalus, ir jie bus nesuprantami bent vieną kartą.
- Jums kils pagunda vytis etaloninius drakonus. Pasipriešinkite. Modelio pasirinkimas yra svarbesnis nei karkasas daugumai praktinių darbų.
Jei atsimenate tik penkis dalykus
- Pradėkite nuo mažo. Mažesni modeliai, mažesnės konfigūracijos, mažiau judančių dalių.
- Anksti išbandykite per su suderinamą API. Jei tas kelias veikia, visa kita yra santechnika.
- Kvantuokite prieš kompromituodami stabilumą. OOM nepadaro jūsų greitesnio.
- Registruokite viską, apie ką nenorėtumėte spėlioti vėliau.
- Naudokite tinkamą klientą. Teisinga vartotojo sąsaja leidžia vidutiniškiems modeliams jaustis kompetentingiems, o geriems modeliams – puikiai. Sider.AI yra tvirtas, be rūpesčių sluoksnis čia.
Apibendrinimas: sąžiningas požiūris
yra tai, kas atsitinka, kai atvirojo kodo programinė įranga užauga tiek, kad būtų naudinga, neapsimetant, kad tai yra SaaS. Jis yra modulinis, pragmatiškas ir akivaizdžiai nesuinteresuotas laikyti jus už rankos. Kaip naudoti , dažniausiai yra tai, kaip naudoti bet kurį įrankį, kuris vertina lankstumą virš ceremonijos: pradėkite nuo aiškaus tikslo, prijunkite minimalų gyvybingą dujotiekį ir sustokite, kai jis veikia. Visa kita – informacijos suvestinės, paskirstyti darbuotojai, modelių zoologijos sodas – gali palaukti, kol kas nors paprašys jūsų prastovos numerio.
Daugumai žmonių protingas žingsnis yra paleisti už kliento, kuris nešvaisto jūsų dėmesio. Mėgėjams tai yra žaidimų aikštelė su aštriais kraštais. Visiems: tai yra greita, jei padarote ją greitą, paprasta, jei laikote ją paprasta, ir tik tokia gera, kokia yra jūsų modelio pasirinkimas. Būtent tokia turėtų būti programinė įranga ir kokia ji retai būna.
DUK
Q1: Kaip naudoti su suderinamu klientu?
Nukreipkite savo kliento bazinį URL į API serverį ir laikykite tą pačią pokalbių / užbaigimo schemą. Galinis punktas atitinka, bet modelio elgesys nebus – todėl išbandykite raginimus ir parametrus su tikru modeliu, kurį paleisite.
Q2: Koks yra geriausias būdas paleisti viename GPU?
Pasirinkite modelį, kuris atitinka jūsų VRAM su atsargine vieta, idealiai kvantuotą (4–8 bitų), kad būtų patogu. Paleiskite vieną darbuotoją, transliuokite žetonus ir laikykite paketo dydį mažytį, nebent jums patinka delsos šuoliai.
Q3: Ar gali vienu metu apdoroti kelis modelius?
Taip – valdiklis stebės kelis darbuotojus ir modelius. Nukreipkite užklausas sąmoningai; nemanykite, kad „ta pati API“ reiškia „keičiamus rezultatus“ tarp modelių.
Q4: Kaip pagreitinti neperkant naujos aparatinės įrangos?
Kvantuokite modelį, įjunkite KV talpyklos pakartotinį naudojimą, transliuokite atsakymus ir tinkamai nustatykite max_tokens. Talpinti dažnus raginimus į talpyklą padeda labiau nei dauguma rankenėlių sukiojimo.
Q5: Ar tinka RAG dujotiekiams?
Jis puikiai veikia kaip pokalbių sluoksnis, tačiau RAG kokybė priklauso nuo švarios paieškos ir disciplinuotų raginimų. neištaisys aplaidaus konteksto; jis tiesiog aptarnauja modelį greičiau.