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
  • 项目
  • 项目
  • 项目
  • 项目