模型 / 資料集
mosaicml/llm-foundry avatar
mosaicml/llm-foundry

LLM Foundry:把 MPT 與 DBRX 的訓練流程拆成可替換的 YAML 設定

LLM training code for Databricks foundation models

4,444 個 Star589 個 ForkPythonApache-2.0

秒懂

它是什麼?
LLM Foundry 是 Databricks Mosaic 團隊釋出的 LLM 訓練、微調、評估與推論程式庫,建立在 Composer 之上。它的價值在於把模型、資料集、優化器與 callback 全部外部化成 YAML,代價是你同時繼承了 Composer 與 MosaicML 平台的整套假設。
適合誰用?
如果你的團隊已經在用 Composer,或者需要重現 MPT、DBRX 這類 Mosaic 系模型的訓練配方,LLM Foundry 是目前最直接的路徑,因為它的 YAML 設定與 checkpoint 轉換腳本都對齊這些模型。若你只需要在單張 GPU 上微調一個社群模型,這套依賴會比你的問題大得多。
可以商用嗎?
可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 174 天前。
用什麼語言寫的?
主要是 Python(依據 GitHub 的語言統計)。

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

開源專案深度解析

它解決的是訓練配方散落在各處的問題

訓練一個 7B 到 70B 的模型,難點很少是模型定義本身。真正耗時的是把資料前處理、分散式啟動參數、優化器設定、checkpoint 轉換與評估流程黏在一起,而且每次換一組超參數就要重改一次程式碼。LLM Foundry 把這些全部收進 YAML,模型、資料集、優化器、callback 各自是設定檔裡的一個區塊,scripts/train 底下的進入點讀取設定後交給 Composer 執行。目標讀者是已經有 GPU 資源、需要反覆跑實驗的團隊,而不是想先跑一次推論看效果的人。README 對自己的定位寫得很直白:easy-to-use, efficient and flexible,並且明確說這是為了 rapid experimentation with the latest techniques。最後那半句才是重點,這個專案假設你會不斷改設定重跑,而不是設定一次就上線。

Composer 是地基,YAML 是介面,StreamingDataset 是資料層

整個架構可以拆成三層來看。最底層是 Composer,負責訓練迴圈、分散式執行與演算法(例如 gradient clipping 或 EMA 這類訓練技巧)的掛載;LLM Foundry 不重寫這些,而是提供 LLM 專屬的模型與資料集實作。中間層是 YAML 設定,把模型、tokenizer、資料集、優化器、scheduler、callback 拆成獨立欄位,所以換模型往往只是換一個 model 區塊,不動程式碼。最上層是 scripts 目錄,data_prep 負責把原始文字轉成 StreamingDataset 格式,train 負責訓練與微調,inference 負責轉成 HuggingFace 或 ONNX 格式並生成回應,eval 負責在 in-context-learning 任務上評分。這個分層的實際後果是:資料一旦進入 StreamingDataset 格式,就脫離了原本的檔案系統佈局,好處是迭代時不必重新掃描全量資料,代價是你多了一層需要維護的中間產物,而這一層的格式細節並不在 README 裡,得去看 TUTORIAL.md 與 data_prep 底下的腳本。

從 data_prep 到 train 的實際指令路徑

README 沒有把完整指令貼出來,但它指出的目錄結構已經說明了執行順序。第一步是 scripts/data_prep,把原始文字轉成 StreamingDataset 格式;第二步是 scripts/train,用轉好的資料訓練或微調 HuggingFace 與 MPT 模型,README 寫的支援範圍是 125M 到 70B 參數;第三步視需求走 scripts/inference 或 scripts/eval。設定以 YAML 檔傳入,專案在 repo 根目錄提供多組現成設定,通常的做法是複製一份再改欄位,而不是從空白檔案寫起。scripts/train/benchmarking 底下另有工具,用來量測訓練吞吐與 MFU,這對判斷某組平行化設定是否合理有直接幫助。想先在本機試模型的人不需要走這條路:README 建議直接看 scripts/inference/README.md,用 hf_generate.py 或 hf_chat.py 對 HuggingFace 格式的模型下提示。另外 mcli/ 目錄提供以 MCLI 在 MosaicML 平台上啟動上述工作負載的設定,這是可選路徑,不是必要路徑。

綁定 Composer 與 MosaicML 平台,是它最大的結構性限制

這個專案的訓練路徑建立在 Composer 之上,而 Composer 的 callback、演算法與 checkpoint 格式都有自己的慣例。這代表兩件事。第一,你很難只取用 LLM Foundry 的某一個元件而不引入其餘部分,例如想把它的資料集實作搬進純 PyTorch 的訓練迴圈,就得處理它對 Composer 介面的依賴。第二,mcli/ 目錄與 MosaicML 平台的整合是官方支援的啟動方式,若你的基礎設施不是這個平台,就得自己處理多節點啟動、容錯與 checkpoint 儲存,而這些在 README 裡沒有替代方案。README 對這條路徑的描述相當輕描淡寫,只寫 launch any of these workloads using MCLI and the MosaicML platform,沒有說明脫離平台後的等價做法。這不是缺陷,而是設計選擇:這個 repo 服務的是自家訓練流程,外部使用者是受益者,不是主要客戶。評估時要把這點算進整合成本。

DBRX 與 MPT:模型授權與程式碼授權是兩件事

repo 的程式碼是 Apache-2.0,但模型不是。README 對 DBRX 寫得很清楚:模型權重與程式碼對研究者與商業實體都有授權,適用的是 Databricks Open Source License,另有一份 Acceptable Use Policy。MPT 系列則在表格裡逐列標示商業使用,MPT-30B、MPT-30B-Instruct、MPT-7B、MPT-7B-Instruct、MPT-7B-StoryWriter 標為 Yes,而 MPT-30B-Chat、MPT-7b-8k-Chat、MPT-7B-Chat 標為 No。這個區分在實務上很容易被忽略:程式庫的 Apache-2.0 只涵蓋程式碼,不會延伸到權重。若你的產品要用某個 MPT Chat 模型,README 的表格本身就是第一個該核對的地方。DBRX 是 Mixture-of-Experts 架構,132B 總參數、36B 啟動參數,context length 32768,README 說明它是用優化過的 Composer、LLM Foundry 與 MegaBlocks 訓練出來的。這也解釋了為什麼這個 repo 的模型支援清單會以自家模型為中心。

什麼時候該改用其他訓練框架

如果你的需求是單機微調一個社群模型,LLM Foundry 的依賴鏈明顯過重:你要先學 Composer 的概念、再把資料轉成 StreamingDataset、再處理 YAML 設定,而這些工作對單卡微調幾乎沒有回報。這種情況下,直接使用模型本身的訓練腳本或通用微調框架,路徑會短得多。差異在資料層的處理方式:LLM Foundry 走的是預先轉換、串流讀取,適合資料量大到無法整份載入、或需要反覆重跑實驗的情境;通用框架通常直接從檔案或資料集載入,設定簡單但每次啟動的 I/O 成本較高。反過來說,當你需要的正是 MPT 或 DBRX 這類模型的訓練與微調配方,或者需要 scripts/train/benchmarking 這種量測 MFU 的工具來判斷平行化設定,那麼自己重寫一遍的成本會高於適應這套框架。判斷點在於你的模型是否落在它支援的清單內,而不是框架本身好不好。

版本節奏與升級成本

從釋出紀錄看,v0.20.0 到 v0.22.0 分別落在 2025 年 4 月、5 月與 7 月,大約一到兩個月一個 minor 版本,而 repo 在 2026 年 3 月仍有推送。這個節奏對照的是訓練框架的典型風險:minor 版本之間可能調整 YAML 欄位或元件介面,而你的設定檔是直接依賴這些欄位的。實務上的做法是把設定檔與程式庫版本一起鎖定,升級時先在小規模設定上跑通 scripts/train,再換到正式配置。Apache-2.0 允許修改與再散布,但要注意它不涵蓋模型權重,也不涵蓋你從 HuggingFace 下載的 checkpoint。若你的團隊打算把 LLM Foundry 的某個元件抽出來放進自家程式庫,記得保留授權聲明,並確認抽出的部分沒有連帶依賴 Composer 的授權條款。以上是對授權範圍的技術描述,不構成法律意見。

編輯結論

如果你的團隊已經在用 Composer,或者需要重現 MPT、DBRX 這類 Mosaic 系模型的訓練配方,LLM Foundry 是目前最直接的路徑,因為它的 YAML 設定與 checkpoint 轉換腳本都對齊這些模型。若你只需要在單張 GPU 上微調一個社群模型,這套依賴會比你的問題大得多。動手前先確認三件事:你要的模型是否在 scripts/train 的支援清單內、資料能否接受被轉成 StreamingDataset 格式、以及你的模型授權是否允許商業使用,README 的 MPT 表格對 Chat 系列明確標示 No。

官方來源

  1. License: Apache-2.0
  2. mosaicml/llm-foundry on GitHub
  3. Project website
  4. README
  5. Releases
社群筆記

社群筆記