Nemokamas Žetonų Skaičiuotuvas GPT-4, ChatGPT ir AI Modeliams
Tikslus žetonų skaičiuotuvas naudojant OpenAI tiktoken biblioteką. Skaičiuokite žetonus GPT-4, ChatGPT ir GPT-3 modeliams. Valdykite API išlaidas ir akimirksniu optimizuokite AI užklausas.
Žetonų skaičiuoklė
Neteisingas įvedimas
Dokumentacija
Kas yra tokenų skaičiuotuvas?
Tokenų skaičiuotuvas nustato, į kiek tokenų suskaidomas teksto fragmentas, kai jį perskaito dirbtinio intelekto kalbos modelis. Tokenai yra maži teksto fragmentai — ištisi žodžiai, žodžių dalys arba skyrybos ženklai — kuriuos tokie modeliai kaip GPT-4 ir ChatGPT apdoroja vietoj neapdorotų raidžių. Šis įrankis naudoja „tiktoken“ — atvirojo kodo tokenizavimo biblioteką, kurią paskelbė „OpenAI“, todėl skaičiai sutampa su tais, kuriuos pateiktų pačios „OpenAI“ modeliai ir API.
Kaip veikia tokenizavimas
Tokenizatorius ne tik suskaičiuoja žodžius. Jis apdoroja tekstą naudodamas algoritmą, vadinamą baitų porų kodavimu (BPE). Algoritmas pradeda nuo atskirų teksto baitų ir pakartotinai sujungia dažniausiai pasitaikančias gretimų elementų poras, remdamasis per mokymąsi iš didelio tekstų rinkinio išmoktais šablonais. Taip gaunamas nekintamas dešimčių tūkstančių dažnų fragmentų žodynas: ištisi trumpi žodžiai, dažnos žodžių dalys ir pavieniai simboliai retiems atvejams.
Dėl to vienas angliškas žodis dažnai tampa vienu tokenu, tačiau ilgesni arba neįprasti žodžiai gali būti suskaidyti į du ar daugiau tokenų. Tarpai paprastai priskiriami kito tokeno pradžiai, o ne skaičiuojami atskirai, ir skyrybos ženklai dažniausiai yra atskiri tokenai.
Šio įrankio palaikomi kodavimai
„Tiktoken“ siūlo kelis kodavimus, kurių kiekvienas susietas su tam tikra „OpenAI“ modelių šeima. Šis įrankis palaiko tris:
| Kodavimas | Naudoja | Apytikslis žodyno dydis |
|---|---|---|
cl100k_base | GPT-3,5 ir GPT-4 šeimos modeliai, ChatGPT | apie 100 000 tokenų |
p50k_base | Vėlesni GPT-3 modeliai | apie 50 000 tokenų |
r50k_base | Ankstesni GPT-3 ir GPT-2 modeliai | apie 50 000 tokenų |
cl100k_base parenkamas pagal numatytuosius nustatymus, nes apima modelių šeimą, kurią šiandien naudoja dauguma žmonių. Tas pats tekstas, naudojant skirtingus kodavimus, gali sudaryti skirtingą tokenų skaičių, nes kiekvienas kodavimas buvo apmokytas naudojant skirtingus tekstus ir simbolius jungia skirtingai.
Kaip apskaičiuoti tokenų skaičių
Nėra paprastos aritmetinės formulės, pagal kurią simbolių ar žodžių skaičių būtų galima paversti tokenų skaičiumi, nes BPE sujungimai priklauso nuo konkretaus teksto ir išmokyto žodyno. Vienintelis tikslus būdas — paleisti tekstą per patį tokenizatorių:
- Pasirinkti kodavimą, atitinkantį tikslinį modelį.
- Įveskite tekstą į to kodavimo tokenizatorių.
- Suskaičiuoti gautą tokenų ID sąrašą. Šio sąrašo ilgis yra tokenų skaičius.
Apytikriai vertinant anglišką tekstą, vienas tokenas atitinka maždaug keturis simbolius arba maždaug tris ketvirtadalius žodžio. Tai tik orientacinis dydis. Skaičiai, kodas, ne angliškas tekstas ir neįprasta rašyba gali gerokai pakeisti šį santykį.
Skaičiavimo pavyzdys
Paimkime sakinį:
„Tokenization splits text into pieces.“
Naudojant cl100k_base kodavimą, „tiktoken“ suskaido jį į 7 tokenus:
Token, ization, splits, text, into, pieces, .
Atkreipkite dėmesį, kad pats žodis „Tokenization“ suskaidomas į du tokenus — „Token“ ir „ization“, o visi kiti žodžiai lieka neskaidyti. Galutinis taškas yra atskiras tokenas. Todėl 37 simbolių sakinys, kuriame yra 5 žodžiai, sudaro 7 tokenus, o ne 6.
Kodėl svarbus tokenų skaičius
Dirbtinio intelekto paslaugų teikėjai už API naudojimą ima mokestį pagal tokenų skaičių, skaičiuodami tiek išsiųstą tekstą, tiek sugeneruotą atsakymą, todėl tokenų skaičius leidžia numatyti kainą prieš siunčiant užklausą. Kiekvienas modelis taip pat turi didžiausią konteksto ilgį — ribą, kiek tokenų iš viso gali sudaryti viena užklausa ir jos atsakymas. Ši riba priklauso nuo modelio ir keičiasi teikėjams išleidžiant naujas versijas, todėl ją geriausia patikrinti dabartinėje naudojamo modelio dokumentacijoje, o ne bandyti prisiminti.
Dažnai užduodami klausimai
Kas yra tokenas dirbtinio intelekto kalbos modeliuose? Tokenas yra teksto fragmentas, kurį kalbos modelis perskaito kaip vieną vienetą. Tai gali būti visas trumpas žodis, ilgesnio žodžio dalis, skyrybos ženklas arba tarpas, priskirtas prie po jo einančio žodžio.
Kodėl skirtingi kodavimai tam pačiam tekstui pateikia skirtingą tokenų skaičių? Kiekvienas kodavimas buvo mokomas naudojant atskirą tekstų rinkinį ir turi savo dažnų fragmentų žodyną. Žodis, kuris viename žodyne pakankamai dažnas, kad būtų vienas tokenas, kitame gali būti neįtrauktas, todėl suskaidomas kitaip.
Ar skyrybos ženklas skaičiuojamas kaip tokenas? Taip. Skyrybos ženklai paprastai skaičiuojami kaip atskiri tokenai, tačiau kartais, priklausomai nuo to, kaip dažnai toks derinys pasitaikė tokenizatoriaus mokymo metu, jie sujungiami su gretimu simboliu.
Ar tokenas yra tas pats, kas žodis? Ne. Trumpi, dažni žodžiai paprastai sudaro po vieną tokeną. Ilgesni arba rečiau vartojami žodžiai, taip pat dauguma neangliškų žodžių, dažnai suskaidomi į du ar daugiau tokenų.
Kiek tikslus yra šis įrankis? Jis skaičiuoja tokenus naudodamas „OpenAI“ sukurtą biblioteką „tiktoken“ ir taiko tą pačią kodavimo logiką, kurią „OpenAI“ naudoja viduje, todėl skaičius sutampa su tuo, kurį pateiktų „OpenAI“ API iškvieta naudojant tą patį tekstą ir kodavimą.
Ar šis įrankis gali skaičiuoti ne „OpenAI“ modelių tokenus? Jis naudoja „tiktoken“ kodavimus, sukurtus „OpenAI“ modeliams. Kiti teikėjai, pavyzdžiui, „Anthropic“ ar „Google“, naudoja savo tokenizatorius, todėl tam pačiam tekstui gali pateikti kitokį skaičių.
Šaltiniai
- „OpenAI“. "tiktoken." „GitHub“, https://github.com/openai/tiktoken.
- Sennrich, Rico ir kt. "Neural Machine Translation of Rare Words with Subword Units." arXiv:1508,07909, 2016, http://arxiv.org/abs/1508.07909.
- Brown, Tom B. ir kt. "Language Models are Few-Shot Learners." arXiv:2005,14165, 2020, http://arxiv.org/abs/2005.14165.