万万没想到,ChatGPT参数只有200亿?

admin1年前笔记271

Snipaste_2023-11-02_00-44-29.png

这合理吗?


谁都没有想到,ChatGPT 的核心秘密是由这种方式,被微软透露出来的。


昨天晚上,很多讨论 AI 的微信群都被一篇 EMNLP 论文和其中的截图突然炸醒。


微软一篇题为《CodeFusion: A Pre-trained Diffusion Model for Code Generation》的论文,在做对比的时候透露出了重要信息:ChatGPT 是个「只有」20B(200 亿)参数的模型,这件事引起了广泛关注。

Snipaste_2023-11-02_00-44-47.png


距 ChatGPT 发布已经快一年了,但 OpenAI 一直未透露 ChatGPT 的技术细节。由于其强大的模型性能,人们对 ChatGPT 的参数量、训练数据等信息抱有诸多疑问和猜测。


作为行业一直以来的标杆,ChatGPT 性能强大,可以解决各种各样的问题。它的前身 GPT-3 参数量就达到了 1750 亿,实用化以后的大模型居然被 OpenAI 瘦身了快 9 倍,这合理吗?


「如何看待这篇论文」的话题立刻冲上了知乎热榜。

Snipaste_2023-11-02_00-44-47.png


论文链接:

https://arxiv.org/abs/2310.17680


具体来说,微软这篇论文提出了一种预训练的扩散代码生成模型 ——CodeFusion。CodeFusion 的参数量是 75M。在实验比较部分,论文的表 1 将 ChatGPT 的参数量明确标成了 20B。


众所周知,微软和 OpenAI 是合作已久的一对伙伴,并且这是一篇 EMNLP 2023 论文,因此大家推测这个数据很有可能是真实的。


然而,关于 ChatGPT 参数量的猜测,人们一直认为是一个庞大的数字,毕竟 GPT-3 的参数量就已经达到了 175B(1750 亿)。掀起大型语言模型(LLM)浪潮的 ChatGPT,难道就只有 20B 参数?


大家怎么看?


这个数据被扒出来之后,在知乎和 Twitter 已经引起了广泛讨论。毕竟,200 亿参数达到这样的效果十分惊人。再则,国内追赶出的大模型动则就是数百亿、上千亿。


那么这个数据保不保真?大家都有什么看法呢?


NLP 知名博主、新浪微博新技术研发负责人张俊林「盲猜」分析了一波,引起了大家广泛赞同:


不负责任猜测一波:GPT 4 是去年 8 月做好的,ChatGPT 估计是 OpenAI 应对 Anthropic 要推出的 Claude 专门做的,那时候 GPT 4 应该价值观还没对齐,OpenAI 不太敢放出来,所以临时做了 ChatGPT 来抢先发优势。OpenAI 在 2020 年推出 Scaling law 的文章,Deepmind 在 2022 年推出的改进版本 chinchilla law。OpenAI 做大模型肯定会遵循科学做法的,不会拍脑袋,那么就有两种可能:


可能性一:OpenAI 已经看到 Chinchilla 的论文,模型是按照龙猫法则做的,我们假设 ChatGPT 的训练数据量不低于 2.5T token 数量(为啥这样后面分析),那么按照龙猫法则倒推,一般训练数据量除以 20 就应该是最优参数量。于是我们可以推出:这种情况 ChatGPT 模型的大小约在 120B 左右。


可能性二:OpenAI 在做 ChatGPT 的时候还没看到 Chinchilla 的论文,于是仍然按照 OpenAI 自己推导的 Scaling law 来设计训练数据量和模型大小,推算起来训练数据量除以 12.5 左右对应模型最优参数,他们自己的 Scaling law 更倾向把模型推大。假设训练数据量是 2.5T 左右,那么这种情况 ChatGPT 的模型大小应该在 190 到 200B 左右。


大概率第一个版本 ChatGPT 推出的时候在 200B 左右,所以刚出来的时候大家还是觉得速度慢,价格也高。3 月份 OpenAI 做过一次大升级,价格降低为原先的十分之一。如果仅仅靠量化是不太可能压缩这么猛的,目前的结论是大模型量化压缩到 4 到 6bit 模型效果是能保持住不怎么下降的。


所以很可能 OpenAI 这次升级从自己的 Scaling law 升级到了 Chinchilla 的 Scaling law,这样模型大小就压缩了 120B 左右,接近一半(也有可能远小于 120B,如果按照 chinchilla law,llama 2 最大的模型应该是 100B 左右,此时算力分配最优,也就是说成本收益最合算。但是实际最大的 llama2 模型才 70B,而且更小的模型比如 7B 模型也用超大数据集。


llama1 65B 基本是符合 chinchilla law 的,llama2 最大模型已经打破 chinchilla law 开始怼数据了。就是说目前大家做大模型的趋势是尽管不是算力分配最优,但是都倾向于增加数据减小模型规模,这样尽管训练成本不合算,但是推理合算,而训练毕竟是一次性的,推理则并发高次数多,所以这么配置很明显总体是更合算的),再加上比如 4bit 量化,这样推理模型的大小可以压缩 4 倍,速度大约可提升 8 倍左右,如果是采取继续增加训练数据减小模型规模,再加上其它技术优化是完全有可能把推理价格打到十分之一的。


后续在 6 月份和 8 月份各自又价格下调了 25%,最终可能通过反复加数据减小规模逐渐把模型压缩到 20B 左右。


这里解释下为何 ChatGPT 的训练数据量不太可能比 2.5T 低,LLaMA 2 的训练数据量是 2T,效果应该稍弱于 ChatGPT,所以这里假设最少 2.5T 的训练数据。目前研究结论是当模型规模固定住,只要持续增加训练数据量,模型效果就会直接增长,mistral 7B 效果炸裂,归根结底是训练数据量达到了 8 个 T,所以导致基础模型效果特别强。以 ChatGPT 的效果来说,它使用的数据量不太可能低于 2.5T。


当然,还有另外一种可能,就是 ChatGPT 在后期优化(比如第一次大升级或者后续的升级中,开始版本不太可能走的这条路)的时候也不管 scaling law 了,走的是类似 mistral 的路线,就是模型大小固定在 20B,疯狂增加训练数据,如果又构造出合适的 instruct 数据,效果也可能有保障。


不论怎么讲,对于 6B 到 13B 左右比较适合应用落地的模型,强烈呼吁中文开源模型模仿 mistral,固定住一个最适合使用的模型大小,然后疯狂增加训练数据,再加上好的 instruct 策略,是有可能作出小规模效果体验足够好的模型的。我个人认为对于开源模型来说,7B-13B 左右大小的模型应该是兵家必争之地。有心气做开源的可以再努把力,把训练数据往上再努力怼一怼。


早在 OpenAI 开放 ChatGPT API 时,0.002 美元 / 1k token 的定价就令人们意外,这个价格只有 GPT-3.5 的 1/10。彼时就有人推测:「ChatGPT 是百亿(~10B)参数的模型」,并且「ChatGPT 使用的奖励模型(reward model)可能是千亿级模型」。该推测来源于清华大学 NLP 在读博士郑楚杰的知乎回答。

Snipaste_2023-11-02_00-47-45.png

而国内外许多网友也都认为,200 亿的参数,是完全合理的。


Snipaste_2023-11-02_00-45-07.png

也有知乎网友从价格上分析,这个数据也应该是对的。


Snipaste_2023-11-02_00-45-15.png

当然,也有网友认为这可能是个「拼写错误」,或许实际是 120B(1200 亿),至少 120B 和 GPT-3(175B)是一个数量级。

Snipaste_2023-11-02_00-45-23.png


但所有这些都是猜测,由于 OpenAI 对参数量、训练数据、方法等核心信息一直讳莫如深,因此 20B 这个数据到底是不是真的根本无法求证。如果是真的,那么大型语言模型未来的改进方向还会是增加参数量吗?


再过几天,就是 OpenAI 的开发者大会了,也许我们能够了解到更多有用的信息,让我们拭目以待吧。

Snipaste_2023-11-02_00-45-29.png


相关文章

介绍Linux下的系统调用过程

介绍Linux下的系统调用过程

先来看一张图,有个大概的理解。首先,应用程序能直接调用的是系统提供的API,这个在用户态(Ring3)下就可做到。然后相应的API就会将相应的系统调用号保存到eax寄存器中(这一步通过内联汇编实现),...

Linux系统清理缓存方法

Linux系统清理缓存方法

在旧版系统中虚拟内存常常设置为物理内存的两倍,但是新版新硬件,内存已经极大提升了容量与速率,再加上固态硬盘,就不需要甚至不用虚拟内存了。但是在HPC中,往往还是得加入虚拟内存,以免系统出现异常卡死的情...

加密算法史

加密算法史

本文就尝试由古及今,对这种与我们网络生活息息相关的加密算法的发展演变,以及在整个过程中先后出现的集中关键加密算法一一论述,带领大家了解背后这种有趣的算法。加密算法主要作用是把明文变成密文,防止信息泄露...

如何在 VSCode 中安装 ChatGPT

如何在 VSCode 中安装 ChatGPT

ChatGPT--即 Chat Generative Pre-Training Transformer(基于转换器的生成式预训练模型)--最近在科技行业掀起了波澜。它于 2022 年 11 月首次推出...

开发必备技术--docker(使用篇)

开发必备技术--docker(使用篇)

前言续接上一篇博文: 开发必备技术--docker(一) 这也是开学了,假期的最后一篇博文,后面的一些文章可能就是以图片,pdf文档的形式了,尤其后面设计到数学,算法类型的博文都是这种形式的,当然无所...

教你如何找到正在运行中的进程 ID 并杀死它

教你如何找到正在运行中的进程 ID 并杀死它

你的 Linux 系统中运行的应用可能会让你的电脑变慢,特别是你的电脑配置较低的时候。在 Linux (以及所有其他 OS)中,程序或者应用都携带一个特别的 PID (进程 ID)可供你简单地分辨它们...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。