Model Merging
Descubra como a fusão de modelos combina vários modelos pré-treinados num só. Saiba como fundir pesos do Ultralytics YOLO26 para aumentar o desempenho sem latência adicional.
A combinação de modelos é uma técnica inovadora em aprendizagem automática (ML) que combina os parâmetros aprendidos (pesos) de vários modelos pré-treinados num único modelo unificado. Ao contrário das configurações tradicionais com vários modelos, a combinação funde diretamente os pesos do modelo no espaço de parâmetros. Isto permite aos profissionais combinar o conhecimento especializado de vários modelos ajustados para diferentes tarefas ou conjuntos de dados, sem incorrer nos custos de memória e computação associados à execução simultânea de vários modelos.
Ao aplicar operações diretamente aos pesos, a combinação de modelos mantém a estrutura arquitetural de uma única rede. Isto é particularmente valioso ao implementar pipelines avançados de visão computacional (CV) em dispositivos de edge, onde reduzir a latência de inferência e poupar memória são fatores críticos.
Diferenciar a Combinação de Modelos#
É útil diferenciar a combinação de modelos de conceitos relacionados, como conjunto de modelos e aprendizagem por transferência.
- Combinação de Modelos vs. Conjunto de Modelos: Um conjunto de modelos mantém as redes individuais separadas, executando cada uma durante a inferência e calculando a média das suas saídas. Isto aumenta a precisão, mas multiplica a sobrecarga computacional. A combinação de modelos combina os próprios pesos antes da inferência, resultando num único modelo que não requer computação adicional em tempo de execução.
- Combinação de Modelos vs. Aprendizagem por Transferência: A aprendizagem por transferência consiste em pegar num modelo base e treiná-lo posteriormente com um novo conjunto de dados. A combinação de modelos não requer ajuste fino adicional; utiliza operações matemáticas para fundir modelos já treinados.
Técnicas Comuns#
Os investigadores desenvolveram vários métodos para combinar pesos de forma eficaz sem destruir as capacidades subjacentes da rede, conforme explorado em investigação académica recente no arXiv.
- Média dos Pesos: O método mais simples, que calcula a média dos pesos de vários modelos com a mesma arquitetura.
- Aritmética de Tarefas: Uma técnica em que "vetores de tarefa" (a diferença entre um modelo ajustado e o seu modelo base) são adicionados ou subtraídos para combinar ou remover comportamentos específicos.
- TIES-Merging: Uma abordagem avançada que resolve a interferência entre parâmetros ao eliminar valores redundantes e selecionar sinais consistentes entre os modelos, preservando o desempenho em diversas tarefas.
Aplicações no mundo real#
A combinação de modelos é altamente eficaz para criar sistemas generalizados sem os treinar novamente de raiz.
- Veículos Autónomos: Um carro autónomo pode utilizar um modelo base Ultralytics YOLO26. Os engenheiros podem treinar de forma independente uma versão do modelo para detetar movimentos subtis de peões e outra para ler sinais rodoviários complexos. A combinação destes dois modelos cria um único detetor altamente capaz, que lida com ambas as tarefas simultaneamente sem duplicar o tempo de inferência.
- AI na Área da Saúde: Na imagiologia médica, diferentes hospitais de investigação podem ajustar modelos com conjuntos de dados locais especializados (por exemplo, um para exames de MRI e outro para exames de CT) devido a leis rigorosas de privacidade dos dados. Ao combinar os modelos de forma segura, os investigadores podem criar uma ferramenta de diagnóstico abrangente que beneficia de distribuições de dados diversificadas.
Exemplo: Média Simples dos Pesos#
Podes executar facilmente uma combinação básica de modelos utilizando PyTorch. O exemplo seguinte demonstra como calcular a média dos dicionários de estado de dois modelos com estruturas idênticas.
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 as equipas que procuram simplificar os complexos fluxos de trabalho de anotação de conjuntos de dados, treino e implementação, a Ultralytics Platform disponibiliza uma interface intuitiva para gerir projetos de IA de visão de ponta a ponta com facilidade.









