Model Merging
Descubre cómo la combinación de modelos fusiona varios modelos preentrenados en uno solo. Aprende a fusionar los pesos de Ultralytics YOLO26 para mejorar el rendimiento sin añadir latencia.
La fusión de modelos es una técnica innovadora de aprendizaje automático (ML) que combina los parámetros aprendidos (pesos) de varios modelos preentrenados en un único modelo unificado. A diferencia de las configuraciones tradicionales con varios modelos, la fusión combina directamente los pesos del modelo en el espacio de parámetros. Esto permite a los profesionales combinar el conocimiento especializado de varios modelos ajustados para distintas tareas o conjuntos de datos sin asumir los costes de memoria y computación de ejecutar varios modelos simultáneamente.
Al aplicar operaciones directamente a los pesos, la fusión de modelos mantiene la huella arquitectónica de una única red. Esto resulta especialmente valioso al implementar canalizaciones avanzadas de visión artificial (CV) en dispositivos periféricos, donde reducir la latencia de inferencia y ahorrar memoria son aspectos fundamentales.
Diferencias de la fusión de modelos#
Es útil diferenciar la fusión de modelos de conceptos relacionados, como el ensamblado de modelos y el aprendizaje por transferencia.
- Fusión de modelos frente a ensamblado de modelos: Un ensamblado de modelos mantiene separadas las redes individuales, ejecuta cada una durante la inferencia y promedia sus salidas. Esto aumenta la precisión, pero multiplica la sobrecarga computacional. La fusión de modelos combina los pesos reales antes de la inferencia, lo que da como resultado un único modelo que no requiere capacidad de cómputo adicional durante la ejecución.
- Fusión de modelos frente a aprendizaje por transferencia: El aprendizaje por transferencia consiste en tomar un modelo base y seguir entrenándolo con un conjunto de datos nuevo. La fusión de modelos no requiere ningún ajuste fino adicional; utiliza operaciones matemáticas para fusionar modelos ya entrenados.
Técnicas habituales#
Los investigadores han desarrollado varios métodos para combinar pesos de forma eficaz sin destruir las capacidades subyacentes de la red, como se analiza en investigaciones académicas recientes en arXiv.
- Promediado de pesos: El método más sencillo, que calcula la media de los pesos de varios modelos con la misma arquitectura.
- Aritmética de tareas: Una técnica en la que se suman o restan «vectores de tarea» (la diferencia entre un modelo ajustado y su modelo base) para combinar comportamientos específicos o eliminarlos.
- Fusión TIES: Un enfoque avanzado que resuelve la interferencia entre parámetros recortando valores redundantes y seleccionando signos coherentes entre los modelos, preservando el rendimiento en tareas diversas.
Aplicaciones en el mundo real#
La fusión de modelos resulta muy eficaz para crear sistemas generalizados sin tener que volver a entrenarlos desde cero.
- Vehículos autónomos: Un coche autónomo podría utilizar un modelo base Ultralytics YOLO26. Los ingenieros pueden entrenar de forma independiente una versión del modelo para detectar movimientos sutiles de los peatones y otra para leer señales de tráfico complejas. Fusionar estos dos modelos crea un único detector muy capaz que gestiona ambas tareas simultáneamente sin duplicar el tiempo de inferencia.
- AI en sanidad: En el diagnóstico por imagen, distintos hospitales de investigación podrían ajustar modelos con conjuntos de datos locales especializados (por ejemplo, uno para imágenes de MRI y otro para imágenes de CT) debido a las estrictas leyes de privacidad de datos. Al fusionar los modelos de forma segura, los investigadores pueden crear una herramienta de diagnóstico integral que se beneficie de distribuciones de datos diversas.
Ejemplo: promediado sencillo de pesos#
Puedes realizar fácilmente una fusión básica de modelos con PyTorch. El siguiente ejemplo muestra cómo promediar los diccionarios de estado de dos modelos con una estructura idéntica.
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")Para los equipos que buscan simplificar los complejos flujos de trabajo de anotación de conjuntos de datos, entrenamiento e implementación, la Ultralytics Platform ofrece una interfaz intuitiva para gestionar proyectos de AI de visión de extremo a extremo sin esfuerzo.









