Yolo 비전 선전
선전
지금 참여하기
용어집

모델 병합

모델 병합이 여러 개의 사전 훈련된 모델을 하나로 통합하는 방식을 알아보세요. 추가 지연 시간 없이 성능을 향상시키기 위해 Ultralytics 가중치를 융합하는 방법을 배워보세요.

모델 병합은 기계 학습(ML) 분야에서, 여러 개의 사전 훈련된 모델에서 학습된 매개변수(가중치)를 하나의 통합된 모델로 결합하는 혁신적인 기법입니다. 기존의 다중 모델 구성과 달리, 병합은 매개변수 공간에서 모델 가중치를 직접 융합합니다. 이를 통해 실무자는 서로 다른 작업이나 데이터셋에 대해 미세 조정된 여러 모델의 전문 지식을 결합할 수 있으며, 여러 모델을 동시에 실행할 때 발생하는 메모리 및 계산 비용을 부담하지 않아도 됩니다.

모델 병합은 가중치에 직접 연산을 적용함으로써 단일 네트워크의 아키텍처 구조를 유지합니다. 이는 추론 지연 시간을 줄이고 메모리를 절약하는 것이 매우 중요한 엣지 디바이스에 고급 컴퓨터 비전(CV) 파이프라인을 배포할 때 특히 유용합니다.

모델 통합의 구분

모델 병합을 다음과 같은 관련 개념들과 구분해 두는 것이 도움이 됩니다. 모델 앙상블과 전이 학습.

  • 모델 병합 대 모델 앙상블: 모델 앙상블은 개별 신경망을 분리된 상태로 유지하며, 추론 단계에서 각 모델을 실행한 후 그 출력을 평균화합니다. 이는 정확도를 높여주지만 계산 오버헤드를 가중시킵니다. 모델 병합은 추론 전에 실제 가중치를 결합하여, 추가적인 실행 시간 계산이 필요 없는 단일 모델을 생성합니다.
  • 모델 병합 대 전이 학습: 전이 학습은 기본 모델을 가져와 새로운 데이터셋으로 추가 훈련을 진행하는 방식입니다. 반면 모델 병합은 별도의 미세 조정이 필요하지 않으며, 수학적 연산을 통해 이미 훈련된 모델들을 융합합니다.

일반적인 기법

연구자들은 네트워크의 근본적인 능력을 훼손하지 않으면서 가중치를 효과적으로 결합하는 여러 가지 방법을 개발했으며, 이는 최근 arXiv에 게재된 학술 연구에서 다루어졌다.

  • 가중치 평균화: 동일한 아키텍처를 공유하는 여러 모델의 가중치 평균을 구하는 가장 간단한 방법입니다.
  • 작업 산술: “작업 벡터”(미세 조정된 모델과 그 기본 모델 간의 차이)를 더하거나 뺄셈하여 특정 행동을 결합하거나 제거하는 기법.
  • TIES-Merging: 중복된 값을 제거하고 모델 간 일관된 부호를 선택함으로써 매개변수 간 간섭을 해결하는 고급 접근법으로, 다양한 작업에서 성능을 유지합니다.

실제 애플리케이션

모델 병합은 처음부터 다시 학습하지 않고도 일반화된 시스템을 구축하는 데 매우 효과적이다.

  • 자율주행 차량: 자율주행차는 Ultralytics 기본 모델을 사용할 수 있습니다. 엔지니어들은 한 모델 버전은 detect 보행자 움직임을 detect , 다른 모델은 복잡한 도로 표지판을 인식하도록 각각 독립적으로 훈련시킬 수 있습니다. 이 두 모델을 통합하면 추론 시간을 두 배로 늘리지 않고도 두 작업을 동시에 처리할 수 있는 단일의 고성능 감지기를 만들 수 있습니다.
  • 의료 분야의 AI: 의료 영상 분야에서, 엄격한 데이터 개인정보 보호법 때문에 각 연구 병원은 전문적인 지역 데이터 세트(예: MRI 스캔용 하나, CT 스캔용 하나)를 기반으로 모델을 미세 조정할 수 있습니다. 연구자들은 이러한 모델들을 안전하게 통합함으로써, 다양한 데이터 분포의 이점을 활용하는 포괄적인 진단 도구를 개발할 수 있습니다.

예시: 단순 가중 평균

다음과 같이 기본적인 모델 병합을 쉽게 수행할 수 있습니다. 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 프로젝트를 손쉽게 관리할 수 있게 해줍니다.

함께 AI의 미래를 만들어 갑시다!

미래의 머신러닝 여정을 시작하세요