arm-tokenizer / arm_tokenizer /README.ru.md
neoneai-andrey's picture
Upload 9 files
cc725be verified
|
Raw
History Blame Contribute Delete
3.12 kB

license: apache-2.0 language: - ru - en tags: - tokenizer - bpe - byte-level - russian - english - emoji

ARM Tokenizer

Байтовый BPE-токенизатор от NeoneAI для русского, английского и эмодзи.

Часть исследовательского проекта ARM.

Обзор

  • Размер словаря: 65 536
  • Алгоритм: Byte-level BPE
  • Языки: русский + английский
  • Эмодзи: поддерживаются
  • Спецтокены: <|endoftext|>, <|pad|>, <|user|>, <|assistant|>, <|system|>, <|bos|>, <|eos|>
  • Инструмент: Hugging Face Tokenizers

Зачем

Большинство открытых токенизаторов (GPT-2, LLaMA, Mistral) заточены под английский. ARM Tokenizer создан для русского + английского + эмодзи.

Он сжимает русский текст в 3.3 раза лучше, чем GPT-2, и обходит Gemma-2 (256k словарь) при словаре всего 65k.

Результаты

Все тесты на 1000 случайных реальных текстов (500 русских + 500 английских) с фиксированным seed (42). Погрешность: ±1%.

vs GPT-2 (50k)

Метрика ARM GPT-2
Всего токенов 153 473 414 971
Средний tok/char 0.2965 0.8018
Русский (500) 111 803 371 960
Английский (500) 41 670 43 011
Побед 928 16
Ничьих 56

Итог: ARM на 63.02% ±1% эффективнее GPT-2. На русском ARM в 3.3 раза эффективнее GPT-2.

vs Gemma-2 (256k)

Метрика ARM Gemma-2
Всего токенов 153 473 167 105
Средний tok/char 0.2965 0.3198
Русский (500) 111 803 126 941
Английский (500) 41 670 40 164
Побед 791 108
Ничьих 101

Итог: ARM на 8.16% ±1% эффективнее Gemma-2 в общем, и на 12% ±1% эффективнее на русском, при словаре всего 65k.

Воспроизведение тестов

В репозитории два скрипта:

  • test_gpt-2.py — сравнивает ARM Tokenizer с GPT-2 Tokenizer
  • test_gemma-2.py — сравнивает ARM Tokenizer с Gemma-2 Tokenizer

Оба скрипта читают из папки sample/:

  • sample/gutenberg_sample.txt — 5000 английских текстов из Project Gutenberg
  • sample/ru_books_sample.txt — 5000 русских текстов из RuHeritage-Corpus

Создать тестовые данные

python build_test_data.py