模型 / 資料集
stas00/ml-engineering avatar
stas00/ml-engineering

ml-engineering:把 LLM 訓練現場的踩坑紀錄做成可查的手冊

Machine Learning Engineering Open Book

18,997 個 Star1,247 個 ForkPythonCC-BY-SA-4.0

秒懂

它是什麼?
Stas Bekman 把 BLOOM-176B、IDEFICS-80B 到 RAG 系統的實戰筆記整理成一本開放書,內容偏向可複製貼上的指令與量測腳本,而不是模型架構教學。它適合已經有機器、正在跟網路與儲存搏鬥的訓練工程師。
適合誰用?
如果你手上已經有 GPU 叢集,正在處理 NCCL 卡住、節點間頻寬不如預期、或想知道加速器實際跑得出多少 TFLOPS,這本書的除錯章節與量測腳本值得先放進內部 wiki。如果你要的是模型架構、微調資料配方或框架 API 教學,這裡沒有,請去找對應的框架文件。
可以商用嗎?
可以,但要標示作者。CC-BY-SA-4.0 允許商用,前提是標明原作者並說明你做了哪些修改。它是為創作內容設計的授權,用在程式碼上時要確認適用方式。
還在維護嗎?
有在維護。儲存庫最近一次提交在 4 天前。
用什麼語言寫的?
主要是 Python(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。

開源專案深度解析

這本書解決的是「知道要調什麼,但不知道從哪裡下手」

大型模型訓練的失敗很少來自模型程式碼寫錯。更多時候是某張卡降頻、某條 InfiniBand 連結協商到較低速率、共享檔案系統在某個 checkpoint 週期卡住、SLURM 把兩個吃記憶體的任務排到同一節點。這些問題在官方文件裡找不到,因為它們不是 API 問題,是環境問題。

README 把定位講得很直白:這是「an open collection of methodologies, tools and step by step instructions」,對象是 LLM/VLM 訓練工程師與維運人員,內容包含大量腳本與可直接複製的指令。作者說明這些筆記來自 2022 年訓練 BLOOM-176B、2023 年訓練 IDEFICS-80B 多模態模型,以及 2024 年在 Contextual.AI 做 RAG 模型時的經驗。

讀者輪廓因此相當清楚。你需要先有可用的訓練環境,才讀得懂它在講什麼。反過來說,如果你還在選框架、寫第一個 transformer,這本書的密度會讓你無從下手,因為它假設你已經知道自己要解決哪一類問題。

七個部分的分工:從採購決策一路排到推論

目錄把內容切成七塊。Part 1 是 Insights,包含如何挑雲端供應商,以及一篇用 H200 到 B200 的實測案例討論「什麼時候值得升級 GPU」。Part 2 到 Part 5 分別是硬體(compute、storage、network)、編排(含 SLURM)、訓練、推論。Part 6 是除錯與測試,Part 7 是資源彙整。

這個切法反映的是訓練現場的因果順序。硬體章節先處理加速器、CPU 與記憶體,再處理本地、分散式與共享檔案系統,然後才是節點內與節點間網路。實務上一個叢集的效能瓶頸往往就落在這三層的其中一層,而這三層的內容在一般框架文件裡幾乎是空白。

Part 1 的 GPU 升級框架值得單獨看。它不是列出規格表叫你買新的,而是把「升級值不值得」當成成本問題處理,並用一次 H200 到 B200 的基準量測走完整個判斷流程。這類內容通常只存在於內部採購文件,公開寫出來的不多。

量測工具才是這份材料的核心資產

README 的 Shortcuts 區塊列出三個腳本,這三個腳本決定了這本書對你的實際價值。

all_reduce_bench.py 放在 network/benchmarks/ 底下,README 描述它是一種比 nccl-tests 更容易的網路吞吐量基準測試方式。torch-distributed-gpu-test.py 放在 debug/ 底下,用途是快速測試節點間連線。mamf-finder.py 放在 compute/accelerator/benchmarks/ 底下,用來量測加速器實際能跑出多少 TFLOPS。

三者的共同點是:它們量的是你的環境,不是廠商型錄上的理論值。書中另外提供理論值的對照表,包括加速器 TFLOPS 比較表、加速器記憶體容量與速度表,以及節點間與節點內網路的理論速度表。理論值與實測值之間的落差,通常就是你要找的問題所在。

這也是判斷是否採用的關鍵。如果你的團隊從來沒有量過 all-reduce 的實際吞吐量,那麼光是跑一次這個腳本,就可能比讀完半本書更有收穫。

除錯章節的寫法:可貼上的解法,不是方法論

debug/pytorch.md 被描述為「quick copy-n-paste solutions to resolve hanging or breaking pytorch applications」,同時也包含如何製作極小的模型、資料集與 tokenizer 以加快除錯與開發。

這個取向有明顯好處也有明顯代價。好處是當你的分散式訓練在 step 3000 卡住時,你需要的是一段能立刻執行的指令或環境變數,不是一篇關於同步原語的論文。代價是這類筆記綁定特定版本與特定堆疊,作者在 BLOOM 與 IDEFICS 時期累積的解法,套用到你現在的 PyTorch 版本上不一定成立。

書中另外把除錯延伸到另一個 repo:the-art-of-debugging,並提供 SKILL.md 讓你把這些內容餵給 AI agent。這個設計承認了一件事:這份材料的組織方式適合當參考手冊查詢,不適合線性閱讀。作者自己說這是「an ongoing brain dump」,這個自我描述是準確的。

編排層只押在 SLURM 上

Part 3 的 Orchestration 分成兩塊:通用的容器與資源管理,以及 SLURM。Shortcuts 裡直接放了 orchestration/slurm/users.md,描述為 SLURM 的 cheatsheet 與技巧集。

這是一個明確的取捨。如果你的叢集跑的是 Kubernetes 加上訓練 operator,這本書的編排章節對你的直接幫助有限,你只能從硬體與網路章節取用內容。反過來說,如果你的環境是學術或研究型 HPC 叢集,SLURM 章節的實用度會很高,因為 SLURM 的官方文件在「怎麼把多節點訓練排進去並讓它真的跑起來」這件事上著墨不多。

書中沒有提供其他編排系統的對等內容,這一點在評估時要算進去。它不是一份中立的編排系統比較,而是一份以 SLURM 為前提寫成的操作筆記。

它是書,不是套件:採用成本與維護成本分開看

這個 repo 的主要語言標示為 Python,但它的產出不是可安裝的函式庫,而是文件加上獨立腳本。你不需要 pip install 任何東西就能讀它,也不需要把它加進依賴樹。

取得方式有兩條。一條是直接讀 repo 裡的 markdown 檔案,另一條是下載電子書版本:README 提供 PDF 與 EPUB 的連結,託管在 Hugging Face hub 上,並說明大約每隔幾週重建一次,想拿最新版本可以照 build 目錄裡的說明自己建。

維護成本落在你這一側。書中的指令與量測結果對應特定硬體世代與軟體版本,作者在 README 說會透過 Twitter 公告重大更新,但沒有承諾固定的更新節奏。實務上的做法是把你要用的那幾頁抽出來,在內部環境重跑一次,確認結果仍然成立,再放進團隊文件。

授權是 CC-BY-SA-4.0。這是分享類授權,允許再利用與改作,但帶有姓名標示與相同方式分享的條件。把它整段貼進對外教材或商業訓練課程之前,需要確認這兩個條件的具體範圍,這取決於你的使用情境,本文不構成法律意見。

什麼時候該用別的資源

如果你的問題是「這個模型要怎麼微調」「LoRA 的 rank 該設多少」「訓練資料要怎麼清洗」,這本書幫不上忙,它的訓練章節處理的是訓練的工程面而非方法面。這類問題應該去看對應框架的官方文件與食譜。

如果你的問題是「我的 8 節點訓練為什麼比 4 節點還慢」,這本書就是對的工具,特別是網路章節加上 all_reduce_bench.py 的組合。

如果你需要的是可程式化呼叫的函式庫,例如把分散式檢查點或彈性訓練直接整合進程式碼,這個 repo 提供的是知識與量測腳本,不是 API。它的價值在於讓你知道該量什麼、該看哪裡,而不是替你做完。

還有一種情況要避開:把書中的數字當成自己叢集的預期值。書裡的理論對照表與實測案例都對應特定加速器與網路配置,你的拓樸不同,數字就會不同。

編輯結論

如果你手上已經有 GPU 叢集,正在處理 NCCL 卡住、節點間頻寬不如預期、或想知道加速器實際跑得出多少 TFLOPS,這本書的除錯章節與量測腳本值得先放進內部 wiki。如果你要的是模型架構、微調資料配方或框架 API 教學,這裡沒有,請去找對應的框架文件。採用前先確認兩件事:你的訓練堆疊是否以 PyTorch 與 SLURM 為主,以及書中引用的硬體世代是否涵蓋你手上的卡;書裡的數字綁定特定加速器與網路拓樸,換一代硬體就得自己重跑 all_reduce_bench.py 與 mamf-finder.py 驗證。授權是 CC-BY-SA-4.0,屬於分享類授權,若你要把內容併入內部訓練教材或對外文件,先讓法務確認姓名標示與相同方式分享的義務範圍,這不是法律意見。

官方來源

  1. Issues
  2. License: CC-BY-SA-4.0
  3. Project website
  4. README
  5. stas00/ml-engineering on GitHub
社群筆記

社群筆記