MacBook Pro에서 5분 안에 훈련할 수 있는 가장 강력한 AI 모델은?
What's the strongest AI model you can train on a laptop in five minutes?
TL;DR Highlight
MacBook Pro에서 5분 만에 GPT 스타일 transformer를 훈련하여 최적의 모델 크기·데이터셋·학습 설정을 탐색하고 로컬 환경의 한계 내에서 실제로 효과가 있는 요소를 실측 데이터로 입증했다.
Who Should Read
작은 규모의 언어 모델을 직접 훈련해보거나 로컬 환경에서 ML 실험을 빠르게 반복하고 싶은 개발자. 특히 PyTorch/MLX 기반 모델 훈련을 처음 시도하거나 최적화 포인트를 찾고 있는 ML 엔지니어에게 유용하다.
Core Mechanics
- 실험의 최종 결과는 약 180만 파라미터(1.8M param)짜리 GPT 스타일 transformer를 TinyStories 데이터셋의 약 2천만 토큰으로 5분 훈련한 것이며, held-out split 기준 perplexity(모델이 텍스트를 얼마나 잘 예측하는지 나타내는 지표, 낮을수록 좋음) 약 9.6을 달성했다.
- 5분이라는 시간 제약 하에서는 '큰 모델을 적은 토큰으로' 훈련하는 것보다 '작은 모델을 많은 토큰으로' 훈련하는 전략이 훨씬 효과적이다. 1B param 모델에 토큰 4,000개를 넣는 것보다 1M param 모델에 4M 토큰을 넣는 것이 낫다.
- 반대로 너무 작아도 안 된다. 10K param 수준의 초소형 모델은 30초 만에 training loss가 plateau(더 이상 줄지 않는 상태)에 도달하고 영어 문법 자체를 학습하지 못해 gibberish(의미 없는 텍스트)만 출력했다.
- MacBook의 MPS(Apple Silicon GPU 가속)를 쓰면 초당 약 3,000 토큰을 처리할 수 있다. 그런데 torch.compile, float16 변환, gradient accumulation(여러 배치에 걸쳐 누적 후 가중치 업데이트하는 기법) 등 일반적인 최적화 기법들이 오히려 속도를 떨어뜨리거나 의미 없는 수준이었다. 병목이 GPU 연산량이 아니라 GPU에 작업을 지시하는 'launch 횟수' 자체에 있기 때문이다.
- PyTorch 대신 Apple Silicon에 최적화된 MLX 프레임워크로 전환해도 기대했던 2배 속도 향상은 없었다. 결론적으로 추천 설정은 MPS 사용, compile/quantize/gradient accumulation 모두 건너뛰기, 가능한 한 작은 모델 선택이다.
- 데이터셋 선택이 모델 품질에 결정적인 영향을 미쳤다. Simple English Wikipedia로 훈련하면 영어 문법은 맞지만 고유명사에 집착하는 이상한 출력이 나왔다. 10MB 분량의 다양한 주제를 섞으면 일관된 패턴이 없어 모델이 학습하기 어렵기 때문이다.
- TinyStories(어린이 동화 스타일의 단순한 영어 텍스트 데이터셋)로 바꾸자 출력 품질이 눈에 띄게 향상됐다. 단순하고 일관된 문체 덕분에 적은 토큰으로도 패턴을 효과적으로 학습할 수 있었다.
- 최종 추천 조합은 1.8M param 모델 + TinyStories 약 20M 토큰 + MPS 가속 + 단순 훈련 루프(최적화 기법 없음)이며, 이 설정으로 5분 안에 읽을 수 있는 수준의 아동 동화 문장을 생성하는 모델을 만들 수 있었다.
Evidence
- GPT-2 speedrun 프로젝트(modded-nanogpt)의 기법들을 적용하면 더 나은 결과를 얻을 수 있을 것이라는 의견이 있었다. 구체적으로 Muon optimizer(기울기 업데이트 방식을 개선한 옵티마이저), 더 나은 가중치 초기화, 학습률 튜닝 등을 조합하면 같은 시간 안에 더 낮은 perplexity를 달성할 수 있을 것이라는 제안이다.
- '시간' 대신 '에너지(Joule)'를 제약 조건으로 삼아야 MBP와 H100을 공정하게 비교할 수 있다는 의견도 나왔다. 전력 효율 관점에서 보면 MBP가 상대적으로 경쟁력 있을 수 있다는 시각이다.
- 소형 모델 연구의 중요성에 대한 흥미로운 시각이 공유됐다. 효모(yeast)가 복잡한 생물학 연구를 위한 단순 모델 생물로 쓰이듯, 소형 transformer에서 관찰되는 행동이 대형 LLM의 동작을 이해하는 데 도움이 될 수 있다는 것이다. 즉 이 실험은 단순한 재미를 넘어 LLM 해석 가능성 연구에도 의미가 있다.
- 실용적 활용 가능성에 대한 논의도 있었다. '크고 무거운 범용 모델 대신, 특정 도메인에 집중한 소형 모델을 필요에 따라 on-demand로 만들어 쓰면 속도와 효율 면에서 유리하다'는 의견이 공감을 얻었다. 이 논의 도중 마침 Google이 Gemma 3 270M을 출시해 화제가 되기도 했다.
- 비슷한 연구로 'Cramming' 논문(arXiv:2212.14034)이 언급됐다. 이 논문은 현대 노트북에서 하루 동안 훈련할 수 있는 최선의 모델을 찾는 실험으로, 이번 글과 비슷한 문제의식을 공유한다. 또한 Karpathy의 zero-to-hero 시리즈처럼 Jupyter 노트북에서도 유용한 모델을 훈련할 수 있다는 점에서, 'AI 훈련=대규모 클러스터'라는 통념을 다시 생각하게 한다는 반응도 있었다.
How to Apply
- 로컬에서 빠른 모델 훈련 실험을 하려는 경우, torch.compile이나 float16 변환 같은 '일반적인 최적화'를 맹목적으로 적용하지 말고 먼저 MPS만 활성화한 단순 훈련 루프로 baseline을 측정하라. Apple Silicon에서는 launch overhead가 병목이기 때문에 복잡한 최적화가 오히려 역효과를 낼 수 있다.
- 작은 도메인 특화 모델을 빠르게 만들고 싶다면 데이터셋의 '일관성'에 집중하라. 여러 주제를 섞은 잡다한 데이터보다 TinyStories처럼 문체와 주제가 일관된 데이터가 적은 토큰으로도 훨씬 잘 학습된다. 특정 업무(예: 특정 도메인의 텍스트 요약이나 분류)에 맞는 단순하고 일관된 데이터셋을 직접 구성하면 소형 모델도 실용적인 성능을 낼 수 있다.
- 모델 크기와 훈련 토큰 수의 trade-off를 직접 실험해보려면, 같은 시간 안에 '크고 짧게' vs '작고 길게' 두 가지 설정을 비교해보라. 이 글의 결론처럼 시간 제약이 있는 환경에서는 파라미터 수를 줄이고 더 많은 토큰을 보여주는 쪽이 대부분 유리하다.
- 더 나은 결과를 원한다면 modded-nanogpt(https://github.com/KellerJordan/modded-nanogpt) 레포지토리의 Muon optimizer와 가중치 초기화 기법을 참고해 적용해보라. GPT-2 speedrun 커뮤니티에서 검증된 방법들이므로 소형 모델에서도 의미 있는 개선이 기대된다.
Terminology
관련 논문
Neural Particle Automata: 자기조직화 파티클 시스템을 학습하는 신경망 모델
고정된 격자 대신 움직이는 파티클 위에서 동작하는 Neural Cellular Automata의 확장 버전으로, 형태 생성·포인트 클라우드 분류·텍스처 합성 등 다양한 작업에서 자기조직화 동작을 학습할 수 있다.
PyTorch Training Loop 완전 해부: 각 줄이 하는 일과 순서를 바꾸면 생기는 문제
PyTorch 학습 루프의 각 코드 줄이 왜 그 위치에 있어야 하는지, 순서를 바꾸거나 빠뜨렸을 때 어떤 문제가 생기는지를 단계별로 설명한 심층 가이드다.
좋은 Verifier도 망가질 수 있다: Self-Improving VLM이 새로운 태스크에서 오히려 퇴보하는 현상
VLM 자가학습 루프에서 verifier가 특정 태스크에 맞지 않으면 학습할수록 오히려 성능이 떨어지는데, DPO 손실값은 멀쩡히 내려가서 눈치채기도 어렵다.
Self-Distillation에서 Feedback Alignment의 역할
LLM이 스스로를 가르칠 때, 피드백을 모델의 추론 흐름에 단계별로 맞추면 GRPO보다 16점 이상 수학 추론 성능이 오른다.
작고 수정 가능한 CUDA 기반 Language Model 직접 구현체
CUDA로 작성된 GPT(Generative Pretrained Transformer) 미니멀 구현체로, 텍스트뿐 아니라 모든 바이트 스트림을 학습할 수 있어 LLM 내부 구조를 직접 뜯어보고 싶은 개발자에게 유용하다.
Stanford CS336: Language Modeling from Scratch - LLM을 처음부터 직접 만드는 강의
Stanford에서 운영하는 LLM 전 과정 구현 강의로, 토크나이저부터 데이터 수집, 트랜스포머 구현, 분산 학습, RL 기반 정렬까지 직접 코딩하며 배운다. 이론이 아닌 구현 중심이라 실제로 LLM이 어떻게 작동하는지 깊이 이해하고 싶은 개발자에게 가장 체계적인 커리큘럼 중 하나다.