为什么 qwen2 基本上是当下最受欢迎的开源模型?说实话,相比于 deepseek、llama、minicpm 这些诚意满满的技术报告,qwen2 的技术报告稍显一些“小家子气”,并没有提及到关键的技术细节。然而,qwen2 提供给开源社区的“全家桶”套餐,又是多长的技术报告也比不上的。对 llm 的研究者来说,用相同 tokenizer,相同的 7T pretrain_data 得到的“一簇小 llm”,其研究价值远远超过 Qwen2-72B 本身!
接下来,我们带着两个基本概念进入正文:
-
同源小模型:同 tokenizer,同训练数据下得到的 size 较小的llm
-
小模型:重点在于“小”,推理快或者本身就是分类模型,怎么训的完全无所谓。较小 size 的 llm,BERT,RoBERTa,Xgboost,LR 等等都可以称作小模型
一、同源小模型是大模型的实验场
scaling law 告诉我们:小模型的性能表现能用来预测大模型的性能表现。这也就是说,大部分情况下,我们是可以通过在同源小模型上做实验,去预测大模型的效果的。
在 pretrain / post_pretrain 阶段有很多需要做实验才能知道答案的问题。怎么样的数据配比最合理,课程学习中哪种学习顺序效果最好,数据的质量是否过关,数据的去重程度是否过关,先训4k、再扩到 32k 和直接训 32k 的效果差异,post_pretrain 的时候怎样调整学习率和数据分布来防止模型断崖式的能力遗忘?……
直接启动大模型的成本实在是在太高昂了,可能训练两三周,loss 曲线才会表现出一点点差异。但我们完全可以在小模型上大胆的训,每天训 100B token,两天就能出一版实验结果。观察 tensorbord 的 loss 曲线,刷 benchmark 打榜,或是做 sft 看效果,总之小模型可以帮助我们快速地敲定 pretrain 阶段使用的数据配置。
在 alignment 阶段,我们也可以去借助小模型和 scaling law 来指导工作。
我要强化模型的某个能力,准备了 N 条训练数据,能让模型达到多大的提升呢?可以看看这份数据在小模型上能有大提升,绘制一条曲线,去预估大模型的性能表现。说的再通俗一点,100B token 能让 0.5B 模型下降 0.2 loss,能让 72B 模型下降 0.1 loss, alignment 数据能让 0.5B 模型提高 x% 的 task 能力,那么大概率这份数据也只能让 72B 模型提升 0.5x % 的 task 能力。
- 已知:Qwen2-0.5B + few shot
- 已知:Qwen2-0.5B + SFT + zero_shot
- 已知:Qwen2-1.5B + few shot
- 已知:Qwen2-1.5B + SFT + zero_shot
- ……
- 已知:Qwen2-72B + few shot
- 预测:Qwen2-72B + SFT + zero_shot
但其实,在 alignment 阶段,小模型的实验指导意义并不是特别强,毕竟小模型的最大优势在于训得快,做实验快。由于 alignment 的数据量不大,我们往往可以直接对目标大模型进行训练来验证结果。这里的指导意义,往往是在我们需要大量数据去强化模型某个能力时才显得有意义,比如代码强化、创作能力增强。
在这里,额外需要强调两个点:
-
小模型需要使用较大的学习率,而大模型学习能力强、特征空间稀疏,往往需要使用较小的学习率;
-
强如 meta,据说也训崩了千亿级别参数的 MOE 模型。换句话说,MOE 的 scaling law 可能还不成熟,或者是 MOE 缺少一个像 llama 一样的能稳定训练的标准结构,其在小模型上的优异表现可能无法复现在大模型上。
二、大模型是同源小模型的良师
首先,大模型的效果就是同源小模型不可达到的 ceiling,这点毋庸置疑。(实际工作中,知道模型效果的上限,是一件非常有意义的事情)。
除此之外,大模型可以在训练中给到同源小模型极大的帮助。
1. 模型蒸馏
“distill”是 BERT 时代非常火的一个技术方案,现在却提及的不太多了,归根到底就是蒸馏对“同源 tokenizer”的要求太硬了。不过同源小模型没有这个顾虑,蒸馏技术就像是为同源小模型的效果强化量身定制的技术方案一样。
先澄清一个概念,目前的大部分论文都把“利用 GPT4 造数据,喂给小模型去训练“叫做蒸馏,这种叫法也没错,不过更准确的叫法应该是”知识蒸馏“:让小模型去学习大模型的知识能力。而传统的“模型蒸馏”,指的是我们不再让模型学习 hard-label,而是 soft-label:
-
hard_label:“台湾属于”,在预测下一个 token 的时候,“中国”的概率是 1,其他所有 token 的概率是 0;
-
soft_label:“台湾属于”,在预测下一个 token 的时候,“中国”的概率是 0.3,“中华”的概率是 0.2,“大陆”的概率是 0.1……
不管从哪个角度考虑,似乎 soft_label 都是蕴含更多信息量可学习的。因此,利用大模型去“模型蒸馏”小模型,很有可能能得到一个能力远高于同等 size 的小模型,Google 的 Gemma 小模型 就应用了这项技术方案。
(模型蒸馏之所以在 llm 方向做的少,其实还是因为得不偿失,其对算力和存储的需求较大,与模型的效果提升不成正比。毕竟正常训练学的是 seq_len 个 one_hot label,蒸馏学的是 seq_len * vocab_size 的 logits,一个比较现实的方案是做 clip,只取最大的 N 个 token logits 标签进行学习,其他 token 的概率依然视为 0)
2. reward_model
用大模型来充当小模型的 reward_model,目前是一个很流行的做法,而用同源大模型去做 reward_model 则更是一个锦上添花的方案。
与蒸馏不同,蒸馏看中的是两个模型“tokenizer 同源”,reward_model 看中的则是两个模型“pretrain 数据同源”。也就是说,我们的 reward_model 和 policy_model 具有同等的知识量,两个模型的学习成绩虽然不一样,但它们上过的的课程却是一样的。reward_model 会的知识,就是 policy_model 学过的知识:“我学过并且我掌握了,你学过但你没掌握,所以我给你打低分就是合理的。”
虽然在实际工作中,一个同源 reward_model 可能没有 GPT4 这种“天才 reward_model ”带来的效果更好。但其往往能给出更公允的打分,进而避免过多的幻觉产生。这也是 alignment 的一大痛点,模型到底是训过拟合了才答错这个知识,还是压根就没学过这个知识 —— 交给同源大模型来判断。
三、大模型背后的无数小模型
OK,同源模型的意义我们就谈到这里,后面我们开始谈真正的“小”模型!一个优秀的大模型,无论是在训练阶段,还是线上部署阶段,其背后默默付出的小模型都数不胜数。
数据质量分类器:llama3 和 qwen2 都提到了,他们的 pretrain 训练数据是有得分的,然后通过阈值来找出最高质量的训练数据,开源 pretrain 数据集 fineweb 也提到了他们给数据打分的工作。Good data makes good model performance!李沐大佬在他的视频里说到,llama3 的数据打分器是 RoBERTa,这很合理,效果又好、推理又快的分类模型确实还要看 BERT 家族。
数据 domain 分类器:垂直领域模型的 post_pretrain 工作,往往需要非常精准的数据配比,domain 数据的数据质量也需要非常优质。这也就是说,我们需要一个分类器,去提取海量数据中的 domain 数据,这个分类器最好还能把低质量的 domain 数据也视为非 domain 数据,通常承担这个工作的模型也是 BERT 家族。
线上模型的分类器:众所周知,RAG 模块已经是 llm 的标配,我们总不能让模型自己判断该不该做检索吧?虽然不是不行,但是额外生成“是否RAG”这些 token 会降低系统的响应速度,并且可能降低模型的通用能力(模型学的越多,忘的也越多)。因此,线上模型往往都是前置挂一个小模型,来判别是否需要 RAG,同理也需要判别是否触发 safety,是否触发工具链等。
RAG 模型:这个模型更是重量级,也就是咱们传统的信息检索模型,如何从海量 docs 里面选出最相关的 doc。BGE 是这个工作较为常用的模型。
数据生产模型:
-
“小模型 + SFT > GPT4 + zero_shot ”几乎是数据生产阶段最常用的公式了。我们在数据生产阶段往往面临几个困境,GPT4 并不是百分之百按照我们指定的格式进行输出(复杂指令任务尤为明显),GPT4 真的很贵,特别是在生产多轮对话数据的时候。这种情况下,最好的方案就是用一个小模型去学目标 task 的高精数据,让这个小模型过拟合,进而变成一个标准的 task 数据生产器;
-
以 role_play 任务为例,很多场景是需要人不断和 GPT4 聊天来生产高质量的对话数据的,我们的模型做不到 GPT4 那样能准确拿捏角色性格的程度,但扮演一个“多事儿的用户”还是绰绰有余的。训一个聊天模型,让它和 GPT4 聊天来自动化大量生产数据。
这里,我再分享一些个人使用小模型时的 trick:
学会变通,生成模型也可以当判别模型使用。简单来说,如果我们懒得去找一份 BERT 代码去训一个分类器,我们也可以直接训一个 Qwen2-0.5B,让它只会输出 0 和 1,当我们的模型完全过拟合到 0 和 1 的时候,那么所有 token 中便只有 0 和 1 有概率,其他 token 的概率几乎为零。此时,我们用 1 所对应的 token_probability,不就是分类器的打分吗?当然,更优雅的做法是把 pretrain_model 的 lm_head 替换成 reward_model 的 lm_head。
另外,一个优秀的大模型,无论是在训练阶段,还是线上部署阶段,其背后默默付出的小模型都数不胜数。。这句话怎么说呢,是我在训 domain 分类器的时候,发现 Qwen2-1.5B 的准确率和召回率都不如 Qwen2-0.5B 高。在一番讨论和实验分析之后,我认可了大佬同事的观点:模型越大,其学习能力越强,但也意味着其更容易过拟合。
传统机器学习模型做的事情都是特征抽取,去从输入的特征中提取出看不到的特征,像 xgboost 这种还会计算每个特征的重要程度。但由于 llm 的参数量足够大,再加上 decoder_only 的结构,它真的可以做到记住所有的输入特征(decoder_only 是一个纯信息检索结构,它不压缩任何 token 信息,和 BERT 的 CLS 位压缩信息完全是两种做法)。
因此,较大的模型虽然上限更高,但其所依赖的数据质量也更高,如果你的训练数据是有失偏颇的,分布不均衡的,它完全可以记住这些数据的 pattern,而不是从这些 pattern 中抽取共同特征。我的 0.5B 模型效果好于 1.5B 模型大概率就是这种情况:我使用了 4 个数据源作为训练集,但测试集来自于 10 个数据源。
诚然,大模型的出现,解决了困扰 nlp 多年的指代消解、多轮理解、对话人设等瓶颈,但小模型的信息压缩、特征抽取等依然是非常有意义的。我们在工作中,还是应该多考虑一下能不能用小模型来解决问题,找找我们的老朋友 BERT,而不是二话不说就打开 GPT4 写 prompt。
最后分享
AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。
学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。
这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享!
1. 成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
2. 大模型经典PDF书籍
书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。(书籍含电子版PDF)
3. 大模型视频教程
对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。
4. 大模型项目实战
学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。
5. 大模型面试题
面试,不仅是技术的较量,更需要充分的准备。在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。
全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以微信扫描下方CSDN官方认证二维码,免费领取【保证100%免费
】
如有侵权,请联系删除。