所有標籤11-868 第六份作業第一次放下自己寫的 MiniTorch,改用產業框架。兩題各 50 分:第一題改一支 DeepSpeed 訓練腳本,打開 LoRA,讓 Llama-2-7B 在 2 張 16GB 的 V100 上訓練得起來;第二題填完 SGLang 推論腳本的 TODO,並調參數讓生成跑快一點。兩題要的 GPU 互相衝突:SGLang 不支援 V100,要換 L40S、A6000 或 A100。春季版 4/13 截止,作業頁不提供評分測資。
11-868 用兩講回答同一個問題:一台推論伺服器怎麼同時服務大量請求,又不浪費 GPU 上的 KV cache。第 22 講(Lei Li)從 SGLang 的排程迴圈講起:ORCA 的 continuous batching、用 radix tree 管 KV 的 RadixAttention、依前綴命中率排序與分流、把 CPU 排程藏到 GPU 計算後面。第 24 講由 vLLM 作者 Woosuk Kwon 主講:PagedAttention 把 KV cache 切成固定大小的 block,用 block table 做虛擬化,讓同一張 A100 的 batch 從 8 撐到 40;後半講 vLLM 怎麼壓 CPU overhead、用 piecewise CUDA graph、切模型平行與管理混合架構的記憶體。
11-868 用兩講處理量化:L19 從 BF16、absmax/zero-point 講到 AdaQuant、ZeroQuant、LLM.int8(),L20 整講拆解 GPTQ。GPTQ 只量化權重,每次量化一欄就用二階資訊修正還沒量化的權重,再靠 lazy batch update 與 Cholesky 讓它跑得動 175B。它省下的主要是記憶體;推論變快,是因為單一 batch 的 decode 本來就卡在讀權重,運算量本身沒有減少。
11-868 最後一組講義有五份:DistServe 的 Hao Zhang、NVIDIA Dynamo 的 Vikram Mailthody、LMCache 的 Junchen Jiang、Mooncake/KTransformers 的 Mingxing Zhang,加上 Lei Li 的框架地圖。它們回答同一個問題:服務規模從一台機器擴到一座資料中心之後,算力和 KV cache 要放在哪裡。主線有三步:量尺從 throughput 換成符合 SLO 的 goodput;prefill 與 decode 拆到不同 GPU;KV cache 從 GPU 記憶體擴張到 CPU、SSD 與遠端儲存。
L08 從 BPE 講到講者 Lei Li 參與的 VOLT:詞表大小有成本也有價值,VOLT 用「每加一個 token 能降多少正規化熵」找划算的點,再化成最佳傳輸問題求解;後半講 LLaMA 3 詞表從 32k 擴到 128k、中文字被 byte-level BPE 切成三個 token 的代價。L09 從 greedy、取樣、beam search 一路講到 speculative decoding:小模型先猜 N 個 token,大模型一次前向驗證,因為驗證比生成便宜;最後介紹 EAGLE 改成預測最後一層特徵。
MIT 6.5940(TinyML and Efficient Deep Learning Computing)教的是讓模型變小、變快、塞進手機和微控制器的技術:pruning、quantization、NAS、distillation、LLM 部署與分散式訓練。2025 年秋季因 Song Han 休假停開,2025 年課頁回 404;Fall 2026 正在上,截至 2026-09-30 只放出 L1–L6 與 Lab 0–1。本系列因此以最近一屆完整的 Fall 2024 為主幹:23 講投影片、23 支錄影、Lab 0–5 都公開,屬 A3;Fall 2026 列 A2,每篇另附對照。
Lab 4 是 Colab notebook,用 OPT-1.3B 一步步重做 AWQ:先看 3-bit 量化後 perplexity 變多差,再保留 1% 重要 channel(Q1),最後改用縮放保護它們並搜尋最佳縮放(Q2),兩題各 50 分,另有依 perplexity 計分的 bonus。Lab 5 換到 C++:用 TinyChatEngine 在自己的電腦上跑 4-bit 的 LLaMA2-7B-chat,替 W4A8 線性層 kernel 依序寫 loop unrolling、multithreading、SIMD、multithreading+unrolling、全部組合五個版本,每個 20 分,另有最多 20 分的效能 bonus。本文整理兩份作業的題目、配分、環境與校外限制,不附解答。
第 13 講把 LLM 推論變快的方法分成三條路。量化:SmoothQuant 把 activation 的離群值難度搬到權重做 W8A8,AWQ 依 activation 找出約 1% 的重要權重、用縮放保護它們做 W4A16,QServe 再合成 W4A8KV4。稀疏:Wanda 用 |W|·‖X‖ 剪權重,DejaVu 與 MoE 每個 token 只用一部分參數,SpAtten 與 H2O 丟掉不重要的 token。Serving:TTFT/TPOT 指標、PagedAttention、FlashAttention、speculative decoding 與 continuous batching。投影片上 OPT-6.7B 做 INT3 時,RTN 的 perplexity 是 43.16,把重要 channel 放大 2 倍就降到 14.07。
李宏毅在 ML 2026 第三週講推論加速,前半堂只講一招:Flash Attention。GPU 的運算單元很快,但工作台(on-chip SRAM)很小,資料得從倉庫(HBM)搬上搬下,搬運才是瓶頸。一般的 softmax 要來回倉庫好幾次;Flash Attention 用「先假設目前最大值就是 Amax,之後再乘一個修正項」的技巧,把找最大值、算分母、做 weighted sum 合進同一次掃描,連 attention weight 都不必真的算出來。結果和原本的 attention 一模一樣,不需要重訓,代價只是一點額外運算和一點燒腦。
HW3 是 20 題選擇題(每題 0.5 分),不交程式,只在 NTU COOL 上作答。前 10 題讀論文:四篇 speculative decoding(Leviathan、DeepMind 的 Speculative Sampling、Inference with Reference、SpecInfer)加上 FlashAttention 1–3;後 10 題照 Colab 填 TODO 後分析結果:手寫 speculative decoding 的接受率、兩種 prompt regime 下 assistant 模型與 n-gram 的加速曲線、用 T4 規格估 FlashAttention 的 HBM 讀取量與理論加速、vLLM 的 prefix caching 多輪測試與失效實驗,以及 CPU offload 對 throughput 的影響。題目中英雙語全部印在作業 PDF 裡,校外可以完整自學,只是拿不到官方解答。
HW8 不用寫程式也不用交程式:助教給一份已經寫好的 Colab,用 Llama-3.2-1B-Instruct 在 GSM8K 前 100 題上比較直接推論、Self-Consistency、Self-Certainty 與 DeepConf(Confidence),每種方法各 sample 16 條推理。你讀三篇論文、跑完 notebook,到 NTU COOL 答 20 題:18 題論文題、2 題看 Colab 結果。先備是李宏毅 2025 年第七講 Reasoning。題目中英兩版都印在 hw8.pdf,Colab 可公開下載;只有 COOL 測驗與成績需要台大帳號。
KV Cache 把已經算過的 key 和 value 存起來,decode 時就不必重算,但它每個 token 都要佔一份記憶體:以 Gemma 2 27B 為例,一個 token 約 0.72MB,A100 80GB 只夠放約 11.4 萬個 token。李宏毅接著整理了一串瘦身法:讓多個 query 共用 key/value(MQA、GQA)、把 key/value 壓成一個向量又不必解壓(MLA)、只看一段範圍(Sliding Window、StreamingLLM)、把沒人理的 key/value 丟掉(Scissorhands、H2O),最後講跨對話的 prompt caching:只有前綴完全相同才會命中,所以 system prompt 要把穩定的內容放前面。
CME295 2026 版第 8 講(11 月 20 日)把 diffusion LLM 拉成整講,課表列了 continuous、discrete、masked diffusion、訓練與推論五個子題。課前預寫版依 DDPM、D3PM、SEDD、MDLM、LLaDA 等原始論文整理:連續雜訊在文字上要付約 64 倍算力,[MASK] 吸收態勝出;訓練目標是乘上 1/t 的 masked cross-entropy;推論的速度來自每步多填幾格,但 LLaDA 主要結果其實每步只解一個 token,Fast-dLLM 靠信心門檻與近似 KV cache 才拿到最多 27.6 倍加速。
2026 版 CME295 第 5 講「LLM systems」(10 月 30 日)課表列了 7 個主題:分散式訓練、推論最佳化、KV caching、speculative decoding、高效 kernel、FlashAttention、硬體取捨。本篇在開課前,用 2025 版第 3、4 講約 70 頁投影片加原始論文,把它們串成同一本帳:H100 每搬 1 byte 大約要做 295 次運算才吃得滿算力,而逐字生成時每讀 1 byte 權重只做約 1 次,所以多數加速手法都在想辦法少搬資料。
learn-inference.com 是 Philip Kiely《Inference Engineering》(256 頁,Baseten 出版,可免費下載 PDF)的非官方互動版:照原書 8 章、42 節重寫解說,把 TTFT、P99、speculative decoding、prefix cache 路由這類靠直覺的概念做成可以拖滑桿的模擬器,另外附免金鑰的 JSON API 與 MCP server。
2026 年開源模型在 coding benchmark 追平閉源,但自架不只是選模型——vLLM 適合高併發生產服務、SGLang 在前綴重用場景快 29%、Ollama 是本地開發首選、llama.cpp 吃最少資源。A100 雲端租金約 $1.4-2.2/hr,自架損益兩平點大約在每月 100M tokens。
自架推論的關鍵不在引擎多快,而在你的 GPU 使用率:一張打滿的 A100 約 $0.70 / 百萬輸出 token,使用率掉到一成就變 $7,比多數雲端 API 貴。這篇是系列導讀,把七套工具分成三層,幫你判斷該選哪一層。
TensorRT-LLM 是 NVIDIA 的開源 LLM 推論庫(Apache 2.0),用離線編譯把模型權重與計算圖轉成最佳化的 TensorRT engine,再用自訂 CUDA kernel、in-flight batching 與多種平行化壓出硬體極限。代價是只支援 NVIDIA GPU、編譯要數十分鐘、換模型或量化就要重新 build。
自架推論伺服器分三層:執行引擎(llama.cpp)、服務引擎(vLLM、SGLang)、模型管理平台(Ollama、Xinference、Triton)。選對層級比選對工具重要——先問你的瓶頸在排程還是在部署流程,再決定複雜度放在哪裡。
Xinference 把 vLLM、SGLang、llama.cpp、Transformers、MLX 五種後端包在同一個管理層,用 Web UI 和 OpenAI 相容 API 統一管理 LLM、embedding、rerank、語音和圖像模型,適合需要多類型模型共存的自架部署;但管理層的解析邏輯也讓攻擊面比純 serving engine 大(CVE-2026-61539 是案例)。
第十講把 prefill 與 decode 分開:前者能平行、常受算力限制,後者逐 token 且常受記憶體頻寬限制;GQA/MLA、量化、speculative decoding、continuous batching 與 PagedAttention 都在改寫這條成本。
OpenRouter 用 OpenAI 相容 API 統一多家模型與推論端點,並把供應商排序、故障切換、BYOK 與零資料保留政策放進同一套路由規則。
Sail Research 讓每個推論 request 宣告 completion window,把可等待的背景 Agent 排到較便宜的運算資源;並以 Sailboxes 補上長時間執行環境。
vLLM 是自架 LLM 推論的事實標準(GitHub 89,470 stars,2026-08-21 實查),核心是把 KV cache 當作業系統的分頁來管。但選型的關鍵不在它多快,在你的 GPU 使用率:以 Red Hat 實測的每秒 793 個輸出 token 換算,一張打滿的 A100 約 $0.70 / 百萬輸出 token,使用率掉到一成就變 $7——比多數雲端 API 貴。
llama.cpp 是目前最廣泛使用的本地 LLM 推論引擎,用純 C/C++ 實作,支援 CPU、Metal、CUDA、Vulkan 等多後端,搭配 GGUF 量化格式讓消費級硬體能跑數十億參數的模型。
TurboQuant+ 是 Google Research ICLR 2026 論文的開源實作,用 PolarQuant + QJL 兩階段量化壓縮 KV cache 達 3.8-6.4x,讓消費級硬體跑更大模型和更長上下文。
vLLM 用 PagedAttention 解決 KV cache 記憶體浪費問題,搭配 continuous batching 和 prefix caching,成為目前最主流的開源 LLM 推論引擎。