Model Merging
Descubre cómo la fusión de modelos combina múltiples modelos preentrenados en uno solo. Aprende a fusionar pesos de Ultralytics YOLO26 para aumentar el rendimiento sin latencia adicional.
La fusión de modelos es una técnica innovadora en machine learning (ML) que combina los parámetros aprendidos (pesos) de múltiples modelos preentrenados en un solo modelo unificado. A diferencia de las configuraciones tradicionales de múltiples 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 en diferentes tareas o conjuntos de datos sin incurrir en los costes de memoria y computación de ejecutar varios modelos simultáneamente.
Al aplicar operaciones directamente sobre los pesos, la fusión de modelos mantiene la huella arquitectónica de una sola red. Esto es especialmente valioso al desplegar pipelines avanzados de computer vision (CV) en dispositivos de borde, donde reducir la latencia de inferencia y ahorrar memoria son cruciales.
Diferenciar la fusión de modelos#
Resulta útil diferenciar la fusión de modelos de conceptos relacionados como Model Ensemble y Transfer Learning.
- Fusión de modelos frente a Model Ensemble: Un conjunto (ensemble) de modelos mantiene las redes individuales separadas, ejecutando cada una durante la inferencia y promediando sus resultados. Esto aumenta la precisión pero multiplica la carga 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 cómputo adicional en tiempo de ejecución.
- Model Merging vs. Transfer Learning: El transfer learning implica tomar un modelo base y entrenarlo adicionalmente en un nuevo conjunto de datos. La fusión de modelos no requiere fine-tuning adicional; utiliza operaciones matemáticas para fusionar modelos ya entrenados.
Técnicas comunes#
Los investigadores han desarrollado varios métodos para combinar eficazmente los pesos sin destruir las capacidades subyacentes de la red, tal como se explora en recientes investigaciones académicas en arXiv.
- Weight Averaging: El método más sencillo, que calcula la media de los pesos de múltiples modelos que comparten la misma arquitectura.
- Aritmética de tareas (Task Arithmetic): 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 o eliminar comportamientos específicos.
- TIES-Merging: Un enfoque avanzado que resuelve la interferencia de parámetros recortando valores redundantes y eligiendo signos consistentes entre los modelos, preservando el rendimiento en diversas tareas.
Aplicaciones en el mundo real#
La fusión de modelos es altamente efectiva para construir sistemas generalizados sin necesidad de reentrenar desde cero.
- Autonomous Vehicles: Un coche autónomo puede utilizar un modelo base de Ultralytics YOLO26. Los ingenieros pueden entrenar de forma independiente una versión del modelo para detectar movimientos sutiles de peatones y otra para leer señales de tráfico complejas. La fusión de estos dos modelos crea un único detector altamente capaz que maneja ambas tareas simultáneamente sin duplicar el tiempo de inferencia.
- AI in Healthcare: En imagen médica, diferentes hospitales de investigación pueden ajustar modelos en conjuntos de datos locales especializados (por ejemplo, uno para escáneres de resonancia magnética y otro para tomografías computarizadas) 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 diversas distribuciones de datos.
Ejemplo: Promedio simple de pesos#
Puedes realizar fácilmente una fusión de modelos básica utilizando PyTorch. El siguiente ejemplo demuestra cómo promediar los diccionarios de estados de dos modelos con idéntica estructura.
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 flujos de trabajo complejos de anotación de conjuntos de datos, entrenamiento y despliegue, la Ultralytics Platform proporciona una interfaz intuitiva para gestionar proyectos de visión artificial de extremo a extremo sin esfuerzo.






