단 200줄의 코드로 LLM을 이해하다: 안드레 카파시의 ‘microgpt’

  • Post author:
  • Post category:IT
  • Post comments:0 Comments
최근 AI 업계의 거장 안드레 카파시(Andrej Karpathy)가 microgpt라는 흥미로운 예술 프로젝트를 공개했습니다. 이는 외부 라이브러리 없이 순수 파이썬 200줄만으로 GPT 모델의 학습부터 추론까지 모든 과정을 구현한 것입니다.
“이보다 더 단순화할 수는 없다”는 그의 말처럼, 이 코드는 오늘날 ChatGPT와 같은 거대 모델들이 작동하는 알고리즘적 본질을 완벽하게 담고 있습니다.
이번 포스팅에서는 microgpt의 핵심 구성 요소와 이를 통해 알 수 있는 LLM의 작동 원리를 정리해 보겠습니다.
1. 데이터와 토크나이저: 숫자로 변환된 언어
모델이 학습하기 위해서는 텍스트를 숫자로 바꿔야 합니다. microgpt는 약 32,000개의 이름 데이터를 사용하며, 가장 단순한 형태인 문자 단위 토크나이저를 채택했습니다.
각 문자(a-z)에 고유 번호를 부여하고, 시퀀스의 시작과 끝을 알리는 BOS(Beginning of Sequence) 토큰을 추가하여 모델이 “새로운 이름이 시작되고 끝나는 지점”을 학습하게 합니다.
2. Autograd(자동 미분): 학습의 엔진
신경망 학습의 핵심은 “오차를 줄이기 위해 모델의 파라미터를 얼마나 수정해야 하는가”를 계산하는 것입니다. microgpt는 이를 위해 Value라는 클래스를 직접 구현하여 역전파(Backpropagation) 알고리즘을 실행합니다.
연쇄 법칙(Chain Rule): 복잡한 미분 계산을 마치 자전거보다 2배 빠른 자동차, 사람보다 4배 빠른 자전거의 속도를 곱해 자동차가 사람보다 8배 빠름을 구하는 것처럼 직관적으로 처리합니다.
이 과정은 PyTorch와 같은 전문 라이브러리가 텐서 단위로 수행하는 작업을 스칼라 단위로 구현한 것으로, 알고리즘적으로는 완전히 동일합니다.
3. 트랜스포머 아키텍처: 소통과 생각
microgpt의 구조는 GPT-2를 따르며, 크게 두 가지 블록으로 나뉩니다.
어텐션(Attention) 블록: 토큰 사이의 ‘소통’ 창구입니다. 현재 토큰이 과거의 토큰들을 돌아보며 어떤 정보가 중요한지 결정합니다.
MLP(Multilayer Perceptron) 블록: 각 위치에서 독립적으로 일어나는 ‘연산(생각)’ 과정입니다. 모델은 이 두 과정을 반복하며 다음에 올 토큰의 확률 분포를 계산합니다.
4. 학습과 추론: “환각(Hallucination)”의 시작
학습 과정에서 모델은 다음에 올 올바른 문자를 맞히지 못했을 때 느끼는 ‘놀람’의 정도인 교차 엔트로피 손실(Cross-entropy loss)을 최소화하도록 훈련됩니다.
학습이 끝나면 모델은 고정된 파라미터를 바탕으로 새로운 이름을 생성하는데, 이를 추론(Inference)이라고 합니다.
재미있는 점은 모델이 학습 데이터에 없는 ‘kamon’, ‘karia’ 같은 이름을 만들어낸다는 것입니다. 카파시는 이를 “환각”이라 부르며, 이는 모델이 진실을 아는 것이 아니라 단지 통계적으로 그럴듯한 문자의 조합을 생성하는 것뿐임을 잘 보여줍니다.
5. 실제 LLM과의 차이점은?
microgpt는 본질을 담고 있지만, 실제 서비스되는 ChatGPT와는 규모 면에서 큰 차이가 있습니다.
데이터: 3만 개의 이름 대신 수조 개의 인터넷 문서 데이터를 사용합니다.
효율성: 파이썬 루프 대신 GPU를 활용해 수조 번의 연산을 병렬로 처리합니다.
사후 학습: 단순한 문서 완성을 넘어 사용자와 대화할 수 있도록 미세 조정(SFT)과 강화 학습(RL) 과정을 거칩니다.
결론: LLM에는 마법이 없다
카파시는 microgpt를 통해 모델이 “이해”를 하는지에 대한 철학적 질문에 대해, 기계적으로는 입력 토큰을 다음 토큰의 확률 분포로 매핑하는 거대한 수학 함수일 뿐이라고 설명합니다.
LLM의 블랙박스 속이 궁금하다면, 복잡한 라이브러리 뒤에 숨겨진 원리를 200줄의 코드로 드러낸 microgpt 프로젝트를 직접 살펴보시는 것을 추천합니다.
이 포스팅은 안드레 카파시의 microgpt 블로그 글과 소스코드를 바탕으로 작성되었습니다.
https://karpathy.github.io/2026/02/12/microgpt/

답글 남기기