Skip to main content

Command Palette

Search for a command to run...

MicroGPT

Updated
2 min read

이번 설에 케파시 뉴스를 하나 듣게 되었다.

MicroGPT

한번 파해쳐 보쟈…!


MicroGPT란 무엇인가

MicroGPT는 안드레이 카파시(Andrej Karpathy)가 공개한 순수 파이썬 GPT 구현이다. 200~250줄 정도의 코드로, 외부 라이브러리(NumPy, PyTorch, TensorFlow 등) 없이 GPT-2 스타일 트랜스포머를 학습과 추론까지 스스로 수행한다. 이 파일 자체가 “알고리즘의 완전한 구현체”이며, 나머지는 효율 최적화를 위한 것일 뿐이라는 철학으로 만들어졌다.

전체 시퀀스는 아래와 같다.

  • 데이터 → 토큰화 → 모델 → 손실 → 역전파 → 옵티마이저 → 반복
    이 모든 흐름을 200줄 안에서 순수 파이썬으로 구현해놨다( ㄷㄷㄷ;;; )

( 와 gemini / gpt 정말 좋아졌다~~ ㅋㅋㅋ )

이제 아래 부터는 제대로 gpt와 같이 MicroGPT를 파해쳐보자.


1. Autograd: 미분 계산.

MicroGPT의 핵심은 Value 객체다.

각 값은 이런 구조를 가진다.

Value
 ├── data (실제 숫자)
 ├── grad (미분 값)
 ├── _prev (부모 노드)
 ├── _op (연산 종류)
 └── backward() (체인룰 정의)
class Value:
    def __init__(self, data, _children=(), _op=''):
        self.data = data
        self.grad = 0
        self._prev = set(_children)
        self._op = _op
        self._backward = lambda: None

모든 연산은 새로운 Value를 만든다. 그리고 이 값이 어떤 값들로부터 계산되었는지 저장해둔 집합이다.

예를 들어:

c = a * b

를 아래와 같이 구현을 한거다.

c.data = a.data * b.data
c._prev = {a, b}
c._op = '*'

입력 operand를 저장한다. 저게 실행되면 다음과 같이 된다.

  • c는 a와 b의 값으로 계산된 새로운 노드다.

  • c는 자신이 곱셈 연산으로 만들어졌다는 정보를 가진다.

  • c는 입력으로 사용된 노드 집합을 저장한다.

  • c는 곱셈의 미분 공식을 코드로 가지고 있다.

이게 근데 왜 저렇게 구현을 힘들게 했냐..

  • 역전파시에 그래프를 거꾸로 쫒아가기 위해서다.

음..? ㅋㅋㅋㅋㅋㅋ 아니 이거를 gpt한테 물어봤는데 autograd를 구현하기 위해서 만든 클래스이고 머 저런 이유들이 먼가 있는데 이거는 페이지를 하나 파서 해야 겠다. 안되겠다.


공부 및 위 autograd 공부 자료 작성 중

공부

Part 1 of 1

순수 개발을 제외한 논문 스터디 일지 / 심화 개념 일지 등등..