这合理吗?
谁都没有想到,ChatGPT 的核心秘密是由这种方式,被微软透露出来的。
昨天晚上,很多讨论 AI 的微信群都被一篇 EMNLP 论文和其中的截图突然炸醒。
微软一篇题为《CodeFusion: A Pre-trained Diffusion Model for Code Generation》的论文,在做对比的时候透露出了重要信息:ChatGPT 是个「只有」20B(200 亿)参数的模型,这件事引起了广泛关注。
距 ChatGPT 发布已经快一年了,但 OpenAI 一直未透露 ChatGPT 的技术细节。由于其强大的模型性能,人们对 ChatGPT 的参数量、训练数据等信息抱有诸多疑问和猜测。
作为行业一直以来的标杆,ChatGPT 性能强大,可以解决各种各样的问题。它的前身 GPT-3 参数量就达到了 1750 亿,实用化以后的大模型居然被 OpenAI 瘦身了快 9 倍,这合理吗?
「如何看待这篇论文」的话题立刻冲上了知乎热榜。
论文链接:
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 在读博士郑楚杰的知乎回答。
而国内外许多网友也都认为,200 亿的参数,是完全合理的。
也有知乎网友从价格上分析,这个数据也应该是对的。
当然,也有网友认为这可能是个「拼写错误」,或许实际是 120B(1200 亿),至少 120B 和 GPT-3(175B)是一个数量级。
但所有这些都是猜测,由于 OpenAI 对参数量、训练数据、方法等核心信息一直讳莫如深,因此 20B 这个数据到底是不是真的根本无法求证。如果是真的,那么大型语言模型未来的改进方向还会是增加参数量吗?
再过几天,就是 OpenAI 的开发者大会了,也许我们能够了解到更多有用的信息,让我们拭目以待吧。