токенизатор
Компонент 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-сервер