Besplatni brojač tokena za GPT-4, ChatGPT i AI modele
Precizan brojač tokena koristeći OpenAI-jevu tiktoken biblioteku. Brojanje tokena za GPT-4, ChatGPT i GPT-3 modele. Upravljanje API troškovima i trenutna optimizacija AI upita.
Brojač tokena
Nevažeći unos
Dokumentacija
Što je brojač tokena?
Brojač tokena mjeri na koliko se tokena dio teksta razlaže kada ga čita jezični model umjetne inteligencije. Tokeni su mali dijelovi teksta — cijele riječi, dijelovi riječi ili interpunkcijski znakovi — koje modeli kao što su GPT-4 i ChatGPT obrađuju umjesto neobrađenih slova. Ovaj alat upotrebljava tiktoken, biblioteku otvorenog koda za tokenizaciju koju je objavio OpenAI, pa se broj podudara s onim što bi proizveli OpenAI-jevi modeli i API.
Kako funkcionira tokenizacija
Tokenizator ne služi samo za brojanje riječi. Tekst obrađuje algoritmom kodiranja parova bajtova (BPE). Algoritam počinje s pojedinačnim bajtovima teksta i opetovano spaja najčešće susjedne parove, na temelju obrazaca naučenih tijekom treniranja na velikoj količini teksta. Rezultat je fiksni rječnik od desetaka tisuća uobičajenih dijelova: cijelih kratkih riječi, čestih dijelova riječi i pojedinačnih znakova za sve što je rijetko.
Zbog toga jedna engleska riječ često postaje jedan token, ali duže ili neobične riječi mogu se podijeliti na dva ili više tokena. Razmaci se obično pridružuju početku sljedećeg tokena, umjesto da se broje zasebno, a interpunkcijski znakovi obično su vlastiti tokeni.
Kodiranja koja ovaj alat podržava
Tiktoken nudi nekoliko kodiranja, od kojih je svako povezano s obitelji OpenAI-jevih modela. Ovaj alat podržava tri:
| Kodiranje | Upotrebljavaju | Približna veličina rječnika |
|---|---|---|
cl100k_base | Modeli iz obitelji GPT-3,5 i GPT-4, ChatGPT | oko 100.000 tokena |
p50k_base | Noviji modeli GPT-3 | oko 50.000 tokena |
r50k_base | Stariji modeli GPT-3 i GPT-2 | oko 50.000 tokena |
cl100k_base odabrano je prema zadanim postavkama jer obuhvaća obitelj modela koju danas upotrebljava većina ljudi. Isti tekst može dati različit broj tokena pri svakom kodiranju jer je svako od njih trenirano na različitom tekstu i drukčije spaja znakove.
Kako izračunati broj tokena
Ne postoji jednostavna aritmetička formula za pretvaranje broja znakova ili riječi u broj tokena jer spajanja BPE-a ovise o konkretnom tekstu i treniranom rječniku. Jedina točna metoda jest provući tekst kroz sam tokenizator:
- Odaberite kodiranje koje odgovara ciljnom modelu.
- Predajte tekst tokenizatoru tog kodiranja.
- Prebrojite dobiveni popis ID-jeva tokena. Duljina tog popisa jest broj tokena.
Kao gruba procjena za tekst na engleskom jeziku, jedan token približno odgovara četirima znakovima ili oko tri četvrtine riječi. To je samo smjernica. Brojevi, kod, tekst na neengleskim jezicima i neobičan pravopis mogu znatno promijeniti omjer.
Primjer s rješenjem
Uzmimo rečenicu:
"Tokenizacija dijeli tekst na dijelove."
Pri upotrebi kodiranja cl100k_base tiktoken ovo razlaže na 7 tokena:
Token, ization, splits, text, into, pieces, .
Uočite da se sama riječ "Tokenization" dijeli na dva tokena, "Token" i "ization", dok svaka druga riječ ostaje cijela. Završna točka vlastiti je token. Zato rečenica od 37 znakova s 5 riječi proizvodi 7 tokena, a ne 6.
Zašto je broj tokena važan
Pružatelji usluga umjetne inteligencije naplaćuju upotrebu API-ja prema broju tokena, pri čemu se broje i poslani tekst i generirani tekst u odgovoru, pa broj tokena omogućuje predviđanje troška prije slanja zahtjeva. Svaki model ima i najveću duljinu konteksta, odnosno ograničenje ukupnog broja tokena koje mogu sadržavati jedan zahtjev i njegov odgovor. To se ograničenje razlikuje među modelima i mijenja se kada pružatelji objave nove verzije, pa ga je najbolje provjeriti u aktualnoj dokumentaciji za model koji se upotrebljava, umjesto da se pretpostavlja na temelju sjećanja.
Često postavljana pitanja
Što je token u jezičnim modelima umjetne inteligencije? Token je dio teksta koji jezični model čita kao jednu cjelinu. To može biti cijela kratka riječ, dio duže riječi, interpunkcijski znak ili razmak pridružen sljedećoj riječi.
Zašto različita kodiranja daju različit broj tokena za isti tekst? Svako je kodiranje trenirano na vlastitom uzorku teksta i ima vlastiti rječnik uobičajenih dijelova. Riječ koja je dovoljno česta da bude jedan token u jednom rječniku možda se ne nalazi u drugom pa se drukčije dijeli.
Računa li se interpunkcija kao token? Da. Interpunkcijski znakovi obično se broje kao vlastiti tokeni, a ponekad se spajaju sa susjednim znakom, ovisno o tome koliko se često ta kombinacija pojavljivala tijekom treniranja tokenizatora.
Je li token isto što i riječ? Ne. Kratke i česte riječi obično su po jedan token. Duže ili rjeđe riječi, kao i većina riječi izvan engleskog jezika, često se dijele na dva ili više tokena.
Koliko je ovaj alat točan? Broji tokene pomoću OpenAI-jeve biblioteke tiktoken i primjenjuje istu logiku kodiranja koju OpenAI upotrebljava interno, pa se broj podudara s onim koji bi za isti tekst i kodiranje prijavio poziv OpenAI-jeva API-ja.
Može li ovaj alat brojiti tokene za modele koji nisu OpenAI-jevi? Upotrebljava kodiranja tiktokena, koja su izrađena za OpenAI-jeve modele. Drugi pružatelji, kao što su Anthropic ili Google, upotrebljavaju vlastite tokenizatore koji za isti tekst mogu dati različite brojeve.
Reference
- OpenAI. "tiktoken." GitHub, https://github.com/openai/tiktoken.
- Sennrich, Rico i dr. "Neural Machine Translation of Rare Words with Subword Units." arXiv:1508,07909, 2016, http://arxiv.org/abs/1508.07909.
- Brown, Tom B. i dr. "Language Models are Few-Shot Learners." arXiv:2005,14165, 2020, http://arxiv.org/abs/2005.14165.