IndustryCorpus2
收藏mini_qwen 是一个从头开始训练的 1B 参数的大型语言模型 (LLM) 项目,包括预训练 (PT)、微调 (SFT) 和直接偏好优化 (DPO) 三个部分。该项目基于 Qwen2.5-0.5B-Instruct 模型,通过扩充模型隐藏状态层数、隐藏状态维度和注意力头数,增加参数量到 1B,并进行参数随机初始化。训练数据使用北京智源人工智能研究院的预训练 (16B token)、微调 (9M 条) 和偏好数据 (60K 条),使用 flash_attention_2 进行加速,使用 deepspeed 在 6 张 H800 上训练 25h(pt 1epoch)、43h(sft 3epoch)、1h(dpo 3epoch)。
数据集介绍
预训练数据
使用 IndustryCorpus2 30类行业分类的高质量预训练数据集,选择 10 个行业-中英文-高质量数据,实际使用数据量约为 16B token。
微调数据
使用 Infinity-Instruct 数据集的基础数据集和聊天数据集,选择基础数据集中的 7M 和聊天数据集中的 Gen 混合作为微调数据,实际使用数据量约 9M 条样例。
偏好数据
使用 Infinity-Preference 数据集的训练数据集和测试数据集混合作为偏好数据集,实际使用数据量约 60K 条样例。
训练流程
预训练 (pt)
使用 Trainer 进行训练,参考 LLaMA-Factory,对数据进行序列打包 (sequences packing),使用 Accelerate 和 deepspeed 进行分布式训练,使用 flash_attention_2 进行加速,设置序列长度为 1024。
微调 (sft)
使用 TRL 中的 SFTTrainer 进行训练,使用 Accelerate 和 deepspeed 进行分布式训练,使用 flash_attention_2 进行加速,设置序列长度为 1024,对于多轮对话数据,仅训练第一轮对话数据。
直接偏好优化 (dpo)
使用 TRL 中的 DPOTrainer 进行训练,使用 Accelerate 和 deepspeed 进行分布式训练,使用 flash_attention_2 进行加速,设置序列长度为 1024。
结果分析与模型评估
预训练 (pt)
预训练使用大约 16B token 的高质量中英文数据,训练了 1epoch,总 batch_size 为 1152,学习率为 1e-4,使用 6 张 H800,deepspeed 采用 zero-2,耗时约 25h。loss 曲线先迅速下降,后缓慢降低,非常符合预期。
微调 (sft)
微调基于 pt 1epoch 模型,使用大约 9M 条高质量中英文数据,训练了 3epoch,总 batch_size 为 1152,学习率为 1e-5,使用 6 张 H800,deepspeed 采用 zero-2,耗时约 43h。loss 曲线先迅速下降,后缓慢降低,非常符合预期。
模型评估
在模型评估阶段,设置了 2 种模式的 prompt,可以用来测试预训练、微调和直接偏好优化模型的差异。




