모델 병합이 여러 개의 사전 훈련된 모델을 하나로 통합하는 방식을 알아보세요. 추가 지연 시간 없이 성능을 향상시키기 위해 Ultralytics 가중치를 융합하는 방법을 배워보세요.
모델 병합은 기계 학습(ML) 분야에서, 여러 개의 사전 훈련된 모델에서 학습된 매개변수(가중치)를 하나의 통합된 모델로 결합하는 혁신적인 기법입니다. 기존의 다중 모델 구성과 달리, 병합은 매개변수 공간에서 모델 가중치를 직접 융합합니다. 이를 통해 실무자는 서로 다른 작업이나 데이터셋에 대해 미세 조정된 여러 모델의 전문 지식을 결합할 수 있으며, 여러 모델을 동시에 실행할 때 발생하는 메모리 및 계산 비용을 부담하지 않아도 됩니다.
모델 병합은 가중치에 직접 연산을 적용함으로써 단일 네트워크의 아키텍처 구조를 유지합니다. 이는 추론 지연 시간을 줄이고 메모리를 절약하는 것이 매우 중요한 엣지 디바이스에 고급 컴퓨터 비전(CV) 파이프라인을 배포할 때 특히 유용합니다.
모델 병합을 다음과 같은 관련 개념들과 구분해 두는 것이 도움이 됩니다. 모델 앙상블과 전이 학습.
연구자들은 네트워크의 근본적인 능력을 훼손하지 않으면서 가중치를 효과적으로 결합하는 여러 가지 방법을 개발했으며, 이는 최근 arXiv에 게재된 학술 연구에서 다루어졌다.
모델 병합은 처음부터 다시 학습하지 않고도 일반화된 시스템을 구축하는 데 매우 효과적이다.
다음과 같이 기본적인 모델 병합을 쉽게 수행할 수 있습니다. PyTorch를 사용하여 쉽게 수행할 수 있습니다. 다음 예제는 구조가 동일한 두 모델의 상태 딕셔너리를 평균화하는 방법을 보여줍니다.
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")
데이터셋 주석 달기, 훈련, 배포와 같은 복잡한 워크플로를 간소화하고자 하는 팀을 위해, Ultralytics 직관적인 인터페이스를 제공하여 엔드투엔드 비전 AI 프로젝트를 손쉽게 관리할 수 있게 해줍니다.
미래의 머신러닝 여정을 시작하세요