Jak tokenizacja w GPT tłumaczy dziwne błędy AI
Przejdź do treści i przykładów
Źródło: Link
Mind Architect to 180-dniowy program Jana Gajosa: decyzje, nawyki i granice przeniesione do codziennych reakcji. 180 lekcji w 6 modulach, Manfred AI Coach i powtorki rozlozone w czasie.
Wpisujesz do ChatGPT proste polecenie: policz litery w słowie 'strawberry' - i model się myli. Powodem nie jest głupota modelu. Model po prostu nie widzi liter tak, jak Ty je widzisz. Widzi coś innego - kawałki tekstu poukładane w liczby. To zjawisko nazywa się tokenizacją i tłumaczy więcej dziwactw dużych modeli językowych (LLM), niż mogłoby się wydawać na pierwszy rzut oka.
Andrej Karpathy, jeden z ludzi, którzy współtworzyli fundamenty dzisiejszych modeli GPT, mówi o tym wprost: tokenizacja to część pracy z modelem językowym, której najbardziej nie lubi. Powód nie jest w nudzie - to bałagan, pułapki i mnóstwo dziwnych zachowań modeli, których nikt by z tokenizacją nie skojarzył na pierwszy rzut oka. Zrozumienie tego mechanizmu to jeden z tych momentów, w których AI przestaje być magią, a zaczyna być zrozumiałym narzędziem.
Zacznijmy od najprostszej możliwej wersji tego mechanizmu, bo dobrze pokazuje istotę problemu. Weźmy zbiór tekstu - powiedzmy, że to jeden długi ciąg znaków, kawałek klasycznej literatury. Komputer nie "czyta" tego tekstu jak człowiek. Najpierw ktoś musi zamienić litery na liczby, bo sieć neuronowa operuje wyłącznie na liczbach.
Najprostsze podejście, jakie można sobie wyobrazić: wypisz wszystkie unikalne znaki, które pojawiają się w tekście (litery, spacje, znaki interpunkcyjne), policz je - powiedzmy, że wychodzi 65 różnych znaków - i przypisz każdemu numerek. Litera "a" to na przykład token 12, spacja to token 3, i tak dalej. Fraza w stylu "Hi there" zamienia się wtedy w ciąg liczb, gdzie każda litera dostaje swój osobny token.
Problem w tym, że taki tokenizer jest strasznie rozrzutny. Tysiąc znaków tekstu to tysiąc tokenów. A każdy token musi mieć swój "wiersz" w tak zwanej tabeli embeddingów - czyli w tabeli liczb, których model uczy się podczas treningu i które reprezentują znaczenie danego kawałka tekstu. Im więcej tokenów potrzeba, żeby opisać to samo zdanie, tym więcej pracy ma do wykonania cały model transformerowy stojący za GPT czy innymi dużymi modelami językowymi.
Dlatego żaden ze współczesnych modeli produkcyjnych nie działa na pojedynczych literach. Zamiast tego korzysta z tokenizacji na poziomie "kawałków" tekstu - fragmentów, które mogą być całym popularnym słowem, częścią dłuższego słowa albo kilkoma znakami naraz. Te kawałki buduje się algorytmicznie, metodami takimi jak byte pair encoding (w skrócie BPE) - algorytm, który analizuje ogromne ilości tekstu i uczy się, jakie ciągi znaków pojawiają się razem najczęściej, żeby połączyć je w jeden token.
Nie trzeba znać matematyki stojącej za tym algorytmem, żeby zrozumieć efekt. Popularne, często używane słowa (jak "the" czy "and" w angielskim) zwykle stają się jednym tokenem. Rzadsze słowa, literówki, nazwy własne czy słowa spoza angielskiego często rozbijane są na kilka mniejszych kawałków. To dlatego jeden token nie równa się jednemu słowu - i to jest źródło sporej części zamieszania wokół AI.
Skoro model nie widzi liter, tylko tokeny, wiele "głupich" błędów przestaje być tajemnicą. Prośba o policzenie liter w słowie bywa dla modelu trudna, bo słowo mogło zostać podzielone na dwa czy trzy tokeny, z których żaden nie odpowiada pojedynczej literze - model musi zgadywać, zamiast po prostu policzyć.
To samo dotyczy kosztu i szybkości działania modelu. Jeśli Twój tekst - na przykład po polsku, z naszymi znakami diakrytycznymi i inną strukturą słów - rozbija się na więcej tokenów niż analogiczny tekst angielski, to za to samo zdanie zapłacisz więcej i zajmiesz więcej miejsca w oknie kontekstu modelu. Dlatego przy porównywaniu cen dostępu do modeli AI pamiętaj, że opłata liczona jest od tokenów, nie od słów czy znaków - a to, ile tokenów zajmie Twój tekst, zależy właśnie od tokenizera.
Zjawisko to ma też znaczenie, gdy budujesz coś bardziej złożonego niż pojedyncze zapytanie do czatu - na przykład system RAG korzystający z własnych dokumentów albo agenta działającego w ramach większego harnessu AI. W obu przypadkach limit tokenów i sposób ich liczenia bezpośrednio wpływają na to, ile tekstu model "zmieści" naraz i jak dokładnie go przetworzy.
Da się z tym żyć bez znajomości szczegółów algorytmu BPE - wystarczy wiedzieć, że tokeny to nie litery ani słowa, tylko coś pomiędzy. Kiedy następnym razem model pomyli się przy prostym liczeniu znaków albo zaskoczy Cię wyższym kosztem za tekst po polsku niż po angielsku, winowajcą prawdopodobnie nie będzie "głupota" modelu, tylko sposób, w jaki jego tokenizer pociął Twój tekst na kawałki.
Tokenizacja w modelach GPT nie dzieli tekstu wyłącznie na słowa - buduje słownik powtarzalnych kawałków tekstu, które mogą być pojedynczą literą, częścią słowa albo całym popularnym słowem. Dzięki temu model radzi sobie zarówno z rzadkimi wyrazami, jak i literówkami, bez potrzeby znania każdego możliwego słowa z góry.
Ponieważ model "widzi" tekst jako ciąg tokenów, a nie pojedynczych liter. Jeśli słowo zostało podzielone na kilka tokenów, model nie ma bezpośredniego dostępu do pojedynczych znaków wewnątrz każdego z nich, więc musi to zadanie odgadywać na podstawie tego, czego nauczył się podczas treningu.
Tak, opłaty za korzystanie z dużych modeli językowych liczone są od liczby tokenów, a nie od liczby słów czy znaków. Teksty w językach innych niż angielski, w tym po polsku, często dzielą się na więcej tokenów niż ich angielskie odpowiedniki, co bezpośrednio przekłada się na wyższy koszt tego samego zapytania.
W kursie "Praktyczna AI" na sukcesai.com omawiamy ten temat szczegółowo - z ćwiczeniami, przykładami i wsparciem. Zamiast zgadywać, naucz się AI krok po kroku.
Sprawdź kurs →Jeden krok na start: następnym razem, gdy model AI pomyli się przy prostym liczeniu liter albo zaskoczy Cię kosztem za tekst po polsku, nie zakładaj od razu, że model jest zepsuty. Zapytaj siebie, czy to nie przypadkiem sprawka tokenizacji - to jeden z tych mechanicznych detali, które tłumaczą naprawdę dużo z pozornie losowych zachowań AI.
Na podstawie: Andrej Karpathy - Let's build the GPT Tokenizer