생각의 형태는 SFT할 수 있어도 생각 자체는 아니다
추론 모델을 S1 방식으로 재현하기 — DeepSeek R1·제미나이에서 뽑은 `<think>…</think>` 생각 과정으로 베이스 모델을 SFT — 는 **작동하고, 바로 그게 함정을 드러냅니다**: 모델에게 단계적 사고처럼 *보이는* 텍스트를 뱉도록 가르치는 것이지, 생각하게 만드는 게 아닙니다. 테스트 타임 스케일링은 그 패턴에 인퍼런스 토큰을 쓸 뿐, 가중치가 똑똑해지지 않습니다. 얼어붙은 가중치 모방자를 넘어서는 길은 **경험** — 환경 상호작용에서의 RL, 세션을 넘어 누적된 — 입니다.
이 페이지는 카드에 적힌 내용을 펼쳐 보여줄 뿐입니다 — 돌아가는 코드도, 열어볼 데모도 아직 없습니다. 무엇을 왜 만들려는지가 아래에 있습니다.
아직 범위 미정 — 읽고 재현한 뒤, 딱 하나를 측정. 레시피(스탠포드 S1, 알파카 인스트럭션 튜닝의 반복): 강한 추론 모델(DeepSeek R1, 제미나이 Thinking)에서 문제 + 전체 생각 과정 + 정답을 모아, 각각을 `<think>` 긴 추론 `</think>` 최종 답 형식으로 만들고, 베이스 모델을 SFT. 구현 팁: `<think>`는 특수 토큰일 필요 없이 — 평문으로도 동작 — 챗 템플릿 끝에 `<think>`를 미리 넣으면 모델이 긴 추론 구간을 시작하도록 강제됩니다. 그다음, 중요한 유일한 질문을 측정하세요: 정확도가 생각 *덕분에* 오르는가, 아니면 그냥 생각처럼 보이는 데 토큰을 더 써서 오르는가? 출처: sudoremove, 'Reasoning 모델 직접 만들기…'(youtube.com/watch?v=FOjq2WCDPZE). 주장·타이밍은 영상으로 확인.
기술 노트
각 항목이 실제로 무엇을 보여주고 어떻게 동작하는지 — 위 카드보다 자세한 기술 설명입니다.
목적: **테스트 타임 스케일링은 진짜 레버입니다: 더 큰 모델 대신, 답하기 전에 단계적 구간에 인퍼런스 토큰을 쓴다.** 수학·코딩에서 분명히 도움이 됩니다. 이 카드가 붙드는 질문은 *왜* 도움이 되는가이고 — S1 방식으로 재현하면 불편한 답이 나옵니다. **추론 모델 학습은 알고 보면 사고 과정을 향한 인스트럭션 튜닝입니다.** 알파카가 '지시를 따르라'를 가르친 바로 그 machinery에, 이제 `<think>…</think>` 과정을 먹여 모델이 답 앞에 *추론처럼 생긴 서두를 생성*하도록 배웁니다. 이건 텍스트 패턴의 모방입니다. 영상이 집는 단어가 **주입식**입니다: 모델은 생각의 의상을 입고, 정직한 시험은 그 의상이 답을 바꾸는가 아니면 길이만 바꾸는가입니다. **왜 스스로는 모방 이상이 될 수 없는가.** 사전학습 뒤 가중치는 얼어붙습니다; 모든 '생각'은 고정된 파라미터 안의 재조합입니다. 더 긴 `<think>` 구간은 이미 안에 있는 것을 재배열할 뿐 — 모델이 본 적 없는 사실이나 배운 적 없는 수를 더하지 않습니다. 그래서 SFT된 추론은 *끌어내진* 역량의 천장을 올리지, 역량의 천장을 올리지 않습니다. 이건 진짜 이득이면서 동시에 진짜 한계이고, 둘을 혼동하는 것이 '이제 생각한다'가 측정된 문장이 아니라 마케팅 문장이 되는 경로입니다. **다음 방향은 얼어붙은 가중치로부터의 탈출: 경험입니다.** 새 능력이 가중치를 다시 읽어서 나올 수 없다면, *상호작용*에서 나와야 합니다 — 가중치에 없는 정보를 찾는 딥리서치 에이전트, 클릭·실행하고 환경에서 보상을 받는 컴퓨터 유즈 에이전트(`agents-computer-use`). 그리고 결정적으로 **누적**에서: 세션 리셋을 견디는 리플레이 버퍼, 그래서 에이전트가 어제 한 일에서 배우지 매번 맨바닥에서 시작하지 않는 것. 환경에서의 RL을 경험으로 저축하는 것 — 그게 모방이 흉내 낼 수 없는 부분입니다. MCP에 대해 영상은 김을 빼고, 옳습니다: 더 나은 생태계를 가진 툴 호출일 뿐 — 에이전트가 닿는 범위를 넓히지, 에이전트의 본질을 깊게 하지 않습니다. 가져갈 정직한 평가 하나는 측정 가능합니다: *추론이 답을 바꾸는가, 아니면 토큰 수만 바꾸는가?*
동작 방식: 데모가 아니라 정독 노트 + 측정 하나입니다. ### 레시피, 그리고 실제로 가르치는 것 | 단계 | S1 / 알파카식 | 모델이 배우는 것 | |---|---|---| | 수집 | R1·제미나이에서 문제 + `<think>` 과정 + 정답 | — | | 포맷 | `<think>` 긴 추론 `</think>` 최종 답 | 추론 턴의 *형태* | | SFT | 그 과정으로 베이스 모델 파인튜닝 | 그 형태를 요청 시 뱉기 | | 강제 | 프롬프트 끝에 `<think>` 프리필 | 매번 그 구간을 시작하기 | ### 형태 대 실력 — 결판내는 시험 같은 모델을, 강제된 `<think>` 구간을 넣고/빼고 홀드아웃 셋에서 돌립니다. 정확도가 토큰 수에 **맞춰서만** 오르고 구간을 캡하면 무너지면, 산 것은 *생각*이 아니라 *길이*입니다. 토큰 예산 아래서도 오르고 유지되면 구간이 진짜 일을 합니다. 대개는 여기서 실망하고 — 그래서 영상의 **회의감**입니다. ### 왜, 그리고 탈출구 | 한계 | 원인 | 탈출 | |---|---|---| | 새 사실·수 없음 | 사전학습 후 가중치 동결 | 다시 읽기가 아니라 상호작용 | | 세션 기억상실 | 리셋을 견디는 게 없음 | 경험의 리플레이 버퍼 | | '추론'이 재조합 | SFT가 패턴을 복사 | 환경이 보상하는 RL | 다음 방향은, 세상에서 능력을 *벌어* 저축하는 딥리서치·컴퓨터 유즈 에이전트입니다. 교차: `demonstration-is-not-a-specification`(생각 과정은 추론의 시연이지 명세가 아니다 — 복사하면 표면만 복사), `agents-computer-use`(환경 상호작용 탈출), `ai-engineering-is-framing-non-determinism`(테스트 타임 스케일링은 같은 비결정성의 한 프레이밍), `known-workflow-is-a-graph`(추론 한 단계는 노드 하나 — 워크플로를 알면 결정론적 코드로 대체할 수 있을 때가 많다).