LoRA fine-tuning для генерации презентаций: как мы выбирали метод дообучения LLM в presentsimple.ai. llm.. llm. lora.. llm. lora. lora-адаптеры.

Меня зовут Павел, я отвечаю за Data Science в presentsimple.ai — это сервис для создания презентаций с помощью искусственного интеллекта, который генерирует результат по текстовому запросу за пару минут. В этой статье расскажу, как мы собрали для этой задачи ансамбль из нескольких ML‑моделей, как искали наиболее подходящие методы дообучения YandexGPT, и какую роль здесь сыграли LoRA‑адаптеры, которые недавно появились в Yandex Cloud внутри Foundation Models.

Этот слайд был создан с использованием искусственного интеллекта
Этот слайд был создан с использованием искусственного интеллекта

Объяснить ИИ, что такое хорошая презентация      

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

При этом наш сервис presentsimple.ai работает по модели freemium. С одной стороны, его могут использовать и студенты, у которых «загорелась» сессия, — для таких пользователей есть бесплатная ограниченная версия. С другой стороны, есть корпоративные клиенты, которым бывает нужно проводить по 150 вебинаров в месяц. Обе задачи можно ускорить за счёт двух сценариев использования машинного обучения:

  1. Можно сначала задать текстовый запрос к модели и сгенерировать слайды по заданной теме.

  2. Можно загрузить уже имеющийся документ, в том числе черновой ppt‑файл, чтобы сервис создал презентацию из него.

Но и в том, и в другом случае важно наглядное представление информации. Даже люди без большого опыта в дизайне презентаций, скорее всего, назовут примерно такие критерии хороших слайдов:

  • Логичное, последовательное изложение темы — повествование не должно скакать.

  • Чёткая структура — по слайдам должно быть удобно навигировать, и должно быть понятно, где закончилась одна тема и началась другая.

  • Отсутствие перегруженности — не хочется, чтобы слайды превратились в книгу, которую зрители просто читают параллельно с речью спикера.

  • Сильные визуальные элементы, за счёт которых можно «показывать, а не рассказывать». Согласитесь, когда картинки в презентацию вставлены просто для красоты, этого тоже никто не любит.

Ещё на заре стартапа мы начинали экспериментировать с бесплатными версиями LLM и графических нейросетей, и быстро натолкнулись на их ограничения. Для создания презентации не получится просто задать большой языковой модели вопрос по теме: даже если в промте мы попросим её структурировать ответ и подобрать картинки, это будет далеко от нужного результата.

Основная проблема здесь в генерации правильной структуры — то, что мы в презентациях часто называем лэйаут (layout). Важно правильно расположить весь текст по смыслу, выделить ёмкие заголовки, разбить основной текст на абзацы и подобрать нужную заполняемость слайда. Как хороший дизайнер, модель тоже должна понять, когда можно всё разместить в шесть колонок, а когда лучше не лепить и разбить информацию на два слайда.

Вторая трудность, связанная с подбором картинок: чтобы не ограничивать пользователя в стилистике, мы предлагаем ему как генерировать графику, так и фотореалистичные изображения. Но тут оказывается очень важно донести нужный контекст в промте для визуальной нейросети. При создании неизбежна тесная связка нескольких моделей, чтобы визуальная и текстовая часть максимально соответствовали друг другу.

Хороший пример: сервис сгенерировал изображение, которое подходит по смыслу для этого слайда
Хороший пример: сервис сгенерировал изображение, которое подходит по смыслу для этого слайда

В идеале ещё хотелось бы максимального разнообразия визуальных элементов: иконок, таблиц, инфографики и так далее. Соответственно, для этой задачи мы сразу планировали дообучать модели под разные задачи.

Но если сперва казалось, что это будет просто ансамбль из визуальной нейросети и LLM, то в результате всё оказалось чуть сложнее: для генерации изображений потребовалось несколько моделей (например, под иконки оказалось эффективнее дообучить отдельную нейросеть). Учитывая, что стартап изначально запускался на российском рынке, из всего многообразия LLM очень хорошо себя показала YandexGPT, которая по многим тестам лучше работает с русским языком. И очевидным плюсом было то, что её можно дообучать. Но вот выбор модели внутри семейства был не так очевиден, сначала мы склонялись к Pro, но потом стали тестировать и Lite.

После того как мы перешли на YandexGPT в облаке, у нас появились разные варианты для дообучения больших языковых моделей. Подробнее покажу те варианты дообучения LLM, с которыми мы экспериментировали.

Какие методы дообучения мы рассматривали

Мы изучали лучшие практики, в том числе те, о которых много рассказывают команды Yandex Cloud, например, в этом докладе. Какие два варианта дообучения LLM мы выделили как возможные:

  • Fine‑tuning, который предполагает обновление всех или какой‑то части весов уже обученной модели. Это хороший вариант, если есть много качественных данных, а наша база презентаций, на первый взгляд, казалась приличной.

    Но есть и особенности: для этого метода нужно много ресурсов, необходимо иметь доступ к весам базовой модели, а саму модель затем придётся где‑то хостить. Кроме того, зафайнтюненные на новых доменах модели могут начать забывать старые зависимости, и начать проседать.

  • Parameter‑efficient Fine‑tuning, или PEFT. Этот метод в принципе появился как ответ на сложности полноценного файнтюнинга. PEFT не меняет веса базовой модели: результатом дообучения будет небольшой (относительно всей модели) набор дополнительных весов, которые на инференсе встраиваются в модель в виде адаптеров. А это значит, что и данных для этого метода нужно меньше, и сам метод легковесный, адаптер быстрее дообучается и сходится. Лёгкие веса адаптеров можно подгружать уже в процессе. Вот упрощённая схема инференса:

    Бэкенд держит одну-единственную модель, и при получении каждого очередного запроса встраивает вес адаптера в инференс этой модели, соответственно, разные запросы исполняются с разными адаптерами

    Бэкенд держит одну-единственную модель, и при получении каждого очередного запроса встраивает вес адаптера в инференс этой модели, соответственно, разные запросы исполняются с разными адаптерами

    Если же говорить про сложности, то главное — это выбор метода внутри PEFT, поскольку их довольно много. Применимость метода может сильно зависеть от количества имеющихся данных.

Последний вариант нам нравился больше, поскольку в режиме стартапа хотелось максимально быстрого и эффективного решения, без долгого ожидания.

Оставалось выбрать метод для PEFT. В качестве датасета для дообучения у нас был пул уже свёрстанных эталонных презентаций, который мы переводили в текст, и количество таких примеров легко было довести до тысячи и нескольких тысяч. Начать решили с более легковесного P‑Tune.

Пробуем P‑Tune на YandexGPT Pro. Изначально в сервисе Yandex DataSphere было доступно дообучение моделей методом p‑tuning. В случае с P‑Tune достаточно 10–100 примеров, чтобы запустить дообучение адаптера. Мы решили взять YandexGPT Pro, которая «знала» гораздо больше, и посмотреть на её результаты на небольшом количестве примеров.

Как нам показалось, модель получилась более заточена на чат, а вот с соблюдением строго заданного формата она справлялась хуже. Простой пример задачи: нужно заполнить layout на основе объёма и количества предложений в тексте. Эти и другие подобные задачи по строгой инструкции выполнялись в 6 случаях из 10, а нас такая нестабильность не устраивала.

Например, если мы прописывали подробный промт, где просили модель разбить текст на логические смысловые блоки одинакового размера, то слишком замысловатые и длинные инструкции могли очень легко перегрузить модель. В итоге цель разделить текст равномерно не выполнялась:

LoRA fine-tuning для генерации презентаций: как мы выбирали метод дообучения LLM в presentsimple.ai - 4

Пробуем LoRA на YandexGPT Lite. К следующему подходу в облаке появился метод LoRA Fine‑tuning, и мы решили переключиться на него. Эксперты из команды Yandex Cloud рекомендовали взять для него больше примеров, и мы собрали около 1000 пар вопрос‑ответ. Кроме того, поддержка LoRA была доступна только для YandexGPT Lite, в сторону которой мы уже давно планировали посмотреть — с этой моделью должно было получиться примерно в 6 раз дешевле. При этом можно было дообучать Lite‑версию на уже полученных результатах работы YandexGPT Pro.

Первое, что мы заметили сразу в результате нового эксперимента — это скорость. Работа в асинхронном режиме ускорилась минимум в 2 раза. Это освобождало возможности для множества параллельных запросов: можно было создавать объёмные серии слайдов нескольким клиентам за 30–40 секунд. Также дообученная модель лучше придерживалась заданного технического задания по количеству символов, предложений, стилистике, а также реже ошибалась, если нужно было выдать информацию в конкретном формате, например, json.

Хороший пример генерации структуры презентации: заголовки соответствуют требованиям, информация равномерно распределена по блокам

Хороший пример генерации структуры презентации: заголовки соответствуют требованиям, информация равномерно распределена по блокам

Такая «исполнительность» и лёгкость LoRA‑адаптеров позволила нам создать сразу нескольких ИИ‑агентов — это автономные системы на основе большой языковой модели или ансамбля моделей, которые выполняют свою строго определённую специфическую задачу по ТЗ:

  • писать предложения в определённой последовательности;

  • создавать заголовки и подзаголовки определённой длины и формата;

  • анализировать предложения на входе и правильно передавать их в нужный layout;

  • создавать диаграммы по текстовому описанию.

LoRA fine-tuning для генерации презентаций: как мы выбирали метод дообучения LLM в presentsimple.ai - 6

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

Ещё один хороший пример генерации таймлайна по текстовому описанию

Ещё один хороший пример генерации таймлайна по текстовому описанию

Получается целое креативное агентство из ИИ‑разнорабочих, каждый из которых отвечает за свой кусок. Но чтобы этого добиться, нам также было важно позаботиться о качестве данных:

  • Мы заметили, что 90% результата обеспечивают 20% самых первых примеров, их важно сделать максимально разнообразными для выбранной задачи.

  • Также, если данных для дообучения было мало, мы следовали рекомендациям старой школы и добивались, чтобы группы примеров были сбалансированы по количеству.

Сейчас мы видим, что нужный нам результат получается в 9,5 случаях из 10.

Где ещё планируем попробовать LoRA

В ближайшем релизе сервиса добавятся несколько возможностей на базе LoRA‑адаптеров: генерация диаграмм, таблиц, иконок и таймлайнов из текстового описания. Также в скором времени мы планируем запустить сценарий, при котором презентация будет собираться человеком «слайд за слайдом», чтобы создавать презентацию с помощью ИИ можно было максимально кастомно.

В наших планах полностью закрыть цикл изготовления презентаций для всех: от профессионалов до первоклассников. LoRA‑адаптеры помогают нам грамотно перенести любую визуальную составляющую в текст. На самом деле это тяжёлая задача, где самое сложное и интересное скрыто под капотом. Поэтому в этой части мы продолжаем кратно улучшать качество продукта.

Автор: tupperq

Источник

Рейтинг@Mail.ru
Rambler's Top100