Тонкая настройка с помощью 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.











