Koliko žetonov LLM dejansko stanejo in kako jih plačati manj
Vsak račun API-ja za jezikovni model je račun za žetone in skoraj nihče nima intuicije, koliko žetonov vsebuje določen del besedila. Rezultat je enako presenečenje dvakrat na mesec: funkcija, ki se je med testiranjem zdela poceni, stane štiridesetkrat več v proizvodnji ali pa kontekstno okno, ki "bi moralo ustrezati", zavrne zahtevo. Oba sta aritmetična problema in aritmetike se je vredno enkrat naučiti.
Žeton ni beseda
Modeli ne berejo znakov ali besed. Berejo žetone - kose, ki jih ustvari kodirnik bajtnih parov, ki se je med usposabljanjem naučil, katera zaporedja se pojavljajo dovolj pogosto, da si zaslužijo svoj simbol. Običajne angleške besede so en žeton. Redki se razcepijo. torej token je ena in tokenization je tri, medtem ko naključni niz kot x7Qp2 lahko stane pet.
Pravila, ki jih je vredno upoštevati:
- angleška proza: približno štirje znaki na žeton ali približno 0,75 žetona na besedo. Članek s tisoč besedami obsega okoli 1300 žetonov.
- Koda: precej slabše. Zamiki, ločila in identifikatorji z velikimi in malimi črkami so vsi fragmenti. Proračun približajte trem znakom na žeton in obravnavajte zmanjšano kodo kot lastno katastrofo - tokenizira se slabo ravno zato, ker je nenavadna.
- Nelatinične pisave: spet veliko slabše. Kitajski, japonski in korejski običajno pristanejo blizu enega žetona na enega ali dva znaka, zato lahko ista vsebina v japonščini stane večkrat več, kot stane angleška različica. Vmes sta cirilica in grščina.
- JSON: ločilo je pravi denar. Vsak narekovaj, oklepaj, dvopičje in vejica so vsaj del žetona, globoko ugnezdene strukture z dolgimi imeni ključev pa lahko porabijo več za sintakso kot za vrednosti.
Za ocenjevanje veljajo osnovna pravila. Ko je pomembno, štejte: LLM žeton in kalkulator stroškov tokenizira, kar prilepite, in natisne štetje, lahko pa tudi prikaže besedilo z označenimi mejami žetonov, kar je najhitrejši način, da razumete, zakaj je eden od vaših pozivov nepričakovano drag. Če vidite, da se vaša lastna imena identifikatorjev razbijejo na štiri dele, vsak razloži marsikaj.
Output stane nekajkrat več kot input
Podrobnosti o cenah, ki jih ljudje pogrešajo: ponudniki zaračunavajo ločeno žetone, ki jih pošljete, in žetone, ki jih ustvari model, izhod pa je običajno štiri do osemkrat večji od vhodne stopnje. V vnosu prevladuje poziv z 10.000 žetoni konteksta in odgovorom z 200 žetoni. Poziv s 500 žetoni navodil, ki proizvede esej s 4000 žetoni, prevladuje – močno – izhod.
To obrne veliko nagonov za optimizacijo. Obrezovanje sistemskega poziva z 900 na 600 žetonov prihrani zelo malo, če model piše dolge odgovore na vsak klic. Če modelu naročite, naj odgovori v treh stavkih namesto v treh odstavkih, boste veliko prihranili. Vprašajte, na kateri strani transakcije dejansko živi vaša delovna obremenitev, preden optimizirate napačno.
Kalkulator ceni isto besedilo glede na vsak model v svoji tabeli pri vhodnih in izhodnih stopnjah, tako da lahko primerjate poceni model, ki opravi celotno delo, z dragim, ki opravi del tega. Referenčne cene so shranjene lokalno in se občasno preverjajo na straneh ponudnika – obravnavajte jih kot pomoč pri načrtovanju in jih potrdite na ponudnikovi lastni strani s cenami, preden se zavežete k proračunu, ker se cene spreminjajo.
Klepet je kvadraten in tam proračuni umrejo
Enkratni klic API-ja stane, kolikor stane. Pogovor znova pošlje celotno zgodovino na vsakem koraku, tako da klepet z dvajsetimi zavoji ne stane dvajsetkrat en zavoj - stane približno toliko kot naraščajoča serija. Turn twenty se ponovno plača za obrate od ena do devetnajst.
Dve posledici. Prvič, dolgotrajne agentske zanke so najdražja oblika uporabe LLM in tista, ki bo najverjetneje prototipirana brez meritev. Drugič, takojšnje predpomnjenje je pomembnejše kot kakršna koli sprememba besedila: ponudniki popustijo na žetone, ki ponavljajo predpono, ki so jo že videli, kar pomeni, da vašo stabilno vsebino – sistemski poziv, shemo, primere – postavite na sam začetek in spremenljivi del na konec. Preuredite isti poziv, tako da se spreminjajoči časovni žig nahaja na vrhu in ste razveljavili predpomnilnik pri vsakem klicu, medtem ko niste spremenili ničesar drugega.
Zmanjšanje poziva, preden ga pošljete
Večina prevelikih pozivov je prevelikih zaradi dolgočasnih razlogov: nekdo je prilepil celotno datoteko, ko so bile pomembne tri funkcije, datoteka pa je pol komentarjev in praznih vrstic. The Kompresor konteksta LLM cilja natanko na to - odstrani komentarje kode, strne nize praznih vrstic, vdolbine in odstrani dopolnilne besede iz proze, nato pa poroča, koliko žetonov je obrezovanje shranilo. Na pravi izvorni datoteki, ki se rutinsko izvaja 20–40 %, ne da bi se dotaknila česar koli, kar model potrebuje.
Ročni rezi, ki jih je vredno narediti pred tem:
- Pošljite izvlečke, ne datotek. Manekenska pozornost tudi ni zastonj; nepomemben kontekst merljivo poslabša odgovore in tudi stane.
- Odstranite dnevnike v okvarjeno regijo. Deset tisoč vrstic uspešnega zagona ne prispeva nič k diagnozi.
- Spustite ponavljajočo se predstavitev. Glave licenc, ustvarjeni uvozi, ista izjava o omejitvi odgovornosti za vsak zapis.
- Povzemite namesto ponovnega pošiljanja. V dolgem pogovoru je zamenjava zavojev od enega do petnajstega z odstavkom stanja največji možni prihranek.
Ko vnos resnično ne ustreza
Kontekstna okna so zdaj velika, vendar je "veliko" še vedno omejeno in knjiga, leto dnevnikov ali celoten prepis bodo presegli eno. Razdelitev je standardni odgovor in pomembno je, kje razdelite: rezanje sredi stavka ali sredine funkcije ustvari dele, ki jih mora model uganiti. The takojšnji razdelilnik razdeli besedilo na dele v velikosti, ki jo izberete, ob upoštevanju meja, in oštevilči dele, da jih lahko podajate v zaporedju z doslednimi navodili, priloženimi vsakemu.
Opomba o enotah: žetoni niso bajti. The Števec bajtov UTF-8 odgovarja na drugo vprašanje - koliko prostora zavzame besedilo na žici ali v stolpcu baze podatkov - in dve številki se močno razlikujeta za nelatinično besedilo, kjer se število bajtov na znak poveča hkrati z zmanjšanjem števila znakov na žeton. Uporabite bajte za omejitve shranjevanja in žetone za omejitve modela in nikoli ne zamenjajte enega za drugega.
Učinkovit primer
Recimo, da odgovorite na dvajset vprašanj glede na trideset strani dolg dokument. Trideset strani je približno 15.000 besed, torej približno 20.000 žetonov. Naivno pošljete dokument z vsakim vprašanjem: 20 × 20.000 = 400.000 vhodnih žetonov plus morda 20 × 300 izhodnih žetonov.
Dokument postavite na prvo mesto in naj bo bajtno identičen med klici, večina ponudnikov pa ponovljeno predpono iz predpomnilnika streže z delčkom hitrosti. Dokument najprej obrežite kot kotlovsko ploščo in tudi osnova se bo skrčila. Sestavite pet vprašanj na klic namesto enega in dokument pošljete štirikrat namesto dvajset. Ista naloga, isti model in velikostni red med neprevidno različico in previdno – kar je bistvo štetja, preden pošljete.
Tako števec kot kompresor delujeta v celoti v vašem brskalniku: poziv, ki ga določate, ni naložen nikamor, da bi ga lahko izmerili.
Ustvarjalec TextArray – gradnjo brezplačnih orodij, ki so na prvem mestu zasebnosti in se v celoti izvajajo v vašem brskalniku.