학습 없이 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으로 향상시켰다.
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
관련 논문
Swift로 LLM 학습시키기 Part 1: 행렬 곱셈을 Gflop/s에서 Tflop/s로 끌어올리기
Apple Silicon에서 Swift로 직접 행렬 곱셈 커널을 구현하며 CPU, SIMD, AMX, GPU(Metal)를 단계별로 최적화해 Gflop/s에서 Tflop/s 수준까지 성능을 높이는 과정을 상세히 설명한 글이다. 프레임워크 없이 LLM 학습의 핵심 연산을 밑바닥부터 구현하고 싶은 개발자에게 Apple Silicon의 성능 한계를 체감할 수 있는 드문 자료다.
fsync 없이 로컬 스토리지 엔진을 crash-consistent하게 만든 방법
FractalBits가 fsync 없이 SSD 전용 KV 스토리지 엔진을 구현해 동일 조건 대비 약 65% 높은 쓰기 성능을 달성한 설계 방법을 공유했다. fsync의 메타데이터 오버헤드를 피하기 위해 사전 할당, O_DIRECT, SSD 원자 쓰기 단위 정렬 저널을 조합한 구조가 핵심이다.
Google Chrome, 사용자 동의 없이 4GB AI 모델(Gemini Nano)을 몰래 설치
Google Chrome이 사용자 동의 없이 Gemini Nano 4GB 모델 파일을 자동 다운로드하고, 삭제해도 재다운로드되는 문제가 발견됐다. GDPR 위반 가능성과 수십억 대 기기에 적용될 때의 환경 비용 문제가 제기되고 있다.
OpenAI가 대규모 저지연 Voice AI를 제공하는 방법
OpenAI가 9억 명 이상의 사용자에게 실시간 음성 AI를 제공하기 위해 WebRTC 스택을 어떻게 재설계했는지 설명하는 글로, relay + transceiver 분리 아키텍처의 설계 결정과 trade-off를 상세히 다룬다.
Truncated Decoding Tree의 결정론적 탐색을 통한 효율적인 Test-Time Inference
Self-consistency의 중복 샘플링 낭비를 없애는 결정론적 트리 탐색 디코딩 기법 DLE로 수학/코드 추론 성능과 속도를 동시에 개선
GoModel – Go로 작성된 오픈소스 AI Gateway
OpenAI, Anthropic, Gemini 등 여러 AI 프로바이더를 하나의 OpenAI 호환 API로 묶어주는 Go 기반 오픈소스 AI 게이트웨이로, LiteLLM의 컴파일 언어 대안이다.