7,500토큰 아키텍처 스펙을 4개 모델에 던졌다. 가장 싼 모델이 플래그십이 잡은 결함을 다 잡았다.
본 글은 Gemma 4 Challenge Write About Gemma 4 트랙 submission입니다.
TL;DR. Gemma 4 31B (오픈 웨이트, 100만 토큰당 입력 $0.12 / 출력 $0.37) 를 Gemini 3.1 Pro Preview, DeepSeek V4 Pro, Claude Opus 4.7 과 동일 조건에서 벤치마크했다. 과제는 세 단계다. 7,500토큰짜리 마크다운 아키텍처 스펙을 읽힌다. 4개 모듈짜리 트레이딩 봇 설계에 적용시킨다. 마지막으로 스펙 자체를 적대적으로 까게 한다.
개발자가 알 가치 있는 결과 세 가지.
하나. Gemma 4 31B가 Claude Opus 4.7, Gemini 3.1 Pro와 4개 모듈 중 3개에서 동일한 레이어 배치를 했다. 100만 토큰당 $12 짜리 플래그십과 같은 구조적 판단을, 호출당 약 1/14 비용으로.
둘. 4개 모델이 수렴한 4가지 핵심 아키텍처 결함을, Gemma 4 31B가 모두 잡았다. 가장 미묘한 것까지. 그것도 4개 모델 중 가장 짧은 출력으로.
셋. 재현 가능한 전체 세팅은 GitHub에 있다. OpenRouter 총 비용 $0.05.
자기 아키텍처 문서를 직접 검수하는 1인 개발자라면, Gemma 4 31B는 모든 iteration마다 돌릴 수 있을 만큼 싼 모델이다.
Gemma 4를 가장 검증하고 싶었던 이유
2026년 1인 개발자와 소규모 팀에게 LLM 워크플로에서 진짜 비싼 건 모델 자체가 아니다. 모델이 비싸서 한 스텝을 건너뛰는 순간이다.
초안 뽑을 때마다 $0.06짜리 비판 패스 한 번 더 돌리는 걸 망설이기 시작하면, 결국 안 돌린다. 산출물의 아키텍처 품질도 딱 그만큼 떨어진다.
Gemma 4 31B Dense는 OpenRouter에서 입력 $0.12, 출력 $0.37 (100만 토큰당) 이다. 7,500토큰 시스템 프롬프트 + 2,000토큰 사용자 과제 + 4,000토큰 구조화된 출력으로 계산하면, 비판 1회당 대략 1센트의 1/10이다. 고민하지 않아도 되는 가격대.
이 글이 검증하고 싶었던 질문은 단순하다. 31B 파라미터짜리 오픈 웨이트 모델이, 빽빽한 마크다운 아키텍처 스펙을 frontier closed 모델과 같은 깊이로 읽어낼 수 있는가? 만약 그렇다면, 1인 아키텍처 작업의 경제학 전체가 바뀐다.
그래서 의도적으로 어려운 스펙을 골랐다. 한국어와 영어가 섞인 7,500토큰 마크다운, 4개 stratum (P0 / P1 / P2 / P3), 8개 hard-lock 원칙, 5개 cross-domain invariant, 4개 도메인 매핑. 표면만 훑으면 실제 제약을 그냥 놓치는 문서다.
이 동일한 스펙을 동일한 프롬프트로 Gemma 4 31B, Gemini 3.1 Pro Preview, DeepSeek V4 Pro, Claude Opus 4.7 네 모델에 던졌다.
다음은 그 결과다.
세팅
4개 모델 모두 동일한 시스템 프롬프트 (아키텍처 스펙 직접 로드) 와 동일한 사용자 프롬프트 (출력 2개 요청) 를 받았다.
PART 1. 스펙을 실제 도메인에 적용. 암호화폐 트레이딩 봇을 4개 모듈 (signal / risk / executor / state) 로 설계, 각 모듈을 4개 stratum 중 하나에 배치, hard-lock invariant 명시, Python 클래스 스케치, 테스트 assertion 작성.
PART 2. 스펙 자체를 적대적으로 비판. 보편적이지 않은 주장에 플래그 달기, 빠진 레이어 나열, 과한 추상화 지적, 마지막으로 "실제로 이 스펙 쓸 거냐"에 답하기.
재시도 없음. cherry-picking 없음. OpenRouter 3개 호출 모두 temperature 0.3. Claude Opus 4.7은 공정성을 위해 깨끗한 subagent 컨텍스트에서 실행.
| 모델 | 제공자 | Context | $/M in | $/M out | 호출당 비용 |
|---|---|---|---|---|---|
| Gemma 4 31B Dense | Google 오픈 | 262K | $0.12 | $0.37 | ~$0.003 |
| Gemini 3.1 Pro Preview | Google 플래그십 | 1M | $2.00 | $12.00 | ~$0.043 |
| DeepSeek V4 Pro (MoE 1.6T) | DeepSeek | 1M | $0.435 | $0.87 | ~$0.012 |
| Claude Opus 4.7 | Anthropic | 1M | (Max 구독, 한계비용 $0) |
Gemma 4 31B의 호출당 비용은 Gemini 3.1 Pro Preview보다 약 14배 싸다. 감사(audit) 1회보다 채팅 메시지 1통에 더 가까운 가격이다.
전체 프롬프트와 4개 파싱된 JSON 응답은 GitHub에 있다. 글 끝에 링크.
평가한 항목은 구체적으로 세 가지였다.
- 레이어 할당 표. 같은 아키텍처라면 비슷한 매핑이 나와야 한다. 4개 모델이 4개 모듈을 어디에 두는가?
- 비판 패리티. 각 모델이 같은 아키텍처 결함을 잡는가? 어디서 갈라지는가?
- 평결. "실제로 이 스펙을 쓸 거냐" 라는 질문에 각 모델이 어떻게 답하는가?
결과 1. 레이어 할당. Gemma 4 31B가 플래그십과 일치.
4 모듈 × 4 모델 × 4 레이어 = 16개 셀.
| 모듈 | Gemma 4 31B | Gemini 3.1 Pro | Claude Opus 4.7 | DeepSeek V4 Pro |
|---|---|---|---|---|
| signal | P2 | P2 | P2 | P2 |
| risk | P3 | P3 | P3 | P0 |
| executor | P1 | P1 | P1 | P1 |
| state | P0 | P0 | P0 | P0 |
Gemma 4 31B는 모든 모듈에서 Claude Opus 4.7, Gemini 3.1 Pro와 일치했다. 100만 토큰당 $12 짜리 플래그십과 같은 구조적 판단을 호출당 약 1/14 비용으로 내린 셈이다.
이상치(outlier)는 Gemma 4가 아니라 DeepSeek V4 Pro였다. reasoning 토큰을 많이 쓰는 1.6조 파라미터 MoE 모델이 risk를 P3 (validation) 가 아니라 P0 (always-on safety) 에 배치했다. 관대하게 읽으면 이건 변호 가능한 선택이다. 회로 차단기(circuit breaker)는 개념적으로 always-on이니까. 단 나머지 3개 모델은 스펙을 더 문자 그대로 읽었고, 스펙이 risk를 두라고 한 validation stratum에 그대로 뒀다.
이 글에서는 strict reading을 따른다. 핵심 포인트는 이거다. 신중한 의미론적 배치가 요구되는 7,500토큰짜리 마크다운 스펙에서, Gemma 4 31B가 플래그십과 같은 판단을 했다. 싸다고 답이 sloppy하지 않았다는 뜻이다.
자기 문서를 직접 검수하는 1인 개발자한테는 결론이 단순하다. 수정할 때마다 Gemma 4 31B를 1차 리더로 돌리면 된다. frontier 모델은 진짜로 second opinion이 필요한 순간을 위해 아껴두면 된다.
결과 2. 비판 패리티. Gemma 4 31B가 플래그십이 잡은 결함을 다 잡았다.
PART 2를 설계한 의도는 모델별 차이를 드러내는 거였다. 4개 모델이 아키텍처를 각자 다른 각도에서 까는 걸 보고 싶었다. 막상 나온 결과는 정반대였다.
가장 중요한 4개 비판에서 4개 모델이 합의했다. Gemma 4 31B 포함.
비판 1. "Self-correction is silent"는 감사 가능 도메인에서 위험하다.
스펙의 Cross-domain Invariant 2는 시스템이 자기 드리프트를 사용자에게 노출하지 않고 조용히 치유하라고 명시한다. 콘텐츠 초안에서 톤이 흔들리는 LLM이라면 합리적인 규칙이다. 그런데 트레이딩, 법무, 규제 도메인에 들어가는 순간 위험해진다. 진짜 돈이 걸린 state mutation을 silent recovery가 덮어버리기 때문이다.
Gemma 4 31B의 답: "금융 및 트레이딩 시스템에서 state drift의 silent recovery는 anti-pattern이다. State anomaly는 highly observable해야 하고 종종 halt가 필요하다. silent internal masking이 아니라." 직설적이고 짧다. Claude와 DeepSeek의 더 긴 출력과 같은 구조적 진단.
비판 2. "Plain Text only"는 콘텐츠 시스템 사고방식이다.
스펙의 Core Principle 7은 모든 generation이 Plain Text라고 한다. HTML이나 JSON으로의 포맷 변환은 마지막 단계에서만. 콘텐츠 파이프라인에는 맞는 원칙이다. "generation"이 Python dataclass고 "conversion"이 ccxt API payload인 트레이딩 봇에는 의미가 없다.
4개 모델 모두 이 점을 잡았다. 그중 3개는 같은 해결책을 제안했다. "Plain Text"를 "Schema-Validated Intermediate Representation"으로 교체. 같은 아이디어. Gemma 4 31B가 그 셋 중 하나였다.
비판 3. "Brand/tone injection"은 비-콘텐츠 도메인에서 무리수다.
원래 스펙에서 P3는 브랜드 보이스를 주입하는 곳이었다. 톤만. 구조 변경 없음. 스펙은 이걸 트레이딩 봇 도메인의 "sizing"에 매핑한다. 포지션 사이즈는 구조적이다. 톤이 아니다.
4개 모델 모두 무리수를 잡아냈다. Gemini 3.1 Pro Preview가 가장 직설적으로 말했다. Gemma 4 31B는 같은 말을 더 적은 단어로: "P3 Brand Injection. LLM에는 일반 아키텍처 용어로 유용하지만, 비-콘텐츠 도메인에는 너무 모호해서 actionable하지 않다. 트레이딩에서는 그냥 Sizing이다."
비판 4. "universal" 주장이 너무 강하다.
스펙 제목은 "Universal Layered Architecture". 그러나 5절에서 "이건 thinking pattern이지 framework가 아니다" 라는 disclaimer로 뒷걸음친다. 4개 모델 모두 제목과 disclaimer 사이의 긴장을 알아챘다.
이 수렴이 중요한 이유. 4개 모델은 sample이 작다. 본 글이 "이건 signal이지 noise가 아니다" 라는 강한 주장을 N=4로 펴기 어렵다. 수렴이 보여주는 것. 4개 모델 각각이 같은 4개 결함을 독립적으로 발견했다. Gemma 4 31B 포함. Gemma 4 31B 하나만 돌리는 1인 개발자도 이 4개 이슈를 동일하게 찾아낼 거다. 나머지 3개 모델에 비용을 지불하지 않고도.
결과 3. Gemma 4 31B의 시그니처 비판. 혼자였으면 못 찾았을 retag.
명백한 결함에서 모델들이 수렴하는 건 안심되는 신호다. 정작 그걸 어떻게 고칠지에서 갈리는 지점이 모델별 학습 깊이를 드러낸다. 4개 모델 모두 서로 구별되는 시그니처 제안을 내놨다.
Gemma 4 31B의 시그니처는 이번 감사 전체에서 가장 actionable한 구조적 fix였다.
스펙은 P0를 4-레이어 수직 모델의 "stratum"이라고 부른다. Gemma 4 31B가 관찰한 건 P0가 사실 소프트웨어 엔지니어링 용어로는 cross-cutting concern이라는 점이다. 데코레이터. 미들웨어. 다른 레이어를 감싸는 인터셉터. 그 위에 앉아있는 stratum이 아니라.
P0를 "stratum"에서 "interceptor"로 재분류하면 아키텍처가 구체적 코드로 매핑되는 방식이 바뀐다. P0를 stratum으로 보는 순간 always-on watchdog이 수직 순서 어디에 끼는지 고민하느라 에너지가 샌다. interceptor로 보면 그냥 기존 P1-P2-P3 흐름을 watchdog으로 감싸면 끝이다. 구현도 간단해지고 멘탈 모델도 훨씬 깔끔하다.
짬 좀 찬 엔지니어가 낼 법한 제안이다. 그게 Gemma 4 31B의 9KB짜리 JSON 출력에서 튀어나왔다. 테스트한 모델 중 출력 길이가 가장 짧았는데도 그렇다. 짧다고 얕지 않았다.
다른 모델들의 시그니처.
- Claude Opus 4.7은 스펙의 카테고리 오류를 잡았다. "Hard-locked invariants are byte-exact"가 SAFE-12의 일일 손실 한도 -$3 같은 수치 임계값에 텍스트 세계 언어를 갖다 붙이고 있다. 실제 속성은 "versioned patch로만 변경 가능". config-management 속성이다. byte 속성이 아니다. 날카로운 관찰. 단 구조적 fix는 제안하지 않았다.
- Gemini 3.1 Pro Preview는 스펙의 three-reviewer AND-gate가 결정론적 로직에는 무의미하다는 걸 잡았다. ccxt order payload에 적용하면 theater다. 직설적. 솔직하다. 단 "이걸 optional로 만들어라" 정도 이상의 구조적 fix는 제안하지 않았다.
- DeepSeek V4 Pro는 빠진 레이어 5개 (observability, persistence, deployment, data pipeline, authz) 를 식별하고 전체 mermaid sequence diagram을 그렸다. 망라적 coverage. 가장 큰 출력 분량.
Gemma 4 31B의 "P0 = interceptor" 제안은 4개 모델 전체 제안 중에서 내가 가장 먼저 구현할 single fix다. 그리고 내가 혼자였다면 가장 찾아내기 어려웠을 fix이기도 하다.
결과 4. Gemma 4 31B의 스펙 평결이 가장 surgical했다.
각 모델에게 마지막으로 던진 질문. 스펙을 설계해보고 비판해본 다음, "이 아키텍처를 실제로 쓸 거냐."
Gemma 4 31B의 답.
"Conditional. 신뢰성과 환각 방지가 latency보다 중요한 LLM-orchestrated 워크플로에는 Yes. 다단계 validation의 오버헤드가 병목인 순수 고성능 소프트웨어에는 No."
케이스 두 개를 깔끔하게 가르고, 분기선이 명확하고, 외교적 hedging도 없고, "여러 요인에 따라 다르다" 류의 filler도 없다.
이런 답은 의사결정 규칙으로 그대로 압축할 수 있다. task가 LLM-orchestrated이고 신뢰성이 속도보다 중요하면 스펙을 써라. 아니면 쓰지 마라. 그게 쓸 만한 heuristic이다.
다른 답변들과 비교.
- Claude Opus 4.7: "Conditional. V5.0 한정으로는 Yes, 왜냐하면 레이어 순서가 내가 원했던 모듈 분리를 정확히 포착하니까. 일반적 universal architecture로는 No." 더 정확한 use case 한정. 덜 일반화 가능.
- DeepSeek V4 Pro: "Conditional. LLM 기반 콘텐츠에는 Yes. 트레이딩 봇에는 안전 컨셉만 adapt하고 plain text와 trigger와 brand injection 레이어는 버려라." 더 상세함. 더 높은 reading cost.
- Gemini 3.1 Pro Preview: "Conditional. Content와 Legal 도메인에는 절대적으로 Yes, 트레이딩 봇 도메인에는 폐기." 가장 직설적인 거부. 단 Gemini는 같은 응답에서 같은 아키텍처를 따르는 full 트레이딩 봇 spec을 만들었다. 자기가 만든 spec과 마지막 평결이 정면 충돌한 셈이다. 이 모순은 데이터 포인트로 유용하다고 본다. 다만 이게 모델의 honesty 때문인지 sampling variance 때문인지는 single run으로는 판단이 안 된다.
빠른 의사결정 규칙이 필요한 1인 개발자에게는, Gemma 4 31B의 답이 가장 직접 사용 가능하다.
스펙에서 무엇을 바꿨나
4개 비판을 함께 읽고 아키텍처 문서를 편집했다. 세 가지 변경. 모두 Gemma 4 31B의 발견에서 단독으로, 또는 다른 모델들과의 수렴에서 나온 것이다.
- Cross-domain Invariant 2가 더 이상 "Self-correction is silent"가 아니다. 4단 escalation contract다. 톤에는 Silent. state에는 Logged. policy에는 Surfaced. safety에는 Blocked. 4개 모델 모두 driver. Gemma 4 31B 포함.
- Core Principle 7이 더 이상 "Plain Text only"가 아니다. "Schema-Validated Intermediate Representation"이다. Gemma 4 31B가 driver (가장 간결한 제안 버전). Gemini 3.1 Pro와 DeepSeek V4 Pro가 confirm.
- P0가 "stratum"에서 "interceptor"로 재분류 중이다. Single-source 귀속. Gemma 4 31B의 시그니처 contribution. 다른 3개 모델은 결함은 수렴해서 잡았지만 이 specific fix는 제안하지 않았다.
세 가지 편집. 그중 세 번째는 라인업에서 가장 싼 모델에서 나왔다. 모든 iteration마다 돌릴 수 있는 그 모델에서.
이 글이 주장하지 않는 것
데이터가 뒷받침하는 것과 뒷받침하지 않는 것을 분명히 한다.
4개 모델은 sample이 작다. Gemma 4 31B를 다른 3개 모델과 함께 테스트했다. 그중 둘 (Claude, Gemini) 은 Gemma의 학습 corpus의 일부와 비판 heuristic을 공유할 수 있는 lab이 학습시킨 모델이다. "수렴이 signal이지 noise가 아니다" 라고 주장하려면, Llama, Qwen, Mistral 등 non-Google, non-Anthropic 계통을 포함한 7-10개 모델이 필요하다. 여러 temperature와 seed 와 함께. 그리고 base-rate critique 중첩을 체크하기 위한 control prompt (아키텍처 스펙 없는 버전) 도. 그 control 들은 돌리지 않았다.
데이터가 보여주는 것. 하나의 아키텍처 문서, 하나의 프롬프트 구조, temperature 0.3에서. Gemma 4 31B가 4개 셀 중 3개에서 frontier 모델과 일치하는 레이어 할당을 만들었다. 다른 모델들이 잡은 결함을 모두 잡았다. 그리고 세트 전체에서 가장 actionable한 구조적 fix를 contribution했다.
$0.05는 inference 비용이다. 감사 비용이 아니다. 아키텍처 개선은 내가 4개 JSON 출력을 읽고 reconcile하고 문서를 편집해야 가능했다. inference는 내 작업의 input이었다. 작업 자체가 아니라.
Gemini 패러독스 (같은 모델이 스펙을 만들고 쓰지 말라고 답하는 것) 는 그 출력의 literal contradiction이다. 그게 "honesty"를 반영하는 건지, "instruction-following이 두 sub-task를 분리해서 처리한" 결과인지, sampling variance인지는 single run으로 알 수 없다. contradiction 자체가 informative라서 기록했을 뿐, 원인은 단정 안 한다.
프롬프트를 쓴 사람도, 출력을 읽고 해석한 사람도 나다. 4개 응답을 내 선호에 맞춰 pattern-match하고 있을 위험이 분명히 있다. 그 위험을 인정한다고 사라지는 건 아니다.
재현하기
세팅은 작고 5분 안에 돌아간다.
EFA_Universal_Architecture.md가 시스템 프롬프트다. 약 7,500 토큰. stratum 정의와 도메인 매핑이 들어간 빽빽한 마크다운. GitHub repo에 있다.run_round2_v5_spec.py가 3개 오픈 / 세미오픈 모델을 위한 OpenRouter caller다. 표준 chat completions API 사용.- Claude Opus 4.7 호출은 Claude Code의 깨끗한 subagent로 만들었다. 동일 프롬프트 내용. 독립 context.
- 4개 파싱된 JSON 응답은
results/round_2_v5_spec/에 있다.
Minimum-cost 재현 경로. Gemma 4 31B만 돌려라. 나머지 3개는 skip. 총 비용 ~$0.003. 같은 4개 수렴 결함과 사용 가능한 구조적 제안이 나온다. second opinion이 필요하면 빠진 레이어 coverage를 위해 DeepSeek V4 Pro를 추가하라. ~$0.01 더.
이 2-모델 세팅 (Gemma 4 + DeepSeek V4) 이 수렴 레이어 + 깊은 비판 레이어를 4-모델 풀세트의 약 1/40 비용으로 cover한다. 자기 blueprint를 직접 검수하는 1인 개발자에게는 이게 내가 실제로 추천하는 경로다.
이 프로토콜을 본인 아키텍처 문서에 돌려서 다른 결과가 나오면, 그 비교를 보고 싶다. counter-experiment 환영.
Jack. wildeconforce.com