模型 / 資料集
huggingface/alignment-handbook avatar
huggingface/alignment-handbook

alignment-handbook:把 Zephyr 的對齊流程拆成可重跑的 YAML 與腳本

Robust recipes to align language models with human and AI preferences

5,678 個 Star490 個 ForkPythonApache-2.0

秒懂

它是什麼?
Hugging Face 的 alignment-handbook 不是一套對齊框架,而是一組訓練配方。它把繼續預訓練、SFT、獎勵模型、拒絕採樣、DPO、ORPO 六種技術整理成 scripts 與 recipes 兩層結構,讓你能照著重現 Zephyr-7b-β。
適合誰用?
如果你要的是一條能照抄、能重現 Zephyr 或 SmolLM 系列對齊流程的參考管線,這個專案值得先跑一次 recipes/zephyr-7b-beta,確認 PyTorch 2.6.0 與 flash-attn 2.7.4.post1 在你的硬體上編得過、DeepSpeed ZeRO-3 能起來。如果你要的是封裝好的訓練服務、自動化的超參搜尋,或不想碰 YAML 與分散式設定,這個 repo 不會替你解決,它把選擇權交回你手上。
可以商用嗎?
可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 113 天前。
用什麼語言寫的?
主要是 Python(依據 GitHub 的語言統計)。

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

開源專案深度解析

它填的是哪個洞:對齊知識散落在論文與部落格之間

2023 年之後,開源社群累積了大量指令微調資料集與模型,README 自己下的判斷是這批工作「大多聚焦在透過監督式微調教模型聽指令」。但 InstructGPT 與 Llama2 的論文顯示,在 SFT 之上再引入人類或 AI 偏好,能換到明顯的幫助性與安全性增益。問題在於偏好對齊在當時仍屬新題目,公開資源稀少:該收什麼資料、該量哪些指標、訓練超參怎麼設,多半只存在於個別團隊的內部筆記。

這個專案的定位因此很明確,它不發明新演算法,而是把整條管線的配方公開出來,涵蓋繼續預訓練、SFT、獎勵模型、拒絕採樣、DPO、ORPO。目標讀者是已經有能力跑多卡訓練、但不想從零摸索偏好對齊細節的 ML 工程師。如果你只是想找一個 pip install 就能用的對齊套件,這裡的內容會比預期更偏教學與重現。

scripts 與 recipes 的分工:程式與參數分開放

repo 的結構刻意保持簡單,主要只有兩層。scripts 放訓練與評估程式,涵蓋四個步驟:繼續預訓練、chat 用 SFT、DPO 偏好對齊,以及把 SFT 與偏好對齊合併成單階段的 ORPO。每個腳本都支援兩種訓練模式:用 DeepSpeed ZeRO-3 訓練全模型權重,或用 LoRA/QLoRA 做參數高效微調。

recipes 放可重現的設定,每個 recipe 是一份 YAML,內含單次訓練run 的所有參數。README 特別提到有一份 gpt2-nl recipe,用來示範這套手冊也能做語言或領域適配:先在新語言上繼續預訓練,再做 SFT 與 DPO。這種切法的好處是參數與程式解耦,換模型或換資料集時改 YAML 即可,不必動訓練邏輯。代價是 YAML 數量會隨組合膨脹,你得自己判斷哪份 recipe 最接近你的情境,因為 repo 沒有提供自動挑選的機制。

安裝:版本被釘死,這是重現性也是摩擦

README 給的流程以 uv 建立虛擬環境開始:

uv venv handbook --python 3.11 && source handbook/bin/activate && uv pip install --upgrade pip

接著安裝 PyTorch,且明確指定版本:

uv pip install torch==2.6.0 --index-url https://download.pytorch.org/whl/cu126

文件強調精確版本對重現性很重要,同時也指出這取決於硬體,並把讀者導向 PyTorch 官方安裝頁。之後安裝其餘依賴:

uv pip install .

再來是 Flash Attention 2,指令為 uv pip install "flash-attn==2.7.4.post1" --no-build-isolation。最後用 huggingface-cli login 登入 Hugging Face 帳號,並安裝 git-lfs 以便推送模型到 Hub。

這串步驟有兩個實際門檻。第一,flash-attn 要從原始碼編譯,--no-build-isolation 意味著編譯環境必須先備妥對應的 CUDA toolkit 與編譯器,這在共用叢集上常是最容易卡住的一步。第二,PyTorch 被鎖在 2.6.0,如果你的機器或驅動只支援其他版本,得自行取捨,而文件沒有提供替代路徑。

六種技術各自的適用位置

README 把收錄的技術列成清單,但沒有逐一展開數學推導。繼續預訓練用因果語言建模在新資料上調整模型,適合換語言或換領域。SFT 教模型聽指令,文件另外提供資料收集與整理的建議。獎勵模型訓練模型分辨回應優劣,是偏好對齊的中間產物。拒絕採樣被形容為簡單但有效,用來拉抬 SFT 模型的表現。DPO 被定位成 PPO 的替代方案,ORPO 則把 SFT 與 DPO 壓進單一階段。

值得注意的是,這個清單是能力範圍的宣告,不是推薦順序。Zephyr 的路線是 SFT 之後接 DPO,ORPO 則讓你在沒有獨立獎勵模型的情況下直接吃偏好資料。如果你的算力只夠跑一輪,ORPO 的單階段設計在流程上更省事;但若你想複現文獻裡 SFT 與偏好階段分開的比較基準,就得走兩階段。專案本身沒有替你決定,這是設計上的留白,也是使用時必須自己補上的判斷。

要套自己的資料,得先過格式這一關

README 對自訂資料集只給了一句指向:想在自己的資料上訓練 chat 模型,請照 scripts/README.md 裡的資料集格式說明。也就是說,資料格式的權威定義不在主 README,而在子目錄文件裡,而且這份材料沒有把格式細節帶進來。

這代表採用前必須先做一件事:把你的資料對到它期望的欄位結構,否則腳本會在預處理階段就失敗。另一個容易被忽略的點是授權。專案本身是 Apache-2.0,但 recipe 對應的基底模型各有自己的條款,Zephyr 系列、Gemma、Mixtral 都不是同一套授權。Apache-2.0 只涵蓋這個 repo 的程式與設定,不涵蓋你訓練出來的權重,也不涵蓋基底模型。要發佈成品前,這條界線得自己查清楚,本文不構成法律意見。

維護與升級:沒有 releases,靠 main 分支與版本鎖

這份材料顯示 repo 沒有檢索到任何 release,最新推送時間為 2026-05-26,預設分支是 main。這意味著升級路徑不是「從 v1 升到 v2」,而是跟著 main 走,或自己把當時的 commit 釘住。對於要長期維護訓練管線的團隊,後者比較穩,因為上游一旦調整腳本介面或 recipe 結構,你手上的 YAML 可能對不上。

維護成本主要落在三處。一是依賴矩陣:PyTorch 2.6.0、flash-attn 2.7.4.post1、DeepSpeed 的組合會隨 CUDA 與驅動變動,換機器就得重編一次。二是 recipe 的擴散,新模型與新技術以新增 YAML 的方式進來,舊 recipe 不見得同步更新。三是文件分層,主 README、scripts/README.md 與各 recipe 目錄各有各的說明,版本不同步時要以哪一份為準,得自己判斷。

什麼時候不該用它

最明顯的錯配是把它當成推論或部署工具。這個 repo 的內容是訓練與評估腳本,不含服務化、量化或吞吐優化。第二種錯配是硬體不足。全參數訓練走 DeepSpeed ZeRO-3,對多卡與記憶體有實際要求;LoRA/QLoRA 雖然降低門檻,但你得接受它與全參數微調在行為上的差異,而 README 並沒有給出兩者的效果對照。

第三種是期待自動化。這裡沒有超參搜尋、沒有實驗追蹤整合、沒有資料品質檢查,YAML 改了要自己記錄哪一版對應哪個結果。如果你的團隊需要的是可審計、可回溯的實驗管理,這套配方只能當起點,外圍的紀錄機制要自己搭。把 alignment-handbook 當成教學與重現的參考實作,比當成生產級訓練平台更貼近它的實際形狀。

編輯結論

如果你要的是一條能照抄、能重現 Zephyr 或 SmolLM 系列對齊流程的參考管線,這個專案值得先跑一次 recipes/zephyr-7b-beta,確認 PyTorch 2.6.0 與 flash-attn 2.7.4.post1 在你的硬體上編得過、DeepSpeed ZeRO-3 能起來。如果你要的是封裝好的訓練服務、自動化的超參搜尋,或不想碰 YAML 與分散式設定,這個 repo 不會替你解決,它把選擇權交回你手上。動手前先確認三件事:你的資料能不能轉成它要求的格式、你的 GPU 記憶體撐不撐得住全參數訓練,以及 Apache-2.0 授權下你要發佈的模型是否還受基底模型條款約束。

官方來源

  1. huggingface/alignment-handbook on GitHub
  2. Issues
  3. License: Apache-2.0
  4. Project website
  5. README
社群筆記

社群筆記