Ultralytics YOLO27: Entre na lista de espera.
Licenciar o YOLO
Voltar ao glossário da Ultralytics

Model Merging

A fusão de modelos combina os pesos de modelos ajustados a partir de uma mesma base em um único modelo, sem custo adicional de inferência. Abrange o cálculo de médias e a aritmética de tarefas.

A fusão de modelos combina os pesos de dois ou mais modelos treinados num único modelo, geralmente calculando a média ou somando os seus parâmetros, para que o resultado preserve capacidades de cada modelo sem executar várias redes ou voltar a treiná-las com todos os respetivos dados. Funciona quando os modelos partilham uma arquitetura e, na maioria dos métodos, um ponto de partida pré-treinado comum: o ajuste fino desloca cada cópia apenas uma pequena distância no espaço dos pesos, pelo que os pesos do modelo continuam alinhados parâmetro a parâmetro. A fusão é amplamente usada para criar modelos de linguagem de grande porte (LLMs) abertos e combinar adaptadores LoRA ou checkpoints do Stable Diffusion; no pós-treino do Llama 3, a Meta calculou a média de modelos obtidos com diferentes dados ou hiperparâmetros em cada etapa.

Como funciona a fusão de modelos#

Os métodos de fusão diferem naquilo que combinam e na forma como resolvem conflitos entre modelos:

  • Sopas de modelos: calculam a média dos pesos de modelos ajustados a partir da mesma base com hiperparâmetros diferentes. Uma sopa gulosa de modelos ViT-G ajustados alcançou 90,94% de precisão top-1 no ImageNet, um resultado de ponta na altura.
  • Média estocástica dos pesos: calcula a média de checkpoints guardados em diferentes momentos de uma execução de treino, o que tende a fazer com que o modelo se estabilize numa região mais ampla e plana da superfície de perda.
  • Aritmética de tarefas: subtrai os pesos-base de cada modelo ajustado para obter um vetor de tarefa; em seguida, soma vetores de tarefa escalados à base para combinar competências, ou subtrai um vetor para remover um comportamento.
  • TIES-Merging: reduz a interferência entre vetores de tarefa em três etapas: redefine parâmetros que mudaram apenas ligeiramente durante o ajuste fino, escolhe um sinal para cada parâmetro e funde apenas os valores que concordam com esse sinal.
  • DARE: elimina aleatoriamente a maioria dos valores de cada vetor de tarefa e reescala os restantes antes da fusão, removendo alterações redundantes e preservando a capacidade de cada tarefa.

O cálculo da média durante uma única execução de treino também faz parte do treino normal. O treino da Ultralytics YOLO26 mantém uma média móvel exponencial (EMA) dos pesos do modelo juntamente com os pesos que estão a ser otimizados, com uma taxa de decaimento que aumenta até 0.9999 à medida que o treino avança; os checkpoints last.pt e best.pt que guarda contêm este modelo com pesos médios.

Os métodos de vetores de tarefa partilham a mesma estrutura: cada modelo ajustado é representado pela diferença em relação à base, as diferenças são depuradas e combinadas, e o resultado é somado novamente à base:

Ferramentas de código aberto como o mergekit implementam estas receitas para LLMs, além da interpolação esférica (SLERP) entre dois modelos.

Porque é importante partilhar um ponto de partida#

As unidades ocultas de uma rede neural podem ser reordenadas sem alterar os cálculos da rede; por isso, duas redes treinadas com inicializações aleatórias diferentes raramente armazenam a mesma característica na mesma posição, e calcular a média entre elas mistura pesos sem relação. Os modelos ajustados a partir da mesma base preservam a disposição original e permanecem na mesma região de baixa perda, pelo que a sua média continua a funcionar. Este exemplo treina um classificador pequeno em PyTorch com dígitos escritos à mão, ajusta duas cópias com metades diferentes dos dados de treino restantes e compara a fusão entre elas com a fusão de dois modelos treinados a partir de inicializações separadas:

import copy

import torch
from sklearn.datasets import load_digits
from torch import nn

torch.manual_seed(0)
X, y = load_digits(return_X_y=True)
order = torch.randperm(len(X))
X, y = torch.tensor(X / 16, dtype=torch.float32)[order], torch.tensor(y)[order]


def mlp():
    """Return a small classifier for 8x8 digit images."""
    return nn.Sequential(nn.Linear(64, 64), nn.ReLU(), nn.Linear(64, 64), nn.ReLU(), nn.Linear(64, 10))


def train(model, rows, steps):
    """Train a model with SGD on the given rows and return it."""
    optimizer = torch.optim.SGD(model.parameters(), lr=0.1, momentum=0.9)
    for _ in range(steps):
        optimizer.zero_grad()
        nn.functional.cross_entropy(model(X[rows]), y[rows]).backward()
        optimizer.step()
    return model


base = train(mlp(), slice(0, 300), 400)  # shared pretrained starting point
halves = (slice(300, 900), slice(900, 1500))  # two different fine-tuning datasets
for name, (a, b) in [
    ("fine-tuned from one base", [train(copy.deepcopy(base), rows, 100) for rows in halves]),
    ("trained from separate inits", [train(mlp(), rows, 400) for rows in halves]),
]:
    # Merge: average every weight tensor of the two models
    merged = copy.deepcopy(a)
    merged.load_state_dict({k: (a.state_dict()[k] + b.state_dict()[k]) / 2 for k in a.state_dict()})
    accuracy = [(m(X[1500:]).argmax(1) == y[1500:]).float().mean().item() for m in (a, b, merged)]
    print(f"{name}: {accuracy[0]:.3f} and {accuracy[1]:.3f}, merged {accuracy[2]:.3f}")

Nos 297 dígitos reservados para teste, os dois modelos ajustados a partir da mesma base obtêm pontuações de 0.956 e 0.946, e a média obtém 0.970, acima de ambos, porque combina o que cada um aprendeu com a sua metade dos dados. Os dois modelos treinados a partir de inicializações separadas obtêm 0.946 e 0.956, e a média desce para 0.808. O Git Re-Basin funde modelos treinados de forma independente permutando primeiro as unidades ocultas de um modelo para as alinhar com as do outro.

  • Ensemble de modelos: mantém todos os modelos e combina os respetivos resultados, pelo que o consumo de memória e a latência de inferência aumentam com o número de modelos. Um modelo fundido tem o tamanho e a velocidade de um único modelo.
  • Destilação de conhecimento: treina um novo modelo aluno para imitar um ou mais modelos professores, o que exige dados de treino e recursos computacionais. A fusão é uma operação aritmética direta sobre pesos existentes.
  • Treino multitarefa: treina um modelo com os dados de todas as tarefas em conjunto, o que geralmente define a precisão que a fusão procura alcançar sem acesso a esses dados.
  • Aprendizagem federada: calcula a média dos pesos de modelos treinados em dispositivos separados em cada ronda. Todas as rondas começam com os clientes a partir do mesmo modelo global, o ponto de partida partilhado que permite que a média funcione.

Explore as soluções

Visão computacional no desporto

Visão computacional no desporto

Descubra como o Ultralytics YOLO impulsiona a visão computacional no esporte com rastreamento de jogadores e bolas, análise de desempenho, insights para treinadores e reabilitação de atletas.
Saiba mais
Visão computacional para imagens aéreas

Visão computacional para imagens aéreas

Transforma imagens de drones e aéreas em informações em tempo real para a agricultura, a aquacultura, a conservação e a análise geoespacial com Ultralytics YOLO.
Saiba mais
Visão computacional no setor aeroespacial

Visão computacional no setor aeroespacial

Aplica visão computacional na indústria aeroespacial com Ultralytics YOLO para inspecionar aeronaves, detetar objetos estranhos na pista (FOD), apoiar operações aeroportuárias em terra e detetar defeitos em materiais compósitos.
Saiba mais
Visão computacional na segurança

Visão computacional na segurança

Protege todas as instalações com os modelos Ultralytics YOLO. A IA visual permite monitorizar perímetros, detetar ameaças, reconhecer matrículas e melhorar a segurança no local de trabalho.
Saiba mais
Visão computacional na robótica

Visão computacional na robótica

Potencia máquinas mais inteligentes com os modelos Ultralytics YOLO. A IA visual na robótica permite navegação autónoma, perceção, rastreamento de objetos e controlo em tempo real.
Saiba mais
Visão computacional na logística

Visão computacional na logística

Otimize a logística com os modelos Ultralytics YOLO. A IA de visão permite inspecionar pacotes, fazer triagem, rastrear veículos e monitorar a segurança em tempo real nos armazéns.
Saiba mais
Visão computacional no varejo

Visão computacional no varejo

Reinvente o varejo com os modelos Ultralytics YOLO. A IA de visão permite rastrear o estoque, monitorar prateleiras, gerenciar filas e obter insights mais inteligentes sobre clientes.
Saiba mais
Visão computacional na área da saúde

Visão computacional na área da saúde

Desenvolva soluções de saúde com os modelos Ultralytics YOLO. A IA de visão na área da saúde permite obter imagens médicas mais rapidamente, diagnósticos mais inteligentes e monitoramento de pacientes.
Saiba mais
Visão computacional na manufatura

Visão computacional na manufatura

Otimize a manufatura com modelos Ultralytics YOLO. A IA visual impulsiona o controle de qualidade, a detecção de defeitos, a conformidade com o uso de EPI e a automação da linha de montagem.
Saiba mais
Visão computacional no setor automotivo

Visão computacional no setor automotivo

Aplique visão computacional no setor automotivo com modelos Ultralytics YOLO. A IA visual aumenta a segurança viária, aprimora a assistência ao condutor e viabiliza a automação de veículos para estradas mais inteligentes.
Saiba mais
Visão computacional na agricultura

Visão computacional na agricultura

Leve a IA de visão à agricultura inteligente com os modelos Ultralytics YOLO. Aprimore o monitoramento de plantações, o rastreamento de animais e a agricultura de precisão para obter safras maiores e mais inteligentes.
Saiba mais

Vamos construir juntos o futuro da IA!

Comece sua jornada rumo ao futuro do aprendizado de máquina