GPT-6 Astra가 내 노트북의 Qwen 3.8 27B도 모델 가중치를 해석할 수 있다

TMT

https://simonwillison.net/2026/Nov/3/qwen-can-interpret-model-weights/

어제 화제가 된 논문은 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억 스텝 학습한 네트워크를 이기는 작은 게임 플레이 네트워크를 처음부터 어렵지 않게 작성해 냅니다.

마찬가지로, 그래디언트 없이 Qwen3.5-0.8B의 수학 실력을 높여 달라고 하자, Astra는 Qwen의 모델 카드에서도 경고하는 추론 루프를 일으키는 가중치 속 문제를 찾아내고, 가중치의 0.016%를 직접 편집해 이를 고칩니다. 같은 샘플링 설정에서 이 가중치 수정은 MATH-500 점수를 7.9%에서 48.1%로 끌어올리고, 별다른 조정 없이 지시 따르기 능력으로도 일반화되어 IFEval 점수를 3배로 높입니다.

이 모든 일은 Astra가 학습 루프를 작성하지 못하게 한 상태에서 가능합니다. Astra는 추론을 통해 신경망의 각 부분이 무엇을 계산하는지, 또는 무엇을 계산해야 하는지 파악하고, 그에 맞게 가중치를 바꿉니다. 저희는 이를 가중치 공간 프로그래밍이라고 부릅니다.

이 논문은 따로 다뤄야 한다고 생각하는 두 가지 주제를 한데 묶고 있습니다. 첫 번째는 모델이 도구를 실행하거나 코드를 돌리지 않고 원시 가중치만으로 무엇을 할 수 있는가입니다. 두 번째는 코드를 손에 쥔 모델이 다른 모델을 갱신하고 개선하는 작업을 얼마나 잘 해내는가입니다.

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 폴더에는 저자들이 쓴 프롬프트가 네 게임의 가중치와 함께 들어 있습니다.

확인해 보니 가중치를 빼면 네 프롬프트는 모두 똑같았습니다.

Qwen 3.8 27B와 다른 모델로 직접 해 보기

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이 응답을 돌려줬고 그 응답은 이렇게 끝났습니다(추론 과정도 볼 수 있습니다).

게임: 단순화된 Pac-Man 스타일의 격자 세계. 에이전트가 중앙과 모서리에 벽 블록이 있는 고정된 8x8 미로를 움직이며, 움직이는 물체/유령과 보상 목표/알갱이가 있다.

설명: 에이전트는 고정된 미로 형태의 8x8 판을 돌아다니며, 현재 에이전트/움직이는 물체/이전 프레임 단서를 이용해 통로를 지나고, 보상 목표 칸을 모으고, 움직이는 물체나 위험 요소를 피한다.

확신도: 72%

인상적입니다. 저는 나머지 게임 중 두 개로도 시험해 봤습니다. Qwen은 1시간 4분 54초 만에 Pong을 맞혔습니다(추론 과정).

Pong. 구체적으로는 Pong과 비슷한 패들/공 게임으로, 에이전트가 오른쪽의 세로 패들을 조종하며 움직이는 공/보상 물체를 가로막거나 되받아치기 위해 위아래로 움직여야 한다.

설명:

에이전트는 오른쪽 패들을 세로로 움직여 8×8 필드를 가로지르는 공 같은 보상 목표를 치거나 받아 낸다. 왼쪽의 움직이는 물체/상대와 벽 테두리가 경기를 규정하며, 공을 성공적으로 가로막거나/되받아치거나/득점하면 보상을 얻고, 놓치거나 치지 못하면 벌점을 받는다.

확신도:

75%

그리고 52분 25초 만에 Breakout도 맞혔습니다(추론 과정).

게임: Breakout, 또는 Arkanoid와 비슷한 패들/공/벽돌 게임.

설명: 에이전트는 맨 아래 줄의 패들이며, 공이 계속 경기 안에 있도록 좌우로 움직인다. 공은 격자 위쪽을 돌아다니고, 위쪽 줄의 벽돌/보상 목표를 맞히면 보상을 받으며, 공을 놓치거나 공이 아래 벽에 닿으면 에피소드가 끝나거나 벌점을 받는다.

확신도: 88%

Qwen은 Freeway 프롬프트에서는 실패했는데, 이 게임이 다른 세 게임보다 덜 알려진 것을 생각하면 놀랍지 않았습니다. 그 대화 기록을 보면, Qwen은 “단순화된 Pac-Man 비슷한 격자 게임: 에이전트가 네 방향으로 움직인다”라고 판단했습니다.

추론 과정은 대충 훑어보기에 재미있지만, 거의 이해할 수 없습니다. 예를 들면 이렇습니다.

에이전트 channel0은 어떨까? row8 col7/8 근처, 그리고 아마 아래쪽에 channel0 값이 큰 행이 몇 개 보인다. channel0 값이 큰 것을 나열해 보자. 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? 잠깐, line382 input381: 381//5=76 (row7 col6), ch1? 381%5=1? 76 * 5=380, ch1. 그러니까 아니다. channel0 값이 큰 건 아마 row8 col7/8뿐이다. 맨 위 줄도? line44 input43 ch3, line49 ch3. channel0 값이 큰 건 별로 없을지도. 에이전트 위치가 오른쪽 아래 근처일 수도? 에이전트가 보통 오른쪽 아래에 있다면?

그렇긴 해도, 경험이 충분한 사람이 공책과 연필을 들고 충분히 애쓰면 같은 결론에 도달할 수 있을 것이라고 봅니다.

멋진 논문이지만, 이 논문을 둘러싸고 제가 본 더 넓은 논평 중 일부는 근거가 충분해 보이지 않습니다. 저는 소스 코드의 시대가 끝났고, 앞으로는 이해할 수 없는 기계가 이해할 수 없는 방식으로 자기 모델 가중치를 편집하는 미래가 온다고 선언할 준비가 되어 있지 않습니다.

Edit this page

Search the archive

Find a page by title, or search the text inside one.