FareedKhan-dev/train-llm-from-scratch
A straightforward method for training your LLM, from downloading data to generating text.
解決的問題
本專案提供了一個使用 PyTorch 從零開始建構的大型語言模型(LLM)完整端對端實作。它不依賴 transformers、trl 或 peft 等高階函式庫,讓使用者能理解並實作從原始文字處理到對齊推理風格模型的整個流程。
工作原理
本專案遵循一個順序式流程,將原始文字轉換為功能型助理:
- 資料準備:使用 OpenAI 的
tiktoken對原始文字進行分詞,並儲存於 HDF5 檔案中。這包括預訓練資料、SFT 用的指令資料、用於獎勵建模的偏好對,以及 RL 提示。 - 模型架構:使用基本的 PyTorch 模組建構 Transformer 模型,包含多層感知機(MLP)、帶因果遮罩的單頭注意力、多頭注意力,以及帶預歸一化殘差連接的 Transformer 塊。
- 預訓練:使用 The Pile 等資料集,基於下一個詞預測損失對基礎模型進行訓練。
- 後訓練:透過多個階段將基礎模型轉換為助理:
- SFT(監督式微調):使用損失遮罩,僅聚焦於助理回應,對指令資料進行訓練。
- 獎勵建模:在偏好對上訓練 Bradley-Terry 獎勵模型。
- 對齊:應用 PPO(近端策略最佳化)、DPO(直接偏好最佳化)、ORPO、KTO 和 GRPO(群組相對策略最佳化)等技術,使模型與人類偏好和推理能力對齊。
適用對象
- 學生:希望獲得每段程式碼的逐步說明與預期輸出的清晰指南。
- 開發者:希望取得可執行腳本與明確檔案路徑,以實作自己 LLM 的人。
- 研究人員:對在小型 Transformer 上從零實作 PPO、DPO 和 GRPO 等後訓練演算法感興趣的人。
特色
- 零依賴核心:完全使用純 PyTorch 實作,不依賴
transformers或peft函式庫。 - 完整流程:涵蓋從原始文字 → 令牌 → 基礎模型 → SFT → 獎勵模型 → RLHF/對齊 → 評估的完整旅程。
- 可擴展性:根據可用 GPU 記憶體,支援訓練從 1300 萬到數十億參數的模型。
- 整合工具:包含用於管理的 Streamlit 控制面板與提供理論與圖示的專用文件網站。
相關
- 專案
- 專案
- Dispatch
- 專案
- 專案