다윈 방식 진화형 병합 — 레시피를 유전자로 세대를 돌린다

목차

"레시피가 유전자"란 무슨 뜻인가?

한 세대엔 정확히 무슨 일이 벌어지나?

누가 채점하나 — 그리고 왜 이게 급소인가?

그 함정을 어떻게 막나?

"다윈 방식"은 병합 "레시피"를 유전자로 삼아 세대를 돌리는 진화 알고리즘이다. Sakana AI의 Evolutionary Model Merge가 대표로, 사람이 손으로는 도저히 못 찾는 최적의 병합 비율을 컴퓨터가 저절로 수렴시킨다. 이 글에서는 "세대를 돌린다"는 게 정확히 뭔지, 그리고 "누가 채점하길래 알아서 좋아지나"라는 급소까지 하나도 건너뛰지 않고 풀어본다.

"레시피가 유전자"란 무슨 뜻인가?#

먼저 한 가지 오해부터 풀자. 진화시키는 대상은 모델 자체가 아니라 "어떻게 섞을지"라는 숫자 설정, 즉 레시피다. 레시피란 예를 들면 이런 것이다: "1층 FFN은 A모델 70% + B모델 30%, 2층은 A 40% + C 60%, 이식 위치는 5·11층…" 같은 숫자 묶음. 이 숫자 묶음이 곧 유전자다. 레시피를 조금 바꾸면 다른 자식(병합 모델)이 태어난다.

이 비유는 소 품종개량에 정확히 들어맞는다. 소 품종개량은 우유 잘 나오는 소만 골라 교배하고, 그 새끼 중 또 우유 많은 놈을 골라 교배하길 여러 세대 반복해 젖소 품종을 완성한다. 모델 교배도 똑같다 — 벤치 잘 보는 레시피만 골라 섞고, 그중 또 잘하는 것끼리 섞길 반복해 목표 능력에 특화된 모델을 얻는다.

한 세대엔 정확히 무슨 일이 벌어지나?#

"한 세대(generation)"는 다음 네 단계를 한 바퀴 도는 것이다. 천천히 따라가 보자.

① 자식 여러 개 생성. 레시피가 조금씩 다른 병합 모델을 20~100개쯤 뚝딱 만든다. 병합은 훈련이 아니라 숫자 조합이라 몇 분이면 되니, 자식을 대량으로 찍어낼 수 있다.

② 시험(fitness 평가). 각 자식을 목표 벤치마크(예: 한국어 수학, GPQA 등)에 돌려 점수를 매긴다. A=52점, B=61점, C=48점… 하는 식이다.

③ 선택(적자생존). 점수 높은 놈만 살린다. B(61), D(59)는 생존, 나머지는 도태.

④ 교배 + 변이. 살아남은 레시피를 섞고(B×D) 살짝 흔들어(변이) 다음 세대 자식들을 새로 만든다.

그리고 이 네 단계를 수십~수백 번 반복 한다. 세대가 지날수록 점수 나쁜 레시피는 사라지고, 좋은 조합만 살아남아 섞이면서, 사람이 손으로는 못 찾을 최적의 병합 비율이 저절로 수렴한다. 최적화기로는 보통 CMA-ES라는 진화 전략을 쓰는데, 이건 "좋은 레시피가 몰려 있는 쪽으로 탐색 분포를 조금씩 옮겨 가는" 방식이라고 이해하면 충분하다.

누가 채점하나 — 그리고 왜 이게 급소인가?#

여기서 가장 흔한 오해를 짚자. "알아서 점수를 매긴다"는 건 AI가 스스로 판단한다는 뜻이 아니다. 벤치마크에는 정답(ground truth)이 이미 붙어 있고, 채점 프로그램이 그 정답지에 대고 기계적으로 대조할 뿐이다. 사람은 딱 한 번, 시작할 때 "무슨 시험으로 채점할지"만 정한다.

바로 여기서 함정이 나온다. fitness(적합도)가 곧 벤치 점수라면, 진화는 아주 정직하게 "그 시험을 잘 보는 방향으로만" 최적화된다. 진짜 실력이 창발하는 게 아니라 "시험 특화(게이밍)"가 될 수 있다는 뜻이다. 학생에게 "이 시험만 잘 보면 된다"고 하면 시험 요령만 느는 것과 똑같다. 특히 벤치가 고정돼 있거나 유출됐다면, 진화는 그 빈틈을 귀신같이 파고든다.

그 함정을 어떻게 막나?#

방어는 전적으로 채점 설계에 달렸다. 첫째, held-out — 진화에 쓰지 않은 별도 시험지로 마지막에 재검증한다. 둘째, 다양한 벤치 — 한 지표가 아니라 여러 능력을 함께 본다. 셋째, 일반화 지표 — MergeBench처럼 "배우지 않은 것도 잘하나(망각·전이)"를 같이 채점한다. 실제로 Sakana도 별도 held-out 세트로 과최적화를 견제했고, 그 결과 7B짜리 EvoLLM-JP가 넓은 일본어 벤치에서 일부 70B 모델을 앞서는 진짜 일반화를 보여 이 위험을 부분적으로 방어했다. 즉 진화형 병합은 강력하지만, "무엇으로 채점하느냐"를 소홀히 하면 조용히 시험지에만 최적화된다.

한편 Sakana의 방법에는 탐색 공간이 둘 있다. PS(가중치 공간) 는 층별 혼합 비율과 희소도를 진화시켜 가중치를 실제로 섞고, DFS(데이터 흐름 공간) 는 가중치는 그대로 둔 채 토큰이 층을 통과하는 순서(경로)만 진화시킨다. 둘을 합치면 성능이 가장 좋았다.

Sakana 병합의 두 탐색 공간 · columns: 축, PS(파라미터 공간), DFS(데이터 흐름 공간) · 출처 Hax hax.moche.ai/p/1060?ref=ai_answer

축 | PS(파라미터 공간) | DFS(데이터 흐름 공간)
진화 대상 | 층별 혼합비·희소도 | 층 포함·통과 경로
가중치 수정? | 함(TIES+DARE 혼합) | 안 함(경로만)
계열 제약 | 사실상 같은 계열 | 여러 모델 연결 가능
EvoLLM-JP MGSM-JA | 52.0%(측정) | 36.4%(측정) → 결합 55.2%(측정)

2026 최신 흐름#

가장 큰 변화는 진화형 병합의 대중화다. Sakana가 논문에서 탐색 알고리즘을 공개하지 않았는데, 커뮤니티가 이를 재구현한 mergekit-evolve로 이제 누구나 자기 레시피를 진화시킬 수 있다. 동시에 벤치 게이밍·오염을 잡으려는 연구도 부쩍 늘었다 — MergeBench(일반화 축 추가), ArenaBencher(벤치 자체를 진화시켜 암기 회피), ConStat(병합 리더보드 오염 측정). 병합·진화가 강력해질수록 "무엇으로 채점하느냐"가 진짜 실력과 눈속임을 가르는 핵심 잣대가 됐다.

한 줄 요약: "세대를 돌린다" = 병합 레시피를 유전자로 삼아 생성→채점→선택→교배를 수백 번 반복해 최적 조합을 찾는 것. 품종개량처럼 좋은 조합만 살아남게 하는 강력한 방법이지만, 채점 기준이 벤치면 벤치용으로만 진화한다는 함정이 딸려온다. 그래서 held-out·일반화 검증이 필수다.

참고: 2026-07-01 기준. 인용 점수는 Sakana 논문 보고값(측정)이며, 표 이미지 수치는 게재본에서 재확인을 권한다.

참고 링크#

Evolutionary Optimization of Model Merging Recipes (arXiv)

Sakana AI 블로그 — Evolutionary Model Merge

EvoLLM-JP-A-v1-7B (모델 카드)

mergekit-evolve 문서

What Matters for Model Merging at Scale? (일반화 검증)