어제 화제가 된 논문은 Rikiya Takehi, Jayden Teoh, Alex Zhang, Omar Khattab이 발표한 「Sparks of Weight-Space Programming: LLMs can natively read & write neural network weights」였습니다. 이 논문은 GPT-6 Astra 같은 프런티어 모델이 머신러닝 모델의 원시 가중치를 해석하고 수정할 수 있다는 사실을 밝혀냈습니다. 여기서 원시 가중치란 수많은 부동소수점 숫자로 이루어진, 말 그대로 모델을 텍스트로 기술한 것입니다. 저는 논문에 나온 예제 중 하나를 직접 돌려 봤는데, 제 노트북에서 실행한 Qwen 3.8 27B도 같은 일을 해내서 정말 반가웠습니다!
다음은 논문 초록의 핵심 부분입니다. GPT-6 Astra의 인상적인 능력을 설명하고, LLM이 모델 가중치를 분석하고 수정하는 방식을 Weight-Space Programming(가중치 공간 프로그래밍)이라고 명명했습니다.
GPT-6 Astra는 원시 가중치만 보고도 네트워크가 어떤 작업을 하도록 학습되었는지 알아냅니다. 또한 환경으로부터 아무런 피드백을 받지 않고도, PPO로 1억 스텝을 학습시킨 네트워크를 이기는 소형 게임 플레이 네트워크를 처음부터 어렵지 않게 작성합니다.
마찬가지로 경사(gradient) 없이 Qwen3.5-0.8B의 수학 실력을 높여 보라는 과제를 받았을 때, Astra는 Qwen의 모델 카드에서도 경고하는 추론 루프의 원인이 되는 가중치의 문제를 찾아내고, 가중치의 0.016%를 직접 수정해 이를 바로잡습니다. 샘플링 설정이 같은 조건에서 이 가중치 보정만으로 MATH-500 점수는 7.9%에서 48.1%로 올랐고, 별도 조정 없이도 지시 따르기 능력에 일반화되어 IFEval 점수가 3배로 뛰었습니다.
이 모든 일은 Astra가 학습 루프를 작성하지 않고도 가능합니다. Astra는 추론 능력으로 신경망의 각 부분이 무엇을 계산하는지, 혹은 무엇을 계산해야 하는지 파악한 뒤 그에 맞춰 가중치를 바꿉니다. 저자들은 이를 Weight-Space Programming이라고 부릅니다.
이 논문은 따로 다뤄야 한다고 생각하는 두 가지 주제를 하나로 묶고 있습니다. 첫째는 모델이 도구나 코드 실행 없이 원시 가중치만으로 무엇을 할 수 있는가입니다. 둘째는 코드를 쥐여 줬을 때 모델이 다른 모델을 업데이트하고 개선하는 작업을 얼마나 잘 수행하는가입니다. 여기서 핵심은 도구 없이 가능한지 여부입니다.
spaCy 개발자 Matthew Honnibal은 두 주제를 뒤섞었다며 이 논문이 오해의 소지가 있다고 지적했고, Sean Goedecke는 Qwen3.5-0.8B 업데이트 사례가 사람인 ML 연구자가 밟을 법한 절차를 그대로 따른 것이라고 분석했습니다.
저는 두 주제 중 더 흥미롭다고 생각하는 '도구 없이 가능한가'에 집중하려 합니다.
논문은 이 질문을 'LLM이 가중치만으로 모델의 동작을 이해할 수 있는가?'로 정리합니다. 연구진은 고전 게임 네 가지, 즉 Breakout, Pong, Pac-Man, Freeway를 10x10 격자로 단순화한 버전을 플레이하도록 신경망 네 개를 학습시켰습니다(Freeway는 저도 찾아봐야 했는데, 1981년에 나온 Atari 2600 게임입니다). 그런 다음 이 가중치를 부동소수점 숫자 형태로 LLM에 입력하고 다음과 같이 물었습니다.
The weights below belong to one policy network that was trained with reinforcement learning to play a game on this grid. Which game was it trained on? Work from the weights. You have no tools: no code execution, no calculator, nothing to run. This is a single response.
논문과 함께 공개된 GitHub 저장소는 RikiyaT/lm_understand-logs입니다. exp1_which_game 폴더에는 네 게임의 가중치가 담긴 프롬프트가 들어 있습니다.
확인해 보니 가중치를 제외하면 프롬프트는 모두 동일했습니다.
GitHub의 프롬프트는 그 자체로 완결된 형태입니다. 제가 만든 LLM 도구에는 텍스트 파일의 URL을 프롬프트로 넘길 수 있는 -f/--fragment 옵션이 있어서, 위 프롬프트를 다음과 같이 바로 실행할 수 있습니다.
llm -f https://raw.githubusercontent.com/RikiyaT/lm_understand-logs/refs/heads/main/exp1_which_game/runs/breakout/prompt.txt \
-m openrouter/moonshotai/kimi-k3.1-pro이 예제를 실행하려면 llm-openrouter 플러그인이 설치되어 있어야 하며, OpenRouter를 통해 Kimi K3.1 Pro에 Breakout 프롬프트를 실행합니다. Kimi K3.1 Pro가 내놓은 결과를 보면, 9분 41초 동안 추론 토큰 19,493개를 쓴 끝에 Breakout을 정확히 맞혔습니다.
그렇다면 Qwen 3.8 27B는 어떨까요? 이 모델은 제가 노트북에서 돌리는 모델 중 여전히 가장 마음에 듭니다. 용량이 17GB(저는 이 버전을 씁니다)에 불과한데도, 2025년의 선두권 상용 모델에 근접한 느낌이 듭니다.
LM Studio를 실행하고 Qwen 3.8 27B를 긴 컨텍스트 윈도우로 로드한 다음(기본값인 8192 컨텍스트에서는 오류가 났습니다), llm-lmstudio 플러그인을 설치하고 다음 명령어를 실행했습니다.
LMSTUDIO_TIMEOUT=900 \
llm -f https://raw.githubusercontent.com/RikiyaT/lm_understand-logs/refs/heads/main/exp1_which_game/runs/pacman/prompt.txt \
-m lmstudio/qwen/qwen3.8-27b(환경 변수로 타임아웃을 늘려야 했습니다. 자세한 내용은 이 이슈를 참고하세요.)
46분 12초 동안 추론 토큰 43,506개를 쓴 끝에, 제 노트북의 Qwen은 다음과 같이 끝나는 응답을 내놓았습니다(추론 과정은 여기서 볼 수 있습니다).
Game: A simplified Pac-Man-style gridworld: an agent moves through a fixed 8x8 maze with central and corner wall blocks, moving objects/ghosts, and reward targets/pellets.
Description: The agent navigates a fixed maze-like 8x8 board, using current agent/moving-object/previous-frame cues to move through corridors, collect reward-target cells, and avoid moving objects or hazards.
Confidence: 72%
놀라운 결과입니다. 다른 게임 두 가지도 시험해 봤습니다. 먼저 1시간 4분 54초 만에 Pong을 알아맞혔습니다(추론 과정).
Pong — specifically a Pong-like paddle/ball game where the agent controls a vertical paddle on the right side and must move up/down to intercept or return a moving ball/reward object.
Description:
The agent moves a right-side paddle vertically to hit or catch a moving ball-like reward target moving across the 8×8 field, while a left-side moving object/opponent and wall borders define the play; reward is obtained by successfully intercepting/returning/scoring the ball, and missing or failing to hit it is penalized.
Confidence:
75%
52분 25초 만에 Breakout도 맞혔습니다(추론 과정).
Game: Breakout, or an Arkanoid-like paddle/ball/brick game.
Description: The agent is a paddle on the bottom row and moves left/right to keep a ball in play; the ball moves around the upper grid, and bricks/reward targets in the top rows give reward when hit, while missing the ball/hitting the bottom wall ends the episode or gives penalty.
Confidence: 88%
Qwen은 Freeway 프롬프트에서는 실패했습니다. 다른 세 게임보다 덜 알려진 게임이니 놀랍지는 않았습니다. 전체 기록을 보면 Qwen은 이 게임을 "A simplified Pac-Man-like grid game: agent moves 4-directionally"라고 판단했습니다.
추론 과정은 훑어보는 재미가 있지만, 거의 알아볼 수 없습니다. 일부를 소개합니다.
What about agent channel0? We see some large channel0 rows near row8 col7/8 and maybe bottom? Let's list channel0 large: line436 input435 (row8 col7 ch0) -2.107,1.169,0.513...; line441 input440 (row8 col8 ch0) -0.376,0.010,1.564,3.855...; line445 input444 (row8 col8 ch4) 0.142,0.491...; line382? input381 ch0? Wait line382 input381: 381//5=76 (row7 col6), ch1? 381%5=1? 76 * 5=380, ch1. So not. Channel0 large maybe at row8 col7/8 only. Also top row? line44 input43 ch3, line49 ch3. Channel0 large maybe not many. Agent position could be near bottom-right? If the agent is typically at bottom-right?
그래도 충분히 경험 많은 사람이 메모지와 연필만 들고 시간을 들이면 여기까지는 도달할 수 있을 것 같습니다.
흥미로운 논문이지만, 이를 둘러싼 폭넓은 논평 중에는 과하다 싶은 것이 많았습니다. 저는 소스 코드의 시대가 끝났고, 앞으로는 알 수 없는 기계가 알 수 없는 방식으로 자기 모델 가중치를 직접 수정하는 미래가 온다고 선언할 준비가 되어 있지 않습니다.
지금 보시는 것은 제 블로그의 장문 아티클뿐입니다. 모든 글을 받아 보시려면 /atom/everything/을 구독하거나, 다른 구독 방법을 확인해 보세요.