Aigest.
Narzędzia AI

Gigatoken: Nowy tokenizer BPE na Rust koduje tekst z prędkością 24,53 GB/s, 989x szybciej niż HuggingFace

Marcel Rød, doktorant ze Stanfordu, zaprezentował Gigatoken – nowy tokenizer BPE napisany w Rust, który osiąga rekordowe prędkości przetwarzania tekstu, znacznie przewyższając istniejące rozwiązania.

RA

Udostępnij
Gigatoken: Nowy tokenizer BPE na Rust koduje tekst z prędkością 24,53 GB/s, 989x szybciej niż HuggingFace
Fot. MarkTechPost

Tokenizacja, często pomijana w analizie wydajności modeli językowych, zyskuje nowe światło dzięki projektowi Gigatoken. Opracowany przez Marcela Røda, doktoranta ze Stanfordu, i udostępniony na licencji MIT, ten tokenizer BPE (Byte-Pair Encoding) napisany w języku Rust z wiązaniami dla Pythona, rewolucjonizuje prędkość przetwarzania tekstu, osiągając gigabajty na sekundę na pojedynczej maszynie.

Rekordowa wydajność Gigatokena

Testy przeprowadzone na korpusie owt_train.txt o wielkości 11,9 GB z wykorzystaniem procesora AMD EPYC 9565 (144 rdzenie, konfiguracja dual-socket) wykazały, że Gigatoken przetwarza dane z oszałamiającą prędkością 24,53 GB/s. Dla porównania, tiktoken OpenAI osiągnął 36,0 MB/s, a tokenizery HuggingFace zaledwie 24,8 MB/s na tej samej konfiguracji sprzętowej. Oznacza to przewagę wydajnościową Gigatokena odpowiednio 681x i 989x.

Imponujące wyniki powtórzyły się również na innych platformach. Na Apple M4 Max (16 rdzeni) ten sam test GPT-2 osiągnął 8,79 GB/s, co stanowi 1268-krotne przyspieszenie w stosunku do tokenizatorów HuggingFace i 140-krotne w stosunku do tiktokena. Na konsumenckim procesorze AMD Ryzen 7 9800X3D prędkość wyniosła 6,27 GB/s, czyli 106x i 68x szybciej. Marcel Rød podkreśla, że te przyspieszenia nie są efektem specyfiki jednego procesora czy słownika.

Gigatoken (wersja 0.9.0, wydana 21 lipca 2026) jest dostępny w PyPI i można go zainstalować za pomocą pip install gigatoken. Repozytorium projektu składa się w 66,2% z kodu Rust i w 33,3% z Pythona. Obsługuje 23 różne rodziny tokenizatorów, w tym popularne modele takie jak GPT-2, Llama 3-4, Qwen 2-3.6, DeepSeek V3/R1/V4, GLM 4-5, Gemma i Mistral.

Dwa tryby działania i źródła optymalizacji

Gigatoken oferuje dwa tryby użytkowania:

  • Tryb kompatybilności: Umożliwia opakowanie istniejącego tokenizera HuggingFace lub tiktoken, zachowując dokładną zgodność wyjścia. Marcel Rød zaznacza, że w tym trybie, ze względu na narzut Pythona związany z tworzeniem list i konwersją string-to-bytes, wydajność spada do około 200-300x przyspieszenia.
  • Natywne API Gigatokena: Pozwala Rustowi na bezpośrednie odczytywanie plików, co jest źródłem publikowanych, rekordowych wyników wydajności.

Kluczowe zyski wydajnościowe Gigatokena nie pochodzą z ulepszonej pętli łączenia BPE, lecz z dwóch obszarów, które większość tokenizatorów traktuje jako rozwiązane:

  1. Pretokenizacja: Zamiast delegować to zadanie do silnika wyrażeń regularnych, Gigatoken implementuje je ręcznie. Dziennik optymalizacji pokazuje, że to podejście zapewnia 2,27x przewagę nad bazową wersją winnow + NEON i 22,3x nad implementacją opartą na wyrażeniach regularnych.
  2. Buforowanie pretokenów: Jeśli słowo zostało już wcześniej przetworzone, jego zakodowane tokeny są wyszukiwane w pamięci podręcznej zamiast być ponownie obliczane. Marcel Rød podkreśla, że jest to trudne do zaimplementowania w praktyce ze względu na szybki wzrost pamięci podręcznej i długi ogon rozkładu pretokenów. Dodatkowo, interakcje z Pythonem są minimalizowane, a wątki zaprojektowane tak, aby minimalnie oddziaływały na siebie.

Należy zaznaczyć, że porównanie nie jest w pełni bezpośrednie. Gigatoken koduje całe, niepodzielone pliki, samodzielnie znajdując granice dokumentów i automatycznie równolegle przetwarzając dane. W przeciwieństwie do tego, HuggingFace (encode_batch_fast) jest oceniany na pierwszych 100 MB, a tiktoken (encode_ordinary_batch) na pierwszych 1 GB, oba już podzielone na |endoftext|. Ponieważ rozwiązania bazowe pomijają buforowanie, ich przepustowość pozostaje jednolita.

Chociaż główne przyspieszenia dotyczą BPE, Gigatoken oferuje również znaczące ulepszenia dla tokenizatorów SentencePiece, choć o rząd wielkości niższe. Na EPYC, Gemma 1 przetwarza z prędkością 2,51 GB/s (7,3x przyspieszenie), Gemma 3 z 3,43 GB/s (9,6x), a CodeLlama z 3,47 GB/s (10,0x).

Niezależna weryfikacja na KrabArena potwierdziła te wyniki. Na maszynie wirtualnej Intel Xeon z 4 vCPU, Gigatoken 0.9.0 osiągnął medianę 277,8 MB/s na 174 MB wycinku OpenWebText, przewyższając tiktoken 0.13.0 (10,62 MB/s) o 26,2x i tokenizery 0.23.1 (3,33 MB/s) o 83,4x.

Znaczenie dla rozwoju AI

Wprowadzenie Gigatokena przez Marcela Røda stanowi istotny krok naprzód w dziedzinie przetwarzania języka naturalnego. Znaczące przyspieszenie procesu tokenizacji może mieć dalekosiężne konsekwencje dla rozwoju i wdrażania dużych modeli językowych. Szybsze przetwarzanie danych wejściowych oznacza krótszy czas treningu modeli, efektywniejsze wykorzystanie zasobów obliczeniowych oraz możliwość pracy z większymi korpusami tekstowymi, co w efekcie może prowadzić do tworzenia bardziej zaawansowanych i wydajnych systemów AI. Projekt ten podkreśla również, jak ważne jest optymalizowanie nawet tych elementów stosu technologicznego, które są często niedoceniane, otwierając drogę do dalszych innowacji w obszarze sztucznej inteligencji.

Źródło: marktechpost.com

Komentarze

Zaloguj się, aby dołączyć do dyskusji.

Nikt jeszcze nie skomentował. Bądź pierwszy!

Czytaj dalej

Kimi K3 Moonshot AI daleko za czołowymi modelami USA w cyberbezpieczeństwie, destylacja może być przyczyną
AegisAI pozyskuje 36 mln dolarów na walkę z phishingiem wspomaganym przez AI
IBM zapewnia, że AI nie zabija mainframe'ów, mimo fatalnego kwartału
Samsung rozważa miliardową inwestycję w Mistral, wyceniając startup na 20 mld euro
Symulacje kluczowe dla rozwoju fizycznej sztucznej inteligencji: przegląd silników
Google wprowadza nowe modele Gemini Flash: 3.6 Flash, 3.5 Flash-Lite i 3.5 Flash Cyber

Bądź na bieżąco ze światem AI

Najważniejsze newsy, recenzje i poradniki — raz w tygodniu, prosto na maila. Bez spamu.