LLM WikiAccess-protected knowledge portal
← 스터디 홈
160편 · 약 14분

LLM 모델 병합: Task Arithmetic·SLERP·TIES·DARE로 파인튜닝 없이 전문가 모델 조합하기

요약

파인튜닝된 여러 모델의 가중치를 직접 결합해 새로운 능력을 얻는 모델 병합(model merging) 기법이 2025~2026년 사이 LLM 실무에서 빠르게 자리잡았다. 추가 학습 없이 코딩·다국어·추론 능력을 하나의 모델로 합치거나, 서비스 비용을 줄이기 위해 여러 전문 모델을 단일 가중치 셋으로 합칠 수 있다.

핵심 기법은 네 가지다.

기법모델 수개념
SLERP2개구면 선형 보간
Task ArithmeticN개task vector 덧셈·뺄셈
TIES-MergingN개부호 충돌 해소 후 병합
DAREN개스파스화로 간섭 감소

MergeKit이 이 기법들을 통합 제공하며, 2026년에는 진화적 알고리즘으로 최적 병합 레시피를 자동 탐색하는 진화형 모델 병합(EvoMerge)까지 실용화됐다. 별도 GPU 없이 base model 체크포인트만 있으면 실행 가능하다.


배경: 모델 병합이 필요한 이유

파인튜닝 비용 구조의 문제

특정 도메인을 잘 처리하는 LLM을 얻으려면 일반적으로 파인튜닝이 필요하다. 그런데 "코딩 전문 모델"과 "다국어 전문 모델"이 따로 있다면, 둘 다 동시에 필요한 서비스는 두 모델을 별도로 서빙하거나, 처음부터 두 능력을 함께 훈련해야 한다. 전자는 인프라 비용이, 후자는 학습 비용이 두 배 이상 든다.

모델 병합은 이미 각자 파인튜닝된 체크포인트의 가중치 행렬을 직접 결합해, 추가 학습 없이 두 능력을 하나의 가중치 셋으로 합친다. 연산 비용은 행렬 덧셈 수준이다.

왜 작동하는가: 가중치 공간의 선형성

같은 base model에서 파인튜닝된 모델들의 가중치 공간은 선형적으로 연결되어 있다는 경험적 사실이 핵심 전제다. Fine-tuned model의 가중치 θ_ft는 base model의 가중치 θ_base로부터 비교적 가까운 거리에 있고, 그 방향 벡터(task vector) τ = θ_ft - θ_base는 해당 태스크의 "능력 방향"을 의미한다.

LLM 모델 병합: Task Arithmetic 개념도 Base Model (θ_base) 예: Llama 3 / Mistral 7B 코딩 전문 Fine-tune θ_coding = θ_base + τ_A HumanEval: +24pp 다국어 Fine-tune θ_multi = θ_base + τ_B ko/ja/de 정확도 향상 추론 강화 Fine-tune θ_reason = θ_base + τ_C MATH: +18pp τ_A = θ_coding - θ_base τ_B τ_C = θ_reason - θ_base Task Arithmetic 병합 θ_merged = θ_base + λ_A·τ_A + λ_B·τ_B + λ_C·τ_C λ ∈ [0, 1]: 각 능력의 기여 비율 조정 병합 모델 코딩 + 다국어 + 추론 추가 학습 없음, GPU 불필요
LLM 모델 병합: Task Arithmetic 개념도

기법 1: SLERP — 두 모델 사이의 구면 선형 보간

SLERP(Spherical Linear Interpolation)은 가장 단순한 병합 방법이다. 두 모델의 가중치 벡터 θ₁, θ₂ 사이를 구면(sphere) 위에서 보간한다.

수식

SLERP(θ₁, θ₂, t) = sin((1-t)·Ω)/sin(Ω) · θ₁ + sin(t·Ω)/sin(Ω) · θ₂

여기서 Ω = arccos(θ₁·θ₂ / (‖θ₁‖‖θ₂‖))이고, t ∈ [0, 1]은 두 모델 사이의 위치다.

단순 선형 보간(lerp)은 중간 지점에서 벡터의 크기가 줄어드는 문제가 있다. SLERP는 구면 위에서 이동하므로 크기를 보존한다. 이는 고차원 가중치 공간에서 모델의 "강도"를 유지하는 데 중요하다.

한계: SLERP는 두 모델만 병합할 수 있다. 세 모델 이상을 합치려면 계단식으로 적용해야 하며, 병합 순서에 따라 결과가 달라진다.


기법 2: Task Arithmetic — 벡터 덧셈으로 능력 합산

Ilharco et al. (2023)이 제안한 Task Arithmetic은 파인튜닝을 "base model에서 어느 방향으로 얼마나 이동했는가"로 해석한다.

task vector 정의

τ = θ_finetuned - θ_base

이 task vector τ를 더하면 해당 능력이 추가되고, 빼면 해당 능력이 약해진다. 여러 task vector를 함께 더하면 N개 능력을 합산할 수 있다.

θ_merged = θ_base + Σ(λᵢ · τᵢ)

λ(scaling factor)를 줄이면 해당 능력의 기여를 약하게, 키우면 강하게 할 수 있다. 예를 들어 코딩 능력은 강하게(λ=0.8), 다국어는 적당히(λ=0.4) 조합하는 식이다.

능력 제거 (Negation)

Task Arithmetic의 흥미로운 응용은 능력 제거다. 특정 태스크(예: 독성 발화)에 파인튜닝된 모델에서 task vector를 구한 뒤, 기본 모델에서 빼면 해당 능력을 억제할 수 있다.

θ_safer = θ_base - λ · τ_toxic

기법 3: TIES-Merging — 부호 충돌 해소

여러 모델을 단순히 task vector로 더하면 부호 충돌(sign conflict) 문제가 생긴다. 같은 파라미터에 대해 모델 A는 양수 방향, 모델 B는 음수 방향으로 이동했다면, 단순 합산은 서로 상쇄된다.

Yadav et al. (2023)의 TIES-Merging은 세 단계로 이 문제를 해결한다.

단계의미설명
TRIM정리크기가 작은 델타 파라미터를 0으로 설정 (k% 유지)
IELECT SIGN부호 결정파라미터마다 모든 모델의 부호를 집계해 다수결로 결정
Elect & SMERGE병합결정된 부호와 같은 방향인 모델의 값만 평균
# TRIM: 각 task vector에서 절댓값 상위 k%만 유지
τ_trimmed = top-k(|τ|) * sign(τ)

# ELECT SIGN: 파라미터별 다수결 부호
γ = sign(Σ τ_trimmed)

# MERGE: 결정된 부호와 같은 방향인 값만 평균
θ_merged = θ_base + Σ [τ_i if sign(τ_i) == γ else 0] / count

TIES는 특히 모델 수가 많을수록(5~10개) 단순 task arithmetic보다 성능이 우수하다.


기법 4: DARE — 스파스화로 간섭 감소

Yu et al. (2023)의 DARE(Drop And REscale)는 task vector의 파라미터를 랜덤하게 드롭하고 남은 값을 리스케일한다.

τ_dare[i] = 0         (확률 p로 드롭)
           = τ[i] / (1-p)  (확률 1-p로 유지 + 리스케일)

핵심 발견: task vector의 90~99%를 드롭해도 모델 성능에 거의 영향이 없다. 이는 delta weight가 매우 희소(sparse)한 성질을 갖기 때문이다. DARE로 스파스화한 task vector를 TIES와 결합한 DARE-TIES가 현재 실무에서 자주 쓰이는 조합이다.


기법 5: 진화형 모델 병합 (EvoMerge)

Sakana AI (2024)와 여러 후속 연구가 보여준 진화형 모델 병합은 병합 레시피(각 λ, k, p 값)를 진화 알고리즘으로 자동 탐색한다.

동작 방식

  1. 초기 병합 레시피 집단(population) 무작위 생성
  2. 각 레시피로 병합 수행 → 벤치마크 평가
  3. 상위 레시피를 선택(selection)하고 변이(mutation)·교차(crossover)
  4. 반복 → 최적 레시피 수렴

MergeKit + Optuna 통합(2025)과 Mergenetic(2026)은 이 프로세스를 자동화한 오픈소스 도구다. 수백 번의 병합 시도를 CPU에서 실행할 수 있어, 소규모 팀도 실용적으로 사용 가능하다.

2026년 최신 연구

arXiv:2508.16204 "Competition and Attraction Improve Model Fusion"(2026년 8월)은 task vector 간 경쟁(competition)인력(attraction) 을 명시적으로 모델링해, 기존 TIES·DARE 대비 추가 성능 향상을 보고했다.


MergeKit 실전 사용

MergeKit은 SLERP, Task Arithmetic, TIES, DARE, DARE-TIES를 YAML 설정 파일 하나로 실행하는 오픈소스 도구다.

pip install mergekit
# ties_merge_config.yaml
merge_method: ties
base_model: mistralai/Mistral-7B-v0.1
models:
  - model: codellama/CodeLlama-7b-hf
    parameters:
      density: 0.53    # DARE의 드롭 비율 (1-p)
      weight: 0.7      # λ scaling factor
  - model: some-org/Mistral-7B-multilingual
    parameters:
      density: 0.40
      weight: 0.5
parameters:
  normalize: true
  int8_mask: true
dtype: bfloat16
mergekit-yaml ties_merge_config.yaml ./merged_model --cuda

병합 결과는 HuggingFace Transformers 포맷으로 저장되어 from_pretrained으로 즉시 로드할 수 있다.


병합 품질 평가 체크리스트

병합 결과의 신뢰성을 확인하는 기준이다.

✅ 기본 능력 회귀 확인
   → MMLU, HellaSwag, ARC 등 일반 벤치마크가 base model 대비 유지되는가?

✅ 목표 능력 확보 확인  
   → 각 파인튜닝 목표 벤치마크(HumanEval, multilingual eval 등)에서 향상됐는가?

✅ 스케일링 계수(λ) 그리드 탐색
   → λ=0.2, 0.4, 0.6, 0.8 등 여러 값을 시험해 최적 지점 확인

✅ density(DARE 드롭 비율) 탐색
   → 0.3 ~ 0.7 사이에서 품질 손실 최소 지점 확인

✅ 정량 지표 외 정성 평가
   → 실제 프롬프트로 응답 품질 직접 확인

✅ 추론 레지스터(logit) 범위 점검
   → 병합 후 logit scale이 비정상적으로 크거나 작은지 확인

✅ 토크나이저 호환성 확인
   → base model과 모든 파인튜닝 체크포인트가 동일한 토크나이저를 사용하는가?

한계와 주의사항

동일 base model 전제

SLERP, TIES, DARE는 모두 같은 base model에서 파인튜닝된 체크포인트를 전제로 한다. Llama 3와 Mistral 7B처럼 구조가 다른 모델은 직접 병합할 수 없다. (다른 구조 간 병합은 진행 중인 연구 주제다.)

능력 포화 한계

파인튜닝 모델 수가 늘어날수록(5개 이상) 각 능력 간 간섭도 증가한다. TIES·DARE를 써도 모든 능력이 기대만큼 보존되지 않을 수 있으며, 파인튜닝 데이터가 서로 충돌하는 경우 더욱 두드러진다.

파인튜닝 깊이의 한계

base model과 가중치 차이가 매우 큰(깊이 파인튜닝된) 모델은 병합 효과가 약해진다. RLHF·DPO로 대대적으로 정렬된 모델의 경우 task vector가 일반적인 성질에서 크게 벗어날 수 있다.

검증 의무

병합 결과는 벤치마크로 반드시 검증해야 한다. 특히 안전·정렬(alignment) 속성이 유지되는지 별도로 확인해야 한다.


언제 병합을 선택하는가

상황권장 접근법
같은 base model로 파인튜닝된 전문 모델들을 비용 없이 합치고 싶다모델 병합 (TIES/DARE)
새로운 태스크에 완전히 새로운 능력이 필요하다파인튜닝
A/B 테스트 없이 빠르게 프로토타입을 만들고 싶다SLERP (2개 모델)
최적 레시피를 자동으로 찾고 싶다진화형 병합 (MergeKit + Optuna)
특정 바람직하지 않은 능력을 억제하고 싶다Task Arithmetic negation

References