COMRAD404 / GLOSSARY

Prompt tuning (мягкий промпт)

Prompt tuning

Prompt tuning — это способ дообучить только мягкий промпт, оставив базовую модель замороженной. Разбираем схему, отличие от full fine-tuning, применение и ограничения.

TL;DR

Prompt tuning — это дообучение мягкого промпта (soft prompt embeddings) при замороженной базовой модели.

Prompt tuning (prompt tuning) — это метод параметрически эффективного дообучения, при котором вы обучаете только мягкий промпт (soft prompt embeddings), а основную предобученную модель оставляете замороженной. Иначе говоря, меняется небольшой набор виртуальных векторов, которые подаются вместе с входом, а не все веса модели.

Английский термин: prompt tuning. Также встречается: soft prompt, soft prompt embeddings, virtual prompt vectors; по-русски чаще пишут «обучение мягкого промпта» или просто «мягкий промпт».

Простыми словами

Можно представить это как небольшую «наклейку-инструкцию», которую модель учится носить с собой. Вы не переписываете всю модель заново, а подбираете короткий набор внутренних настроек, который помогает ей лучше работать именно на вашей задаче.

Важно: это именно аналогия. В prompt tuning вы не редактируете текст запроса вручную, а обучаете параметры в embedding space.

Как это работает

Логика метода из статьи EMNLP 2021 и актуальных docs PEFT такая: берёте предобученную модель, замораживаете её backbone, добавляете несколько обучаемых prompt-векторов и обучаете только их через backpropagation.

Входной текст
   ↓
Токены / embeddings
   + 
k soft prompt vectors
   ↓
Замороженная предобученная модель
   ↓
Предсказание / loss
   ↑
Обновляются только soft prompt vectors

На практике это значит, что вы контролируете объём обучаемых параметров очень грубо — через длину и состав soft prompt, а не через весь стек весов. В canonical paper авторы показывают, что метод лучше раскрывается с ростом модели и на T5-классе с миллиардным масштабом может сравниваться с full tuning.

Где применяется

  • В Hugging Face PEFT — для task-specific virtual prompt vectors, когда вы хотите использовать актуальный workflow через PromptTuningConfig.
  • В сценариях causal language modeling — официальный task guide показывает цепочку PromptTuningConfig → get_peft_model() → print_trainable_parameters().
  • Для воспроизведения статьи EMNLP 2021 на T5X/Flaxformer/Flax/JAX-стеке — через оригинальный Google Research репозиторий, который сейчас archived/read-only.
  • Когда важно оставить базовую модель нетронутой и менять только небольшой набор обучаемых параметров.

Практический пример

Ниже — не дословный пример из документации, а безопасная последовательность шагов, совпадающая с официальным workflow PEFT:

1. Загрузите pretrained base model.
2. Создайте PromptTuningConfig для нужной задачи.
3. Оберните модель через get_peft_model().
4. Сразу вызовите model.print_trainable_parameters().
5. Проверьте, что обучаются только prompt-параметры, а backbone frozen.

Если в выводе trainable parameters видны веса основной модели, конфигурация собрана неверно. Этот шаг полезен не только для отладки, но и для ревью: вы быстро видите, действительно ли вы используете prompt tuning, а не случайно full fine-tuning.

Чем отличается от…

Подход Что обучается Что важно помнить
Prompt tuning Soft prompt embeddings / virtual prompt vectors Основная предобученная модель остаётся замороженной
Prefix tuning Смежный prompt-learning подход Источник прямо предупреждает, что это не тот же самый метод
Full fine-tuning Все веса модели Это уже не parameter-efficient подход

Ключевое различие простое: prompt tuning меняет небольшой набор обучаемых векторов, а full fine-tuning — всю модель. Prefix tuning и prompt tuning родственны, но источник прямо предупреждает: это не одно и то же, поэтому docs и гиперпараметры нельзя считать взаимозаменяемыми.

Ограничения и заблуждения

  • Заблуждение: prompt tuning — это «лучше написать другой текст промпта». На самом деле: метод обучает параметры в embedding space, а не ручной текст.
  • Заблуждение: если метод работает на одном стеке, он автоматически переносится на все prompt-learning варианты. На самом деле: prompt tuning, prefix tuning, P-tuning и multitask prompt tuning связаны, но не идентичны.
  • Ограничение: в canonical paper эффект растёт с масштабом; не стоит ожидать одинакового качества на маленькой модели и на T5-уровне.
  • Ограничение: оригинальный репозиторий Google Research сейчас archived/read-only, поэтому его лучше рассматривать как референс для воспроизведения статьи, а не как живую production-базу.
  • Практическая проверка: в текущем стеке Transformers prompt tuning идёт через PEFT, а интеграция требует peft >= 0.18.0.

Практический вердикт: если вы внедряете prompt tuning сейчас, начинайте с официального PEFT workflow и сразу проверяйте trainable parameters. Для воспроизведения статьи можно смотреть архивный Google Research repo, но для продакшена он уже не лучший выбор.

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

Карточек инструментов в исходном наборе нет, поэтому ниже — только связанные термины и один how-to:

Вопросы и ответы

Что именно обучается в prompt tuning?

Обучаются только soft prompt embeddings, то есть небольшой набор виртуальных векторов. Основная предобученная модель остаётся замороженной.

Как проверить, что prompt tuning настроен правильно?

В актуальном workflow PEFT после get_peft_model() нужно посмотреть model.print_trainable_parameters(). Если обучаются веса backbone, конфигурация собрана неправильно.

Чем prompt tuning отличается от full fine-tuning?

В full fine-tuning обновляются все веса модели, а в prompt tuning — только prompt-параметры. Это и есть главная экономия параметров.

Подходит ли prompt tuning для текущего стека Hugging Face?

Да: официальные docs PEFT продолжают поддерживать PromptTuningConfig-workflow. Для интеграции через Transformers нужен peft >= 0.18.0.

Можно ли использовать prompt tuning в продакшене через оригинальный Google Research репозиторий?

Скорее нет: он archived/read-only. Его удобно открывать для воспроизведения paper, но для живого проекта практичнее опираться на актуальный PEFT.

Источники

Источники

SOURCES

Вопросы и ответы

FAQ
Что именно обучается в prompt tuning?

Обучаются только soft prompt embeddings, то есть небольшой набор виртуальных векторов. Основная предобученная модель остаётся замороженной.

Как проверить, что prompt tuning настроен правильно?

В актуальном workflow PEFT после get_peft_model() нужно посмотреть model.print_trainable_parameters(). Если обучаются веса backbone, конфигурация собрана неправильно.

Чем prompt tuning отличается от full fine-tuning?

В full fine-tuning обновляются все веса модели, а в prompt tuning — только prompt-параметры. Это и есть главная экономия параметров.

Подходит ли prompt tuning для текущего стека Hugging Face?

Да: официальные docs PEFT продолжают поддерживать PromptTuningConfig-workflow. Для интеграции через Transformers нужен peft >= 0.18.0.

Можно ли использовать prompt tuning в продакшене через оригинальный Google Research репозиторий?

Скорее нет: он archived/read-only. Его удобно открывать для воспроизведения paper, но для живого проекта практичнее опираться на актуальный PEFT.

Читайте также

LINKS