English translation is not available yet. Showing Russian content.

Почему tokenizer влияет на стоимость training?

Краткий тезис

Tokenizer определяет, на сколько токенов разбивается каждый текстовый пример. Количество токенов напрямую влияет на FLOPs (операции с плавающей точкой) при обучении, так как каждый токен участвует в вычислениях attention и feed-forward слоёв. Более эффективный tokenizer (например, Llama 3 с 128k словарём) кодирует тот же текст в меньшее число токенов, экономя 30–50% вычислительных ресурсов и, соответственно, стоимости обучения.


1. Термин: Tokenizer

Tokenizer — это компонент, преобразующий сырой текст в последовательность числовых идентификаторов (токенов). Он разбивает текст на субсловные единицы (subwords) или символы. Популярные алгоритмы: BPE (Byte-Pair Encoding), WordPiece, Unigram.

  • BPE (Byte-Pair Encoding): итеративно заменяет наиболее частые пары байтов/символов на новый токен. Используется в GPT-моделях.
  • WordPiece: похож на BPE, но выбирает пары, максимизирующие вероятность обучающих данных. Используется в BERT.
  • Unigram: вероятностная модель, выбирающая токены, минимизирующие энтропию.

Зачем нужен tokenizer
LLM работают с фиксированным словарём токенов (обычно 32k–128k). Tokenizer должен эффективно кодировать любой текст, включая редкие слова, числа и символы, минимизируя общее количество токенов.


2. Как tokenizer определяет количество токенов?

Эффективность tokenizer’а измеряется средним числом токенов на слово (tokens per word, TPW) или compression ratio (отношение длины в символах к длине в токенах).

  • Llama 3 (словарь 128k): ~0.8 токенов на слово.
  • GPT-4 (словарь ~100k): ~1.2 токенов на слово.
  • T5 (словарь 32k): ~1.5–2 токенов на слово.

Пример:
Фраза «The quick brown fox jumps over the lazy dog» (9 слов).

  • Llama 3: ~7 токенов (0.8 * 9 ≈ 7.2)
  • GPT-4: ~11 токенов (1.2 * 9 ≈ 10.8)
  • T5: ~14 токенов (1.5 * 9 ≈ 13.5)

Разница в 2 раза между Llama 3 и T5.


3. Связь количества токенов и FLOPs

FLOPs (floating point operations) — количество операций с плавающей точкой, необходимое для одного forward pass. Для transformer-модели с N параметрами и последовательностью из T токенов:

  • Attention: FLOPs ~ 4 * N * T (для каждого токена вычисляются Q, K, V и weighted sum).
  • Feed-forward: FLOPs ~ 8 * N * T (два линейных слоя с активацией).

Итого: FLOPs ~ 12 * N * T (приближённо, без учёта embedding и output projection).

Вывод FLOPs линейно растёт с числом токенов. Если tokenizer уменьшает T в 2 раза, FLOPs тоже уменьшаются в 2 раза.


4. Влияние на стоимость training

Стоимость обучения облачных кластеров (например, GPU-hours) прямо пропорциональна FLOPs. При фиксированном бюджете в FLOPs (например, 10^23 FLOPs) и цене $1 за 10^15 FLOPs, экономия 50% токенов даёт 50% экономии денег.

Формула
Cost = (Total Tokens) * (FLOPs per token) * (Price per FLOP)

  • Total Tokens = (число примеров) * (средняя длина в токенах)
  • FLOPs per token = 12 * N (константа для модели)

Таким образом, cost ∝ average tokens per example.


5. Сравнение эффективности tokenizer’ов

TokenizerСловарьTokens/word (среднее)Compression ratio (символов/токен)Пример для 1000 слов
Llama 3 (BPE)128k0.8~6.5800 токенов
GPT-4 (BPE)~100k1.2~4.31200 токенов
T5 (SentencePiece Unigram)32k1.5~3.51500 токенов
BERT (WordPiece)30k1.4~3.71400 токенов
Byte-level BPE (GPT-2)50k1.1~4.71100 токенов

Ключевой фактор размер словаря. Большой словарь (128k) позволяет кодировать целые слова одним токеном, уменьшая общее число токенов. Однако слишком большой словарь увеличивает embedding matrix и может замедлить inference.


6. Как измерять эффективность tokenizer’а?

Метрики:

  • Tokens per word (TPW) — среднее число токенов на слово в корпусе.
  • Compression ratio — отношение длины текста в символах (или байтах) к длине в токенах.
  • Coverage — доля слов, которые кодируются одним токеном (без разбиения).

Пример кода для оценки

from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("meta-llama/Meta-Llama-3-8B")
text = "The quick brown fox jumps over the lazy dog"
tokens = tokenizer.encode(text)
print(f"Tokens: {len(tokens)}")  # ~7
print(f"Words: {len(text.split())}")  # 9
print(f"TPW: {len(tokens)/len(text.split()):.2f}")  # ~0.78

7. Практические последствия: экономия 30–50% токенов

При переходе с T5-подобного tokenizer’а (32k) на Llama 3 (128k) количество токенов снижается в ~1.5–2 раза. Для обучения модели с 7B параметров на 1 триллионе токенов:

  • T5: 1.5 трлн токенов (из-за большего TPW)
  • Llama 3: 0.8 трлн токенов

Экономия: 0.7 трлн токенов, что при стоимости $0.1 за 1 млн токенов (аренда GPU) даёт $70 000.

Дополнительно меньше токенов → меньше памяти для хранения активаций (attention matrix O(T^2)), что позволяет использовать меньший batch size или более длинные последовательности.


8. Влияние на длину контекста и memory

Attention имеет квадратичную сложность O(T^2) по памяти (для каждого токена хранятся attention scores со всеми предыдущими). Уменьшение T в 2 раза сокращает memory в 4 раза. Это критично для Agentic RAG, где модели часто обрабатывают длинные контексты (много retrieved документов).

Пример:

  • Контекст 4096 токенов → attention matrix ~ 16 млн элементов (float16 = 32 MB).
  • Контекст 2048 токенов → 4 млн элементов (8 MB).

Экономия памяти позволяет увеличить batch size или использовать более длинные контексты без OOM.


9. Влияние на throughput и latency при inference

Хотя вопрос про training, inference тоже выигрывает от эффективного tokenizer’а. Меньше токенов → быстрее генерация (линейно меньше шагов декодирования). В Agentic RAG агенты делают множество вызовов LLM (планирование, вызов инструментов, рефлексия), поэтому каждый сэкономленный токен умножается на число вызовов.


10. Связь с Agentic RAG

В агентных системах (ReAct, AutoGPT) каждый шаг агента включает:

  • Формирование промпта (системное сообщение + история + retrieved документы).
  • Генерация ответа (chain-of-thought, вызов инструмента).

Эффективный tokenizer сокращает длину промпта и ответа, уменьшая:

  • Стоимость каждого вызова (оплата за токены).
  • Latency (быстрее генерация).
  • Memory (меньше attention overhead).

Поэтому выбор tokenizer’а — стратегическое решение для production RAG-систем.


11. Как выбрать tokenizer для своей модели?

  • Для training с нуля используйте tokenizer с большим словарём (128k) и алгоритмом BPE или Unigram. Обучите на целевом корпусе (язык, домен).
  • Для fine-tuning используйте tokenizer базовой модели (например, Llama 3). Если fine-tuning на специфическом домене (медицина, код), можно расширить словарь дополнительными токенами (например, медицинскими терминами).
  • Для Agentic RAG предпочтительны tokenizer’ы с низким TPW (Llama 3, GPT-4), чтобы минимизировать затраты на многошаговые вызовы.

Компромисс большой словарь увеличивает embedding matrix (параметры), что может замедлить первый forward pass. Но это окупается экономией токенов.


12. Заключение

Tokenizer — не просто «упаковка» текста, а ключевой фактор стоимости обучения и инференса. Эффективный tokenizer (большой словарь, хорошее покрытие) может сократить количество токенов на 30–50%, что прямо уменьшает FLOPs, память и денежные затраты. При проектировании Agentic RAG-систем выбор tokenizer’а должен быть осознанным, так как каждый вызов агента умножает эффект.


Пет-проект для закрепления

Задача Сравнить два tokenizer’а (BPE с малым словарём 32k и BPE с большим словарём 128k) на датасете из 10 000 документов (например, Wikipedia или новости). Оценить экономию токенов и симулировать стоимость обучения.

Инструменты

Шаги:

  1. Загрузите два tokenizer’а: bert-base-uncased (WordPiece, 30k) и meta-llama/Meta-Llama-3-8B (BPE, 128k).
  2. Выберите 1000 случайных документов.
  3. Для каждого документа посчитайте количество токенов каждым tokenizer’ом.
  4. Вычислите среднее TPW и compression ratio.
  5. Постройте гистограмму распределения длины в токенах.
  6. Симулируйте стоимость: предположите, что обучение стоит $0.1 за 1 млн токенов (аренда GPU). Рассчитайте общую стоимость для 1 триллиона токенов (типичный размер обучения 7B модели).
  7. Сделайте вывод: сколько можно сэкономить, используя эффективный tokenizer.

Ожидаемый результат

  • Таблица с TPW, compression ratio, симулированной стоимостью.
  • График распределения.
  • Вывод: Llama 3 tokenizer экономит ~40% токенов по сравнению с BERT, что даёт $40 000 экономии на обучении.

Связь с другими вопросами

ВопросТема
470Архитектура Transformer (основы FLOPs)
472Как считаются FLOPs в LLM?
473Как память зависит от длины последовательности?
476Почему fine-tuning стоит дешевле, чем pre-training?
480Как оптимизировать inference для RAG?
485Что такое KV-cache и как он влияет на стоимость?

Навигация