minGPT 實作驗收:用形狀、遮罩與位置找錯|CMU 10-423 作業 1
作業 1 把 RNN、Transformer 與現代 attention 的觀念拉到程式層。
作業 1 把 RNN、Transformer 與現代 attention 的觀念拉到程式層。
會抄加噪公式,還不代表 diffusion 實作正確。
以自擬數值例子驗收梯度、資料與評估,並保留原作業規格。
以自擬數值例子驗收梯度、資料與評估,並保留原作業規格。
一個prompt加一個示範答案,與一個prompt加兩個偏好回應,不是相同資料。SFT學示範token;典型RLHF管線先學reward再做受約束的policy更新;DPO由偏好對與reference-relative比率直接建立loss。這篇整理它們的分界,完整推導與驗收各有單獨教學篇。
長上下文問模型能否處理、找到並使用很久以前的資訊;SSM問如何用狀態更新處理序列。SSM的效率不能直接證明長文件檢索可靠,attention的長窗口也不能直接證明重要資訊一定被使用。第19與21堂因此各自有獨立教學。
第 2 堂的 attention 知道如何比對內容,但實際語言模型還需要順序資訊,也要承受生成時的記憶體成本。
你可以讓模型適應新任務而不重訓所有參數,但這句話包含兩種不同做法。LoRA等PEFT方法仍有訓練,少量參數會改變;ICL把示例放進上下文,推論時不因這些示例做參數更新。來源也不只兩堂:第9堂末段已有zero/few-shot,第10堂講PEFT,第11堂接ICL與後續調適。
能比較候選選擇與GRPO優勢且區分機制因果證據
模型胡說、洩漏資料或被prompt injection誘導,是可觀察的產品風險;對齊理論問特定形式化假設下,哪些保證可以成立。兩者需要不同證據。這篇保留關係與界線,第22堂與第26堂的對齊教材分開教,不把一個定理擴成所有產品都不可能安全。
一句「我喜歡貓」不是三個互不相干的字。
Scaling laws問固定預算下模型與資料怎麼配置;MoE問如何有更多expert容量、卻只啟用少數expert。前者是配置與經驗模型,後者是架構與路由,不能合稱「把模型變大」就跳過其中一方的機制。
「文字加圖片」不能描述清楚模型的工作。文生圖要產生影像,文字是條件;VLM可能接受影像,產生文字回答。資料流方向、輸出目標與驗收不同。原第12–13堂的內容在這裡保留關係地圖,兩條路各有完整例子與檢查。
同樣一份歷史文字,模型怎麼讀、怎麼學、怎麼抽下一個token,是三個問題。注意力決定資訊如何混合;訓練目標用正確答案改參數;解碼策略在固定模型下選輸出。原本把第2–3堂合在一起,容易讓讀者以為換解碼策略就是換模型。這篇保留主題關係,完整機制與練習分開讀。
擴散與VAE都能用機率模型的觀點理解,但「都有潛在變量」不代表它們是同一套生成流程。擴散把噪聲步驟串成鏈;VAE用encoder近似latent的後驗,decoder從latent重建資料。這篇是關係導覽,原第8–9堂的教學已拆成各自可檢核的內容。
11-868 第 10 講用 Lei Li 團隊自己的 LightSeq/LightSeq2 當教材,拆出四招:把矩陣乘法以外的小運算融合成一個 kernel、改寫 LayerNorm 與 Softmax 的公式來減少 thread 同步、參數與梯度用 FP16 存但 FP32 算、依反向傳播的相依關係重用記憶體。投影片報告的 WMT14 英德翻譯訓練加速是 1.4–3.5 倍。官方課表未列公開錄影連結,本文依投影片頁碼與兩篇論文整理。
11-868 第 14、15 講從 parameter server 講到 PyTorch DDP:先用 NCCL 的五個 collective(Broadcast、Reduce、AllReduce、ReduceScatter、AllGather)當積木,推出 ring 為什麼能讓廣播時間幾乎不隨 GPU 數增加,再把 AllReduce 拆成 ReduceScatter 加 AllGather。第二講拆 DDP 的兩個關鍵設計:把梯度分桶(預設 25 MB)、在反向傳播還沒結束時就開始同步。官方課表未列公開錄影連結,本文依投影片頁碼與 VLDB 2020 論文整理。
L05 用一個四層的情感分類網路當主線,先把計算表示成計算圖、用拓撲排序算出前向值,再用連鎖律與向量–Jacobian 乘積反向傳回梯度,最後拆解 TensorFlow v1 的 placeholder、variable、operation 與 session。投影片有一頁直接標著「important for HW2」。
標準 attention 會把 N×N 的分數矩陣寫回 HBM 再讀出來,時間大多花在搬資料。FlashAttention 用 tiling 加 softmax rescaling,讓每一塊都在 SRAM 裡算完,backward 則重算而不存。Tri Dao 在 11-868 的客座講義裡給了一組數字:backward 的 FLOPs 多了 13%,HBM 讀寫少了 9 倍,時間快了 6 倍。之後 FA3、FA4 的主題也一樣:硬體變了,瓶頸跟著搬家,演算法就得跟著改。
CMU 11-868 的 GPU 三講回答一個問題:為什麼寫對的 CUDA matmul 在 A100 上只用到 2.48% 的 FP32 算力。L02 講 SM、warp 與 grid/block/thread,L03 講 cudaMalloc、cudaMemcpy 與 kernel 索引,L04 用 tiling、coalesced access 與避開 bank conflict,把資料從約 500 個 cycle 外的 global memory 搬近一點。