들어가며
(같은 이름의) 스프레드시트(및 엑셀)로 AI를 이해하려는 시도는 이전에도 소개한 적이 있는데요, 최근 Andrej Karpathy가 nanoGPT를 재현해보기 위해 공개한 YouTube 영상 및 코드로부터 영감을 받아, nanoGPT에 맞춰 스프레드시트와 엑셀로 nanoGPT의 동작 원리를 소개한 프로젝트가 있어 소개합니다.
소개
SpreadSheet is All You Need
프로젝트는 GPT의 작동 방식을 이해하기 위해 만들어졌습니다. 특히 트랜스포머의 내부 메커니즘이 일련의 매트릭스 계산으로 이루어진다는 점에 착안하여 이를 시각적으로 표현할 수 있는 방법을 고민했습니다. 그래서 이 모든 과정을 스프레드시트로 나타내기로 했습니다. 이를 통해 GPT 아키텍처의 전체 구조와 데이터 흐름을 시각화할 수 있었습니다.
이 프로젝트는 트랜스포머의 모든 구성 요소와 계산 과정을 포함하여 사용자가 직접 상호작용하고 구성할 수 있게 합니다. 또한, 이 프로젝트는 nanoGPT 아키텍처를 기반으로 하여 작은 규모로 구현되었기 때문에 비교적 가벼우며, 컴퓨터 성능에 큰 부담을 주지 않습니다.
주요 특징
이 프로젝트는 트랜스포머의 주요 구성 요소를 모두 포함하고 있습니다:
-
임베딩(embedding)
-
레이어 정규화(layer norm)
-
셀프 어텐션(self attention)
-
프로젝션(projection)
-
MLP(다층 퍼셉트론)
-
소프트맥스(softmax)
-
로짓(logits)
이 프로젝트는 약 85,000개의 파라미터를 포함하고 있으며, 각 단계의 계산 과정을 시각적으로 표현합니다. 또한, 파라미터를 랜덤하게 생성하거나 특정 값을 지정하여 실험할 수 있는 기능을 제공합니다.
스프레드시트의 각 블록은 색상으로 구분되어 있으며, 각각의 역할을 쉽게 이해할 수 있습니다.
- 보라색: 훈련된 모델의 파라미터로 대체될 값들
- 녹색: 입력 값에서 최종 결과로 변환되는 값들
- 주황색: 중간 계산 값들
스프레드시트를 읽을 때는 상단에서 시작하여 하단까지 순차적으로 진행하며, 좌측에 단계별 레이블이 표시됩니다. 각 셀을 선택하면 해당 셀에 영향을 미치는 다른 값들을 확인할 수 있어 메커니즘을 더 잘 이해할 수 있습니다. 또한, nanoGPT의 학습된 가중치가 있다면 이를 스프레드시트에 적용하여 실제 작동을 확인할 수 있습니다.
"nanoGPT.numbers" 파일에는 "no weights"와 "random weights"라는 두 개의 탭이 있습니다. "random weights" 탭의 매개변수는 무작위로 생성되고, "no weights" 탭의 매개변수는 매우 깔끔하여 읽기 쉽게 만들었습니다. 스프레드시트 소프트웨어의 내부 메커니즘 때문에 "random weights" 탭을 업데이트할 때마다 값이 다시 생성됩니다(이는 많은 계산을 수반하여 컴퓨터를 일시적으로 멈추게 할 수 있습니다).
라이선스
이 프로젝트는 MIT License로 공개 및 배포되고 있습니다. 상업적 사용에는 제한이 없으며, 자유롭게 수정 및 배포할 수 있습니다.
nanoGPT의 스프레드시각화 프로젝트 GitHub 저장소
프로젝트 제작자가 공개한 참고 자료
Andrej Karpathy의 유튜브 튜토리얼 "Let's build GPT"
Andrej Karpathy의 NanoGPT 프로젝트
Brendan Bycroft의 트랜스포머 3D 시각화
3Blue1Brown의 LLM 과정
그 외 더 읽어보기
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다.
파이토치 한국 사용자 모임이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래쪽에 좋아요를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~