DLLXW/baby-llama2-chinese

用于从头预训练+SFT一个小参数量的中文LLaMa2的仓库;24G单卡即可运行得到一个具备简单中文问答能力的chat-llama2.

解決的問題

本專案提供一個完整且小規模的管道,用於建構類似 Llama2 的中文語言模型。旨在透過提供一個可管理的程式碼庫,涵蓋模型從資料收集、預訓練到監督式微調(SFT)的整個生命週期,降低初學者進入 LLM 領域的門檻。

如何運作

本專案實作一個小參數量模型(參數量介於 92M 到 218M 之間),並為每個開發階段提供腳本:

  1. 資料預處理:包含用於清洗高品質中文語料庫的工具(過濾短文、Minhash/Simhash 去重),並使用 ChatGLM2-6B 分詞器對資料進行分詞,以節省儲存空間。
  2. 預訓練:一個腳本,用於在大型中文資料集(最多 634 億個 token)上訓練基礎模型,以獲得基本的文本補全能力。
  3. 監督式微調(SFT):完整的微調流程,將基礎模型轉化為具備對話能力的助手,特別支援一般對話與醫療垂直領域。
  4. 推論:一個統一的入口點(infer.py),支援在不同硬體(CUDA、MPS、CPU)上使用預訓練與 SFT 權重。

適用對象

  • 希望在消費級硬體(如 NVIDIA RTX 3090)上執行真實專案,學習完整訓練流程的 LLM 初學者。
  • 對訓練小型、領域特定(如醫療)中文語言模型感興趣的開發者。

亮點

  • 端對端管道:在一個倉儲中涵蓋預訓練、SFT 與推論。
  • 優化分詞:使用 64k 詞彙量,適配 uint16,相比 int32 將資料儲存空間減少一半。
  • 領域適應:展示從通用基礎模型轉換至專用 MedicalChat 模型的過程。
  • 資料清洗工具集:內建 Minhash 與 Simhash 去重工具,提升訓練資料品質。

相關

  • Dispatch
  • 專案
  • 專案
  • 專案
  • 專案