초기부터 자체 LLM 학습하기
요약
본 워크숍은 Andrej Karpathy의 nanoGPT를 기반으로, GPT 학습 파이프라인의 모든 핵심 구성 요소(토크나이저, 트랜스포머 아키텍처, 학습 루프, 텍스트 생성)를 처음부터 직접 구현하는 실습 가이드입니다. 참가자들은 MacBook과 같은 일반적인 환경에서 최소한의 자원으로 작동 가능한 GPT 모델을 구축하며, 이 과정을 통해 LLM과 트랜스포머의 내부 동작 원리를 깊이 이해할 수 있습니다.
핵심 포인트
- GPT 학습 파이프라인의 핵심 요소(Tokenizer, Transformer 아키텍처, Training Loop 등)를 분해하여 직접 구현하는 실습 중심 워크숍입니다.
- nanoGPT의 개념을 차용하되, 모델 크기를 줄여 노트북 환경에서도 1시간 이내에 학습 가능한 수준으로 최적화했습니다.
- 작은 데이터셋(셰익스피어)에서는 BPE보다 문자 단위 토크나이저가 더 효과적이며, 이는 LLM 구현 시 고려해야 할 중요한 설계 결정입니다.
- PyTorch와 같은 프레임워크를 사용하여 최소한의 코드로도 작동하는 GPT 모델을 구축할 수 있음을 보여줍니다.
초기부터 자체 LLM 학습하기
GPT 학습 파이프라인의 모든 구성 요소를 직접 작성하여 각 구성 요소가 수행하는 작업과 그 이유를 이해하는 실습 워크숍입니다.
Andrej Karpathy 의 nanoGPT 는 저에게 LLM 과 트랜스포머에 대한 첫 번째 실제 경험이었으며, 수백 줄의 PyTorch 코드로 작동 가능한 언어 모델을 구축하는 방법을 보며 AI 에 대한 사고방식을 완전히 바꾸고 이 분야로 더 깊이 탐구하도록 영감을 주었습니다.
이 워크숍은 다른 사람들도 동일한 경험을 할 수 있도록 시도합니다. nanoGPT 는 GPT-2 (124M params) 를 복제하는 것을 목표로 하며 많은 내용을 다룹니다. 이 프로젝트는 핵심 요소만 남기고 ~10M param 모델로 축소하여 노트북에서 1 시간 이내에 학습되도록 설계되었습니다.
무엇을 만들지
MacBook 에서 초기부터 학습한 작동 가능한 GPT 모델을 생성하며, 셰익스피어 같은 텍스트를 생성할 수 있습니다. 작성할 것입니다:
- Tokenizer — 모델을 처리할 수 있는 숫자로 텍스트 변환
- 모델 아키텍처 — 트랜스포머: 임베딩, 주의 (attention), 전파 층 (feed-forward layers)
- 학습 루프 — 순전파 (forward pass), 손실 (loss), 역전파 (backprop), 옵티마이저, 학습률 스케줄링
- 텍스트 생성 — 훈련된 모델에서 샘플링
사전 요구 사항
- 어떤 노트북이나 데스크톱 (Mac, Linux, Windows)
- Python 3.12+
- Python 코드 읽기 능력 필요 (ML 경험은 필요 없음)
학습은 Apple Silicon GPU (MPS), NVIDIA GPU (CUDA) 또는 CPU 를 자동으로 사용합니다. 또한 Google Colab 에서도 작동합니다 — 파일을 업로드하고 !python train.py 로 실행하세요.
시작하기
로컬 (권장)
사용하지 않는 경우 uv 를 설치하세요:
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
...
그런 다음 프로젝트를 설정하세요:
uv sync
mkdir scratchpad && cd scratchpad
Google Colab
로컬 환경이 없는 경우, 레포지토리를 Colab 에 업로드하고 의존성을 설치하세요:
!pip install torch numpy tqdm tiktoken
data/shakespeare.txt 를 Colab 파일에 업로드한 후, 노트북 셀에서 코드를 작성하거나 .py 파일을 업로드하고 !python train.py 로 실행하세요.
문서를 순서대로 진행하세요. 각 부분은 파이프라인의 구성 요소를 작성하는 방법을 안내하며, 각 구성 요소가 수행하는 작업과 그 이유를 설명합니다. 마지막에는 작성한 작동 가능한 model.py, train.py, 및 generate.py 를 갖게 될 것입니다.
| Part | 무엇을 작성할지 | 개념 |
|---|---|---|
| Part 1: Tokenization | 문자 단위의 토크나이저 | 문자 인코딩, 보어디 (vocabulary size), 작은 데이터에서 BPE 실패 이유 |
| ... |
아키텍처: GPT 한눈에 보기
Input Text
│
▼
...
이 워크숍을 위한 모델 설정
| Config | Params | n_layer | n_head | n_embd | Train Time (M3 Pro) |
|---|---|---|---|---|---|
| Tiny | ~0.5M | 2 | 2 | 128 | ~5 min |
| ... | |||||
| 모든 설정은 문자 단위 토크나이저 (vocab_size=65) 와 block_size=256 을 사용합니다. |
Tokenization: 문자 vs BPE
이 워크숍은 셰익스피어에 대해 문자 단위 토크나이저를 사용합니다. BPE 토크나이저 (GPT-2 의 50k 보어디) 는 작은 데이터셋에서 작동하지 않습니다 — 대부분의 토크인 이그램은 모델이 패턴을 학습할 수 있는 것이 너무 희귀합니다.
| Tokenizer | 보어디 크기 | 필요한 데이터셋 크기 |
|---|---|---|
| 문자 단위 | ~65 | 작은 (셰익스피어, ~1MB) |
| BPE (tiktoken) | 50,257 | 큰 (TinyStories+, 100MB+) |
Part 5 는 더 큰 데이터셋을 위해 BPE 로 전환하는 내용을 다룹니다.
주요 참고 자료
- nanoGPT — 이 워크숍의 기반이 된 프로젝트. 약 300 줄의 PyTorch 코드만으로 최소한의 GPT 훈련
- build-nanogpt 비디오 강의 — 빈 파일에서 GPT-2 를 구축하는 4 시간 영상
- Karpathy 의 microgpt — 의존성 없이 순수 Python 으로 작성된 200 줄의 완전한 GPT
- nanochat — 완전한 ChatGPT 클론 훈련 파이프라인
- Attention Is All You Need (2017) — 원본 트랜스포머 논문
- GPT-2 논문 (2019) — 언어 모델은 비지도 학습자
- TinyStories 논문 — 왜 커리테드 데이터로 훈련된 작은 모델이 큰 효과를 발휘하는가
AI 자동 생성 콘텐츠
본 콘텐츠는 HN AI Posts의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기