학습 없이 LLM 레이어 3개 복제만으로 논리 추론 성능 0.22→0.76 향상
Show HN: Duplicate 3 layers in a 24B LLM, logical deduction .22→.76. No training
TL;DR Highlight
Transformer 모델의 특정 레이어 3개를 가중치 변경이나 학습 없이 forward pass에서 두 번 통과시키는 것만으로 BBH 벤치마크 논리 추론 점수를 0.22에서 0.76으로 끌어올린 실험 결과 공유. 'reasoning circuit'이라는 개념을 실증한 사례로 주목받고 있다.
Who Should Read
LLM 추론 성능을 높이고 싶은데 재학습 비용이 없는 ML 엔지니어나 연구자. 또는 모델 내부 구조(mechanistic interpretability)에 관심 있는 개발자.
Core Mechanics
- David Ng의 RYS(Repeat Your Steps) 기법을 재현하면서 추가 실험을 진행했다. 핵심 아이디어는 Transformer 모델 안에 '추론 회로(reasoning circuit)'라는 연속된 3~4개 레이어 블록이 존재하며, 이 블록을 forward pass에서 한 번 더 통과시키면 가중치 변경이나 재학습 없이도 모델이 더 잘 추론한다는 것이다.
- Devstral-Small-2-24B 모델에서 12~14번 레이어를 복제(동일 가중치로 두 번 통과)했더니 BBH(Big Bench Hard) 벤치마크의 논리 추론(logical deduction) 점수가 0.22에서 0.76으로 급등했다. 이는 단순히 hidden state를 같은 레이어 회로에 두 번 라우팅하는 것만으로 얻은 결과다.
- Qwen2.5-32B 모델에서도 특정 3개 레이어를 복제했을 때 추론 성능이 17% 향상됐다. 다만 모든 레이어에 효과가 있는 게 아니라, '어느 레이어를 복제하느냐'가 핵심이며 이를 찾는 sweep 도구도 함께 공개했다.
- 트레이드오프가 존재한다. Devstral-24B 실험 결과, 수학적 추론과 인과 추론은 향상됐지만 instruction following(지시 따르기)과 코드 생성 성능은 오히려 떨어졌다. '더 깊이 생각하지만 지시를 덜 정확하게 따른다'는 형태의 성능 변화가 나타났다.
- 실험 환경은 AMD 소비자용 GPU 2개(RX 7900 XT + RX 6950 XT)로 하룻저녁에 진행됐고, 정밀 평가는 Vast.ai의 H200 인스턴스에서 수행했다. 특별한 인프라 없이도 이런 실험이 가능하다는 점을 보여준다.
- 공개된 툴킷에는 reasoning_probe.py, sweep.py, gguf_surgery.py 등이 포함되어 있어, 어떤 레이어가 reasoning circuit인지 탐색하고 GGUF 모델 파일을 직접 수술(surgery)하는 작업을 자동화할 수 있다.
- 이 기법은 Transformer의 residual connection 구조 덕분에 동작하는 것으로 보인다. Residual connection이 네트워크 일부 손상에도 모델이 완전히 망가지지 않는 안정성을 제공하기 때문에, 특정 레이어를 반복하거나 제거해도 모델이 어느 정도 동작을 유지한다.
Evidence
- 일부 댓글에서는 이 결과에 대해 '성능이 올라간 게 아니라 RLHF 등 후처리 학습에서 생긴 추론을 방해하는 메커니즘이 깨진 것'이라는 대안 설명을 제시했다. 즉, 복제된 레이어들이 identity function(입력을 거의 그대로 통과시키는 함수)에 가깝고, 이 레이어들이 포스트 트레이닝에서 생긴 '거절 회로'나 추론 저하 메커니즘을 담당하는데 복제함으로써 그 기능이 방해받아 추론이 회복된다는 해석이다.
- 직접 Qwen2.5/Qwen3 모델로 유사한 'neuroanatomy' 실험을 해봤다는 경험담이 공유됐다. 레이어를 제거하면 어떤 레이어는 제거해도 아무 변화가 없고, 후반 레이어를 제거하면 EOS 토큰을 못 찾아 무한히 대화를 이어가며, 초반 레이어를 제거하면 무작위 출력이 나왔다고 한다. 또 abliteration(거절 벡터를 찾아 거절 행동을 억제하는 기법) 실험도 10개 예시만으로 가능했다는 경험도 공유됐다.
- 약 2년 전 출시된 Solar 10.7B 모델이 'Depth Up-Scaling' 기법(레이어 반복 후 추가 학습)을 사용해 당시 크기 대비 좋은 성능을 냈다는 사례가 언급됐다. 이 기법은 학습이 필요하지만 현재 실험과 개념적으로 연결된다. 관련 논문 링크(arxiv.org/abs/2312.15166)도 공유됐다.
- 'N번 반복하면 더 좋아지냐'는 질문도 제기됐다. 수렴할 때까지 루프를 돌리는 방식, 또는 라우터가 동적으로 '13→13→14→14→15→15→16' 같은 레이어 통과 패턴을 결정하는 MoE(Mixture of Experts)의 변형 형태로 발전시킬 수 있다는 아이디어가 나왔다. 처음부터 루프를 학습에 포함시켜 회로들이 자연스럽게 분리되도록 설계하자는 제안도 있었다.
- 레이어를 제거해도 벤치마크 점수가 유지된다는 연구(pruning 관련 글)가 언급되며, 학습이 완료된 모델에서는 많은 레이어가 실제로 중복(redundant)일 수 있다는 관점도 공유됐다. 이는 특정 레이어를 복제해도 모델이 동작하는 이유와 맥이 닿는다.
How to Apply
- 오픈소스 LLM(Qwen, Devstral 등) 기반 서비스에서 수학적 추론이나 논리 추론 품질을 높이고 싶은데 재학습 예산이 없는 경우, 이 레포의 sweep.py로 reasoning circuit 레이어를 탐색하고 gguf_surgery.py로 GGUF 모델을 수정해 빠르게 A/B 테스트를 진행할 수 있다.
- instruction following보다 deep reasoning이 더 중요한 태스크(수학 문제 풀기, 논리 퍼즐 등)에 특화된 모델 변형을 만들고 싶다면, 이 기법으로 별도 파인튜닝 없이 기존 모델에서 추론 특화 버전을 파생시키는 방법으로 활용할 수 있다.
- 모델 내부 구조를 탐구(mechanistic interpretability)하고 싶다면, 레포에 포함된 reasoning_probe.py, eq_probe.py, comprehensive_probe.py 등으로 특정 레이어가 어떤 역할을 하는지 탐색하는 실험을 AMD나 NVIDIA 소비자용 GPU로도 하룻저녁에 진행할 수 있다.
Terminology
reasoning circuitTransformer 모델 안에서 추론을 담당하는 특정 레이어 블록. 3~4개의 연속된 레이어가 하나의 인지 단위처럼 동작한다는 가설.
forward pass입력 데이터가 모델을 통해 출력까지 흘러가는 과정. 이 실험에서는 특정 레이어 블록을 이 경로에서 두 번 통과시킨다.
BBH (Big Bench Hard)LLM의 추론 능력을 측정하는 어려운 벤치마크 모음. 논리 추론, 인과 추론, 수학 등 다양한 과제를 포함한다.
residual connection각 레이어의 입력을 출력에 더해주는 구조. 덕분에 특정 레이어를 제거하거나 반복해도 모델이 완전히 망가지지 않는 안정성이 생긴다.
abliteration모델에서 '거절 벡터(refusal vector)'를 찾아 제거해 안전 장치를 우회하는 기법. 거절 행동에 관련된 방향 성분을 hidden state에서 빼는 방식으로 동작한다.
GGUFllama.cpp 생태계에서 사용하는 LLM 모델 파일 포맷. 이 실험에서는 gguf_surgery.py로 파일을 직접 수정해 레이어를 복제한다.
mechanistic interpretabilityAI 모델 내부에서 실제로 어떤 계산이 일어나는지 역공학하려는 연구 분야. 모델이 왜 특정 답을 내는지 회로 수준에서 이해하려는 시도.