В быстро развивающейся области больших языковых моделей (LLM) критически важно оставаться на вершине современных подходов, таких как быстрая настройка. Эта техника, применяемая к уже обученным базовым моделям , повышает производительность без высоких вычислительных затрат, связанных с традиционным обучением моделей.
PromtTuning - это метод, разработанный для повышения производительности предварительно обученной языковой модели без изменения ее весов.
Вместо обучения и изменения весов моделей, PromtTuning корректирует подсказки, которые направляют реакцию модели.
Если смотрим на похожие методы, то это LoRA обучение, но опять же LoRA представляет собой более эффективный метод адаптации предобученных языковых моделей (LLM) по сравнению с обычным обучением.
Обычное обучение LLM включает в себя полное обновление всех параметров модели на большом наборе данных, что требует значительных вычислительных ресурсов и времени.
В отличие от этого, PromtTuning использует специализированные подсказки (prompt) для направления модели на выполнение конкретных задач, не изменяя ее параметры, что позволяет экономить ресурсы.
LoRA, в свою очередь, добавляет небольшие матрицы (низкого ранга) к весам модели, позволяя адаптировать ее поведение без необходимости полного переобучения, что также делает процесс более эффективным
Мы создаем по сути суперпромпт, позволяя модели улучшать часть промпта с помощью своих накопленных знаний.
Однако эта конкретная часть промпта не может быть переведена на естественный язык.
Это как если бы мы освоили выражение своих мыслей в эмбеддингах и генерацию высокоэффективных промптов.
В каждом цикле обучения единственные веса, которые могут быть изменены для минимизации функции потерь, — это те, которые интегрированы в промпт.
Основное следствие этой техники заключается в том, что количество параметров для обучения действительно невелико.
Однако мы сталкиваемся со вторым, возможно, более значительным следствием, а именно с тем, что, поскольку мы не изменяем веса предобученной модели, модель не меняет свое поведение поведение и не стирает никакую информацию, которую она ранее усвоила.
Обучение проходит быстрее и экономичнее.
Более того, мы можем обучать различные модели, и во время инференса нам нужно загрузить только одну базовую модель вместе с новыми меньшими обученными моделями, поскольку веса оригинальной модели не были изменены.
Prompt engineering
Второе на что похоже PromtTuning - это Prompt engineering
Prompt engineering, не включает в себя обучение или переобучение. Он полностью основан на том, что пользователь разрабатывает промпты для модели.
Это требует тонкого понимания возможностей обработки модели и использует встроенные в модель знания.
Prompt engineering не требует никаких вычислительных ресурсов, поскольку он основывается исключительно на стратегической формулировке входных данных для достижения результатов.
Сравнение
Каждая из этих техник предлагает различный подход к использованию возможностей предобученных моделей. Выбор между ними зависит от конкретных потребностей приложения, таких как доступность вычислительных ресурсов, необходимость в кастомизации модели и желаемый уровень взаимодействия с параметрами обучения модели.
Метод
Объем ресурсов
Требуется обучение
Подходит для
Fine-Tuning
Высокий
Да
Задачи, требующие глубокой настройки модели
Prompt Tuning
Низкий
Да
Поддержание целостности модели при выполнении задач
Prompt Engineering
Не трубуются
Нет
Быстрая адаптация без вычислительных затрат
Пример PromtTuning
Эта библиотека содержит реализацию различных техник Fine-Tuning от Hugging Face, включая Prompt Tuning.
Из библиотеки transformers мы импортируем необходимые классы для создания экземпляра модели и токенизатора.
Загрузка модели и токенизатора.
Bloom — одна из самых маленьких и самых умных моделей, доступных для обучения с помощью библиотеки PEFT с использованием Prompt Tuning.
Я выбираю самый маленький, чтобы сократить время обучения и избежать проблем с памятью.
Инференс с предобученной моделью bloom
Если вы хотите получить более разнообразные и оригинальные генерации, раскомментируйте параметры: temperature, top_p и do_sample в model.generate ниже.
При использовании конфигурации по умолчанию ответы модели остаются последовательными при каждом вызове.
Поскольку мы хотим иметь две разные обученные модели, я создам два отдельных промта.
Первая модель будет обучена на датасете, содержащем промты, а вторая — на датасете мотивационных предложений.
Первая модель получит промт “I want you to act as a motivational coach.”, а вторая модель получит “There are two nice things that should matter to you:“
Но сначала я собираюсь собрать некоторые результаты от модели без Fine-Tuning.
Оба ответа более или менее корректны. Любая из моделей Bloom является предобученной и может генерировать предложения точно и осмысленно.
Давайте посмотрим, будут ли ответы после обучения равны или сгенерированы более точно.
Tuning
Мы можем использовать одну и ту же конфигурацию для обучения обеих моделей.
Создание двух моделей Prompt Tuning.
Мы создадим две идентичные модели prompt tuning, используя одну и ту же предобученную модель и одну и ту же конфигурацию.
Как видишь, мы будем обучать 0.001% доступных параметров.
Теперь мы создадим аргументы обучения и будем использовать одну и ту же конфигурацию в обоих обучениях.
Нам нужно указать директорию, содержащую модель, при создании TrainingArguments.
Обучение
Мы создадим объект тренера (trainer), по одному для каждой модели, которую нужно обучить.
Менее чем за 10 минут (время CPU на M1 Pro) мы обучили 2 разные модели с двумя разными задачами, используя одну и ту же базовую модель.
Сохраняем модель
Мы собираемся сохранить модели. Эти модели готовы к использованию, при условии, что у нас в памяти есть предобученная модель, на основе которой они были созданы.
Инференс
Вы можете загрузить модель из ранее сохраненного пути и попросить модель сгенерировать текст на основе нашего предыдущего ввода.
Если мы сравним оба ответа, что-то изменилось.
Pretrained Model - I want you to act as a motivational coach. Don’t be afraid of being challenged.
Fine-Tuned Model - I want you to act as a motivational coach. You can use this method if you’re feeling anxious about your.
Мы должны помнить, что мы обучали модель всего несколько минут, но этого было достаточно, чтобы получить ответ, ближе к тому, что мы искали.
Со второй моделью мы получили похожий результат.
Pretrained Model - There are two nice things that should matter to you: the price and quality of your product
Fine-Tuned Model - There are two nice things that should matter to you: the weather and your health.
Заключение
Prompt Tuning — это удивительная техника, которая может сэкономить нам часы обучения и значительную сумму денег. В ноутбуке мы обучили две модели всего за несколько минут, и мы можем иметь обе модели в памяти, предоставляя услуги разным клиентам.
Вы можете изменить количество эпох для обучения, количество виртуальных токенов и модель в третьей ячейке. Однако есть много конфигураций для изменения.