Model Merging
Узнай, как слияние моделей объединяет несколько предобученных моделей в одну. Изучи способы объединения весов Ultralytics YOLO26 для повышения производительности без дополнительной задержки.
Объединение моделей — это инновационный метод в машинном обучении (ML), который сочетает изученные параметры (веса) нескольких предварительно обученных моделей в одну унифицированную модель. В отличие от традиционных многомодельных систем, объединение напрямую сливает веса модели в пространстве параметров. Это позволяет тебе совмещать специализированные знания нескольких моделей, дообученных на разных задачах или наборах данных, без необходимости нести расходы памяти и вычислительных ресурсов на одновременный запуск нескольких моделей.
Применяя операции непосредственно к весам, объединение моделей сохраняет архитектурный след одной нейросети. Это особенно ценно при развертывании передовых конвейеров компьютерного зрения (CV) на периферийных устройствах, где критически важно снизить задержку вывода и сэкономить память.
Link to this sectionРазграничение понятия объединения моделей#
Полезно отличать объединение моделей от схожих концепций, таких как ансамблирование моделей и трансферное обучение.
- Объединение моделей против ансамблирования: ансамбль моделей сохраняет отдельные нейросети по отдельности, запуская каждую во время вывода и усредняя их результаты. Это повышает точность, но увеличивает вычислительные затраты. Объединение моделей комбинирует фактические веса до вывода, что приводит к созданию одной модели, не требующей дополнительных вычислительных ресурсов во время работы.
- Объединение моделей против трансферного обучения: трансферное обучение подразумевает взятие базовой модели и ее дальнейшее обучение на новом наборе данных. Объединение моделей не требует дополнительного fine-tuning; оно использует математические операции для слияния уже обученных моделей.
Link to this sectionРаспространенные методы#
Исследователи разработали несколько способов эффективного объединения весов без разрушения базовых возможностей нейросети, что рассматривается в недавних научных публикациях на arXiv.
- Усреднение весов: самый простой метод, заключающийся в вычислении среднего значения весов из нескольких моделей, имеющих одинаковую архитектуру.
- Арифметика задач (Task Arithmetic): метод, при котором «векторы задач» (разница между дообученной моделью и ее базовой моделью) складываются или вычитаются для объединения или удаления определенных моделей поведения.
- TIES-Merging: продвинутый подход, который устраняет интерференцию параметров путем обрезки избыточных значений и выбора согласованных знаков в разных моделях, сохраняя производительность при выполнении разнообразных задач.
Link to this sectionРеальные приложения#
Объединение моделей весьма эффективно для создания обобщенных систем без переобучения с нуля.
- Автономные транспортные средства: беспилотный автомобиль может использовать базовую модель Ultralytics YOLO26. Инженеры могут независимо обучить одну версию модели распознавать тонкие движения пешеходов, а другую — читать сложные дорожные знаки. Объединение этих двух моделей создает единый высокопроизводительный детектор, который справляется с обеими задачами одновременно без увеличения времени вывода.
- ИИ в здравоохранении: в медицинской визуализации различные исследовательские больницы могут дообучать модели на специализированных локальных наборах данных (например, один для МРТ-сканирований, другой для КТ-сканирований) из-за строгих законов о конфиденциальности данных. Безопасно объединяя модели, исследователи могут создать комплексный диагностический инструмент, использующий преимущества разнообразных распределений данных.
Link to this sectionПример: простое усреднение весов#
Ты можешь легко выполнить базовое объединение моделей с помощью PyTorch. Следующий пример демонстрирует, как усреднить словари состояний (state dictionaries) двух моделей с идентичной структурой.
import torch
# Load the weights (state dicts) from two identical architectures
weights_a = torch.load("yolo26_task1.pt")["model"].state_dict()
weights_b = torch.load("yolo26_task2.pt")["model"].state_dict()
# Perform simple weight averaging
merged_weights = {k: (weights_a[k] + weights_b[k]) / 2.0 for k in weights_a.keys()}
# Save the newly merged model weights
torch.save({"model": merged_weights}, "yolo26_merged.pt")Для команд, стремящихся упростить сложные рабочие процессы аннотирования данных, обучения и развертывания, Ultralytics Platform предоставляет интуитивно понятный интерфейс для удобного управления проектами в области ИИ и компьютерного зрения от начала до конца.






