Skip to content

Latest commit

 

History

History
210 lines (142 loc) · 11 KB

README_zh.md

File metadata and controls

210 lines (142 loc) · 11 KB
smalldoges

visitors arXiv huggingface License: Apache-2.0

Small Doges 正在建设中, 让我们一起开发吧!🐕🐕🐕

简体中文 | English

small-doge

新闻: 🎉🎉🎉 我们现在已经支持 预训练的Doge-Base, 指令微调的Doge-Instruct, 以及推理微调的Doge-R1的全部训练流程, 请参阅指南!

  • 本项目旨在从0开始, 最快仅用3小时!即可训练出仅为13M大小的微型语言模型Doge-20M!🚀
  • small doge系列极其轻量, 最小版本体积约是 GPT3 的 $\frac{1}{7800}$, 力求做到最普通的个人GPU也可快速推理甚至训练.🏎️
  • 我们提供了数据集预处理、预训练、监督微调、强化学习偏好对齐的全阶段代码、视觉多模态VLM(正在开发)和推理微调R1(正在开发).🧪
  • 站在巨人的肩膀上可以看的更远, 希望small doge系列小模型能为研究者提供更多思路, 为实现具身通用人工智能的道路添砖加瓦.🤖

Tip

我们希望尽可能使用开源工具和框架来简化从数据处理到模型训练的过程, 以便初学者可以轻松理解和使用.🤗

streamlit

Doge-60M-Instruct 在 11 代 i7 CPU 笔记本上快速推理

关于

本项目旨在开发一系列动态快速的小型模型, 以促进其在具身智能领域的应用, 特别是在资源受限的环境下, 满足实时响应需求, 推动下游领域的实际应用落地.

Tip

截至2025-2-20: small doge系列已完成了3个型号模型的预训练, 最小仅需20M, 即可具备流畅的对话能力!

模型 代币 训练步数 批次 学习率 调度器 预热比例 衰减比例 权重衰减 最小学习率
Doge-20M 4B 8,000 256 8e-3 warmup_stable_decay 0.1 0.1 0.01 0.0
Doge-60M 16B 16,000 512 6e-3 warmup_stable_decay 0.1 0.1 0.01 0.0
Doge-160M 32B 24,000 768 4e-3 warmup_stable_decay 0.1 0.1 0.01 0.0

以下一个型号正在预训练, 欢迎有能力的研究员帮忙(poor man的哀嚎)!🙏

模型 代币 训练步数 批次 学习率 调度器 预热比例 衰减比例 权重衰减 最小学习率
Doge-320M 64B 32,000 1024 2e-3 warmup_stable_decay 0.1 0.1 0.01 0.0
drawing

如图所示, Doge 架构的序列变换部分使用了 Dynamic Mask Attention, 可以理解为在训练时使用与值状态相关的自注意力, 在推理时使用没有过去状态衰减的状态空间, 以解决现有的 Transformer 或 SSM 在长文本中迷失的问题. Doge 的状态变换部分使用了 Cross Domain Mixture of Experts, 由密集线性层和稀疏嵌入层组成, 并可以额外增加稀疏参数, 以从密集权重检查点继续训练而无需重新训练整个模型, 从而降低模型的持续迭代成本. 此外, Doge 还使用了具有可学习参数的 RMSNormResidual 来适应深度模型的梯度范围.

Dynamic Mask Attention 模块

DMAttn DMAttn

Cross Domain Mixture of Experts 模块

CDMoE CDMoE

安装要求

如果您需要预训练或者微调, 我们的代码库需要以下环境:

  • Windows 或 Linux
  • NVIDIA GPU
  • Python 3.10+
  • PyTorch 2.0+
  • CUDA 11.8+

但我们仍然强烈建议您安装最新版本的 PyTorch 和 CUDA 以获得最佳性能.

当然, 您也可以使用开源的 Docker PyTorch 镜像来避免配置环境的麻烦.

docker pull nvcr.io/nvidia/pytorch:24.12-py3
docker run --privileged --gpus all -it --name PyTorch --shm-size=32g -p 8888:8888 -p 6006:6006 --ulimit memlock=-1 --ulimit stack=67108864 -v <your code path>:/workspace -v <your datasets path>:/workspace/Doge/datasets nvcr.io/nvidia/pytorch:24.12-py3
  • pip install transformers: 所有后续工作的核心框架.
  • pip install datasets sentencepiece boto3: 用于下载和处理数据集.
  • pip install accelerate: 用于分布式训练.
  • pip install trl: 用于强化学习微调.

安装

git clone https://github.com/SmallDoges/small-doge.git
cd small-doge
pip install -e .

快速入门

我们已经编写了一个 notebook训练指南 来演示数据集处理、模型训练和模型评估的整个过程. 您还可以独立使用已经发布的模型, 如果感兴趣请详细阅读notebook或训练指南, 里面有具体的步骤和细节!

型号发布

Doge-CheckPoint

wsd_scheduler

Doge 使用 wsd_scheduler 作为训练调度器, 将学习率分为 warmup, stabledecay 三个阶段. 它允许我们在 stable stage 中的任何新数据集上从任何检查点继续训练, 而没有训练的损失波动.

以下是在每个检查点继续训练所需的初始学习率:

模型 学习率 调度器 预热步数 稳定步数
Doge-20M 8e-3 wsd_scheduler 800 6400
Doge-60M 6e-3 wsd_scheduler 1600 12800
Doge-160M 4e-3 wsd_scheduler 2400 19200
Doge-320M 2e-3 wsd_scheduler 3200 25600

Doge-Base

预训练:

模型 训练数据 步数 上下文长度 令牌 学习率 批量大小 精度 RTX 4090 GPU 小时
Doge-20M HuggingFaceTB/smollm-corpus 8k 2048 4B 8e-3 0.5M bfloat16 14
Doge-60M HuggingFaceTB/smollm-corpus 16k 2048 16B 6e-3 1M bfloat16 128
Doge-160M HuggingFaceTB/smollm-corpus 24k 2048 32B 4e-3 1.5M bfloat16 522

评估:

模型 MMLU TriviaQA ARC PIQA HellaSwag OBQA Winogrande i7-11 CPU上的tokens/s
Doge-20M 25.4 0.03 29.8 58.4 27.3 25.6 50.2 142
Doge-60M 26.4 0.2 37.9 61.4 31.5 28.0 50.8 62
Doge-160M 29.2 4.8 44.4 66.3 38.7 34.4 52.2 28

Doge-Instruct

监督微调:

模型 训练数据 轮次 上下文长度 学习率 批量大小 精度
Doge-20M-Instruct-SFT HuggingFaceTB/smoltalk 2 2048 8e-4 0.25M bfloat16
Doge-60M-Instruct-SFT HuggingFaceTB/smoltalk 2 2048 6e-4 0.25M bfloat16

直接优化微调:

模型 训练数据 轮次 上下文长度 学习率 批量大小 精度
Doge-20M-Instruct HuggingFaceH4/ultrafeedback_binarized 2 1024 8e-5 0.125M bfloat16
Doge-60M-Instruct HuggingFaceH4/ultrafeedback_binarized 2 1024 6e-5 0.125M bfloat16

评估:

模型 IFEval (Prompt Strict Acc) MMLU BBH ARC PIQA HellaSwag tokens / s on i7-11 CPU
Doge-20M-Instruct 7.3 26.3 18.3 29.2 57.8 27.8 142
Doge-60M-Instruct 7.4 27.5 27.7 37.5 61.4 32.1 62
Doge-160M-Instruct 16.8 29.7 29.1 42.8 64.1 37.1 28

训练环境:

  • 镜像: nvcr.io/nvidia/pytorch:24.12-py3
  • 硬件: 1x NVIDIA RTX 4090
  • 软件: Transformers, TRL

期许

Important

  • 如果您觉得 small-doge 对你有所帮助, 请给它一颗星星⭐吧!

  • 由于时间和专业知识的限制, 项目中可能会有疏漏. 欢迎在Issue提出你的见解或通过提交PR来帮助项目不断完善, 您的支持是推动项目持续进步的动力源泉!😊

  • 一个人可以走的很快, 一群人才可以走的更远. 如果您已经尝试训练了新的 small-doge 型号,欢迎在 Discussions 或 Issues 中分享您的模型权重、训练配方、评估结果和其他相关信息. 可以是在特定下游任务或垂直领域, 例如情感识别、医疗、心理、金融、法律问答等的small-doge新模型版本. 也可以是拓展训练, 例如探索更长文本序列、更大参数或更大的数据集的small-doge新模型版本. 您的分享将会大力促进社区的发展!🚀🚀🚀

星星历史

Star History Chart

引用

如果您使用此代码库, 或者认为我们的工作有价值, 请引用我们的论文:

@misc{shi2024wonderfulmatrices,
      title={Wonderful Matrices: Combining for a More Efficient and Effective Foundation Model Architecture}, 
      author={Jingze Shi and Bingheng Wu},
      year={2024},
      eprint={2412.11834},
      archivePrefix={arXiv},
      primaryClass={cs.LG},
      url={https://arxiv.org/abs/2412.11834}, 
}