我们都知道,除了拓展数据量以外,现在有两条主流的 scaling 路线来增强拉大模型的计算量,增强大模型的能力:
- 扩展参数:非常吃显存
- 扩展推理计算量:主流方法都是增大思维链长度,非常吃时间,并且依赖于训练数据、训练策略(RL),只适用于部分场景。
那么问题来了:能不能有一种新的 scaling 路线,不会带来显著的内存和时延增加,同时又适用于一切的场景?
我们的核心想法就是:在参数量不变的情况下,同时拉大训练和推理并行计算量。
动机由来
最初其实是舍友在宿舍学习 diffusion 模型,他对 diffusion model 必用的一个 trick 百思不得其解:Classifier-Free Guidance(CFG)。CFG 在推理阶段拿到输入 x 时,首先做一次正常的 forward 得到 f(x);然后再对 x 进行主动的劣化(比如去除条件)变为 x’,再进行一次 forward 得到 f(x’)。最终的输出 g(x) 是 f(x) 和 f(x’) 的一个加权组合,它的效果比 f(x) 更好,更能遵循输入的条件。
这个现象事实上有点反直觉:f(x) 和训练阶段是对齐的,而 g(x) 明显和训练阶段的目标存在 gap。按照常识,只有训练目标和推理目标形式相同,推理才能发挥最大效果。另外,f(x) 的参数量和 g(x) 也是相同的,输入的有效信息量也相同,为什么 f(x) 反而学不到 g(x) 的能力?这说明背后或许存在更深层次的原因。
要长脑袋了
我们做出了大胆的猜想:CFG 生效的原因,本质上是用了双倍的并行计算量,它拉大了模型本身的 capacity。
这就启发我们,可以进一步 scale:
- 把输入的变换形式(比如人为设计的劣化规则)和输出的聚合规则变成可学习的
- 拉大并行的数目
这个方法非常简单,可以应用到任何的模型架构、任务和数据上。我们在大语言模型上首先探索了这一想法,如下图所示:
输入的变换采用随机初始化的不同的 prefix(也就是 prefix tuning),输出使用一个MLP层变为动态聚合的权重。事实上,我们最后发现,具体的策略影响不大,真正重要的还是P的值:并行计算的数目
几种 Scaling 曲线的对比
Parallel Scaling Law
我们首先进行了一系列理论分析,得出一个结论:将一个参数量为 N 的模型并行 P 个流,等价于将参数量变为原来的 倍(详见论文的分析)。其中 Diversity 与不同流之间的残差相关系数有关,不好接着分析。但这至少说明,放缩并行计算量和放缩参数之间必然存在着某个联系
因此,我们接下去做了大量的实验,最终得到:并行P个流,等价于把参数放大O(logP)倍,但它相较于放大参数有着非常显著的推理效率优势:
图一:Scaling Law;图二: batch size {1, 2, 4, 8} 平均后的结果。
拟合细节。精度相当高:R^2=0.998,感受到了 scaling law 的魅力
loss 等高线图。越大的参数量收益越高,因为 P 的增长是直接乘到 N 上面的。
reasoning 任务的收益更大(超出了 loss 收益),比 general task 也要更大。说明:拉大计算量能显著提升推理能力。
分 batch 来计算效率。batch size 越小,越接近于 free lunch。这说明 ParScale 很适合用在边缘设备上,因为这些场景显存不大,同时用户的query也不频繁,batchsize小。
我们也提供了一个 HuggingFace 空间,来更直观地感受 Scaling Law 的力量。欢迎大家试用:
https://huggingface.co/spaces/ParScale/Parallel_Scaling_Law
两阶段训练
先前的实验主要聚焦在 pre-train,由于 batchsize 会拉大 P 倍,训练开销较大。因此我们尝试了一个后训练策略:首先第一阶段训练 1T token(常数学习率),然后在二阶段使用 ParScale(退火学习率)后训练 20B token。可以发现这个策略也是非常有效的。
两阶段的训练 loss。在经过 0.0002 T token以后,P=2,4,8 就可以反超 P=1。
性能还是很能打的,在推理密集型任务(数学、代码)提升显著。比较意外的是,MMLU 的提升同样显著。
之后,我们将 ParScale 应用到 Qwen-2.5 模型上(已经训了 12 T token),包括全参数持续训练(CPT)和 PEFT 训练(冻结主网络,只微调引入的 prefix 参数)。
图(a,b):全参数 CPT;图©:PEFT
值得一提的是,PEFT 训练展示出了动态并行拓展的前景:我们可以使用相同的模型权重,在不同的场合下使用不同的 P,从而快速地动态调整能力以及推理开销。这是目前的主流方法比较难做到的。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。