Авторегрессивная модель (autoregressive model) — это модель, которая строит последовательность слева направо: на каждом шаге она предсказывает следующий токен по уже видимому левому контексту. В LLM это чаще всего называют causal language modeling или next-token generation.
Английский термин: autoregressive model. Также встречается: autoregressive LM, causal LM, next-token generation; по-русски — авторегрессивная модель, авторегрессивная генерация, causal language modeling.
Простыми словами
Можно представить это как автодополнение: система не пишет весь ответ сразу, а дописывает его по одному фрагменту и каждый раз опирается только на то, что уже получилось слева. Грубо говоря, модель «смотрит назад», но не заглядывает вперёд.
Именно поэтому авторегрессивный режим удобен для чата, письма, кода и других сценариев, где важна последовательная генерация. Если вы работали с подсказками в редакторе или чат-ботом, вы уже видели этот принцип в действии.
Как это работает
Внутри модели последовательность проходит через токенизацию, затем декодер предсказывает следующий токен только по левому контексту. Чтобы модель не использовала будущие токены, в causal-схеме применяют маскирование: токены справа становятся недоступны при расчёте текущего шага.
Входной текст ↓ Токенизация ↓ [токен 1] [токен 2] [токен 3] ... ↓ модель видит только левый контекст ↓ предсказывает следующий токен ↓ добавляет токен в контекст ↓ повторяет шаг до завершения
- Сначала текст разбивается на токены.
- Модель получает только уже известный левый контекст.
- Она оценивает распределение следующего токена.
- Дальше включается стратегия декодирования: greedy, sampling или beam search.
- Выбранный токен добавляется в контекст, и цикл повторяется.
В актуальной документации Hugging Face causal language modeling описано именно так: модель предсказывает следующий токен, а для обучения используют DataCollatorForLanguageModeling с mlm=false; метки формируются со сдвигом вправо на один токен. В PyTorch похожее поведение поддерживает TransformerDecoder через tgt_is_causal.
Где применяется
- В текстовой генерации и чатах, где нужен ответ по одному токену за шаг; в документации Hugging Face для этого рекомендуют
pipeline('text-generation')илиmodel.generate(). - В современных моделях семейства GPT: например, GPT-4o в system card описан как autoregressive omni model.
- В open-weight моделях и self-hosting-сценариях: model card для gpt-oss-120b и gpt-oss-20b называет их autoregressive Mixture-of-Experts transformers.
- В обучении с fill-in-the-middle, когда нужно сочетать заполнение пропуска и сохранение left-to-right capability; OpenAI отдельно пишет, что autoregressive language models можно дообучать так, чтобы не потерять эту способность.
Практический пример
Ниже — упрощённый сценарий на Hugging Face: сначала вы настраиваете коллатор для causal LM, затем генерируете текст и декодируете результат. Это не полный production-код, а схема того, как выглядит типичный поток.
from transformers import DataCollatorForLanguageModeling, pipeline
# Для causal LM: mlm=False
collator = DataCollatorForLanguageModeling(tokenizer=tokenizer, mlm=False)
# Инференс в текстовой генерации
generator = pipeline('text-generation', model=model, tokenizer=tokenizer)
# Модель дописывает последовательность слева направо
result = generator('Привет, как')
print(result)
Если вы работаете напрямую через generate(), результат обычно декодируют так: tokenizer.batch_decode(..., skip_special_tokens=True). Это и есть практическая форма next-token generation: модель делает шаг, выдаёт токен, добавляет его к контексту и идёт дальше.
Чем отличается от…
| Термин | Что это | Чем отличается |
|---|---|---|
| Causal LM | Задача или режим обучения, где следующий токен предсказывается только по левому контексту. | Близкий термин к авторегрессивной генерации; в практических фреймворках часто описывает тот же рабочий сценарий. |
| TransformerDecoder | Декодерный стек, который в PyTorch может работать каузально через tgt_is_causal. |
Это строительный блок, а не вся модель и не весь пайплайн генерации. |
| Fill-in-the-middle | Схема обучения на заполнение пропуска в середине текста. | Это не то же самое, что обычная left-to-right генерация; OpenAI отдельно отмечает, что autoregressive capability можно сохранить. |
| Transformer (encoder-decoder) | Архитектура из статьи Attention Is All You Need. | Архитектура шире, чем авторегрессивный режим: autoregressive — это способ генерации, а Transformer — семейство архитектурных блоков. |
Ограничения и заблуждения
- Заблуждение: авторегрессивная модель = любая Transformer-модель. На деле: авторегрессивность — это режим генерации; в оригинальной статье Transformer описан как encoder-decoder architecture без recurrence и convolutions.
- Заблуждение: если модель обучали на fill-in-the-middle, она перестаёт быть autoregressive. На деле: OpenAI отдельно пишет, что autoregressive LMs можно обучать на FIM так, чтобы не потерять left-to-right generative capability.
- Ограничение: модель не видит будущие токены при генерации, поэтому качество зависит от уже выданного контекста и от того, как вы подаёте промпт.
- Ограничение: авторегрессивный режим сам по себе не задаёт, как именно выбирать следующий токен; это уже вопрос стратегии декодирования — greedy, sampling или beam search.
- Редакционная оговорка: здесь не приводятся цены, тарифы, региональная доступность и точные ограничения hosted-моделей. Эти параметры зависят от продукта и должны проверяться отдельно по официальным страницам.
Практический вывод: если вам нужна последовательная генерация слева направо, вы описываете авторегрессивный сценарий. Если задача требует иного режима заполнения, смотрите на training recipe и implementation notes, а не только на слово «Transformer».
Связанные термины, инструменты и исследования
Эти материалы помогают не смешивать архитектуру, режим генерации и прикладной интерфейс:
- Base model vs instruct model: чем отличаются базовая и instruct-модель — полезно, если вы сравниваете базовое поведение и донастройку под инструкции.
- Guardrails (ограждения) в AI-системах — ограничивают, что и как модель может сгенерировать.
- Reasoning model vs обычная LLM: что выбрать на практике — помогает не путать режим рассуждения с порядком генерации.
- Cursor vs VS Code + Copilot: что выбрать разработчику — практический пример интерфейса, где важна автогенерация по контексту.
- Freepik AI — карточка прикладного AI-инструмента для сравнения рабочих сценариев генерации.
Источники
- GitHub – huggingface/transformers
- Releases · huggingface/transformers · GitHub
- GitHub – pytorch/pytorch
- Releases · pytorch/pytorch · GitHub
- OpenAI open-weight models (gpt-oss) | OpenAI Help Center
- Causal language modeling · Hugging Face — определение causal LM, обучение,
generate()и декодирование. - Generation strategies · Hugging Face — next-token selection, greedy/sampling/beam search и параметры генерации.
- TransformerDecoder — PyTorch main documentation — decoder stack и causal masking через
tgt_is_causal. - Attention Is All You Need — первичный источник по Transformer-архитектуре.
- Efficient training of language models to fill in the middle | OpenAI — autoregressive LMs, FIM и сохранение left-to-right capability.
- GPT-4o System Card — современный пример autoregressive omni model.
- gpt-oss-120b & gpt-oss-20b Model Card — современный пример autoregressive Mixture-of-Experts transformer.
Вопросы и ответы
Авторегрессивная модель — это то же самое, что causal LM?
В контексте LLM это очень близкие вещи: causal LM описывает next-token prediction только по левому контексту, а autoregressive model — сам принцип генерации слева направо.
Почему модель не видит будущие токены?
Чтобы не подглядывать в ответ и корректно предсказывать следующий токен; causal mask и decoder setup не дают ей использовать правый контекст.
Можно ли обучать autoregressive LM на fill-in-the-middle?
Да. OpenAI пишет, что это возможно, если сохранить left-to-right generative capability.
Нужен ли для этого именно Transformer?
Нет. Авторегрессивность — это режим генерации, а не название единственной архитектуры; на практике его часто реализуют через decoder-side components и causal masking.