GPT-5, Gemini, Claude 같은 폐쇄형 모델부터 Qwen3, DeepSeek-R1 같은 오픈소스 모델까지, 이미 강력한 기초 모델이 여러 개 나와 있다. 이들의 장점을 하나로 모으려는 가장 흔한 시도는 **가중치 병합(weight merging)**이다.

가중치 병합은 따로 학습된 여러 모델의 파라미터를 추가 학습 없이 산술적으로 합쳐 새 모델을 만드는 기법이다. 가장 단순한 형태는 같은 구조의 두 모델 가중치를 처럼 평균 내는 것이고, 파인튜닝 전후 차이를 “능력 벡터”로 보고 더하고 빼는 Task Arithmetic, 충돌하는 파라미터를 정리해 성능 저하를 줄이는 TIES·DARE 등으로 발전해 왔다. 잘만 되면 코딩 잘하는 모델과 수학 잘하는 모델을 섞어 둘 다 어느 정도 하는 모델을 공짜로 얻는 셈이다.

문제는 이 방식이 두 가지 벽에 부딪힌다는 점이다.

  • 가중치를 좌표별로 더하려면 두 모델의 구조·차원이 같아야 한다. 아키텍처가 다르면 애초에 섞을 수 없다.
  • GPT-5, Claude 처럼 가중치가 공개되지 않은 폐쇄형 API 모델은 접근 자체가 불가능하다.

Trinity (ICLR 2026)는 모델 내부를 건드리지 않고, 바깥에서 모델들을 오케스트라 지휘자처럼 조율하는 가벼운 층을 하나 얹어 이 문제를 푼다. 이 지휘자의 학습 파라미터는 2만 개도 안 되지만, 개별 모델 단독 성능을 넘어선다.

A.1) 핵심 아이디어

Trinity는 매 턴마다 “지금은 어떤 LLM이, 어떤 역할로 답할지”를 정해주는 경량 코디네이터다. 모델 가중치를 합치는 대신, 모델들을 외부에서 호출해 협업시키는 정책(policy)을 학습한다.

질문이 들어오면 → 코디네이터가 매 턴 (LLM, 역할) 쌍을 고르고 → 그 LLM이 응답하고 → Verifier가 통과시킬 때까지(또는 최대 5턴) 반복한다.

여러 모델을 묶는다는 점에서 ensemble과 닿아 있지만, 출력을 사후 평균/투표하는 앙상블과 달리 Trinity는 누구에게 무슨 일을 시킬지를 매 턴 동적으로 라우팅한다는 점이 다르다.

A.2) 코디네이터 구조

코디네이터는 두 부분으로 이뤄진다.

  • 소형 언어모델(SLM): Qwen3-0.6B (약 6억 파라미터). 질문과 지금까지의 대화 기록 전체를 입력받아, 끝에서 두 번째 토큰의 은닉 상태(hidden state) 하나를 뽑아낸다. 이 벡터가 현재 상황을 압축한 표현이 된다.

    하필 끝에서 두 번째 토큰인 데는 이유가 있다. GPT·Qwen 같은 decoder 모델은 causal attention 을 쓰므로 뒤쪽 토큰일수록 앞 내용을 더 많이 본다. 그래서 입력 전체를 한 벡터로 요약하려면 맨 끝 토큰을 쓰는 게 자연스럽다. 그런데 instruct 모델의 입력은 끝에 <|im_end|> 같은 종료 특수 토큰이 붙어, 맨 끝 자리의 표현은 질문 내용보다 “여기서 끝”이라는 형식 신호에 가깝다. 한 칸 앞 토큰이 입력 전체를 보면서도 의미가 가장 깔끔하게 응축된 자리다. 답을 생성하려는 게 아니라 질문을 분류하려는 코디네이터에게는 이쪽이 더 알맞다.

  • 경량 헤드(head): 그 은닉 상태를 받아 결정을 내리는 선형 계층. 학습되는 파라미터가 약 10K(1만) 개뿐이다. SLM 본체는 거의 동결하고, 일부 계층의 특이값(singular value) 스케일만 미세조정한다.

헤드는 매 턴 개의 로짓을 출력한다.

  • 개: 모델 풀에 있는 개 LLM 중 누구를 쓸지
  • 개: 세 가지 역할 중 무엇을 맡길지

즉 단 하나의 은닉 상태로부터 “누구에게 / 무슨 일을” 시킬지를 동시에 결정하는 구조다.

A.3) 세 가지 역할 (Tri-role)

이름 그대로 Trinity(삼위일체)의 핵심은 세 가지 역할이다. 매 턴 코디네이터는 선택된 LLM에게 아래 중 하나를 부여한다.

역할하는 일예시
Thinker전략 수립, 문제 분해, 계획 세우기”이 문제를 3단계로 나눠보자”
Worker실제 실행 — 계산하거나 코드 작성”이제 계산을 수행하라”
Verifier검증 — 답이 맞는지 확인하고 수락/재검토 판단”정답인지 확인하고 최종 검증하라”

진행은 다중 턴(multi-turn)으로 흘러간다. Verifier가 ACCEPT 판정을 내리거나, 최대 5턴에 도달하면 멈춘다. Verifier가 정답 여부를 스스로 판정한다는 점은 Verbalized Confidence Triggers Self-VerificationSelf-Rewarding Language Models의 self-verification 흐름과 같은 결인데, 검증자가 속기 쉽다는 One Token to Fool LLM-as-a-Judge의 경고도 함께 떠올려둘 만하다.

이 구조 덕분에 “Gemini가 계획을 짜고 → GPT-5가 코드를 쓰고 → Claude가 검증” 같은 협업 시퀀스가 고정된 규칙 없이 동적으로 만들어진다.

A.4) 학습: 왜 강화학습이 아니라 진화 전략인가

이 논문에서 가장 독특한 선택은 학습 방법이다. 이런 정책은 보통 Reinforcement Learning으로 학습하는데, Trinity는 진화 전략(Evolution Strategy), 구체적으로 sep-CMA-ES를 쓴다.

A.4.1) RL이 잘 안 되는 이유

REINFORCE 같은 Policy Gradient 방법은 “지금 정책을 어느 방향으로 조금 바꾸면 보상이 올라갈까”를 기울기(gradient)로 추정해 그 방향으로 파라미터를 미는 방식이다. 이 기울기 신호가 또렷해야 학습이 된다. 그런데 Trinity의 학습 환경에서는 그 신호를 망가뜨리는 네 가지 조건이 한꺼번에 겹친다.

조건무슨 뜻왜 기울기가 망가지나
이진(binary) 보상정답=1 / 오답=0 둘뿐, 부분 점수 없음정책을 살짝 바꿔도 보상이 0→0 그대로라, 어느 쪽이 나은지 방향 정보가 거의 없다
노이지(noisy)같은 정책이라도 LLM 출력이 매번 달라 결과가 들쭉날쭉우연히 맞은 건지 정책이 좋아진 건지 구분이 안 돼 기울기 추정값이 요동친다
고차원(high-dim)학습 파라미터가 약 1만 개1만 차원에서 올바른 방향 하나를 노이즈 속에서 찾아야 해 신호 대비 잡음이 더 나빠진다
고비용(expensive) 평가정책 하나 평가에 LLM 추론을 여러 번 돌림노이즈를 평균으로 지우려면 수십 번 반복해야 하는데 너무 비싸다

비유하면 이렇다. 짙은 안개 속(noisy)에서, 대부분 평평한 고원(이진 보상 — 어디가 오르막인지 안 보임) 위를, 눈을 가린 채(고차원) 걷는데 한 걸음 내딛는 데마다 큰 비용이 드는(고비용) 상황이다. 그래디언트 방법은 “지금 선 자리에서 경사가 가장 가파른 쪽으로 한 걸음”이라는 전략인데, 땅이 평평하고 안개까지 끼었으니 그 경사 자체가 잡히지 않아 무력하다.

그룹 상대 보상으로 분산을 줄이는 GRPO 계열도, 보상이 이진이고 궤적당 추론 비용이 큰 이 설정에서는 표본 효율이 떨어진다. 실제 실험에서 REINFORCE가 가장 낮은 성능을 보였다.

진화 전략이 이 상황에 더 맞는 이유가 여기서 나온다. 한 자리의 경사를 재는 대신, 여러 후보 정책을 사방에 뿌려 실제 점수를 매기고 잘한 쪽으로 분포를 옮긴다. 안개 속에서 발밑 경사를 재는 대신 정찰병을 여럿 보내 누가 더 높은 곳에 닿았는지 보고 그쪽으로 이동하는 셈이라, 경사가 잡히지 않는 거친 보상에서도 훨씬 튼튼하다.

A.4.2) sep-CMA-ES의 작동 방식

기울기를 못 쓴다면, 1만 개의 숫자(헤드 파라미터)를 어떻게 좋은 값으로 맞출까. CMA-ES의 발상은 단순하다. 좋은 값을 직접 계산하지 말고, 여러 후보를 뿌려보고 잘한 쪽으로 옮겨가자. 기울기 대신 “누가 더 잘했나”라는 순위만 있으면 되니, 이진·noisy 보상에도 끄떡없다.

A.4.1의 안개 비유를 이어서, 한 세대(generation)를 정찰병에 빗대면 이렇다.

  1. 정찰병을 뿌린다 — 지금 베이스캠프(현재 추정값) 주위로 32개 지점을 무작위로 뽑는다. 다트를 과녁에 던지면 대부분 중심 근처에 모이고 가끔 멀리 빗나가듯, 종 모양 분포(정규분포)로 흩뿌린다. 현재 추정값을 살짝 흔든 후보가 흔하고 과감하게 멀리 간 후보는 드물다는 뜻이다. 한 지점이 곧 후보 정책 하나(1만 개 숫자 한 세트)다.
  2. 고도를 잰다 — 각 후보로 실제 문제를 풀어 점수를 매긴다. 고도계가 noisy하니 한 후보를 16번 재서 평균낸다. 그래야 진짜 좋은 후보인지가 안정적으로 드러난다.
  3. 베이스캠프를 옮긴다 — 점수 좋은 후보들 쪽으로 분포의 중심(평균)을 이동시킨다.
  4. 탐색 방향을 조정한다 — 좋은 후보들이 몰린 방향으로 분포를 늘려, 다음 세대엔 그쪽을 더 살핀다.

이 과정을 반복하면 분포가 점점 높은 곳으로 흘러가며 좁아지고, 결국 최적점 근처에 수렴한다. 핵심은 한 자리의 경사를 재는 게 아니라 여러 곳에 실제로 가보고 점수만 비교한다는 점이다. 노트 첫머리 식들을 풀면, 모집단 크기 는 “정찰병 몇 명”(차원 이 커져도 로그로만 늘어 1만 차원에서도 32명), 대각 스케일링 는 “분포가 각 축으로 얼마나 퍼졌나”를 가리킨다.

이름에 붙은 sep(분리 가능) 이 한 끗이다. 원래 CMA-ES는 분포를 비스듬히 늘려 파라미터끼리의 상관까지 학습하는데, 그러려면 만짜리 공분산 행렬을 들고 있어야 해 비싸다(). sep-CMA-ES는 분포를 축에 나란하게(대각) 고정해 각 축의 폭만 조절하므로, 들고 있을 값이 1만 개로 준다().

이 단순화가 통하는 근거가 바로 아래 발견이다. 헤드를 10개 블록의 블록 대각(block-diagonal) 구조로 강제해도 성능이 상당 부분 유지되는데, 이는 최적화 목표가 강한 블록 분리성을 가진다는 증거다. 파라미터들이 서로 거의 독립적이라, 비스듬한 분포까지 쓰지 않아도 잘 된다는 뜻이다.

저자들은 같은 평가 예산에서 sep-CMA-ES가 단순 무작위 탐색(Random Search)보다 약 10배 효율적(반복 50회 기준)임을 이론(Proposition 1, 2)으로도 보인다. 무작위 탐색의 성능은 로그로 증가하는 반면, sep-CMA-ES는 선형으로 증가한다.

A.5) 실험 결과

모델 풀은 폐쇄형(GPT-5, Gemini-2.5-pro, Claude-4-Sonnet)과 오픈소스(Qwen3-32B, DeepSeek-R1-Qwen-32B, Gemma-3-27B 등)를 섞어 구성했다.

A.5.1) 학습한 벤치마크 (in-distribution)

벤치마크Trinity2위
LiveCodeBench (코딩)86.2%GPT-5 (83.8%)
Math500 (수학)88.0%Gemini (83.8%)
MMLU (지식)91.56%Claude (90.74%)

평균적으로 가장 강한 단일 라우팅/병합 베이스라인 대비 상대 오차를 약 20% 줄였다.

A.5.2) 학습 방법 비교 (LiveCodeBench, 동일 예산)

학습 방법성능특징
sep-CMA-ES (Trinity)61.5%
지도학습(SFT)59.2%라벨 생성 비용이 매우 큼
무작위 탐색(RS)37.4%수렴이 느림
REINFORCE (RL)25.3%그래디언트 노이즈가 극심

위 두 표의 숫자 단위가 다른 점에 유의하자. 첫 표(86.2%)는 최종 시스템의 정확도이고, 둘째 표(61.5%)는 학습 알고리즘만 바꿔가며 비교한 ablation 설정의 수치다. RL이 진화 전략에 크게 뒤처진다는 점이 핵심이다.

학습 과정을 들여다보면 차이가 더 분명하다. sep-CMA-ES는 학습이 진행될수록 LLM 선택 분포가 성능 좋은 모델 쪽으로 집중되며 진화한다. 반면 REINFORCE는 거의 균등 분포에 머물러(정책 개선 실패) 있고, 무작위 탐색은 한 모델로만 쏠려 다양성을 잃는다.

A.5.3) 학습하지 않은 벤치마크 (zero-shot)

가장 설득력 있는 결과는 이 부분이다. AIME, BigCodeBench, MT-Bench, GPQA-D 등 학습에 쓰지 않은 벤치마크에서도 Trinity는 풀 안의 모든 개별 모델을 넘어섰다.

  • AIME: 50.0% (Gemini Pro 46.67%)
  • GPQA-D: 76.82% (Gemini Pro 75.25%)
  • 제로샷 평균: 54.21% (모든 개별 모델 초과)

특정 데이터셋에 과적합한 게 아니라, “상황에 맞게 모델과 역할을 배분하는 능력” 자체가 일반화된 것이다.

A.6) 왜 이게 가능한가

논문은 한 가지 관찰로 이 모든 걸 설명한다. SLM이 뽑아낸 은닉 상태가 작업 유형을 거의 완벽하게 선형 분리한다(SVM 정확도 약 100%). 코디네이터는 질문만 보고도 “이건 코딩 문제다 / 수학 문제다 / 지식 문제다”를 깔끔히 구분하고, 그래서 1만 개짜리 선형 헤드만으로도 어떤 모델·역할이 적합한지 판단해 낸다.

A.7) 정리

Trinity가 보여 준 것을 정리하면 이렇다.

  1. 가중치 접근 없이도 여러 LLM의 강점을 결합할 수 있다 — 폐쇄형 API까지 포함해서.
  2. 조정 층이 2만 파라미터 미만이라 학습·운영이 가볍다.
  3. 이런 정책을 학습할 땐 RL보다 진화 전략이 적합하다. 이진·noisy·고차원·고비용 보상이라는 조건에서 그래디언트 기반 방법은 무너진다.
  4. 학습하지 않은 과제에서도 모든 개별 모델을 넘어서는 일반화를 보였다.

모델을 더 키우거나 합치는 대신, “이미 강한 모델들을 언제 누구에게 맡길지”를 가볍게 학습하는 방향이다. 멀티 에이전트나 모델 라우팅을 고민할 때 곱씹어 볼 만하다.

A.8) 한계 — 모델 풀이 바뀌면 다시 학습해야 한다

읽다 보면 자연스레 떠오르는 의문이 있다. 모델 풀 구성이 바뀌면 어떻게 되나? 결론부터 말하면, 대체로 헤드를 다시 학습해야 한다.

원인은 헤드가 모델을 **자리 번호(인덱스)**로 가리키기 때문이다. 헤드가 뱉는 개의 로짓은 “3번 칸은 GPT-5, 5번 칸은 Claude” 식으로 위치에 모델을 묶어 학습된 것이다. 그래서 풀을 건드리면 정책이 무효가 된다.

풀 변경무슨 일이 생기나재학습
모델 추가·제거출력 차원 자체가 바뀌고, 새 모델엔 학습된 칸이 없다필수
모델 교체(개수 유지)차원은 같아도 “3번 칸”의 의미가 달라져 정책이 엉뚱한 모델을 가리킨다필수
API 버전업(같은 자리)모델 성격이 미묘하게 드리프트해 정책 가정이 흔들린다성능 저하 시

다만 재학습 비용은 풀 전체를 다시 만드는 것보다 가볍다. 질문의 성격을 읽는 SLM은 풀과 무관하므로 그대로 재사용하고, 다시 맞추는 것은 약 1만 개짜리 헤드뿐이다. 그것도 GPU 사전학습이 아니라 A.4.2의 sep-CMA-ES 루프를 다시 돌리는 것이다. 진짜 부담은 ES가 후보를 평가하느라 LLM 추론을 여러 번(논문 기준 1.5k–40k회) 돌려야 한다는 점인데, 모델 재학습에 비하면 여전히 싸다.

한 가지 짚어 둘 오해가 있다. A.5.3의 zero-shot 결과는 **새로운 과제(task)**에 대한 일반화이지, 새로운 모델에 대한 일반화가 아니다. 그 실험 내내 모델 풀은 고정돼 있었다. “질문 성격을 읽는 능력”으로 처음 보는 과제는 풀 수 있어도, 써본 적 없는 모델이 뭘 잘하는지까지 미리 아는 것은 별개의 문제다.

논문이 직접 다루진 않지만, 고정된 지선다 헤드 대신 각 모델의 프로필 임베딩과 질문을 비교해 점수를 내는 구조였다면 새 모델 추가에 재학습이 덜 필요했을 것이다. 자리에 모델을 박는 대신 프로필만 끼워 넣으면 되니 plug-and-play 에 가까워진다. Trinity 는 단순한 고정 헤드를 택해 학습을 가볍게 만든 대신 이 유연성을 포기했고, 이는 후속 연구의 자연스러운 확장 지점으로 보인다.