CS336: Language Modeling from Scratch
TL;DR Highlight
Stanford에서 운영하는 LLM 전 과정 구현 강의로, 토크나이저부터 데이터 수집, 트랜스포머 구현, 분산 학습, RL 기반 정렬까지 직접 코딩하며 배운다. 이론이 아닌 구현 중심이라 실제로 LLM이 어떻게 작동하는지 깊이 이해하고 싶은 개발자에게 가장 체계적인 커리큘럼 중 하나다.
Who Should Read
LLM의 내부 동작 원리를 코드 수준에서 이해하고 싶은 ML 엔지니어나 백엔드 개발자. PyTorch 경험이 있고 딥러닝 기초는 알지만 실제로 언어 모델을 처음부터 만들어본 적은 없는 사람에게 적합하다.
Core Mechanics
- 이 강의는 운영체제 수업에서 OS를 직접 만드는 방식에서 영감을 받아, LLM의 전 과정(데이터 수집/정제, 트랜스포머 구현, 학습, 평가)을 학생이 직접 코딩하도록 설계됐다. 다른 AI 수업보다 코드량이 10배 이상 많다고 공식 명시하고 있다.
- Assignment 1에서는 토크나이저, 트랜스포머 모델 아키텍처, 옵티마이저를 직접 구현해 소형 언어 모델을 학습시킨다. 최소한의 스캐폴딩(scaffolding, 미리 짜여진 뼈대 코드)만 제공하므로 처음부터 설계해야 한다.
- Assignment 2는 시스템 최적화에 집중하는데, Triton으로 FlashAttention2를 직접 구현하고, 메모리 효율적인 분산 학습 코드를 작성한다. GPU 여러 대에 걸쳐 빠르게 돌아가도록 만드는 실전 경험을 제공한다.
- Assignment 3은 스케일링 법칙(Scaling Law, 모델 크기/데이터/연산량이 늘수록 성능이 어떻게 변하는지 나타내는 규칙) 연구로, 트랜스포머 각 컴포넌트의 역할을 분석하고 학습 API를 써서 스케일링 법칙을 직접 피팅해본다.
- Assignment 4는 Common Crawl(인터넷 대규모 웹 크롤링 데이터셋)의 raw 덤프 파일을 받아 필터링과 중복 제거를 수행해 실제 사전학습용 데이터로 가공하는 작업이다. 실무에서 데이터 파이프라인이 얼마나 중요한지 체감할 수 있다.
- Assignment 5는 SFT(Supervised Fine-Tuning, 정답 레이블로 파인튜닝하는 방식)와 RL(강화학습)을 적용해 수학 문제 풀이 능력을 가진 추론 모델을 학습시킨다. 선택 과제로 DPO(Direct Preference Optimization, 사람 선호도로 모델을 정렬하는 기법) 같은 안전 정렬 방법도 구현할 수 있다.
- 자택 학습용 GPU 비용 가이드를 제공하는데, B200 GPU 1개 기준으로 Modal $6.25/시간(월 $30 무료), RunPod $4.99/시간, Nebius $5.50/시간($3.05 선점형) 등 여러 클라우드 옵션을 안내한다.
- 강의는 5학점짜리 구현 집중 과목으로, Python 숙련도, PyTorch 경험, GPU 시스템 지식, 대학 수준 선형대수/확률통계, 기초 ML 강의 수강 경험이 전제 조건이다.
Evidence
- 2025년 버전을 완주한 수강생에 따르면, 딥러닝 기초가 있음에도 퇴근 후와 주말을 활용해 수개월이 걸렸다고 한다. Stanford 재학생들이 2주 주기로 과제를 제출한다는 게 믿기지 않을 정도로 난이도가 높다는 의견이었다.
- 환경 설정의 어려움을 지적하는 댓글이 있었는데, 이 강의의 실행 환경은 NVIDIA GPU가 있는 Linux를 전제로 하며 특정 CUDA 버전도 요구한다. Mac OS에서 메모리 분석을 잘못하면 Python 코드 실행 중 시스템이 강제 재부팅될 수 있다는 경험담도 공유됐다.
- B200 GPU가 정말 필요한지 의문을 제기하는 댓글도 있었다. 초반 단계에서는 Vast.ai의 RTX 4090으로도 충분하다는 의견이 나왔고, 5080 16GB로도 가능한지 묻는 사람도 있었다.
- 30명 이상으로 시작한 스터디 그룹이 마지막에는 8명만 남았다는 경험담이 공유됐다. 유튜브 영상과 온라인 자료를 활용해 주 1강씩 진행했지만 끝까지 따라가는 것 자체가 쉽지 않다는 현실을 보여준다.
- 과제 1~2만 독립적으로 완료하는 데 1년이 걸렸다는 사람도 있었고, 구현보다는 이론과 배경 지식 위주로 공부하고 싶어서 중간에 방향을 바꿨다는 의견도 있었다. 이처럼 강의 난이도가 워낙 높아 완주율이 낮고 학습 방식도 사람마다 크게 다르다.
How to Apply
- LLM 내부를 코드로 이해하고 싶다면 Stanford 유튜브 채널의 CS336 강의 영상(공개 제공)과 GitHub 과제 저장소를 함께 활용해 Assignment 1부터 순서대로 진행하면 된다. 스터디 그룹을 구성하면 완주 확률이 올라간다는 경험담이 많으니 함께 할 사람을 구하는 것이 좋다.
- 자택에서 따라할 GPU가 없다면 RunPod($4.99/시간)나 Nebius 선점형($3.05/시간)을 활용하면 비교적 저렴하게 실습할 수 있다. 초반 과제는 고사양 GPU가 필수가 아니므로 RTX 4090급(Vast.ai 등)으로 시작해 필요할 때만 B200급으로 업그레이드하는 전략이 비용 효율적이다.
- FlashAttention2나 분산 학습 최적화를 실무에 적용하고 싶은 경우, Assignment 2를 집중적으로 공부하면 Triton 커널 작성과 메모리 효율화 기법을 실제 코드로 익힐 수 있다. 이 내용은 추론 속도 개선이나 대형 모델 학습 비용 절감에 직접 연결된다.
- 수학 문제 풀이 같은 추론 능력을 모델에 부여하는 방법이 궁금하다면 Assignment 5(SFT + RL)를 참고하면 된다. DeepSeek-R1 등 최근 추론 모델 트렌드의 기반이 되는 기법을 직접 구현해볼 수 있어, 관련 서비스를 개발 중인 팀에게 배경 지식을 제공한다.
Terminology
Related Papers
Is One Layer Enough? A Single Transformer Layer Matches Full-Parameter RL Train
LLM의 RL 후처리 학습(post-training)에서 성능 향상의 대부분이 중간 레이어 소수에 집중되며, 단 하나의 레이어만 학습해도 전체 파라미터 학습과 비슷하거나 더 나은 결과를 낼 수 있다는 연구 결과. 이는 RL 학습 비용을 대폭 줄일 수 있는 가능성을 시사한다.
Knowledge Distillation of Black-Box Large Language Models (2024)
GPT-4 같은 내부 구조에 접근할 수 없는 독점 LLM에서 작은 모델로 지식을 효과적으로 전달하는 Proxy-KD 기법을 소개하는 논문으로, 전통적인 White-Box 방식보다 성능이 높다는 점에서 주목할 만하다.
Show HN: NanoEuler – GPT-2 scale model in pure C/CUDA from scratch
PyTorch나 autograd 없이 C와 CUDA만으로 GPT-2 수준의 LLM을 처음부터 구현한 교육용 프로젝트로, 역전파·BPE 토크나이저·FlashAttention까지 직접 손으로 작성했다.
Show HN: Neural Particle Automata
고정된 격자 대신 움직이는 파티클 위에서 동작하는 Neural Cellular Automata의 확장 버전으로, 형태 생성·포인트 클라우드 분류·텍스처 합성 등 다양한 작업에서 자기조직화 동작을 학습할 수 있다.
The annotated PyTorch training loop
PyTorch 학습 루프의 각 코드 줄이 왜 그 위치에 있어야 하는지, 순서를 바꾸거나 빠뜨렸을 때 어떤 문제가 생기는지를 단계별로 설명한 심층 가이드다.
When Good Verifiers Go Bad: Self-Improving VLMs Can Regress on New Tasks
VLM 자가학습 루프에서 verifier가 특정 태스크에 맞지 않으면 학습할수록 오히려 성능이 떨어지는데, DPO 손실값은 멀쩡히 내려가서 눈치채기도 어렵다.