같은 베이스 모델에서 파인튜닝한 모델 여러 개의 가중치를 계산으로 합쳐 추가 학습 없이 새 모델 하나를 만드는 기법이다. 코딩용·한국어용처럼 따로 특화한 능력을 한 모델에 모을 때 쓰며, 여러 모델을 함께 돌리는 앙상블과 달리 결과물이 모델 하나라 추론 비용이 늘지 않는다.
| 방법 | 추가 학습 | 결과물 | 추론 비용 |
|---|---|---|---|
| 모델 병합 | 없음 | 모델 1개 | 그대로 |
| 파인튜닝 | 필요 | 모델 1개 | 그대로 |
| 앙상블 | 없음 | 모델 여러 개 | 개수만큼 늘어남 |
가중치를 칸칸이 더하는 방식이라 구조와 크기가 같아야 하고, 보통은 같은 베이스 모델에서 갈라져 나온 모델이어야 잘 섞인다. 서로 다른 계열의 모델이나 토크나이저가 다른 모델은 그대로 합칠 수 없다. 병합 전에 각 모델 카드에서 베이스 모델이 무엇인지부터 확인한다.
직접 해 볼 때는 Hugging Face에 올라온 모델과 오픈소스 도구 mergekit을 많이 쓴다. YAML 파일에 merge_method(방법), base_model(베이스), models(섞을 모델 목록)와 모델별 비중(weight)을 적고 mergekit-yaml config.yml ./merged를 실행하면 된다. GPU 없이 CPU와 넉넉한 메모리만으로도 돌릴 수 있다.
순서는 단순하다. 같은 베이스의 특화 모델을 고르고, 비중을 바꿔 가며 여러 버전을 만든 뒤, 내 작업으로 평가해 가장 나은 것을 남긴다.
단순 평균은 비슷한 모델끼리는 잘 되지만, 모델이 많아질수록 서로 바꾼 부분이 부딪혀 성능이 떨어진다. 그래서 충돌을 줄이는 방법들이 나왔다.
| 방법 | 원리 (쉽게) | 이럴 때 |
|---|---|---|
| 평균 (Model Soup) | 가중치를 그대로 평균 | 같은 작업을 설정만 바꿔 학습한 모델들 |
| SLERP | 두 모델 사이를 부드럽게 보간 | 모델 두 개를 섞을 때 |
| TIES | 작은 변화는 버리고, 방향이 엇갈리면 다수 쪽을 따름 | 모델 세 개 이상 |
| DARE | 변화량 일부를 무작위로 버리고 나머지를 키움 | TIES와 함께 충돌을 더 줄일 때 |
병합 결과는 미리 예측하기 어렵다. 한 능력이 좋아지는 대신 다른 능력이 떨어지거나, 답변 형식이 흐트러질 수 있다. 공개 순위표 점수만 보고 고른 병합 모델은 순위표에만 맞춰졌을 수 있으니, 내가 맡길 작업으로 직접 확인한다. 섞은 원본 모델들의 라이선스도 함께 따라오므로 사용 조건을 확인해야 한다.
가장 흔한 건 이미 공개된 파인튜닝 모델들을 섞어 원하는 능력 조합을 싸게 얻는 방식이다. 다시 학습할 GPU나 데이터가 없어도 비중만 바꿔 가며 여러 번 시도해 볼 수 있다.
| 어디서 | 어떻게 쓰나 |
|---|---|
| 오픈 모델 커뮤니티 | Hugging Face에서 같은 베이스로 파인튜닝한 모델들을 mergekit으로 섞어 새 모델로 공개 |
| 능력 합치기 | 대화를 잘하는 지시 모델에 한국어·코딩 특화 모델을 SLERP로 섞어 두 능력을 함께 얻음 |
| 파인튜닝 실험 | 설정만 바꿔 학습한 체크포인트들을 하나만 고르지 않고 평균해 더 안정적인 모델로 만듦 |