Skip to content
系列
18 篇文章

Stanford CS336 導讀

逐講讀 Stanford CS336:從 tokenizer、資料與 scaling,到訓練、平行化、評估與 alignment,拆開語言模型的完整製作流程。

Stanford CS336 導讀:講義是跑得起來的 Python,作業從第二份開始要自己付 GPU 的錢

CS336 的十七堂正課裡,只有九堂是可以執行的 Python 程式,另外八堂是 PDF 投影片——分界線剛好是兩位授課者。第一份作業的講義有八個「低資源提示」教你怎麼在筆電上做完,第二到第五份一個都沒有。課程頁自己列了 B200 的每小時單價,作業講義自己列了每題要幾個 B200 小時。

CS336 Lecture 1:從位元組到 tokenizer,先決定什麼值得隨規模成長

CS336 第一講不把「從零打造語言模型」理解成重做所有舊技術,而是先區分 mechanics、mindset 與 intuitions,再用 BPE 示範如何把原始位元組轉成可訓練的 token。

CS336 Lecture 2:先算 FLOPs 與記憶體,再談模型跑不跑得動

第二講把模型訓練還原成 tensor、FLOPs、bytes 與時間:用 einops 管維度,以 arithmetic intensity 和 roofline 判斷瓶頸,再用 gradient accumulation 與 activation checkpointing 交換運算和記憶體。

CS336 Lecture 3:Transformer 架構很多,真正穩定的預設值其實很少

第三講比較大量現代 LLM 後得到的不是一張最佳架構配方,而是一組保守共識:pre-norm、RMSNorm、無 bias、SwiGLU、RoPE,以及少數值得偏離預設的推論與穩定性設計。

CS336 Lecture 4:Attention 不只一種,MoE 也不是免費擴大模型

第四講沿著兩種稀疏化拆解現代 LLM:linear/recurrent attention 減少序列維度成本,MoE 讓每個 token 只啟用部分參數;兩者都把理論省下的 FLOPs 換成 routing、平衡與通訊問題。

CS336 Lecture 5:GPU 快不是因為每個 thread 快,而是資料少搬幾次

第五講從 SM、warp 與記憶體階層解釋 GPU,再用低精度、fusion、recomputation、coalescing 與 tiling 統一常見優化;FlashAttention 正是這些原則在 attention 上的組合。

CS336 Lecture 6:寫 Triton kernel 前,先學會 benchmark 與 profile

第六講把 GPU 原理落到 kernel:benchmark 看不同尺寸如何縮放,profiler 看實際呼叫與時間,再以 Triton 實作 GeLU、softmax、reduction 與 tiled matmul;快的前提是先量對。

CS336 Lecture 7:從 collective operations 組出資料、張量與管線平行

第七講不從 FSDP API 開始,而是用 broadcast、all-reduce、all-gather、reduce-scatter 與 all-to-all 建立通訊語言,再親手組出 data、tensor 與 pipeline parallelism。

CS336 Lecture 8:ZeRO、FSDP 與 3D Parallelism 怎麼對齊硬體拓撲

第八講把平行化從原語提升到系統設計:ZeRO 逐階切 optimizer、gradient 與 parameter,TP/PP/SP/EP 再分別切 width、depth、sequence 與 experts;組合順序必須服從網路拓撲與動態 activation memory。

CS336 Lecture 9:Scaling law 不是水晶球,是小實驗的外推工具

第九講從資料量與 error 的 log-log 線性關係出發,說明 scaling law 如何比較架構、optimizer、batch 與模型資料配置;Chinchilla 爭議也示範擬合方法、資料範圍與部署目標會改變答案。

CS336 Lecture 10:LLM 推論的核心不是少算,而是少讀權重與 KV cache

第十講把 prefill 與 decode 分開:前者能平行、常受算力限制,後者逐 token 且常受記憶體頻寬限制;GQA/MLA、量化、speculative decoding、continuous batching 與 PagedAttention 都在改寫這條成本。

CS336 Lecture 11:Scaling law 落地時,learning rate 與 batch 也要一起縮放

第十一講從 MiniCPM、DeepSeek、Qwen 與 Llama 3 的公開 recipe 拆解 scaling 實務:先固定大多數架構比例,再用小規模 sweep 找 learning rate、batch 與 IsoFLOPs 配置;μP 有用,但會被 normalization、optimizer 與 weight decay 破壞。

CS336 Lecture 12:沒有一個真正的 LLM 評分,只有規則不同的遊戲

第十二講從 perplexity 走到考試、聊天偏好、agent、推理與安全評測;每次換 benchmark 都同時換了能力定義、scaffold、judge 與污染風險,因此評分前必須先說清楚到底在比較 method、model 還是完整 system。

CS336 Lecture 13:語料不會從天上掉下來,每個來源都有存取與授權成本

第十三講沿著 Common Crawl、Wikipedia、GitHub、arXiv、書籍與歷代開放資料集追溯語料來源;抓得到不等於可合法使用,raw data 也不等於 training data,來源 provenance 必須先於清理與混合。

CS336 Lecture 14:Filtering、Dedup 與資料混合才把 raw web 變成訓練語料

第十四講把 raw documents 經語言辨識、品質與安全 filtering、exact/near dedup、source mixing 送進訓練;每一步都會改變模型分布,而 synthetic instruction 與 agent trajectories 又把資料管線延伸到可執行環境。

CS336 Lecture 15:SFT 教模型模仿,RLHF 才開始直接最佳化偏好

第十五講把 post-training 拆成 imitation 與 optimization:SFT 從 instruction-response data 抽出預訓練已有能力,RLHF 用 pairwise feedback 跨過人類示範與偏好之間的落差;PPO 與 DPO 都逃不掉資料偏差、reward overoptimization 和 mode collapse。

CS336 Lecture 16:RLVR 用可驗證獎勵擴大推理,但 GRPO 不是免費的 PPO

第十六講從 PPO 走到 GRPO 與 RLVR:數學、程式碼和環境結果提供可規模化 reward,避開一般偏好模型的部分 overoptimization;但 group-normalized advantage 會引入難度與長度偏差,rollout infrastructure 也成為主要成本。

CS336 Lecture 17:多模態模型先把影像變成 token,再處理語意與細節的衝突

第十七講把 CLIP/SigLIP、LLaVA、Qwen-VL 與 Chameleon 排成三條路:對比式 encoder 學語意、vision encoder+projector+LM 做理解、離散 image tokens 做生成;解析度、token budget 與 modality balance 是共同瓶頸。