Динамический LoRA на AMD Ryzen AI

Источник: AMD•

Динамический LoRA на AMD Ryzen AI

Изучите динамический LoRA на базе AMD Ryzen™ AI для переключения адаптеров во время инференса, снижения нагрузки на память и эффективного развертывания специализированных LLM на ПК с Искусственным Интеллектом.

Тонкая настройка с помощью LoRA стала стандартным способом для локальных разработчиков ИИ превратить универсальную LLM в узкоспециализированную. Несколько миллионов параметров адаптера поверх замороженной базовой модели могут научить ее писать код SQL, отвечать на вопросы в определенной предметной области или следовать корпоративному стилю без затрат на полноценное дообучение. Но на ПК с ИИ интересен не только вопрос обучения адаптера. Важно то, как эффективно развернуть несколько таких адаптеров на NPU.

С помощью программного обеспечения Ryzen™ AI Software теперь можно скомпилировать базовую модель один раз и переключать LoRA-адаптеры динамически во время инференса. Одна квантованная базовая модель остается в памяти NPU, а небольшие адаптеры активируются по имени. В текущем релизе динамический LoRA поддерживается для выбранных моделей: Qwen2.5-3B, Qwen3-4B, Qwen3.5-4B (текст). В этой статье объясняется, почему это важно и как работает сквозной процесс.

Почему динамический подход лучше статического слияния

До сих пор поддерживаемым способом запуска дообученной модели на Ryzen AI было статическое слияние. Вы внедряете веса LoRA в базовую модель, а затем компилируете объединенную модель в единый бинарный файл для NPU. Это работает для одного адаптера. Для множества адаптеров такой подход масштабируется плохо.

Каждая объединенная модель представляет собой полную копию базовой. Если у вас есть пять специализированных адаптеров для одной и той же базовой модели, вам приходится поставлять и загружать пять полных бинарных файлов, каждый из которых дублирует массивные веса базы, в то время как реально отличающаяся часть (адаптер) имеет крошечный размер. На ПК с ограниченным объемом памяти это неэффективно. Это также означает, что переключение «персонажей» внутри приложения требует загрузки совершенно другой модели.

Динамический LoRA устраняет это дублирование. Базовая модель компилируется один раз. Адаптеры компилируются в небольшие загружаемые артефакты. Во время выполнения одна базовая модель обслуживает их все, а ваше приложение выбирает активный адаптер для каждого запроса. Переход от специалиста по SQL к медицинскому специалисту представляет собой дешевое переключение адаптера, а не перезагрузку модели.

Главное условие: обучение на основе квантованной базы

Здесь есть скрытая ловушка, о которой стоит упомянуть. На NPU базовая модель квантована. В нашем примере это INT4. Если вы обучаете LoRA на модели с высокой точностью, а затем применяете ее к квантованной базе, исправление, которому научился адаптер, больше не совпадает с весами, к которым оно добавляется, и большая часть его преимуществ на устройстве исчезает.

Решение простое. Обучайте адаптер на уже квантованной базе. База остается замороженной и квантованной в процессе дообучения, а обучается только адаптер. Полученный адаптер корректно работает именно с той моделью, которую вы развертываете.

Сквозной процесс

Процесс состоит из четырех этапов, и только последний выполняется на ПК с Ryzen™ AI.

  • Квантуйте базовую модель один раз с помощью AMD Quark (INT4 AWQ). Эта база используется совместно всеми адаптерами.
  • Дообучите каждый LoRA-адаптер на этой замороженной квантованной базе и сохраните его в несмешанном виде.
  • Скомпилируйте базу и каждый адаптер для NPU с помощью всего одного вызова model_generate для каждого адаптера.
  • Запустите обслуживание с динамическим переключением. Загрузите базу один раз, а затем активируйте любой адаптер по имени.

Во время выполнения переключение выполняется одним вызовом.

Базовая модель никогда не перезагружается. Одна и та же загруженная модель отвечает как разные специалисты в зависимости от того, какой адаптер активен.

Результаты работы

В нашем примере обучаются два адаптера на одной базе Qwen3-4B INT4: адаптер «текст-в-SQL» (Spider) и медицинский адаптер с множественным выбором (MedMCQA). При работе на NPU Ryzen AI каждый адаптер демонстрирует измеримый прирост точности выполнения задач по сравнению с базовой моделью (оба варианта оценивались на выборке n=200 примеров).

Задача

Метрика

База

LoRA

Дельта

Spider текст-в-SQL

точность выполнения

47.5%

63.0%

+15.5

MedMCQA медицинская

точное совпадение

42.0%

53.0%

+11.0

Оба результата ниже получены от одной и той же загруженной модели в рамках одной сессии с разницей в один вызов set_active_adapter:

Попробуйте самостоятельно

Полный и готовый к запуску пример опубликован в репозитории примеров Ryzen AI Software . В нем пошагово описаны все этапы: квантование, подготовка данных, тонкая настройка LoRA на основе квантованной базы, компиляция для NPU и скрипт динамического переключения, который формирует представленные здесь результаты. Клонируйте репозиторий, обучите собственные адаптеры на своих данных с использованием одной из поддерживаемых моделей и переключайте их «на лету» на вашем ПК с Ryzen AI.

Динамический LoRA превращает одну постоянно загруженную базовую модель в любое количество специалистов, необходимое вашему приложению, без необходимости платить полную стоимость модели за каждого из них. Это небольшое изменение в подходе к развертыванию дообученных моделей и радикальное улучшение того, сколько из них вы можете позволить себе запустить на ПК с ИИ.

Динамический LoRA поддерживается в программном обеспечении Ryzen AI версии 1.9, в которой также представлена поддержка длинного контекста, импорт квантованных в INT4 моделей, полученных с помощью квантования с учетом обучения (QAT), и поддержка дополнительных моделей. Подробности см. в примечаниях к выпуску Ryzen AI.

О чём эта статья

Ещё в разделе «Hardware и электроника»

Все →

Ещё от AMD