MicroGPT
이번 설에 케파시 뉴스를 하나 듣게 되었다.
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 공부 자료 작성 중