技术博客链接:
🔗https://shengdinghu.notion.site/MiniCPM
➤ Github地址:
🔗https://github.com/OpenBMB/MiniCPM
➤ Hugging Face地址:
🔗https://huggingface.co/openbmb/MiniCPM-2B-sft-bf16
1 简介
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 的模型参数供学术研究和有限商用,以及训练过程中的所有 Checkpoint 和大部分非专有数据给模型机理研究。
具体而言,我们已开源以下模型:
- 基于 MiniCPM-2B 的指令微调与人类偏好对齐的 MiniCPM-2B-SFT/DPO。
- 基于 MiniCPM-2B 的多模态模型 MiniCPM-V,能力超越基于 Phi-2 的同参数级别多模态模型。
- MiniCPM-2B-SFT/DPO 的 Int4 量化版 MiniCPM-2B-SFT/DPO-Int4。
- 基于 MLC-LLM、LLMFarm 开发的 MiniCPM 手机端程序,文本及多模态模型均可在手机端进行推理。
模型整体性能:
局限性:
- 受限于模型规模,模型可能出现幻觉性问题。其中由于 DPO 模型生成的回复内容更长,更容易出现幻觉。我们也将持续进行 MiniCPM 模型的迭代改进;
- 为了保证在学术研究用途上模型的通用性,我们未对模型进行任何身份认同训练。同时由于我们用 ShareGPT 开源语料作为部分训练数据,模型可能会输出类似 GPT 系列模型的身份认同信息;
- 受限于模型规模,模型的输出受到提示词(prompt)的影响较大,可能多次尝试产生不一致的结果;
- 受限于模型容量,模型的知识记忆较不准确,后续我们将结合 RAG 方法来增强模型的知识记忆能力。
2 模型沙盒实验(Model Sandbox)
大模型的实验成本高昂,难以在不进行配置调优的情况下得到最优秀的大模型性能。
借鉴 μΡ 等优秀的前人工作,我们提出在小模型上进行广泛的实验,通过可迁移的配置,获得大模型的最优训练方法。MiniCPM 本身,即为模型沙盒实验的成果。
我们进行了 Hyper-parameters、Batch size、Learning Rate、Learning Rate Scheduler、Data Strategy 五个方面的模型沙盒研究。
- 超参稳定的模型规模扩增
超参数对模型的性能具有重大影响,在传统训练方法中,需要对每个模型进行超参数调整,这对于大模型并不现实。借鉴 μP 的方法,我们对模型的各参数模块之间进行了连接权重的调整、以及对模型初始化的调整。部分调整接近 Cerebras-GPT。
整体方案如下:
上述操作的具体参数由近 400 次在 0.009B 模型规模上的贝叶斯参数搜索得到。
- 最优 Batchsize
Batchsize 决定了模型的收敛速度和消耗计算资源的平衡。Batchsize 过大,达到一定的损失消耗的数据量和计算量都会很大,而 batchsize 过小,则需要消耗过多的训练步数,且有可能损失函数下降有限。在 2020 年 OpenAI 的开山之作中,OpenAI 研究了损失函数随 token 数变化的规律。在他们的实验中,他们将认为消耗更多的步数等价于消耗更多的时间,在这种假设下,OpenAI 定义了临界 Batchsize(Critical Batchsize),使得达到一定的损失,既不消耗过多 step,也不消耗过多 token。然而我们观察到在利用当前以 A100 为主的计算资源,结合 gradient checkpointing 策略进行训练时,通常计算速度(而不是显存)是瓶颈,这意味着在相同机器数量下,多一倍 Batchsize 几乎等同于慢一倍的单步时间。基于这个观察,我们取消了对“不消耗过多 step ”的追求,而转向追求用最少的token量达到最低的 loss。
我们在 0.009B,0.036B,0.17B 的模型上分别进行了 6 个 batchsize 的训练实验,将结果记录如图下。
我们观察到了最优 batchsize 随着 C4 数据集上的 loss 的偏移规律(图中的红线)。
连接上述的红线(log scale 之后)并拟合
将这三个图的红线进行连接,并进行拟合,我们得到了如下 Batchsize 关于 C4 Loss 的规律: