Descubre cómo la fusión de modelos combina varios modelos preentrenados en uno solo. Aprende a fusionar los pesos Ultralytics para mejorar el rendimiento sin aumentar la latencia.
La fusión de modelos es una técnica innovadora en el 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 multimodelo tradicionales, la fusión combina directamente los pesos de los modelos en el espacio de parámetros. Esto permite a los profesionales combinar el conocimiento especializado de varios modelos ajustados para diferentes tareas o conjuntos de datos sin incurrir en los costes de memoria y computación que supone ejecutar múltiples modelos simultáneamente.
Al aplicar las operaciones directamente a los pesos, la fusión de modelos mantiene la huella arquitectónica de una sola red. Esto resulta especialmente valioso a la hora de implementar flujos de trabajo avanzados de visión artificial (CV) en dispositivos periféricos, donde reducir la latencia de inferencia y ahorrar memoria es fundamental.
Es útil diferenciar la fusión de modelos de conceptos relacionados como el conjunto de modelos y el aprendizaje por transferencia.
Los investigadores han desarrollado varios métodos para combinar eficazmente los pesos sin mermar las capacidades subyacentes de la red, tal y como se analiza en recientes investigaciones académicas publicadas en arXiv.
La fusión de modelos resulta muy eficaz para crear sistemas generalizados sin necesidad de volver a entrenar los modelos desde cero.
Puedes realizar fácilmente fusiones básicas de modelos utilizando PyTorch. El siguiente ejemplo muestra cómo calcular la media de 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 desean simplificar los complejos flujos de trabajo relacionados con la anotación, el entrenamiento y la implementación de conjuntos de datos, la Ultralytics ofrece una interfaz intuitiva que permite gestionar proyectos de IA de visión de principio a fin sin esfuerzo.
Comience su viaje con el futuro del aprendizaje automático