随着OpenAI GPT-3.5的公开发布,对大型模型的研究热潮已经持续了一年之久。在此期间,业界极其关注特定参数量(如7B、13B、72B)的模型能够存储多少知识、具备多大程度的通用语言处理能力。由于Seq2Seq任务天然的序列计算方式,尽管transformer相较于RNN机制已经大幅提高了计算效率,模型参数量与其能力的极限之间的对应关系仍直接影响了模型在实际生产环境中的性能与成本效益比。可以明确地指出,在众多大型模型竞争中诞生最终胜出者的过程中,对模型参数和能力极限的压缩是关键的竞争力之一。
自从OpenAI公开讨论了大型模型的涌现现象,并将研究范围扩展到7B+参数量的模型以来,关于其后续版本GPT-3.5-Turbo、GPT-4-preview的升级迭代技术信息尚未有更多公开信息,业界对于模型压缩的结论大多基于推测。然而,微软的Tiny系列模型、Phi系列模型及其相关论文《Textbooks Are All You Need》将“以数据为中心”的理念重新带回了研究的前沿,并激发了诸如Gemini-Nano、Qwen1.5、MiniCPM等一系列小型模型研究的显著成果。
Phi-1模型仅使用7B的token进行了7-8轮的训练,以1.3B的规模在HumanEval基准测试中超过了大多数7-13B参数量的模型,并与GPT-3.5持平,初步证明了在特定任务上,高质量的数据在较小的数据规模和计算量下可以超越大型模型的最先进水平(SOTA)。Phi-1.5和Phi-2在Phi-1成功的基础上,进一步在通用任务上利用大量合成数据进行训练,成功地在各类通用任务上超越了大型模型的SOTA。
合成数据在《Textbooks Are All You Need》系列论文中是一个关键要素。通过对大量真实代码数据的人工分析,研究者发现真实数据中存在代码模块缺失、无效代码较多、复杂算法代码缺乏说明文档等多种阻碍模型学习的问题。因此,他们认为一个简洁、自包含、有指导性且分布均衡的优质数据集,将使语言模型的学习效果更佳。然而,从真实数据中筛选高质量数据具有一定难度,并且筛选后的数据分布容易产生偏差,因此合成数据成为解决这一问题的关键技术。Phi-1的任务相对单一,数据合成过程较为简洁明了,而Phi-1.5与Phi-2在通用任务上如何构造大量数据,具体构造了哪些数据等细节尚未详细说明。
因此,我们有充分的理由相信,数据合成将成为LLM研究未来的重要方向和领域之一。与自然科学领域相比,后者的数据通常具有丰富的理论描述和引导,甚至在没有形成成熟理论的情况下,也存在大量来自真实世界的连续观测数据。语言作为一种人类创造的,而非自然界衍生的离散数据形式,既是多种模态数据的统一高维描述,又缺乏严格的规则性。不同国家、种族甚至个体对于语言的认知标准各不相同。在这一复杂的数据背景下,针对基于语言的任务目标,确定有效数据的合成方式、合成这些有效数据的方法以及评估合成数据有效性的标准,都是值得深入探讨的问题。这不仅是LLM研究领域未来发展的关键,也可能成为在竞争中脱颖而出的决定性因素。
针对合成数据及小参数模型在实际应用中的潜力,我们基于教育领域的应用场景以及现有的高质量数据资源,开展了初步的模型训练实验。通过多轮的数据合成和参数调整,我们开发了MiniMATH-1.5B-base模型。该模型的开发不仅验证了合成数据在提升LLM性能中的重要作用,也为未来进一步探索LLM能力提升和数据质量优化积累了宝贵的经验。
可以预见的是,随着LLM研究的不断深入,模型参数的优化、数据质量的提升以及合成数据技术的应用将成为研究的重点。在这一过程中,小模型的开发和优化不仅挑战了以大模型研究主导的现状,也为LLM的应用提供了更加灵活高效的方案。
MiniMATH-1.5B-base 是基于19B 精选的数学相关题目、文字、对话数据的预训练模型,在未经过SFT, DPO等流程,并且严格隔离了测试数据的前提下,在中文数学题目的逻辑推理上取得了较好的效果,且与对齐后的模型具有类似的对话、指令跟随能力。同时,模型训练过程中也未采用学习率调度等技术行为,仅使用了两阶段的batchsize调度及四阶段的数据配比调整,通过不同阶段的性能实验,验证了高质量、合理配比的数据对模型生成效果的重要性。
- 受限于模型规模和单纯的pretrain 训练方法,模型可能出现幻觉性问题和回声问题。
- 受限于数据规模,模型主要在中文的高质量内部题目上进行训练,因此英文题目的表现可能不佳。
- 受限于pretrain 训练方法,模型在多轮对话中的表现可能不佳。
- 受限于pretrain 训练方法,模型回复内容偏向于冗长,同时由于规模的限制,幻觉性问题可能进一步加重。
模型 | Non-Emb Params | C-Eval | CMMLU | MMLU | GSM8K | MATH | MATH23K | 数学均分 | training-token |
---|---|---|---|---|---|---|---|---|---|
TinyLlama-1.1B | 1.1B | 25.02 | 24.03 | 24.3 | 2.27 | 0.74 | - | 1.5 | ~1T |
Qwen1.5-1.8B | 1.2B | 59.7 | 57.8 | 46.8 | 38.4 | 10.1 | 58.3 | 35.6 | - |
Gemini Nano-3B | - | - | - | - | 22.8(report) | - | - | - | - |
StableLM-Zephyr-3B | 2.7B | 30.34 | 30.89 | 45.9 | 52.54 | 12.49 | 37.68 | 32.5 | - |
Phi-1.5 | - | - | - | 42.87 | 40.2 | - | - | - | 150B |
Phi-2-2B | 2.5B | 23.37 | 24.18 | 52.66 | 57.16 | 3.5 | 43.39 | 30.35 | 1.4T |
MiniCPM-2B | 2.4B | 51.13 | 51.07 | 53.46 | 53.83 | 10.24 | 67.5 | 43.83 | ~1T |
GPT-3.5-Turbo | - | - | - | 70.0 | 80.8 | 34.1 | 75.7 | 63.46 | - |
GPT-4 | - | - | - | 86.4 | 92.0 | 52.9 | 87.5 | 77.46 | - |
MiniMATH-1.5B | 1.2B | 41.64 | 42.70 | 29.13 | 43.34 | 14.5 | 60.04 | 39.29 | 58B |
*token数为训练所使用总的token数
*MiniMATH训练过程中使用的epoch分不同的四个阶段
MiniMATH的词表沿用了qwen-72B系列的词表,该系列的词表在openai的cl100k_base的基础上扩表得到,词表大小为150k,openai 词表使用titoken分词算法,相对于原始BPE,有着更快的分词速度。
MiniMATH训练过程中,我们固定学习率为2e-4,并且将数据分为四个不同阶段,数据配比在每个阶段从通用文本向专业文本渐进调整,在保留模型通用能力基础上尽可能注入专业知识,同时通用文本训练能够帮助模型在专业任务上快速收敛,此外,embedding输入输出层的参数量相对于小模型占比较大,为了进一步提高模型的有效参数量,我们对输入输出层的权重进行了共享,这也与业界先进的做法一致。
根据GPT-2论文中的建议,我们对残差连接的线性投影层使用了均值为0, 标准差为
MiniMATH 训练共使用了去重的token 19.24B , 将数据分为四个不同的阶段,每个阶段有各自不同的配比,以期在数学相关的下游任务上获得最佳效果。
-
第一阶段中我们主要使用了来自几个高质量开源数据集的文本数据,总token数为9.2B,进行了1个epoch的训练。英文数据主要来自phi系列工作的tiny_strange_text_book, 中文数据主要来自wanjuan-1.0的中文 News 部分。
-
基本阶段的训练中,我们取学习率为常数2e-4, batch_size 为163,840, 这一步取较小的batch_size, 是因为我们将第一阶段视为某种权重初始化流程,小的batch_size 能够为第一阶段的权重带来更多变化,以更好地适应后续阶段的任务。
第一阶段的loss变化曲线如下,可以看到 loss 仅在在10k步附近就快速收敛到2.4左右,主要原因是训练的总token数较少,且数据分布一定程度上是十分接近的,这也是我们的第一阶段仅训练了一个epoch的主要原因。
-
第二阶段中,我们全量保留了第一阶段的数据,紧接着从mathpile,wikipedia中清洗了部分与数学相关的高质量文本共0.899B, 累积10.12B数据,进行了1个epoch的训练。
-
第二阶段的训练参数与第一阶段完全相同,loss变化如下图所示,数据切换到第二阶段后,loss 未见明显变化,经过二阶段的训练,loss缓慢降至2.0附近。
-
第三阶段中,我们在保留了一定stage-1 和 stage-2 阶段数据的基础上,引入了大量的数学相关题目数据3.45B, 共计4.82B, 包括公开的math23k, ape210k,以及私有高质量题目数据,对于绝大部分开源数据,我们构造了COT解题过程,进一步加强了小模型的长逻辑推理能力,这一阶段进行了1个epoch的训练
-
这一阶段中,为了能在题目数据上获得更小的loss,参考phi系列工作和MiniCPM系列工作,我们将batchsize扩大了10倍,取1.63M的batchsize,其余的训练参数保持一致,同时对扩大前、扩大后的loss以及在实际下游任务上的准确率进行了对比。
训练stage 从stage-2 至 stage-3切换过程中,loss从2.0附附近突变至1.5附近,经过2个epoch训练后,最终收敛至1.2附近。说明经过前两个阶段的权重调整,模型非常快速地适应了下游任务,这一阶段的batchsize 的调整中,并未看到loss有较为明显的差异变化。
为了评估在具体下游任务上的效果,我在math23k-test上评估了不同batchsize 反映在解题准确率上的变化,最终观察到,batch_size的改变整体带来了约1.3个百分点的准确率提升,因此我们在下一个阶段的训练中继续沿用1.63M的batch_size
模型 数据集 分数 MiniMATH_BS_163K-epoch-2 matk23k-test-1k 25.6 MiniMATH_BS_1.63M-epoch-2 matk23k-test-1k 26.9
-
第四阶段中,同样仅保留了一部分来自stage-1 和 stage-2 的数据和全部stage-3的数据,同时引入了一大批基本数学运算的数据,包括简单的加减乘除和简单的一元一次方程解答过程,以及来源于MNBVC项目的基本数学问答数据和数学COT数据6.48B,共计11.3B , 这一阶段进行了2个epoch的训练
-
第四阶段与第三阶段的训练参数完全相同,batchsize为1.63M,learning rate 为 2e-4。这一阶段的训练中,loss变化较为缓慢,从初始的1.25附近缓慢降低至1.13附近。
这一阶段加入的basic math 数据对解题准确率的提高有着至关重要的作用,加入basic math 数据并进行了2个epoch的训练后,MiniMATH 在matk23k-test-1k数据上的解题准确率达到了60.04, 提升了33.14个百分点,同时在C-Eval和CMMLU两个通用能力评估数据上分别达到了41.64 和 42.7的分数。
模型 数据集 分数 MiniMATH_BS_1.63M-epoch-5 matk23k-test-1k 60.04 MiniMATH_BS_1.63M-epoch-5 C-Eval 41.64 MiniMATH_BS_1.63M-epoch-5 CMMLU 42.7
问题 | 回答 |
---|---|
教师节那天,6(1)班42人中,有(1/3)的同学提前到教室布置教室,而参加给老师制作贺卡的同学是布置教室同学的(8/7)倍,有多少名同学参加了制作贺卡? | 先求出布置教室同学的几分之几,再乘以8/7就是参加制作贺卡的同学有多少人。答案是:解:42×(1/3)×8/7=16(人) |
一艘轮船以45千米/时的速度从甲港驶往乙港,6小时后到达.这艘轮船从乙港返回甲港时少用了1个小时,返回时的速度=? | 设返回时的速度为x千米/小时,则根据题意可得:甲港到乙港距离 = 45 × 6 = 270 千米,返回时的时间 = 6 - 1 = 5 小时,根据速度、时间和距离的关系,可以列出方程: x × 5 = 270,解方程可得:x = 270 ÷ 5 = 54,因此,这艘轮船返回时的速度为54千米/小时。 |
一个钢厂今年计划产钢80000吨,比去年增产(1/4).去年产钢多少吨? | 本题主要考查一元一次方程的应用.根据题意,设去年产钢x吨,则今年产量为x(1+1/4)=5/4x吨,再根据今年产量为80000吨,列方程求解即可.设去年产钢x吨,则今年产量为x(1+1/4)=5/4x吨,根据题意得:5/4x=80000,解得:x=64000.答:去年产钢64000吨. |
问题 | 回答 |
---|---|
什么是等差数列? | 等差数列是一组数列,其中相邻两项之间的差(或差值)相等。用数学符号表示就是 a_n = a_{n-1} + d,其中 a_n 是第 n 项, a_{n-1} 是前一项,而 d 是公差。 |
加法有什么特点? | 加法有一些特点。首先,加法满足交换律,即a + b = b + a。其次,加法满足结合律,即(a + b) + c = a + (b + c)。此外,加法满足交换律和结合律,即a + b = b + a,a + c = b + c。 |
什么是一元一次方程? | 一元一次方程是只含有一个未知数且未知数的最高次数为1次的整式方程,一般形式是 ax + b = 0,其中a和b是已知数,x是未知数。解这样的方程,我们可以得到x的值。 |
问题 | 回答 |
---|---|
帮我出3道概率题 | 好的,以下是3道概率题:1. 一枚硬币被抛掷10次,出现正面朝上的概率是多少?2. 从一副扑克牌中抽出一张牌,这张牌是红桃的概率是多少?3. 从1到100的整数中,能被11整除的数有多少个? |
帮我出几个一元一次方程 | 好的,以下是10个一元一次方程问题: 1. 2x - 5 = 3 2. 4x + 5 = 21 3. 3x - 8 = 1 4. 6x - 10 = 2 5. 5x - 7 = 13 6. 2x + 3 = 9 7. 4x - 6 = 10 8. 5x - 12 = 0 9. 3x + 5 = 14 10. 4x - 7 = 11 |
问题 | 回答 |
---|---|
第一位登上月球的人类宇航员是谁? | 第一位登月的人是尼尔·阿姆斯特朗(Neil Armstrong)。 |
地球上最大的哺乳动物是什么? | 当谈论地球上的最大动物时,人们可能会想到蓝鲸。蓝鲸有时被描述为“完全无畏的巨人”,但在它们的外表下,它们其实非常温和。蓝鲸通常有30至40英尺(9至11米)长,5至7英尺(1.5至2米)高,体重可达到200吨以上(450,000磅)。在世界各地,蓝鲸经常出现在人们的视线中,因为它们被认为是和平和友好的动物。 |
你能告诉我中国的国宝(动物)是什么吗? | 当然可以。中国的国宝有很多,其中比较著名的有大熊猫、金丝猴、白鳍豚、长臂猿、大猩猩、藏羚羊、绿孔雀等等。它们都属于动物界,并且在各自的领域里都有很高的科研和文化价值。 |
值得注意的是,我们仅通过预训练的流程,且训练总数据仅为 58B token的前提下,在多维度模型能力评估中取得了可观的成绩,在数学能力上超过了所有同级别的模型,虽然在通用能力上相较于目前业界最先进的小尺度模型仍有一定差距,但我们相信随着我们在行业专有数据上的进一步积累,我们的小模型将在教育领域的实际场景应用中具有相当的竞争力。 基于以上的初步实验结果和对未来的预期,我们将从以下几个方面继续改进我们的模型能力:
- 继续进行高质量专有数据的积累工作,数据总token 数达到100B 以上,其中教育相关的题目token 数量不小于 30%。
- 对模型结构进行进一步改进,包括但不限于在小模型上重构高效的MoE结构、更高效地在小模型中组合verifier模型以及不断在模型中引入业界最先进的架构等。