项目定位
build_MiniLLM_from_scratch 是一个从 0 到 1 构建 MiniLLM 的开源项目,实践路线覆盖 预训练(pretrain)-> 指令微调(sft)-> 奖励模型 -> 强化学习(dpo 实践中)四个阶段,目标是以可控的成本完成一个可以完成简单聊天任务的 chat 模型。目前已完成前两个阶段。
主要能力与特色
- 使用 bert4torch 训练框架,代码简洁高效。
- 训练的 checkpoint 可以无缝衔接 transformers,直接使用 transformers 包进行推理。
- 优化了训练时的文件读取方式,优化内存占用。
- 提供了完整训练 log 供复现比对。
- 增加自我认知数据集,可自定义机器人名称、作者等属性。
- chat 模型支持多轮对话。
更新与已有模型
- 20240403:增加基于 1157 万样本训练的 MiniLLM-0.2B-SFT,支持多轮对话。
- 20240325:增加 1.1B 模型(源于 zRzRzRzRzRzRzR)。
- 20240316:初始提交,包含预训练模型 MiniLLM-0.2B-NoWudao-Base 和 MiniLLM-0.2B-Base;SFT 模型 MiniLLM-0.2B-SFT-Alpaca。
语料与数据
项目开源了经过 ChatGLM2-6B 分词器处理后的预训练语料,共 634 亿 Tokens,链接为 Corpus。另提供指令微调语料(筛选的可用数据集)。对齐模型(DPO)部分也在整理相应语料(筛选的可用数据集),但仍处于测试阶段。
使用方式与限制
项目未在给出的资料中提供具体的安装命令、训练步骤或依赖版本,暂未提供相关内容。可直接在 GitHub 仓库中查看文件夹与文件结构、仓库文件导航,并结合 transformers 进行推理衔接。
声明与适用场景
受限于语料大小、模型规模、SFT 语料大小和质量,本实验训练出来的模型目前只具备简单的聊天功能,不具备回答复杂问题的能力。因此更适合作为从零学习 LLM 训练流程、低算力条件下复现预训练与指令微调的实践参考。项目实现中参考了 baby-llama2-chinese,并提供微信群交流(人数超过 200,有邀请限制,可添加个人微信拉群)。