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