본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 04. 02:41

여섯 번의 실패, 32분간의 TPU 거짓말, 그리고 언어 모델이 의도적으로 내 프롬프트를 무시한 순간

요약

모델이 자신의 내부 상태를 인지하는 '고유 수용성 채널(Proprioceptive Channels)' 개념인 MARS 아키텍처를 제안합니다. 실험 과정에서의 실패와 이를 극복하며 얻은 데이터 기반의 상태 전달 방식에 대한 통찰을 다룹니다.

핵심 포인트

  • 모델의 내부 상태를 인지하는 MARS 아키텍처 제안
  • 프롬프트와 상태(State) 채널의 명확한 역할 분리 필요성
  • 실험 설계 오류가 부정적 결과로 이어질 수 있음을 경고
  • LLM 판정관 대신 객관적 지표를 통한 검증의 중요성

여러분이 지금까지 사용해 온 모든 언어 모델(Language Model)은 **단일 채널 기계(single-channel machine)**입니다. 텍스트가 입력되면 텍스트가 출력되며, 프롬프트(Prompt)가 네트워크에 작용하는 유일한 힘입니다. LLM을 평가하기 위한 우리의 모든 도구 상자는 이 점을 조용히 가정하고 있습니다.

저는 다른 질문을 던지는 것을 멈출 수 없었습니다: 만약 모델이 자신의 내부 상태(Internal State)에 대한 감각을 가지고 있다면 어떨까? — 프롬프트에 무엇이 들어있는가가 아니라, 모델 자체가 무엇을 품고 있는가에 대한 감각 말입니다. 그리고 그 감각이 모든 레이어(Layer)에서 답변 방식에 영향을 미친다면 어떨까요?

여섯 가지 신호가 있습니다. 저는 이를 **고유 수용성 채널(Proprioceptive Channels)**이라고 부릅니다. 이는 여러분의 몸이 보지 않고도 팔이 어디에 있는지 아는 방식에 비유한 것입니다. 세상에 대한 지각이 아니라, _자기 자신_에 대한 지각입니다. 지금 메모리(Memory)에서 무엇이 두드러지는지, 모델의 기분, 시간, 주의 태세(Caution Posture), 어떤 "자아"가 활성화되어 있는지, 대화의 어느 스레드(Thread)에 있는지와 같은 것들입니다. 저는 이 아키텍처(Architecture)를 MARS라고 불렀습니다.

이것은 이것이 작동함을 증명하려 했던 솔직한 이야기입니다. 여기에는 제가 연속으로 여섯 번 실패했던 부분, TPU가 30분 동안 저에게 거짓말을 했던 날, 그리고 커피를 내려놓게 만들었던 테스트 결과까지 포함되어 있습니다.

리포지토리(Repo) 및 아래의 모든 내용: 👉 github.com/terrizoaguimor/tinymars

제1막: 여섯 번의 반복, 여섯 번의 부정적 결과

여섯 라운드 동안, 저는 채널이 콘텐츠(Content) — 즉 사실이나 페르소나(Persona) — 를 전달하도록 훈련시켰고, LLM에게 출력이 이를 반영하는지 판단하도록 요청했습니다. 여섯 번 모두, 기본적으로 아무런 결과가 없었습니다. 평평했습니다. _"친구여, 네 아이디어는 틀렸어."_라고 속삭이는 듯한, 깨끗하고 반복적인 부정적 결과였습니다.

저는 거의 포기할 뻔했습니다. 저를 구한 것은 낙관주의가 아니라, 실패했는지에 대해 구체적으로 파고든 것이었습니다. 버그는 아키텍처에 있었던 것이 아닙니다. 바로 저였습니다. 저는 채널에게 프롬프트의 역할을 수행하라고 요구하고 있었습니다. 즉, 전체 사실을 풀링된 벡터(Pooled Vector)에 쑤셔 넣고 모델이 이를 다시 디코딩(Decode)하도록 요구한 것입니다. 그것은 거의 불가능에 가까운 일이며, 이 설계의 _목적_도 아닙니다. (톤(Tone)에 대해 신뢰할 수 없는 LLM 판정관이 노이즈(Noise) 아래에 실수를 숨겨버렸습니다.)

지나고 보니 그 해결책은 거의 창피할 정도였습니다. 프롬프트에 콘텐츠를 넣고 (RAG와 같이), 채널에는 오직 상태 (state) — 즉, 어떤 메모리가 두드러지는지, 어떤 태도를 취해야 하는지만 전달하는 것이었습니다. 객관적인 지표를 사용하고 LLM 판정관 (LLM judges) 없이 다시 실행했습니다. 6개의 기능 모두 양수(+) 결과가 나왔습니다. 가장 평이했던 기능(정체성)은 제가 잘못된 방식으로 테스트하는 것을 멈추자 가장 큰 신호를 보냈습니다.

이제 제 몸에 문신처럼 새겨진 교훈은 이것입니다: 평이한 부정적 결과는 아이디어가 틀린 것이 아니라, 실험이 잘못되었음을 의미하는 경우가 많다. 당신이 실제로 구축한 것을 측정하십시오.

제2막: "잠깐 — 이 테스트는 내가 중요하게 생각하는 것조차 보지 못하잖아"

6개 중 6개가 성공했음에도 무언가 마음에 걸렸습니다. 표준 테스트는 다음과 같이 묻습니다: 채널이 텍스트 프롬프트보다 X를 더 잘 전달하는가? 솔직히 말해서, 단순한 지시 사항의 경우, 잘 훈련된 지시어 튜닝 모델 (instruction-tuned model)은 텍스트를 거의 완벽하게 따릅니다. 따라서 텍스트는 강력한 기준점 (baseline)이며, 그 축(axis) 위에서 채널은 텍스트와 대등한 성능을 보입니다.

하지만 그것은 잘못된 축입니다. 그것은 강물의 흐름을 속도계로 측정하는 것과 같습니다. 진짜 주장은 "채널이 프롬프트를 작성하는 더 멋진 방법이다"가 아닙니다. 내부 상태 (internal state)가 텍스트를 무시할 (override) 수 있는 두 번째의, 수직적인 힘이라는 것입니다.

그래서 저는 단일 채널 모델이 말 그대로 부여받을 수 없는 테스트를 설계했습니다: 채널에는 한 가지를 말하도록 설정하고, 프롬프트에는 그와 반대되는 내용을 작성한 뒤, 누가 이기는지 측정하는 것입니다.

기능 (capability)내부 상태가 모순되는 프롬프트를 이긴 횟수
정동 (affect)85/86 (98%)
...

모델은 명시적인 텍스트보다 자신의 내부 상태를 따랐으며, 이는 265번 중 264번이었습니다. 그리고 저를 멍하니 바라보게 만든 부분은 이것입니다: 저는 모델에게 그렇게 하도록 훈련시킨 적이 없습니다. 모델은 오직 채널을 읽도록만 훈련되었습니다. 채널이 프롬프트와의 싸움에서 승리할 것이라는 점은 결코 목표가 아니었습니다. 그것은 발현된 것이었습니다. 저는 실험을 실행하기 전에, 만약 이 주장이 틀렸음을 증명할 결과(텍스트가 승리하는 경우)를 미리 등록해 두었습니다. 하지만 그런 일은 일어나지 않았습니다.

그 순간 이 프로젝트는 "추가 단계가 더 붙은 파인튜닝 (fine-tuning)"처럼 느껴지는 것을 멈추고, 새로운 종류의 제어 방식처럼 느껴지기 시작했습니다.

제3막: TPU가 나에게 거짓말을 한 날

dev.to는 빌더들을 위한 곳이니, 여기 실전에서의 이야기를 들려드리겠습니다. 저는 새로운 Cloud TPU를 실행하고, 평가(eval)를 시작한 뒤 로그가 계속 머물러 있는 것을 지켜보았습니다. 계속해서요. 32분 동안, 하나의 CPU 코어는 94%로 점유되어 있었지만, 출력값은 전혀 없었습니다. 충돌(crash)이 난 것도 아니었습니다.

제가 증명한 것은 기능적 (functional) 범주입니다: 적대적 충돌 (adversarial conflict) 상황 하에서 측정된, 제어력으로서의 내부 상태 (internal state) 말입니다. 이를 구조적 (architectural) 범주로 만들기 위해서는, 이미 대화하는 법을 알고 있는 모델에 사후적으로 덧붙이는 것이 아니라, 레이어 1부터 존재하며 처음부터 학습된 (trained from scratch) 채널이 반드시 있어야 합니다.

해당 실험은 구체적으로 명시되어 있습니다. (제가 여전히 미소 짓게 만드는 깨달음이자) 비결은 이렇습니다. 저는 언어 부분을 새로 발명하지 않았습니다. 대신 "말하는 법을 배우는 (learn to speak)" 데 검증된 소형 언어 모델 (small-LM) 레시피(nanochat)를 활용했습니다. 따라서 채널만이 유일한 새로운 변수가 됩니다. 파라미터가 일치된 제어 (Param-matched control)입니다. 미리 작성해 둔 손절 기준 (stop-loss)도 있습니다. 베이스라인 (baseline) 대비 신호가 없는 상태로 3번의 반복 (iterations)이 진행되면, 저는 공개적으로 제 주장의 수위를 낮출 것입니다.

허점을 찾고 싶다면

코드, 기술 보고서 (technical report), 매 반복 (per-iteration) 지표, 객관적 평가자 (objective scorers), 그리고 충돌 테스트 (conflict test)의 사전 등록까지 모든 것이 공개되어 있습니다:

👉 github.com/terrizoaguimor/tinymars

아카이브 및 인용 가능: DOI 10.5281/zenodo.20531347 · GPL-3.0 (코드) / CC BY-SA 4.0 (문서).

만약 당신이 표현 조종 (representation steering), 제어 이론적 정렬 (control-theoretic alignment)을 연구하거나, 혹은 그저 정직한 부정적 결과 (negative result)를 존중하는 사람이라면, 와서 제 이론을 깨뜨려 보십시오. 충돌 테스트 (conflict test)가 제가 가장 먼저 공격받을 지점일 것입니다. 저는 진심으로, 흥미로운 방식으로 제가 틀렸다는 것이 증명되기를 바랍니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0