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:
- Backpropagation (обратное распространение) — именно так обновляются soft prompt параметры.
- Transfer learning (перенос обучения) — prompt tuning обычно рассматривают как его параметрически эффективный вариант.
- System prompt — системная инструкция для модели — полезно не путать текстовую инструкцию с обучаемым soft prompt.
- Zero-shot prompting — отправная точка, если вы пока не переходите к обучению параметров.
- Как составить system prompt — практическая альтернатива ручной настройке поведения модели.
Вопросы и ответы
Что именно обучается в 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.