Сьогодні я публікую свій перший пост у блозі: Токенізація з перших принципів. Я створив токенізатор BPE на рівні байтів з попередньою токенізацією Rust і досяг швидкості кодування на рівні з токенізаторами Huggingface. Я показую ідеї та алгоритми, включаючи нюанси реалізації, такі як використання кешу LRU та подвійно зв'язаного списку. З цим фундаментом я рухаюся далі. Більшість токенізаторів просто розбиваються за регулярними виразами, зберігаючи злиття в словах, ми можемо зробити краще. Я досяг на 20% ефективнішого навчання LLM за допомогою SuperBPE. Я демонструю, як реалізувати SuperBPE, включений на пізніх етапах навчання, який дозволяє злиття кросвордів з однаковими втратами на байт під час тренування. Сюжети + код + посилання у відповіді.