Dnes publikuji svůj první příspěvek na blogu: Tokenizace od prvních principů. Vytvořil jsem tokenizér BPE na úrovni bajtů s předtokenizací Rust a dosáhl jsem rychlosti kódování srovnatelné s tokenizátory s objímající tváří. Ukazuji nápady a algoritmy včetně nuancí implementace, jako je použití LRU cache a double-linked list. S tímto základem posouvám dál. Většina tokenizátorů se prostě rozdělí podle regulárních výrazů, přičemž sloučení se vejde do slov, můžeme to udělat lépe. Dosáhl jsem o 20% efektivnějšího LLM tréninku se SuperBPE. Ukazuji, jak implementovat SuperBPE enabled pozdě v tréninku, který umožňuje křížové slovní slučování se stejnou ztrátou na bajt během trénování. Grafy + kód + odkaz v odpovědi.