ML Fundamentals

токенизатор

Компонент LLM, преобразующий текст в последовательность числовых идентификаторов и обратно.

Что такое токенизатор

Токенизатор — реализация алгоритма токенизации для конкретной модели: кодирует текст в последовательность числовых токенов и декодирует обратно. Каждая модель обучена с определённым токенизатором, и использовать другой нельзя.

Популярные токенизаторы

tiktoken (OpenAI): быстрый, написан на Rust с Python-биндингами. Используется в GPT-2/3/3.5/4.

import tiktoken
enc = tiktoken.encoding_for_model("gpt-4o")
tokens = enc.encode("Hello!")  # → [13225, 0]
text = enc.decode([13225, 0])  # → "Hello!"

SentencePiece (Google): BPE/Unigram tokenizer в C++. Используется в Llama, Mistral, T5, mT5.

Hugging Face tokenizers: унифицированный интерфейс для большинства open-source моделей. Быстрая Rust-реализация.

from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("meta-llama/Meta-Llama-3-8B-Instruct")
tokens = tokenizer("Привет, мир!", return_tensors="pt")
# {'input_ids': tensor([[128000,  91010,    380,  11, ...]])}

Словарь (vocabulary)

Размер словаря определяет число уникальных токенов:

  • GPT-2: 50 257 токенов
  • Llama 2: 32 000 токенов
  • Llama 3: 128 256 токенов (добавлены токены для кода и не-английских языков)
  • GPT-4o: 200 000+ токенов

Большой словарь → меньше токенов на слово → длиннее эффективный контекст.

Chat template

Токенизаторы instruction-tuned моделей содержат chat template — шаблон форматирования диалога:

messages = [
    {"role": "user", "content": "Что такое GQA?"}
]
input_ids = tokenizer.apply_chat_template(
    messages,
    tokenize=True,
    add_generation_prompt=True,
    return_tensors="pt"
)

Связанные термины

  • токен — единица, создаваемая токенизатором
  • токенизация — процесс, реализуемый токенизатором
  • BPE — алгоритм, используемый большинством токенизаторов
  • контекстное окно — измеряется в токенах

Готовы запустить GPU-задачу?

Запустить GPU-сервер