DLLXW/baby-llama2-chinese
用于从头预训练+SFT一个小参数量的中文LLaMa2的仓库;24G单卡即可运行得到一个具备简单中文问答能力的chat-llama2.
解決的問題
本專案提供一個完整且小規模的管道,用於建構類似 Llama2 的中文語言模型。旨在透過提供一個可管理的程式碼庫,涵蓋模型從資料收集、預訓練到監督式微調(SFT)的整個生命週期,降低初學者進入 LLM 領域的門檻。
如何運作
本專案實作一個小參數量模型(參數量介於 92M 到 218M 之間),並為每個開發階段提供腳本:
- 資料預處理:包含用於清洗高品質中文語料庫的工具(過濾短文、Minhash/Simhash 去重),並使用 ChatGLM2-6B 分詞器對資料進行分詞,以節省儲存空間。
- 預訓練:一個腳本,用於在大型中文資料集(最多 634 億個 token)上訓練基礎模型,以獲得基本的文本補全能力。
- 監督式微調(SFT):完整的微調流程,將基礎模型轉化為具備對話能力的助手,特別支援一般對話與醫療垂直領域。
- 推論:一個統一的入口點(
infer.py),支援在不同硬體(CUDA、MPS、CPU)上使用預訓練與 SFT 權重。
適用對象
- 希望在消費級硬體(如 NVIDIA RTX 3090)上執行真實專案,學習完整訓練流程的 LLM 初學者。
- 對訓練小型、領域特定(如醫療)中文語言模型感興趣的開發者。
亮點
- 端對端管道:在一個倉儲中涵蓋預訓練、SFT 與推論。
- 優化分詞:使用 64k 詞彙量,適配
uint16,相比int32將資料儲存空間減少一半。 - 領域適應:展示從通用基礎模型轉換至專用 MedicalChat 模型的過程。
- 資料清洗工具集:內建 Minhash 與 Simhash 去重工具,提升訓練資料品質。
相關
- Dispatch
- 專案
- 專案
- 專案
- 專案