这是用户在 2024-6-28 8:35 为 https://shengdinghu.notion.site/MiniCPM-Unveiling-the-Potential-of-End-side-Large-Language-Models-d4... 保存的双语快照页面,由 沉浸式翻译 提供双语支持。了解如何保存?
MiniCPM: Unveiling the Potential of End-side Large Language Models
Built with


迷你 CPM:揭示端侧大语言模型的潜力

ALT
Authors: Shengding Hu, Yuge Tu, Xu Han*, Ganqu Cui, Chaoqun He, Weilin Zhao, Xiang Long, Zhi Zheng, Yewei Fang, Kaihuo Zhang, Yuxiang Huang, Zhenning Dai, Baitao Gong, Chongyi Wang, Yuan Yao, Jie Zhou, Jie Cai, Xinrong Zhang, Zhongwu Zhai, Ning Ding, Chao Jia, Guoyang Zeng, Dahai Li, Zhiyuan Liu*, Maosong Sun
Affiliation: Modelbest Inc., THUNLP

 I. 引言


MiniCPM 是一个系列的边缘侧大型语言模型,其中基础模型 MiniCPM-2B 具有 2.4B 非嵌入参数。它在全面基准测试中与 Mistral-7B 表现相当(在中文、数学和编程能力方面表现更好),超越了像 Llama2-13B、MPT-30B 和 Falcon-40B 这样的模型。在 MTBench 基准测试中,这比用户体验更接近的 MiniCPM-2B 也优于许多代表性的开源模型,如 Llama2-70B-Chat、Vicuna-33B、Mistral-7B-Instruct-v0.1 和 Zephyr-7B-alpha。

我们将完全开源 MiniCPM-2B 的模型参数,供学术研究和有限商业用途使用,以及训练过程中所有检查点和大部分非专有数据。

目前,我们开源以下模型:

MiniCPM-2B-SFT/DPO:根据 MiniCPM-2B 的指令进行调优和人类偏好的一致性。

MiniCPM-V:基于 MiniCPM-2B 的多模态模型,其参数水平超越了基于 Phi-2 的多模态模型。

MiniCPM-2B-SFT/DPO-Int4: MiniCPM-2B-SFT/DPO 的量化版本。

基于 MLC-LLM、LLMFarm 开发的 MiniCPM 移动应用程序,支持手机设备上的文本和多模态模型推理。

模型的总体性能:
 平均值

平均分(包括代码和数学推理)
 中国平均值
Llama2-7B
35.40
36.21
31.77
Qwen-7B
49.46
47.19
59.66
Deepseek-7B
39.96
39.15
43.64
Mistral-7B
48.97
49.96
44.54
Llama2-13B
41.48
42.44
37.19
MPT-30B
38.17
39.82
30.72
Falcon-40B
43.62
44.21
40.93
MiniCPM-2B
52.33
52.60
51.10
 限制条件:

由于模型大小的限制,它可能会出现幻觉问题,特别是由 DPO 模型生成的更长和更复杂的响应。我们将继续迭代和改进 MiniCPM 模型。

为了确保模型的通用性用于学术研究目的,我们没有对其特定的身份进行训练。此外,由于我们使用了作为训练数据的公开可用的 ShareGPT 语料库,该模型可能生成与 GPT 系列模型相关的身份相关信息。

由于模型大小的限制,它的输出在很大程度上受到提示的影响,可能在多次尝试后导致结果不一致。

由于模型能力的限制,模型的知识检索准确率有所限制。我们计划在将来采用 RAG 方法增强模型的知识保留能力。


二. 模型风洞实验


大型模型的实验成本较高,没有配置调优很难达到最佳性能。

利用优秀的先前工作如µP,我们提出通过可转移配置来获得大型模型最佳训练方法的方法,即在小型模型上进行广泛实验。MiniCPM 本身就是模型风洞实验的结果。

我们开展了五个方面的模型风洞实验:超参数、批量大小、学习率、学习率调度器和数据策略。


1. 使用稳定超参数的模型扩展


超参数对模型的表现有重大影响。对于传统训练中的每个模型调整超参数的行为是不可行的。从 μP\mu P 的方法中汲取灵感,我们对模型中的各种参数模块之间的连接权重以及模型的初始化进行了调整,其中一些调整类似于 Cerebras-GPT。

总体而言,该方法如下:
Name
Specific Operation
Embedding Output Scaling
Multiply the output of the embedding by 12
Residual Connection Scaling
Scale the increment at each residual connection in each layer by 1.4/sqrt(num_layers) = 1.4/sqrt(40)
Initialization of Tensors
Set the initialization standard deviation of each two-dimensional tensor parameter to 0.1/sqrt(dim_model/256) = 1/30, and set other parameters' initialization to 0.1
Learning Rate Scaling of Tensors
Adjust the learning rate of each two-dimensional tensor parameter to 1/(dim_model/256) = 1/9 times the learning rate of other parts (or the overall learning rate)
lm_head Scaling
Adjust the output logits to 1/(dim_model/256) = 1/9 times the original value
1

上述操作的详细参数是在一个规模约为 0.009B 的模型上通过约 400 次贝叶斯参数搜索获得的。

 2. 最优批量大小


批量大小决定了模型收敛速度和计算资源消耗之间的平衡。如果批量大小过大,将导致一定损失下大量的数据和计算成本。另一方面,如果批量大小过小,需要大量的训练步骤,可能限制了损失函数的减少。在 2020 年 OpenAI 的开创性工作中,他们研究了损失函数与 token 数量之间的关系。在他们的实验中,他们假设消耗更多的步骤相当于消耗更多的时间。在这样的假设下,OpenAI 定义了一个关键的批量大小,可以在一定损失的情况下不消耗过多的步骤或 token。然而,我们观察到,在当前计算资源主要使用 A100 GPU 的情况下,计算速度(而不是内存)往往是瓶颈。 这意味着几乎增加 batchsize 两倍,即使使用相同数量的机器,也几乎等于增加单步操作的时间。鉴于这一观察结果,我们已经放弃了“不要消耗太多步骤”的目标,转而追求减少 token 数量以实现最低损失的目标。

我们分别在 0.009B、0.03B 和 0.17B 的模型上进行了 6 个批次大小的训练实验,并记录了实验结果如图所示。我们在 C4 数据集上观察了损失偏移与最佳批次大小之间的趋势(红色线在图中)。
ALT
ALT
connecting the above red lines (after log scale) and fitting
ALT

通过连接和拟合上述三个图表中的红色线段,我们获得了以下 Batchze 和 C4 损失之间的关系: Batchze = 0.15C4 Loss
BS=1.2110×109L6.2393BS = \frac{1.2110 \times 10^9}{L^{6.2393}}

根据这个模式,我们估计对于 2B 模型来说,损失率达到约 2.5 的 C4 水平,使用 batch size 为 4M 是合适的。

 3. 最优学习率


由于我们使用了稳定化超参数的参数化方案,我们预计模型中的关键超参数——学习率——随着模型规模的扩展不会发生显著变化。因此,我们在 0.04B、0.1B、0.3B 和 0.5B 四个规模上进行了六次学习率实验。我们发现尽管模型规模增加了十倍,但最优学习率并没有显著变化,仍然保持在 0.01 左右。我们进一步在 2.1B 的尺度上进行了简单的验证,确认了学习率 0.01 确实可以实现最低的损失。
ALT


4. 最优学习率调度器(WSD 调度器)


学习率调度器,它调整不同训练阶段使用的学习率,对于模型性能至关重要。当前常用的学习率策略是余弦 annealing,它在达到峰值后逐渐降低学习率,遵循 Warmup 阶段。几乎所有的大型模型都使用 Cosine Learning Rate Scheduler(缩写为 Cosine LRS)。
In order to investigate why the Cosine Scheduler performs exceptionally well, we conducted many experiments. We trained a 0.036B model with different Learning Rate Scheduler cutoff steps TT. The results are shown in the following figure:
ALT

从图中可以看出,对于训练到 SS 步数的模型,设置余弦 LR 的截断步数 TTSS 总是可以达到最佳性能,而将其设置为更多的或 fewer 步数并不能获得最佳结果。

在考虑连续训练的场景时,使用余弦调度器时会遇到更多的问题。如果我们继续在余弦衰减的截断步骤后使用 0.1 倍的最大学习率,那么继续训练期间的收敛性非常缓慢。如果我们将余弦学习率在余弦衰减的截断步骤后重新启动(即再次从最大学习率下降或逐渐增加到最大学习率然后再次下降),我们将发现损失经历了一个长期的增加期,期间模型处于不可用的状态。

我们推测,在给定一定数量的步骤时,余弦 LRS 表现非常出色有以下两个原因:

与线性学习率、Noam 学习率和 T<S>时的余弦学习率相比,当 T=S 时的余弦学习率具有更长的高学习率训练期,这可能会帮助模型找到更好的全局最优解。

与 T>S 的余弦学习率衰减相比,T=S 的余弦学习率衰减在学习率降低方面具有更全面的退火阶段。这个阶段可能涉及独特的动态现象,使模型能够找到更好的局部极值。

将这两个点结合起来,我们提出了一种新的学习率调度策略,即温热-稳定衰减(WSD)调度器。这个学习率调度器由三个阶段组成:温热阶段(表示为 W,代表温热阶段末尾的步骤数或训练量)、稳定训练阶段(表示为 S,代表稳定训练阶段末尾的步骤数或训练量)和衰减阶段(表示为 D,代表衰减阶段中的训练迭代次数)。这个调度器可以表示为:
lr(s)={sWη,s<Wη,W<s<Sf(sS)η,S<s<S+Dlr(s)=\begin{cases}\frac{s}{W}*\eta, s< W\\\eta, W<s<S\\f(s-S)*\eta, S<s<S+D\end{cases}

其中, 0<f(sS)10< f(s-S)\leq 1 是关于 ss 的递减函数, η\eta 是最大学习率。该策略具有以下四个优点:

可以持续训练。

随时可以取出。

它优于余弦 LR。

有明确区分的训练阶段,这有助于使用不同的数据策略。

WSD 和余弦 LR 的图像比较如下:
ALT

图显示了余弦学习率调度器 CosineWSD(W, S, D)和余弦的学习率调度器 Cosine 之间的比较。可以观察到,在 Cosine 调度器结束后,需要持续保持最小的学习率以确保损失不会增加。另一方面,WSD 调度器可以从之前的退火开始训练,经过更长的训练期,然后开始退火。
ALT

我们发现正如我们所预期的那样,在衰减阶段(退火阶段),随着学习率的降低,损失函数经历了显著而迅速的下降,并且很快降至与步骤 T=S 对应的余弦学习率 Cosine LRS 相等或更低。同时,我们可以在衰减之前重新使用模型并以高学习率继续训练。在更多步骤 S'之后,我们可以然后执行退火以实现与步骤 T'=S'对应的相同效果。
ALT

图表:图中底部的橙色线表示余弦线性速率(Cosine LRS),而上方的绿色线表示向量平均距离(WSD)线性速率。尽管在恒定学习率的稳定阶段,WSD 线性速率的表现不如余弦速率好,但在冷却阶段,它在冷却期间表现出快速下降的趋势,最终达到或超过余弦线性速率。我们在不同的冷却步长上进行了不同的尝试,例如 WSD(N,80N,2N)的冷却比率为 2/80=2.5%,而 WSD(N,80,N,8N)的冷却比率为 8/80=10%。我们发现,在我们测试的四个训练阶段(20N、40N、60N、80N)中,2.5%的冷却长度不足以实现最佳性能。然而,10%的冷却长度足以达到甚至超过余弦线性速率。
ALT

我们研究了衰减阶段的训练步骤要求。我们发现,在所有训练长度中,具有衰减率为总步数的 10%的训练是实现最佳结果的充分条件,而衰减率为 2.5%则不足。因此,最终我们确定衰减步骤数为最后 10%。
ALT

在图表中,粉色线表示一个 0.17B 模型,绿色线(系列)表示使用 WSD 训练的 0.036B 模型,黄色线表示使用余弦调度训练的 0.036B 模型,其中余弦周期在模型参数量为 80 倍时设置。可以观察到退火终点线大致可以进行外推以大致与 0.17B 模型的退火终点线对齐(参见本节第六部分以获取详细信息)。
ALT

 批次大小调度


在训练过程中增加批量大小。基于上述结果,不难猜测使用更大的批量大小可能会实现更低的损失。我们在 0.036B 和 2.4B 的批量大小实验中观察到了类似的效应(我们假设增加批量大小和降低学习率可能会产生相似的动态效应)。如图所示,在我们增加批量大小后,当增加批量大小时,损失下降了约 0.2,后续退火阶段仍然产生了类似的下降效果。然而,不幸的是,在我们的正式实验中,我们在增加批量大小后,退火阶段的损失减少效果有所减弱。因此,最终我们没有采用增加批量大小的训练方法。这个问题需要进一步的研究。
ALT

0.036B 模型在增加批量大小后损失函数出现了下降趋势。
ALT


6. 一个固定大小模型的连续训练可以达到 大模型的次数?


由于我们的 WSD 学习率优化器可以在任何阶段 anneal,并在那个阶段获得模型的最佳性能,我们有机会探索在最佳情况下连续训练大小为 N 的模型,它能够超越 Chichilla 最优模型的最大参数大小是多少。

首先,我们估计了模型在连续训练期间计算能力的变化对其性能的影响。由于模型功能形式的不确定性,我们尝试了两种拟合公式:1)指数型: L(C)=αeβC+L0L(C) = \alpha e^{-\beta C} + L_0 和 2)幂律型: L(C)=βCα+L0L(C) = \beta C^{-\alpha} + L_0 。两种拟合函数的结果如下:
ALT

我们相信幂律形式更适合。通过拟合,我们获得了持续训练的模型,参数数量为 0.036B,理论上可以达到 C4 损失为 3.27。为了直观地估计和理解在可接受的训练时间内,0.036B 模型对 Chinchilla Optimal 模型的影响,我们还训练了一个配置最佳的 0.17B 模型。该 0.17B 模型在 Chinchilla Optimal 数据上训练了两次,计算成本为 6.6×10186.6\times 10^{18} FLOPs。在这种计算成本下,0.036B 模型的 C4 损失为 3.37,接近 0.17B 模型的损失值 3.34。因此,我们认为使用我们的 WSD 调度器训练的模型可以以相同计算量消耗实现大约 5 倍的参数数量。此外,随着训练的继续,它可能会超越更大的 Chinchilla-optimal 模型。

我们在 MiniCPM 上验证了这一点。我们使用相同的训练数据配方,分别训练了 0.04B、0.1B、0.2B、0.5B、0.8B 和 1.2B 的小型模型,直到达到它们的丘吉尔最优数据量。所获得的缩放图表如图所示。根据这个图表,我们可以预测在 Chinchilla Optimal 状态下具有 9B 模型的最终 C4 损失约为 2.40,而对于具有 7B 模型,则约为 2.45。MiniCPM 上的最终 C4 损失为 2.41,接近 9B 的 Chinchilla Optimal 模型。
ALT
Model Size
Loss (* represents estimated values)
1.2B
2.89
2.4B
2.70*
7B
2.45*
9B
2.40*
13B
2.32*
MiniCPM
2.41


7. 适应连续训练的数据策略


由于 WSD LRS 模型的退火阶段存在显著的损失函数减小,我们推测在该阶段引入高质量数据具有以下两个优点:

与在 SFT 期间添加高质量数据相比,引入在冷却期的数据可以提供更深入的模型学习。

与在预训练初期添加高质量数据相比,它更适合使用少量数据进行训练。否则,在没有确定的训练步骤数量的持续预训练过程中,小数据会被重复多次,产生负面影响。

基于这两个推测,我们提出以下建议:在预训练阶段,仅使用通用、大规模预训练粗质量数据,在冷却阶段,使用广泛和高质量的知识和能力数据,同时混合 SFT 高质量数据,以供冷却阶段使用。

为了验证与直接 SFT 相比,我们方法的优势,我们从中间检查点开始进行了两个实验组。

实验 A:仅使用预训练数据进行退火,然后进行 4B 令牌的自由生成式训练。

实验 B:使用上述高质量数据和混合到预训练数据中的 SFT 数据进行 Annealing,同时使用 4B token 进行 SFT。

两个实验的结果如下:
CEval
CMMLU
MMLU
GSM8K
Math
HumanEval
MBPP
Experiment A
40.0
41.5
44.6
27.7
5.1
27.7
24.4
Experiment B
52.6
51.1
50.9
42.3
5.4
30.4
30.3

结果表明,在 Annealing 过程的早期引入高质量数据所带来的好处远远高于在 SFT 阶段后期添加它。因此,我们建议模型能力的专业化和增强应该从 Annealing 阶段开始。

 第三部分:词汇


迷你 CPM 作为一种多用途模型,在英语、汉语、古典汉语、代码、表情符号等语言方面都具有能力。因此,词汇量相对较大,包含 122,753 个词条。这些词汇是从广泛的和多样的语言数据中构建的,利用句段分隔编码(BPE)库,包含特殊符号如汉字、罕见字符、表情符号、希腊字母、俄罗斯字母等。

在对包含 30 万非训练文档的中文、英语、代码和学术论文进行评估时,MiniCPM 分词器的压缩比(字节/token)最高。
Compression Ratio (Bytes/Tokens)
Baichuan2
ChatGLM2
Llama2
MiniCPM
Size
125696
64794
32000
122753
Chinese
3.61
3.51
1.87
3.70
English
4.02
3.93
3.7
4.05
Code
2.75
2.76
2.79
2.85
Paper
2.74
2.88
2.97
2.93
Average
3.28
3.27
2.83
3.38


共享输入-输出层


词汇表的大小主要决定了模型覆盖范围的广度,而不是模型自身的固有能力。对于大型模型参数规模,单词嵌入参数可能微不足道,但在较小的模型中不能忽视。因此,我们已经实施了“绑定词嵌入”方法以进一步减少参数数量。这涉及在输出层和输入层之间共享参数。在初步实验中,我们观察到这种方法几乎不会牺牲性能。在使用绑定词嵌入的情况下,MiniCPM 模型的单词嵌入参数数量约为 2304×1227530.28B2304 \times 122753 \sim 0.28B


四. 两阶段预训练

 稳定训练阶段


我们利用了 1TB 的去重数据,其中大部分数据来源于公开数据集,如以下图表所示。
ALT

我们使用了在模型风洞实验中发现的最佳配置,即 WSD LRS,批次大小为 3,930,000,最大学习率为 0.01。

 冷却期


我们的 SFT 数据分布如下:
ALT

在我们的最终两个阶段预训练过程中,以下图所示的 C4 损失函数的变异情况。在 263 万步(约 1 万亿数据点)时开始降温。降温过程同时表现出损失函数的急剧下降。此外,各种任务数据和 SFT 数据的损失都有显著降低。

对于 WSD 调度器的特定退火形式,我们采用了指数退火,即 f(sS=η×0.5(sS)/Tf(s-S)= \eta \times 0.5^{(s-S)/T} 。
ALT
Throughout the entire training process, the loss on the C4 training set can serve as the validation set loss because the data is non-repetitive.
ALT

 V. 对齐


在上述过程中获得基础模型的基础上,我们进行了对齐。尽管在冷却阶段期间已经整合了 SFT 数据,但我们发现有必要进行单独的 SFT 阶段。换句话说, annealing 和 SFT 阶段都是必不可少的。我们使用了类似于冷却阶段的数据(但排除了预训练数据),并在约 600 亿个 token 上进行了 SFT 训练。SFT 的学习率与冷却期的最后设置保持一致,设置为 1e-3,并且还采用了 WSD 调度器。

在 SFT 后,我们使用 DPO 对模型的人类偏好进行进一步的校准。在这个阶段,UltraFeedback 作为主要的对齐数据,内部偏好数据被构造出来以增强模型的代码和数学能力。我们使用学习率 1e-5 进行了一轮 DPO 训练,并使用余弦调度器。对于 DPO 的详细信息和数据设置,请参阅我们的 UltraFeedback 纸质版。


VI. 综合评估

 基准测试


1.1 SFT 模型:MiniCPM-sft


整体评估使用我们的开源工具 UltraEval。UltraEval 是一个用于评估模型基础能力的开源框架。它提供了一个轻量级和用户友好的评估系统,支持主流大型模型的性能评估,并满足模型训练团队的快速评估需求。底层推理和加速使用开源框架 vLLM,数据选择包括常用的权威数据集,如:
 使用 MMLU 的英文翻译为:English, using MMLU

中文,利用 CMMLU 和 C-Eval

代码,采用 HumanEval 和 MBPP 技术

数学,包括 GSM8K 和 MATH

问答,涵盖 HellaSwag、ARC-E、ARC-C
 逻辑,利用 BBH

由于大型模型标准化评估的困难以及许多评估缺乏公开可用的提示和测试代码,我们努力将评估方法适应各种模型类型。总体而言,在测试期间我们使用标准化的输入提示,并根据每个模型适当的模板进行调整。我们的评估脚本和提示也在我们的仓库中开源,并欢迎开发人员不断改进我们的评估方法。

总体评估结果如下。在所列数据集中,MiniCPM 在英语上的表现与 Mistral-7B-v0.1 相似,但在汉语上显著超过了 Mistral-7B-v0.1。

具体评估结果如下:

与大规模模型相比: 超越或达到与规模为 7B 的大多数模型相当的水平,并且在某些情况下超越了规模为 10B 或更高的模型。
Model
Average
English Average (including code and mathematical reasoning)
Chinese Average
CEval
CMMLU
MMLU
HumanEval
MBPP
GSM8K
MATH
BBH
Arc-e
ARC-c
HellaSwag
Llama2-7B
35.40
36.21
31.77
32.42
31.11
44.32
12.2
27.17
13.57
1.8
33.23
75.25
42.75
75.62*
Qwen-7B
49.46
47.19
59.66
58.96
60.35
57.65
17.07
42.15
41.24
5.34
37.75
83.42
64.76
75.32*
Deepseek-7B
39.96
39.15
43.64
42.82
44.45
47.82
20.12
41.45
15.85
1.53
33.38
74.58*
42.15*
75.45*
Mistral-7B
48.97
49.96
44.54
46.12
42.96
62.69
27.44
45.2
33.13
5.0
41.06
83.92
70.73
80.43*
Llama2-13B
41.48
42.44
37.19
37.32
37.06
54.71
17.07
32.55
21.15
2.25
37.92
78.87*
58.19
79.23*
MPT-30B
38.17
39.82
30.72
29.34
32.09
46.56
21.95
35.36
10.31
1.56
38.22
78.66*
46.08*
79.72*
Falcon-40B
43.62
44.21
40.93
40.29
41.57
53.53
24.39
36.53
22.44
1.92
36.24
81.94*
57.68
83.26*
MiniCPM-2B
52.33
52.6
51.1
51.13
51.07
53.46
50.00
47.31
53.83
10.24
36.87
85.44
68.00
68.25

与小模型相比:在所有测试集上均优于所有可用模型,除了某些英语评估数据集外。
Model
Average
English Average (including code and mathematical reasoning)
Chinese Average
CEval
CMMLU
MMLU
HumanEval
MBPP
GSM8K
MATH
BBH
Arc-e
ARC-c
HellaSwag
TinyLlama-1.1B
25.36
25.55
24.53
25.02
24.03
24.3
6.71
19.91
2.27
0.74
28.78
60.77*
28.15*
58.33*
Qwen-1.8B
34.72
31.87
47.57
49.81
45.32
43.37
7.93
17.8
19.26
2.42
29.07
63.97*
43.69
59.28*
Gemini Nano-3B
-
-
-
-
-
-
-
27.2(report)
22.8(report)
-
42.4(report)
-
-
-
StableLM-Zephyr-3B
43.46
46.32
30.62
30.34
30.89
45.9
35.37
31.85
52.54
12.12
37.68
73.78
55.38
71.87*
Phi-2(2B)
48.84
54.42
23.78
23.37
24.18
52.66
47.56
55.04
57.16
3.5
43.39
86.11
71.25
73.07*
MiniCPM-2B
52.33
52.6
51.1
51.13
51.07
53.46
50.00
47.31
53.83
10.24
36.87
85.44
68.00
68.25

与 Chat 模型的比较:
Model
Average
English Average (including code and mathematical reasoning)
Chinese Average
CEval
CMMLU
MMLU
HumanEval
MBPP
GSM8K
MATH
BBH
Arc-e
ARC-c
HellaSwag
ChatGLM2-6B
37.98
35.17
50.63
52.05
49.21
45.77
10.37
9.38
22.74
5.96
32.6
74.45
56.82
58.48*
Mistral-7B-Instruct-v0.1
44.36
45.89
37.51
38.06
36.96
53.56
29.27
39.34
28.73
3.48
39.52
81.61
63.99
73.47*
Mistral-7B-Instruct-v0.2
50.91
52.83
42.24
42.55
41.92
60.51
36.59
48.95
40.49
4.95
39.81
86.28
73.38
84.55*
Qwen-7B-Chat
44.93
42.05
57.9
58.57
57.23
56.03
15.85
40.52
42.23
8.3
37.34
64.44*
39.25*
74.52*
Yi-6B-Chat
50.46
45.89
71
70.88
71.11
62.95
14.02
28.34
36.54
3.88
37.43
84.89
70.39
74.6*
Baichuan2-7B-Chat
44.68
42.74
53.39
53.28
53.5
53
21.34
32.32
25.25
6.32
37.46
79.63
60.15
69.23*
Deepseek-7B-chat
49.34
49.56
48.34
46.95
49.72
51.67
40.85
48.48
48.52
4.26
35.7
76.85
63.05
76.68*
Llama2-7B-Chat
38.16
39.17
33.59
34.54
32.64
47.64
14.02
27.4
21.15
2.08
35.54
74.28
54.78
75.65*
MiniCPM-2B
52.33
52.6
51.1
51.13
51.07
53.46
50.00
47.31
53.83
10.24
36.87
85.44
68.00
68.25
Note:

在评估 MiniCPM 时,使用的模型推理版本为 vllm=0.2.2。这是我们在两个月前 fork 的稳定版本。我们计划不久后与官方 vllm 团队沟通,将推理代码添加到官方 vllm 仓库中。另一方面,Mistral-7B-v0.1 使用最新的 vllm 版本,vllm=0.2.7。

在测试问答任务时,通常采用两种方法。第一种方法涉及使用困惑度(PPL):当将选项扩展为问题的继续时,PPL 被用作选择标准。第二种方法是直接生成,其中模型直接输出答案选项。我们在两种方法下观察到了显著的结果差异。事实上,MiniCPM 在直接生成和 PPL 测试中表现相似,但在直接生成方面表现更好。另一方面,Mistral-7B-v0.1 在 PPL 测试中表现更好,但在直接生成方面表现较差。为了解决这种现象,我们在报告每个模型的得分时,采用从产生最高得分的方法获得的得分,以确保比较的公平性。

我们观察到尽管 Phi-2 的评估结果优于 Mistral-7B,但实际用户体验并未达到相同的水平。

1.2 DPO Model:MiniCPM-dpo


在应用 DPO 进行偏好匹配后,模型在 MT-Bench 上的得分从 SFT 后的 6.89 提高到了 7.25,甚至超越了如 Llama2-70B-Chat 这样的大型模型。
Model
MT-Bench
Model
MT-Bench
GPT-4-turbo
9.32
LLaMA-2-70B-chat
6.86
GPT-3.5-turbo
8.39
Mistral-7B-Instruct-v0.1
6.84
Mistral-8*7b-Instruct-v0.1
8.3
LLaMA-2-13B-chat
6.65
Claude-2.1
8.18
Vicuna-13B
6.57
Claude-2
8.06
MPT-30B-chat
6.39
Zephyr-7B-beta
7.34
LLaMA-2-7B-chat
6.27
MiniCPM-2B
7.25
Vicuna-7B
6.17
Vicuna-33B
7.12
MPT-7B-chat
5.42
Zephyr-7B-alpha
6.88
ChatGLM2-6B
4.96

 典型案例


我们已经选择了一些示例来展示 MiniCPM-2B 的通用能力。这些示例旨在展示 MiniCPM 能力的多样性和广泛适用性。

2.1 Text Generation

ALT

2.2 Code

ALT

2.3 Math

ALT

2.4 Translation

ALT

2.5 Special Tasks

ALT

更多使用中文输入的案例在此处。

VII. Quantization: MiniCPM-sft/dpo-int4


为了解决 MiniCPM 计算成本高的问题,我们采用 GPT-Q 方法将其量化为 int4 版本。与 bf16 和 float32 版本相比,int4 版本需要更少的模型存储开销,并且可以实现更快的推理速度。在模型量化的过程中,我们重点关注量化嵌入层和层归一化层之外的参数。

对于参数矩阵 WRdout×din\bold{W}\in \mathbb{R}^{d_{out}\times d_{in}} ,我们聚合连续的 GG 列形成一组,形成 din/Gd_{in} / G 参数组。随后,每个参数组分别进行量化。对于一个特定参数 w\bold{w} 所在的参数组,其量化因子 scalescale 和零点 zerozero 如下面公式所示计算得出: scalescale  = {{6}} + 256 * (log2({{6}}) - log2( w\bold{w} ))) / 256 zerozero  = {{6}} / 256 - 256 * (log2({{6}}) - log2( w\bold{w} ))) / 256
scale=max(w)min(w)241,zero=min(w)scale23scale=\frac{\max(\bold{w} ) - \min(\bold{w})}{2^4-1}, zero = -\frac{\min(\bold{w})}{scale} - 2^3

根据上述的缩放因子和零点, w\bold{w} 的量化版本为: w\bold{w} _q = \left[ \frac{10000}{2^{9}} \right]_0 + \left[ \frac{10000}{2^{9}} \right]_z
w^=quant(w)=round(wscale+zero)\bold{\hat w} = quant(\bold{w}) = round(\frac{\bold{w}}{scale} +zero)

这里,圆整函数 round()\text{round}() 将值四舍五入到最接近的整数。在解码过程中,该操作如下所示:
dequant(w^)=scale(w^zero)dequant(\bold{\hat w}) = scale \cdot (\bold{\hat w} - zero)

在使用 GPT-Q 方法进行量化时,目标是最小化注释数据上的量化误差 WXdequant(W^X)22||\bold{WX} - \text{dequant}(\bold{\hat W}\bold{X})||^2_2 。该矩阵的未量化权重逐个迭代更新如下,其中 qq 表示当前量化参数的位置, F\bold{F} 是未量化权重, HF\bold{H}_\bold{F} 是量化误差的哈希矩阵。
δF=wqdequant(quant(wq))[HF]qq1(HF1):,q\delta_F=-\frac{\bold{w}_q - dequant(quant(\bold{w}_q))}{[\bold{H}_\bold{F}]^{-1}_{qq}}\cdot (\bold{H}_\bold{F}^{-1})_{:,q}

对于 MiniCPM-2B-SFT 和 MiniCPM-2B-DPO,都应用了 int4 量化,从而导出 MiniCPM-2B-SFT-Int4 和 MiniCPM-2B-DPO-Int4 模型。

VIII. Multimodal: MiniCPM-V


基于 MiniCPM,我们构建了一个多模态模型,MiniCPM-V,它支持中英文双语对话。该模型可以接收图像和文本输入,并产生文本输出。MiniCPM-V 的视觉模型组件使用 SigLIP-400M 初始化,而语言模型组件使用 MiniCPM 初始化,并通过感知器降采样器连接在一起。

迷你 CPM-V 具有三个显著特征:

高效推理:MiniCPM-V 可以在大多数 GPU 卡、个人电脑甚至像智能手机这样的边缘设备上高效部署。在图像编码表示方面,我们根据 Perceiver resampler 将每个图像压缩为基于 MLP 架构的通常超过 512 个 token 的数量,这使得 MiniCPM-V 在存储成本和计算速度方面具有更低的优势。

强大性能:在多个基准测试中,包括 MMMU、MME 和 MMbech,MiniCPM-V 在具有相似规模的模型中表现出最佳性能,超越了基于 Phi-2 构建的多模态大型模型。在一些数据集上,MiniCPM-V 的性能甚至可以达到或优于 9.6B Qwen-VL-Chat。

双语支持:MiniCPM-V 是第一个支持中文和英语双语能力的边缘可部署多模态大型模型。这项能力通过跨语言通用的多模态能力高效实现,在我们的 ICLR 2024 亮片论文中进行了详细阐述。

MiniCPM-V 模型的训练分为两个主要阶段:

预训练阶段:我们使用 3 亿对中英文图像文本对来对视觉和语言基本概念进行映射,学习广泛的多模态世界知识。

指令微调阶段:我们使用 600 万多任务问题答案数据、100 万纯文本数据和 100 万多模态对话数据,进一步对齐和刺激多模态基础能力。

欲了解更详细的培训和微调过程,请参阅我们 ICLR 2024 专题论文。
Model
MME(P)
MMB-dev(en)
MMB-dev(zh)
MMMU-val
CMMMU-val
LLaVA-Phi
1335.1
59.8
/
/
/
MobileVLM
1288.9
59.6
/
/
/
Imp-v1
1434.0
66.5
/
/
/
Qwen-VL-Chat (9B)
1487
60.6
56.7
35.9
30.7
MiniCPM-V (3B)
1446
67.3
61.9
34.7
32.1

IX. Edge Deployment


在 Int4 量化之后,MiniCPM 仅占用 2GB 的空间,使该模型可以在边缘侧部署。为此,我们使用开源框架 MLC-LLM 为 Android 和 HarmonyOS 改编了模型,对于 iPhone 系统,我们利用开源框架 LLMFarm 进行了模型适应。我们在选定的边缘移动设备上进行了测试。此外,我们成功验证了在边缘移动设备上运行大型多模态模型的可行性,首次实现了智能手机的成功执行。

值得指出的是,我们没有专门优化以在移动设备上部署,只有验证了 MiniCPM 在移动端的推理可行性。我们还欢迎更多的开发者进一步优化和更新下面的测试列表,不断改善大型模型在移动设备上的推理性能。
Mobile Phone Model
Operating System
Processor
Phone Memory (GB)
Inference Throughput (token/s)
OPPO Find N3
Android 13
snapdragon 8 Gen2
12
6.5
Samsung S23 Ultra
Android 14
snapdragon 8 Gen2
12
6.4
Meizu M182Q
Android 11
snapdragon 888Plus
8
3.7
Xiaomi 12 Pro
Android 13
snapdragon 8 Gen1
8+3
3.7
Xiaomi Redmi K40
Android 11
snapdragon 870
8
3.5
Oneplus LE 2100
Android 13
snapdragon 870
12
3.5
Oneplus HD1900
Android 11
snapdragon 865
8
3.2
Oneplus HD1900
Android 11
snapdragon 855
8
3.0
Oneplus HD1905
Android 10
snapdragon 855
8
3.0
Oneplus HD1900
Android 11
snapdragon 855
8
3.0
Xiaomi MI 8
Android 9
snapdragon 845
6
2.3
Huawei Nova 11SE
Harmony 4.0.0
snapdragon 778
12
1.9
Xiaomi MIX 2
Android 9
snapdragon 835
6
1.3
iPhone 15 Pro
iOS 17.2.1
A17 pro
8
18.0
iPhone 15
iOS 17.2.1
A16
6
15.0
iPhone 12 Pro
iOS 16.5.1
A14
6
5.8
iPhone 12
iOS 17.2.1
A14
4
5.8
iPhone 11
iOS 16.6
A13
4
4.6
Yuge Tu
Jan 31
This learning rate refers to the learning rate used in subsequent experiments on learning rate and learning rate scheduling.
Yuge Tu
Jan 31
This learning rate, even when considering the learning rate scaling for two-dimensional tensors, remains at 1.1e-3, which is considerably higher than the typical Llama2 learning rate of 3e-4. This could potentially be a source of the model's strong generalization ability.
Yuge Tu
Feb 1
The previous Cosine Learning Rate Schedule did not allow for such exploration, as it was not optimal under continuous training conditions.
Yuge Tu
Feb 1
The training dataset is 20 times the size of the model's parameter quantity.
Yuge Tu
Feb 1 (edited)

这表明我们可以定义一种新的 WSD 最优训练,其中数据量与非嵌入参数的数量比接近于 100。具体的数值目前还在确定中。
Yuge Tu
Feb 1

实际上,在 annealing 阶段加入高质量数据会导致一部分预训练语料损失,如 C4。因此,假设仅在预训练数据上执行 annealing,那么 C4 损失将会低于 2.41,超过了 9B 金丝猴最优模型。
Yuge Tu
Feb 1
6.57 million Chinese documents, 6.69 million English documents, 3 million code documents, and 2.5 million mathematical documents.
Yuge Tu
Feb 1
UltraFeedback: Boosting Language Models with High-quality Feedback. https://arxiv.org/pdf/2310.01377.pdf
Yuge Tu
Feb 2 (edited)
Some SFT data and reinforcement learning data like UltraFeedback, may be advantageous to the evaluation of MTBench. For instance, it could enhance the model's generation style to align more with the preferences of GPT-4 Evaluator, and Zephyr-7B might also exhibit similar biases. We encourage researchers to calmly view the evaluation results on the leaderboard. For example, we believe that as a smaller 2B model, it may still be weaker than Llama2-70B-Chat in many tasks.
Yuge Tu
Feb 1
ICLR 2024 splotlight paper: https://arxiv.org/pdf/2308.12038.pdf