라떼군 이야기
단 200줄의 순수 파이썬 코드로 구현한 GPT: 안드레지 카파시의 'MicroGPT' 딥다이브
TL;DR AI 분야의 석학 안드레지 카파시가 외부 라이브러리 없이 순수 파이썬 200줄만으로 GPT 모델의 학습과 추론을 구현한 ‘MicroGPT’를 공개했습니다. 토크나이저, 자동 미분(Autograd), 트랜스포머 아키텍처, 옵티마이저까지 LLM의 뼈대가 되는 모든 핵심 원리가 담겨 있습니다. 복잡한 블랙박스처럼 느껴지던 LLM의 동작 방식을 가장 투명하고 본질적인 형태로 이해할 수 있는 완벽한 교보재입니다.
최근 수천억 개의 파라미터를 가진 거대 언어 모델(LLM)들이 쏟아져 나오면서, AI의 내부 동작 원리는 점점 더 거대한 블랙박스처럼 여겨지고 있습니다. PyTorch나 텐서플로우 같은 강력한 프레임워크 덕분에 모델을 쉽게 만들 수는 있지만, 그 밑단에서 어떤 수학적 연산이 일어나는지 직관적으로 이해하기는 쉽지 않죠. 이런 상황에서 전 OpenAI 디렉터이자 AI 교육의 대가인 안드레지 카파시(Andrej Karpathy)가 외부 의존성(Dependency)이 전혀 없는 순수 파이썬 코드 200줄로 GPT를 구현해 냈습니다. 이는 단순히 신기한 프로젝트를 넘어, 수십 년간 발전해 온 딥러닝의 정수를 누구나 읽고 이해할 수 있는 형태로 압축해 냈다는 점에서 엄청난 가치를 지닙니다.
핵심 내용
MicroGPT는 외부 라이브러리 없이 데이터셋 처리부터 토크나이저, 자동 미분(Autograd) 엔진, 트랜스포머 아키텍처, Adam 옵티마이저까지 모든 것을 단일 파일에 담았습니다. 데이터셋으로는 32,000개의 영문 이름 목록을 사용하며, 알파벳 단위로 쪼개는 가장 단순한 형태의 문자 수준(character-level) 토크나이저를 구현했습니다. 특히 주목할 점은 PyTorch의 핵심인 자동 미분 기능을 스칼라(Scalar) 값 기반의 ‘Value’ 클래스로 직접 구현하여 연쇄 법칙(Chain rule)과 역전파(Backpropagation)의 원리를 명확히 보여준다는 것입니다. 모델 아키텍처는 GPT-2를 기반으로 하되 RMSNorm, ReLU 등을 사용하여 최대한 단순화했으며, 쿼리(Q), 키(K), 값(V)을 활용한 멀티 헤드 어텐션과 MLP 계층의 상호작용을 투명하게 드러냅니다.
기술적 인사이트
소프트웨어 엔지니어링 관점에서 이 코드는 ‘복잡성의 제거’가 주는 아름다움을 극명하게 보여줍니다. 일반적인 LLM 학습 코드는 병렬 처리를 위해 텐서(Tensor) 기반의 행렬 연산을 수행하지만, MicroGPT는 배치(Batch) 차원을 없애고 한 번에 하나의 토큰만 처리하는 방식을 택했습니다. 이로 인해 학습 속도는 극단적으로 느려졌지만(효율성 포기), 그 대가로 텐서 차원 맞추기의 복잡성을 덜어내고 알고리즘의 본질에만 집중할 수 있게 되었습니다. 특히 흥미로운 부분은 일반적으로 추론(Inference) 시에만 사용하는 ‘KV 캐시(KV Cache)‘를 학습(Training) 루프 내에서 명시적으로 구축하고, 이 캐시된 노드들을 통해 역전파를 수행한다는 점입니다. 이는 트랜스포머의 어텐션 메커니즘이 시간 축을 따라 어떻게 정보를 전달하고 기울기(Gradient)를 흘려보내는지를 완전히 새로운 시각에서 이해하게 해줍니다.
시사점
이 프로젝트는 실무에서 직접 사용할 수 있는 프로덕션용 코드는 아니지만, AI 엔지니어와 연구자들에게 최고의 ‘멘탈 모델’을 제공합니다. 프레임워크가 제공하는 추상화 계층(Abstraction layer) 아래에서 실제로 어떤 일이 벌어지는지 이해하면, 실무에서 발생하는 메모리 누수, 기울기 소실, 차원 오류 등의 복잡한 버그를 디버깅할 때 훨씬 깊이 있는 접근이 가능해집니다. 또한, 사내 스터디나 주니어 개발자 교육 시 PyTorch 튜토리얼을 무작정 따라 하는 것보다 이 200줄의 코드를 한 줄씩 뜯어보고 분석하는 것이 LLM의 근본 원리를 체화하는 데 훨씬 빠르고 확실한 지름길이 될 것입니다.
수천억 개의 파라미터가 연산되는 거대한 AI도 결국은 덧셈, 곱셈, 그리고 미분이라는 단순한 수학적 블록들의 연결일 뿐입니다. 우리는 프레임워크의 편리함에 기대어 이 본질적인 단순함을 잊고 있었던 것은 아닐까요? 주말을 활용해 이 200줄의 코드를 천천히 필사하며, 거대한 블랙박스 속에서 살아 숨 쉬는 수학의 우아함을 직접 경험해 보시기를 권합니다.