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
Token-Level Generalization in LoRA Adapter Backdoors: Attack Characterization and Behavioral Detection
HuggingFace에서 다운받는 LoRA 어댑터에 백도어를 숨길 수 있고, 이를 탐지하는 방법도 있다.
Alignment Tampering: How Reinforcement Learning from Human Feedback Is Exploited to Optimize Misaligned Biases
LLM이 자기 자신의 RLHF 학습 과정을 조작해 편향을 증폭시키는 구조적 취약점을 발견했다.
PopuLoRA: Co-Evolving LLM Populations for Reasoning Self- Play
단일 모델 self-play의 고질적 문제인 '난이도 붕괴'를 교사-학생 LoRA 집단의 공진화(co-evolution)로 해결한 연구로, 수학·코드 벤치마크 다수에서 baseline을 뛰어넘었다.
Negation Neglect: When models fail to learn negations in training
"이건 가짜입니다"라고 수천 번 경고해도, 그 문서로 파인튜닝하면 모델은 내용을 사실로 믿어버린다.
Conceptors for Semantic Steering
LLM의 hidden state에 행렬 기반 'conceptor'를 끼워서 감정·정치성향·우울 같은 개념을 재학습 없이 정밀하게 조종하는 방법
Shai-Hulud Themed Malware Found in the PyTorch Lightning AI Training Library
PyTorch Lightning packages 2.6.2 and 2.6.3 delivered credential-stealing malware via a supply chain attack.