← 전략 로드맵(왜 이걸 하는가) · 이 문서 = 실제 수업 커리큘럼 + 진도표
| 각 day 문서의 구성 | 의미 |
|---|---|
| 🎯 오늘의 목표 | 이 하루가 끝나면 무엇을 알고 무엇을 할 수 있는가 |
| 📖 개념 (수업) | 천천히 설명. 그림·수식·직관. 여기가 본체다 |
| ✍️ 직접 해보기 | 네가 코드를 쓰는 부분. 정답 코드는 안 준다 — 명세와 힌트만 |
| ✅ 확인 | 제대로 됐는지 스스로 검증하는 기준 |
| 📝 기록 | 오늘 배운 걸 docs/에 한 단락. 포트폴리오의 씨앗 |
| Phase | 주제 | 기간(목표) | 끝나면 만들어지는 것 |
|---|---|---|---|
| 0 | 토대 — autograd & PyTorch | 2주 (14일) | 직접 만든 미분 엔진, 텐서 숙련 |
| 1 | 언어모델 & 미니 GPT from scratch | 4주 (28일) | 셰익스피어 생성기 + 첫 GitHub 공개 |
| 2 | 제대로 된 GPT (BPE, 실제 코퍼스) | 4–5주 | 작동하는 소형 LLM + 학습 분석 |
| 3 | 스케일링 & 효율 | 6–8주 | scaling law 재현 + ablation 리포트 |
| 4 | 파인튜닝 & 정렬 (LoRA, DPO) | 6–8주 | instruction-following 모델 |
| 5 | 연구 기여 | 지속 | 논문 재현 + novel 실험, 공개 |
※ 현재 세션 기준으로 Phase 0–1의 day별 계획이 상세히 잡혀 있고, Phase 2–5는 주(week) 단위 윤곽이다. 각 Phase에 가까워질 때 day 단위로 더 잘게 쪼갠다.
트랜스포머에 들어가기 전, 모든 것이 돌아가는 두 기둥을 세운다: 역전파(autograd)가 실제로 어떻게 동작하는지와 PyTorch 텐서를 자유자재로 다루기. 여기가 단단하면 나중 디버깅이 쉽고, 흔들리면 내내 고생한다.
| Day | 제목 | 핵심 | 상태 |
|---|---|---|---|
| Day 1 | 신경망을 함수근사로 다시 보기 | ERM, 야코비안, UAT 한계, 표현력(선형영역 지수증가), 다양체 가설 | 작성됨 |
| Day 2 | 미분·야코비안·자동미분의 두 모드 | 미분=선형사상, JVP/VJP, forward vs reverse 복잡도, cheap gradient | 작성됨 |
| Day 3 | 계산 그래프와 reverse-mode AD | Wengert list, adjoint, fan-out 합 증명, checkpointing $O(\sqrt T)$ | 작성됨 |
| Day 4 | micrograd ① define-by-run 그래프 | 연산자 오버로딩, VJP 클로저, 11개 연산, 수치안정 설계 | 작성됨 |
| Day 5 | micrograd ② backward & gradcheck | 위상정렬+adjoint, 복소스텝 gradcheck, log-sum-exp CE | 작성됨 |
| Day 6 | 최적화·초기화·손실 지형 | He/Xavier 유도, SGD/Adam 구현, two-moons, loss landscape | 작성됨 |
| Day 7 | 통합·AD 내부 대응·기술 글 | micrograd↔autograd/JAX, 스칼라 AD 한계, 포트폴리오 글 | 작성됨 |
| Day | 제목 | 핵심 | 상태 |
|---|---|---|---|
| Day 8 | 텐서 & broadcasting의 VJP | broadcasting 의미론, grad의 축 합산 환원, 메모리 레이아웃/contiguous | 예정 |
| Day 9 | einsum과 그 미분 | einsum 의미론, 텐서 수축의 VJP, 효율적 재배치 | 예정 |
| Day 10 | 텐서 micrograd — 선형층/softmax VJP | $\bar X{=}\bar Y W^\top$ 등 텐서 VJP 직접 구현 + gradcheck | 예정 |
| Day 11 | PyTorch autograd 내부 | grad_fn 그래프, hooks, 고차미분, retain/create_graph | 예정 |
| Day 12 | nn.Module 설계 & 파라미터 관리 | 모듈 트리, buffer vs param, 초기화, state_dict | 예정 |
| Day 13 | 실전 학습 루프 — AdamW·AMP·스케줄 | mixed precision, grad scaler, LR 스케줄, 진단 로깅 | 예정 |
| Day 14 | 벤치마킹 & 프로파일링 | MFU, torch.compile, 메모리 프로파일, Week 1↔2 속도 비교 | 예정 |
프로젝트 전체에서 가장 중요한 단계.
언어모델이 뭔지부터 시작해, self-attention을 직접 손으로 구현하고,
char-level GPT로 셰익스피어를 생성한다. nn.Transformer 같은 고수준 API는 쓰지 않는다.
| Day | 제목 | 핵심 |
|---|---|---|
| Day 15 | 언어모델이란? — 다음 토큰 맞히기 | 확률분포로서의 언어, n-gram |
| Day 16 | 토큰화 — char-level | 문자 ↔ 정수, vocab, encode/decode |
| Day 17 | bigram 모델 — 가장 단순한 신경 언어모델 | lookup table = Embedding |
| Day 18 | bigram 학습 & 샘플링 | 학습 루프, autoregressive 생성 |
| Day 19 | cross entropy 깊이 이해 | negative log likelihood, perplexity |
| Day 20 | 임베딩이 담는 것 | 토큰 임베딩 + 위치 임베딩의 필요성 |
| Day 21 | 복습 & 글 | "bigram에서 무엇이 부족한가" |
| Day | 제목 | 핵심 |
|---|---|---|
| Day 22 | 왜 attention인가 — 문맥의 문제 | 고정 임베딩의 한계, 문맥 의존성 |
| Day 23 | "과거의 평균"에서 시작 (the math trick) | 하삼각 행렬로 누적평균 = attention의 씨앗 |
| Day 24 | self-attention 직관 — Q, K, V | 질문·열쇠·값의 비유 |
| Day 25 | scaled dot-product attention | 왜 √d_k로 나누는가 |
| Day 26 | single-head self-attention 구현 | 직접 코드 — 한 헤드부터 |
| Day 27 | causal mask | 미래를 못 보게 — autoregressive의 핵심 |
| Day 28 | 복습 & attention 시각화 | 어떤 위치가 어디에 주목하는지 그림 |
| Day | 제목 | 핵심 |
|---|---|---|
| Day 29 | multi-head attention | 여러 헤드 = 여러 관점, 병렬 구현 |
| Day 30 | feed-forward network (MLP) | 토큰 내부 가공, 왜 4배 확장 |
| Day 31 | residual connection | 깊은 망의 gradient 고속도로 |
| Day 32 | layer normalization (Pre-LN) | 안정적 학습, Pre vs Post |
| Day 33 | 블록 조립 — Block 클래스 | attn + mlp + 2×LN + residual |
| Day 34 | 전체 GPT 클래스 | 임베딩 + Block 스택 + lm_head + weight tying |
| Day 35 | 복습 & 형태 검증 | tests/test_shapes.py 통과 |
| Day | 제목 | 핵심 |
|---|---|---|
| Day 36 | 학습 루프 구현 | get_batch, AdamW, grad clip |
| Day 37 | 학습률 스케줄 | warmup + cosine decay |
| Day 38 | mixed precision & 속도 | bfloat16, torch.compile |
| Day 39 | wandb 로깅 | loss 곡선·gradient norm 기록 |
| Day 40 | 셰익스피어 학습 (전체 실행) | Colab GPU에서 끝까지 학습 |
| Day 41 | 생성 — temperature & top-k | 샘플링 다이얼 이해 |
| Day 42 | Phase 1 마무리 글 + GitHub 공개 | 분석 글 + 첫 공개 리포 |
char-level 장난감 → 실제 LLM의 축소판. BPE 토크나이저, 실제 코퍼스, 긴 학습, 효율적 데이터 파이프라인.
랩 지원에 진짜 차별화가 생기는 구간. 스케일링 법칙을 직접 재현하고, 구조 개선을 통제된 ablation으로 측정.
사전학습 모델을 유용하게 길들이기. LLM/NLP 랩의 현재 핵심 주제.
쌓은 인프라로 작지만 진짜 질문에 답한다. 논문 재현 + 검증, 또는 작은 novel 실험. 정직한 결론을 글로.
세션마다 여기를 업데이트한다. "지금 어디까지 왔나"를 한눈에.
| 구간 | 상태 | 메모 |
|---|---|---|
| 커리큘럼 설계 | 완료 | 이 문서 + 로드맵 + 프로젝트 저장소 |
| Phase 0 · Week 1 (Day 1–7) | 수업 전부 작성됨 | autograd 토대 + micrograd from scratch. Day 1부터 |
| Phase 0 · Week 2 (Day 8–14) | 대기 | PyTorch 텐서·신경망. "Day 8 써줘"로 시작 |
| Phase 1~5 | 대기 | 지도만 잡힘. day 문서는 진행하며 작성 |