200줄짜리 GPT, 안드레이 카파시가 AI 복잡성 게임에 던진 돌멩이


요즘 LLM(거대 언어 모델) 이야기가 안 나오는 날이 없죠? 챗GPT 같은 모델들은 어마어마한 규모와 복잡성을 자랑하며, 마치 거대한 성처럼 느껴지기도 합니다. 수십, 수백억 개의 파라미터, 엄청난 데이터, 천문학적인 컴퓨팅 자원… 이런 이야기들을 듣다 보면 ‘아, 이건 나와는 먼 이야기구나’ 하고 생각하기 쉬워요.

그런데 최근 안드레이 카파시(Andrej Karpathy)라는 걸출한 컴퓨터 과학자가 이 거대한 성에 작은 돌멩이 하나를 던졌습니다. 바로 microgpt라는 프로젝트인데요. 고작 200줄짜리 파이썬 코드 하나로 GPT를 구현해낸 겁니다. 그것도 아무런 외부 라이브러리 의존성 없이 순수 파이썬으로 말이죠. 저는 이 소식을 듣고 정말이지 머리를 한 대 맞은 듯한 기분이 들었어요.


그래서 대체 microgpt가 뭔가요?

안드레이 카파시의 microgpt는 정말 이름 그대로 ‘마이크로’한 GPT입니다. 딱 200줄짜리 파이썬 파일 하나로 GPT를 학습시키고 추론까지 할 수 있게 만들어졌어요. 외부 라이브러리(dependencies)가 전혀 없다는 점이 가장 충격적인 부분입니다. 우리가 흔히 아는 NumPy나 PyTorch 같은 것들도 쓰지 않았다는 뜻이거든요.

이 200줄짜리 파일 안에는 GPT의 핵심적인 요소들이 모두 담겨 있습니다. 데이터셋 처리, 토크나이저, 자동 미분 엔진, GPT-2와 유사한 신경망 아키텍처, Adam 옵티마이저, 그리고 학습 및 추론 루프까지요. 그는 이 프로젝트를 통해 “이 파일은 필요한 알고리즘적 내용을 모두 담고 있다. 나머지는 전부 효율성일 뿐이다. 나는 더 이상 이것을 단순화할 수 없다”고 강조했습니다.

이 말에서 저는 깊은 통찰력을 얻었습니다. 우리가 거대 언어 모델을 보며 경외감을 느끼는 건 대부분 ‘규모’와 ‘성능’ 때문이잖아요? 그런데 카파시는 그 본질이 ‘알고리즘’에 있고, 그 알고리즘 자체는 생각보다 복잡하지 않을 수 있다는 것을 몸소 보여준 겁니다.


GPT, 생각보다 어렵지 않았다고?

물론 microgpt가 챗GPT와 같은 성능을 낸다는 이야기는 아닙니다. microgpt는 32,000개의 영문 이름 데이터셋을 학습해서 새로운 이름을 생성하는 것이 목표입니다. 예를 들어 ‘emma’, ‘olivia’, ‘ava’ 같은 이름들을 보고 학습한 뒤, ‘kamon’, ‘ann’, ‘karai’ 같은 새로운 이름을 만들어내는 식이죠.

image

이름 몇 개 생성하는 게 뭐가 대단하냐고요? 여기서 카파시의 설명을 다시 한번 곱씹어볼 필요가 있습니다. 그는 이렇게 말합니다. “챗GPT 같은 모델의 관점에서 보면, 여러분이 모델과 나누는 대화는 그저 우스꽝스러워 보이는 ‘문서’일 뿐입니다. 여러분이 프롬프트를 초기화하면, 모델의 응답은 그저 통계적인 문서 완성(statistical document completion)일 따름입니다.”

이 부분이 정말 핵심이에요. 이름이든, 긴 문장이든, 아니면 복잡한 대화든, 결국 GPT 모델에게는 특정한 패턴을 가진 ‘문서’ 데이터일 뿐이고, 모델은 그 패턴을 학습해서 다음에 올 내용을 통계적으로 ‘완성’하는 역할을 한다는 거죠. microgpt가 이름을 생성하든, 챗GPT가 대화를 하든, 본질적인 메커니즘은 다르지 않다는 겁니다. 스케일과 데이터의 복잡성만 다를 뿐이죠.


200줄짜리 GPT가 우리에게 주는 메시지

저는 microgpt를 보면서 두 가지 큰 메시지를 받았습니다.

첫째, 본질에 대한 이해의 중요성입니다. 현대 기술 스택은 너무나 복잡해져서, 우리는 거대한 프레임워크와 라이브러리 위에 추상화된 세계에 살고 있습니다. 덕분에 빠르게 무언가를 만들 수 있지만, 그 이면의 원리를 놓치기 쉽죠. 카파시는 microgpt를 통해 “진정으로 GPT를 이해하려면 무엇이 필요한가?”라는 질문에 대한 답을 제시한 겁니다. 데이터셋, 토크나이저, 신경망, 최적화… 이 핵심 요소들이 어떤 역할을 하고 어떻게 유기적으로 연결되는지 직접 구현해봄으로써 그 깊은 원리를 깨달을 수 있도록 말이죠.

둘째, 복잡성에 대한 태도입니다. 많은 사람들이 LLM의 복잡성에 압도되어 접근하기를 주저합니다. 하지만 microgpt는 복잡한 시스템의 핵심이 생각보다 단순한 원리들의 조합일 수 있다는 것을 보여줍니다. “나머지는 전부 효율성일 뿐”이라는 말이 정말 와닿아요. 실제 서비스에서는 속도, 메모리 효율, 분산 처리 등 ‘효율성’이 엄청나게 중요하지만, 그것들은 ‘무엇을 할 것인가’보다 ‘어떻게 더 잘 할 것인가’에 대한 이야기입니다. microgpt는 먼저 ‘무엇을 하는지’에 집중하게 해줍니다.


단순함 속의 깊이

카파시가 microgpt를 갑자기 만들어낸 것은 아닙니다. 그는 지난 10년 동안 LLM을 본질적인 요소들로 단순화하려는 강박에 가까운 노력을 해왔습니다. micrograd(자동 미분 엔진), makemore(문자 단위 모델), nanogpt(GPT-2 구현) 같은 일련의 프로젝트들이 그 결과물입니다. microgpt는 이 모든 여정의 정점이라고 할 수 있습니다.

image

저는 개인적으로 이 단순한 코드를 보며 ‘아름답다’는 생각을 했습니다. 복잡한 문제를 가장 간결하고 명확한 형태로 풀어낸 코드는 그 자체로 예술 작품 같거든요. 마치 조각가가 불필요한 부분을 깎아내고 본질만을 남기는 것처럼, 카파시는 LLM의 본질적인 알고리즘만을 200줄 코드에 담아냈습니다.

이런 프로젝트를 접할 때마다 ‘나도 저렇게 핵심을 꿰뚫어 볼 수 있는 시야를 가져야겠다’는 다짐을 하게 됩니다. 거대한 도구들을 능숙하게 다루는 것도 중요하지만, 그 도구들이 어떤 원리로 작동하는지 명확히 이해하는 것이야말로 진정한 실력이 아닐까 싶어요.


마무리하며: 우리에게 남은 건?

microgpt는 단순히 흥미로운 토이 프로젝트가 아닙니다. AI를 배우고, 이해하고, 만들고자 하는 모든 사람들에게 강력한 영감을 주는 교육 자료이자 철학적인 선언이라고 저는 생각합니다.

만약 여러분이 LLM이 너무 어려워서 엄두가 나지 않았다면, microgpt를 꼭 한번 살펴보세요. 200줄짜리 코드에 불과하지만, 이 안에 거대 언어 모델의 핵심적인 비밀이 모두 담겨 있다는 사실에 놀라게 될 겁니다. 직접 코드를 읽어보고, 작은 데이터셋으로 돌려보고, 한 줄 한 줄이 어떤 역할을 하는지 고민해보는 과정은 분명 여러분의 AI 이해도를 한 단계 끌어올려 줄 거예요.

거대함과 복잡함 속에서 길을 잃기 쉬운 요즘, microgpt는 우리에게 ‘본질로 돌아가라’는 명쾌한 메시지를 전하고 있습니다. 저 역시 이 메시지를 마음에 새기고, 앞으로 어떤 기술을 접하든 그 이면에 숨겨진 ‘알고리즘적 내용’이 무엇인지 탐구하는 태도를 잃지 않으려고 합니다.