Model Merge

model merge — смешивание совместимых весов моделей

Раздел
Обучение
Обновлено
11.08.26

Model Merge создаёт новую модель из весов нескольких совместимых моделей. Простое смешивание интерполирует одинаковые тензоры, delta merge переносит разницу между чекпоинтами, а block merge задаёт отдельные пропорции для групп слоёв. Это не обучение и не гарантия, что лучшие свойства источников сложатся.

Коротко

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

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

Что именно смешивается

У генеративной модели миллионы или миллиарды числовых параметров. Они собраны в тензоры: многомерные таблицы с именами, формами и определённым местом в архитектуре.

Простое смешивание проходит по совпадающим тензорам двух моделей и для каждой пары считает новое значение. В условной записи:

M = r × A + (1 − r) × B

Если r = 0,7, в арифметике каждого совместимого тензора участвуют 70% A и 30% B. Это не значит, что результат будет выглядеть «на 70% как A». Нейросеть нелинейна: небольшая правка весов иногда едва заметна, а иногда сильно меняет композицию, фактуру или реакцию на слова.

Словом checkpoint часто называют файл, в котором лежит сразу несколько компонентов. Например, загрузчик ComfyUI может вернуть:

  • MODEL — основную диффузионную модель;
  • CLIP — один или несколько текстовых энкодеров;
  • VAE — кодировщик и декодировщик изображений.

Это важное разделение. Встроенные ModelMergeSimple и ModelMergeBlocks смешивают объект MODEL. Для CLIP в ComfyUI есть отдельные merge-узлы, а VAE перед сохранением выбирается отдельно. Новый чекпоинт может соединить смешанный MODEL с CLIP и VAE одного из источников — или с отдельно подготовленными компонентами.

Что значит «совместимые модели»

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

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

Хороший мысленный образ — две прозрачные печатные формы. Их можно ровно наложить, только когда сетка и размеры совпадают. Но даже при точном совмещении итоговый рисунок зависит от того, что нанесено на каждую форму.

Основные способы merge

Простая интерполяция

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

В интерфейсах направление коэффициента бывает разным. В актуальной реализации ComfyUI параметр ratio относится к доле model1: значение 1 оставляет первый MODEL, значение 0 — второй. Перед серией экспериментов полезно проверить крайние значения, а не переносить привычку из другой программы.

Delta merge

Здесь смешиваются не две готовые модели, а изменение между ними:

M = A + k × (B − C)

Допустим, B — дообученная версия C. Разность B − C приблизительно описывает сдвиг, появившийся при дообучении. Этот сдвиг добавляется к A с коэффициентом k.

В ComfyUI такую схему можно собрать из ModelMergeSubtract и ModelMergeAdd. Она особенно чувствительна к происхождению исходников: случайная разность двух несвязанных моделей не превращается в аккуратно выделенный «стиль».

Block merge

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

Это даёт больше контроля, но не превращает слои в подписанные ползунки «композиция», «лицо» и «детали». Разные признаки распределены по сети, а их роль зависит от архитектуры и обучения. Значения приходится оценивать по изображениям, а не по красивой легенде о слоях.

Как выглядит workflow в ComfyUI

Минимальный граф состоит из двух загрузчиков чекпоинтов и ModelMergeSimple. Из загрузчиков в merge-узел идут выходы MODEL; его результат можно подключить к обычному sampling-графу и проверить, не сохраняя новый файл.

Для полного чекпоинта схема продолжается так:

  1. Смешанный MODEL поступает в CheckpointSave.
  2. В тот же узел отдельно передаются выбранные CLIP и VAE.
  3. CheckpointSave сохраняет комплект в формате .safetensors.

Если нужен смешанный текстовый энкодер, его собирают отдельным узлом вроде CLIPMergeSimple. Это независимое решение: коэффициент CLIP не обязан совпадать с коэффициентом MODEL.

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

Как сравнить варианты без самообмана

Один удачный seed почти ничего не говорит о поведении новой модели. Более честная проверка использует небольшой постоянный набор сцен: портрет, несколько объектов, сложную позу, интерьер, текстуры, свет и те темы, ради которых затевался merge.

Между вариантами сохраняют одинаковыми:

Так видно, что изменил именно merge. Для каждого коэффициента полезнее смотреть несколько seed, потому что выигрыш на одной композиции может сопровождаться потерей устойчивости на другой.

Универсального «лучшего процента» нет. Значение зависит от конкретной пары весов, задачи и даже от того, какой источник подключён как model1. Поэтому набор вроде 0,25 / 0,5 / 0,75 — лишь удобная сетка для первого обзора, а не рецепт качества.

Merge, fine-tuning, LoRA и model soup

  • Fine-tuning меняет веса через обучение на данных. Merge не видит датасет и только комбинирует готовые параметры.
  • LoRA хранит компактную поправку к весам и обычно применяется во время загрузки модели. Её можно слить с базой, но это необратимо в новом файле: силу эффекта уже нельзя выключить обычным ползунком LoRA.
  • Ансамбль запускает несколько моделей и объединяет их предсказания. Merge создаёт один набор весов и не требует держать все источники в инференсе.
  • Model soup — близкая академическая идея: усреднение совместимых чекпоинтов, часто полученных fine-tuning одной исходной модели с разными настройками. В статье о model soups авторы показали, что такое усреднение иногда улучшает качество без дополнительной стоимости инференса, но это не доказательство пользы любой случайной смеси.
  • Quantization меняет представление чисел ради памяти и скорости. Она не равна смешиванию и решает другую задачу.

Что чаще всего ломает результат

Несовместимая архитектура

Разные формы тензоров нельзя корректно усреднить. Конвертация названий ключей не делает разные архитектуры совместимыми по смыслу.

Смешивание всего чекпоинта «одним процентом»

У MODEL, CLIP и VAE разные роли. Если инструмент показывает один общий ползунок, стоит выяснить, какие части файла он действительно меняет и какие компоненты попадут в сохранённый результат.

Слишком длинная цепочка без журнала

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

Оценка по чужому превью

Превью показывает сочетание модели, промпта, seed, sampling и постобработки. Оно не гарантирует, что merge устойчив на других сценах. Сетка с одинаковыми настройками даёт гораздо больше информации.

Ожидание нового навыка из ниоткуда

Merge может сохранить, ослабить или неожиданно соединить уже существующие представления. Но он не заменяет данные и обучение, если нужного поведения нет в исходных моделях.

Формат файла и безопасность

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

Само расширение не делает весь процесс доверенным. Рядом с моделью могут распространяться конфиги, скрипты, расширения и custom nodes — это уже исполняемый код. Источник файлов, контрольные суммы и список установленных дополнений по-прежнему важны.

Лицензии не смешиваются арифметикой

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

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

Частые вопросы

Нужна ли видеокарта для merge?

Сама арифметика может выполняться на CPU, GPU или с выгрузкой частей модели — это зависит от программы. Практическое ограничение чаще связано с памятью, размером весов и скоростью чтения и записи. Универсального времени и объёма RAM для всех архитектур нет.

Уменьшается ли размер модели после смешивания?

Обычно нет. Если архитектура и числовой формат остались прежними, число параметров тоже остаётся прежним. Размер меняют отдельными операциями: выбором precision, pruning или quantization.

Можно ли смешать больше двух моделей?

Да, напрямую или последовательной цепочкой. Но итоговые доли легко посчитать неверно. Например, повторный merge 50/50 не даёт автоматически равные доли всех прежних источников. Формулу лучше раскрывать до исходных моделей.

Можно ли отменить merge?

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

Почему два инструмента дают разные результаты при одинаковой цифре?

Они могут по-разному трактовать направление коэффициента, набор смешиваемых ключей, precision, пропущенные компоненты и порядок операций. Сравнение крайних значений и документации быстро обнаруживает большую часть расхождений.

Первоисточники

Главное

Model Merge — это арифметика над совместимыми весами, а не короткий путь к гарантированно «лучшей» модели. Простая интерполяция смешивает одинаковые тензоры одной пропорцией, delta merge переносит разницу, block merge меняет доли по группам слоёв. В ComfyUI MODEL, CLIP и VAE собираются осознанно и сохраняются вместе только на последнем шаге. Качество видно не по формуле, а по повторяемому сравнению на одинаковых сценах и настройках.