--- title: "【从零训练Steel-LLM】微调阶段优化" source: wechat url: https://mp.weixin.qq.com/s/-hG9PYxYvF1siCx2sakuPA ingest_date: 2026-07-04 vxc: 56 stars: 4 sha256: 7eecd84ba742870f557edce39bb2c26997e0c25ee6874e9bad429ae98d4903c7 --- # 【从零训练Steel-LLM】微调阶段优化 **来源**: 炼钢AI **发布日期**: 2025-01-28 **原文链接**: https://mp.weixin.qq.com/s/-hG9PYxYvF1siCx2sakuPA --- 前言 Steel-LLM是个人发起的从零预训练中文大模型项目。我们使用了1T token的数据预训练一个1B左右参数量的中文LLM。项目从开始到微调出第一版模型耗时了8个月。我们详细的分享了数据收集、数据处理、预训练框架选择、模型设计等全过程,并开源全部代码。历史文章: 【从零训练Steel-LLM】预训练数据收集与处理 【从零训练Steel-LLM】预训练代码讲解、改进与测试 【从零训练Steel-LLM】模型设计 【从零训练Steel-LLM】微调探索与评估 个人从零预训练1B LLM心路历程 这是从零训练Steel-LLM的第6篇文章,对微调环节做了进一步的探索,相比第一版微调模型,加入英文SFT数据,ceval从38分涨到了42分,cmmlu从33分涨到了36分,mmlu从23分涨到了30分。后续笔者会继续基于Steel-LLM进行更多的探索,如数学能力增强、强化学习、长思维推理等,欢迎关注。 github: https://github.com/zhanshijinwat/Steel-LLM 交流群:加 a1843450905,拉群 实验 Steel-LLM的预训练数据中只有20%的英文数据,定位是中文LLM,开始只计划测一下中文benchmark(ceval和cmmlu),因此第一版微调模型的SFT数据中并没有加入英文数据。此次探索的主要目的是增强一下模型的英文能力,但同时中文benchmark指标也有所提升。除了保留了之前用到的Infinity-Instruct(去除英文数据)、自我认知数据,ruozhibao、预训练数据集中的wanjuan-exam数据(共计340w条中文数据,详见第一版微调模型的文章),还引入了如下3个英文数据集: - Code-Feedback(6.6w条):代码SFT数据,数据来源于各种开源代码数据集以及leetcode,并进行了一系列的过滤和筛选。 - WebInstructSub(233w条):包含数学、物理、生物、化学、计算机等领域的SFT数据。 - OpenHermes-2.5(100w条):主要包含大模型合成的样本和聊天样本,基于Airoboros、ChatBot Arena、Evol Instruct 等开源数据进行筛选。 训练时global batch size=256,最大学习率=3e-5。实验3 看起来微调的step少一些,是因为使用的卡多,global batch size大一些,训练的数据量是差不多,大概训练了3-4epoch的数据。 1 全部中文数据+英文数据微调 使用全部的340w中文数据以及340w英文数据直接进行微调,ceval、cmmlu、mmlu的指标如下所示。相比于第一版微调模型(ceval:38分;cmmlu:33分),第二版微调模型按照1:1比例加入大量的英文数据至少是没让中文能力下降的,即使加入的英文数据有点多,预训练时的中文比例是4:1。 ceval cmmlu mmlu 2 仅使用英文数据微调 仅使用340w英文数据直接进行微调,mmlu和gsm8k(数学)的分数如下(因为没微调中文数据,没有测中文benchmark)。和实验1加入了大规模的中文数据相比,mmlu指标有略微下降(26.76->25.47)。 mmlu gsm8k 3 全部中文数据+随机抽取20%的英文数据 一种比较符合直觉的提高微调效果的方法是,微调时保持和预训练时一样的语言分布。因此对英文数据进行了20%的随机采样。和用实验1的全量中文+英文微调相比,中文指标进一步提升(ceval:39.21->40.43;cmmlu:33.2->35.86),且英文指标没有下降。但是和只用英文数据微调的实验2相比,数学指标有所下降(8%->5%),原因是 数学数据在整体数据中的占比降低 。《How Abilities in Large Language Models are Affected by Supervised》这篇论文表明,训练数据中数学数据量增多会不断增加模型的数学能力。 ceval cmmlu mmlu gsm8k 4 中文数据+抽取20%的英文数据+英文选择题 在微调的中文数据中,含有中文选择题,但是英文数据中没有额外引入英文选择题,因此尝试加入一些看看能不能提高作题效果。为了防止题目泄露带来的提升,笔者选择了增加和mmlu涉及领域不太相同的选择题数据: - OpenBookQA:逻辑推理和理解相关的选择题 - ai2_arc:小学水平科学问题(mmlu有的是高中/大学的科学问题) - LogiQA:逻辑推理相关的选择题 和实验3(未加入英文选择题)相比,mmlu有了一些提升(26.75->30.82),中文测试集合ceval、cmmlu数学测试集gsm8k提升不明显。 ceval cmmlu mmlu gsm8k 总结 通过以上实验,可有如下推论: 1.即使只测中文指标,sft时也需要按比例加入英文数据,一是为了防止和预训练阶段数据分布差异太大造成过多的遗忘,二是中文/英文知识之间能相互泛化。 - 小模型指令遵循能力相对较差,加入一些作题数据是有益的。 - 数学能力和相关数据量关系比较大。Steel-LLM目前数学能力比较差,下一步计划是增强其数据学能力。 和其他模型的对比: 祝大家新年快乐!