근거는 있나요? — 200줄짜리 베이스라인이 던지는 질문
안드레이 카르파시가 공개한 MicroGPT는 외부 라이브러리 없이 순수 파이썬 200줄로 GPT의 학습·추론 전 과정을 구현한 프로젝트입니다(출처: aitimes). 임베딩 차원 16, 어텐션 헤드 4개, 레이어 1개, 파라미터 총 4,192개. GPT-2의 15억 파라미터와 비교하면 약 35만 분의 1 규모입니다. 그런데 저는 이 숫자 자체보다, 이 프로젝트가 사실상 트랜스포머의 ablation study 템플릿이라는 점에 주목합니다.
컴포넌트별 기여도: 무엇을 빼면 무엇이 무너지는가
MicroGPT는 ▲토크나이저(27-vocab character-level) ▲자동 미분 엔진(스칼라 기반 Value 클래스) ▲멀티헤드 어텐션 + MLP 블록 ▲잔차 연결(residual connection) ▲RMSNorm ▲Adam 옵티마이저 ▲크로스엔트로피 손실 — 이 일곱 가지 구성요소를 한 파일에 담고 있습니다. 카르파시는 train0부터 train5까지 단계별 확장 버전도 함께 공개했는데, 이건 본질적으로 "한 번에 하나씩 요소를 추가하며 loss 변화를 관찰하는" ablation study 설계와 동일합니다.
실제로 초기 loss가 약 3.3(거의 랜덤 수준, −ln(1/27) ≈ 3.30)에서 1,000스텝 후 2.37까지 떨어진다고 보고됩니다. 여기서 ML 실무자라면 자연스럽게 물어야 할 질문이 있습니다: 각 컴포넌트를 제거했을 때 loss가 얼마나 올라가는가? 예를 들어 잔차 연결을 빼면? RMSNorm을 LayerNorm으로 바꾸면? ReLU를 GeLU로 교체하면? 200줄이라는 규모 덕분에 이런 실험을 Jupyter 환경에서 몇 분 안에 직접 돌려볼 수 있다는 게 이 프로젝트의 진짜 가치입니다.
앙상블 관점에서 본 '단순함의 가격표'
Velog에 정리된 앙상블 학습 비교표를 보면, 단일 Decision Tree에서 Bagging → Random Forest → Extra Trees로 갈수록 오버피팅이 줄어들고 안정성이 올라갑니다. Boosting 계열에서도 AdaBoost → GBDT → XGBoost → LightGBM → CatBoost로 올라가면서 정규화, 히스토그램 분할, 범주형 처리 같은 개별 엔지니어링 기법이 하나씩 추가됩니다. 여기서 핵심은, 각 기법의 기여도를 분리해서 측정하지 않으면 '왜 이 모델이 잘 되는지'를 설명할 수 없다는 것입니다.
MicroGPT의 단계별 빌드업은 정확히 같은 논리를 트랜스포머에 적용한 것입니다. Random Forest가 피처 랜덤성 하나를 추가해서 Bagging 대비 분산을 더 줄이듯, MicroGPT의 train3에서 train4로 넘어갈 때 추가되는 컴포넌트 하나가 loss를 얼마나 깎는지 — 이것이 "이 모델은 해석 가능한가?"라는 질문에 대한 가장 정직한 답입니다.
프로덕션과의 거리: correlation이지 causation이 아닙니다
여기서 냉정한 질문을 던져야 합니다. MicroGPT의 loss 곡선이 실제 GPT-2/4의 학습 dynamics와 동일한 패턴을 보인다는 근거가 있나요? 4,192개 파라미터, 27개 vocab, 32,000개 이름 데이터에서 관찰된 학습 패턴이 수십억 파라미터, 수만 vocab, 수조 토큰 규모로 일반화된다고 말하기는 어렵습니다. 카르파시 본인도 "규모와 엔지니어링 측면에서 큰 차이가 있다"고 인정했습니다.
구체적으로, MicroGPT의 스칼라 단위 autograd는 교육용으로는 완벽하지만 실제 PyTorch의 텐서 병렬 연산과는 throughput 차이가 수십만 배에 달합니다. Adam 옵티마이저의 하이퍼파라미터 민감도, learning rate warmup, gradient clipping 같은 실전 트릭 없이 관찰한 수렴 패턴을 그대로 스케일업에 적용하면 재현 불가능한 결론에 도달할 수 있습니다.
시사점: 베이스라인을 소유한 사람이 모델을 이해한다
그럼에도 MicroGPT가 ML 실무에 주는 교훈은 명확합니다. ablation의 전제 조건은 '통제 가능한 베이스라인'이라는 것. 수천 줄의 프레임워크 코드 위에서는 "이 LayerNorm이 정말 필요한가?"를 실험하는 데만 반나절이 걸리지만, 200줄 위에서는 한 줄을 주석 처리하고 loss를 비교하면 됩니다.
앙상블 모델에서 Stacking이 Bagging보다 강력한 이유는 "어떤 모델이 어떤 영역에서 강한지"를 메타 모델이 학습하기 때문입니다. 마찬가지로, 트랜스포머의 각 컴포넌트가 전체 성능에 기여하는 정도를 정량적으로 분리할 수 있어야 — 그래야 비로소 "이 아키텍처를 이해한다"고 말할 수 있습니다.
전망: 'SOTA 달성'보다 '왜 작동하는가'의 시대
최근 ML 커뮤니티에서 모델 해석 가능성(interpretability)과 재현 가능성(reproducibility)에 대한 요구가 높아지고 있습니다. 논문의 실험 섹션에서 ablation table이 빠져 있으면 리뷰어가 즉시 지적하는 시대입니다. MicroGPT는 "200줄로 GPT를 만들었다"는 헤드라인 너머에, 모델 구조의 각 결정이 성능 지표에 미치는 인과적 영향을 직접 측정할 수 있는 실험 환경을 제공합니다.
pip install 없이 Google Colab에서 바로 돌릴 수 있다는 점도 실험의 진입장벽을 낮춥니다. 샘플 사이즈가 32,000개 이름으로 작긴 하지만, 그렇기 때문에 오히려 학습 한 바퀴를 수 분 안에 완료하고 여러 조건을 비교할 수 있습니다. 결국 핵심 메시지는 이겁니다: 성능 숫자를 보고하기 전에, 그 숫자가 어떤 컴포넌트에서 왔는지 분해할 수 있어야 합니다. MicroGPT는 그 분해를 위한 가장 가벼운 도구입니다.