叫板李彦宏、Llama 3 发布,大模型的开源闭源到底在争什么?
作者:卫诗婕 文章转载自:卫诗婕 商业漫谈
最近两周,有关开源 PK 闭源的讨论吸引了许多人的关注。
事情是这样的:
在不久前的百度 create 大会上,李彦宏放出观点:开源模型的能力会被闭源远远甩在身后。一时间,周鸿祎、傅盛等创业者纷纷表达了反对的观点。
紧接着,在北京时间 3 月 15 日凌晨 2 点,大洋彼岸,Meta 的开源大模型 Llama3 发布,它被视作全球开源大模型的「顶配」,也是国内众多大模型的「奶妈」——许多模型都是基于 Llama3 预训练而来。
尤其值得注意的是,Llama 3 发布了 8B 和 70B 的两个版本,一些方面的性能已经超越了一部分闭源模型,还有一个 400B 的大参数模型正在来的路上(尚未发布),但据称,其性能将直逼 GPT-4。
看起来,李彦宏被打脸了。但事实真的如此吗?
为了厘清大模型开源的一系列问题,更生动、直观地理解这些(对于普通人来说)略显艰深的技术,我访谈了全球最大的开源 AI 社区 Hugging Face 的中国区负责人王铁震,试图还原:开源在全球创新、以及在中国的发展历史。内容还包括:
由于本次访谈涉及的技术概念较多,为了将学习成果更好地分享给大家,我专门整理了一份精炼版笔记,足够新手友好,希望能服务所有想了解、学习大模型知识的朋友。
以下是访谈后整理的笔记:
什么是开源?
如果从国内互联网历史看,那时就有了许多独特的开源文化,比如字幕组就是一种开源。
字幕本身它就是一个 SRT 文件——一个文档上上有时间线对应不同的文本。志愿者贡献做字幕的过程和现在的开源几乎一样:比如会有人先在论坛里公布:现在有某部电影需要配字幕,接下来,一些志愿者就会报名,报名之后会有分工,水平高一些的人会负责审核——需要对齐所有人的工作、并检查错误、最后压片发布。审核这个角色需要有协调组织的能力、耐心和责任心,任务相对较重,影响力也更大。
如果类比到开源项目里,审核的角色叫做 maintainer(维护者)。ta 是项目里最核心的负责人,负责把大家交过来的所有代码审核过之后,合并到主干任务里。而分领不同任务的这些开发者就叫 contributor(贡献者)。
大致是这么个流程:maintainer 定任务、分工给 contributor、maintainer 对齐、发布。
开源的价值与贡献
过去一年,大模型的推理成本实际上下降了 100 倍。这其中很多工作都是开源社群推动的。
因为在开源的机制和社区下,每一个推动工作的开发者,他可以不需要知道深度学习的所有数学原理,不需要自己有很多卡,只要有爱好、有想法,都可以参与贡献自己的力量。
这大大降低了参与门槛和迭代周期,也是技术飞速发展的要素之一。
开源的信仰,即相信:众人拾柴火焰高。
Hugging Face 的创始人 Clam 曾说过,「如果没有开放科学,没有开源,比如说谷歌没有分享他们「 attention is all you need」 的论文、Bert 论文、原生扩散论文,我们可能要过 30、40、 50 年才能够达到今天的水平。」
而事实上,今天我们已经被开源包围了:我们所使用的安卓系统、网页浏览器如 Chrome 和 Firefox,都是著名的开源项目。以及区块链领域——所有 web3 相关的工作都是开源。开源意味着流程、分工、贡献全都透明化,更能群策群力,也更能确保数据使用的安全性。
开源的「乌托邦」主义:氛围更好,更公开透明,更能调动大家的积极性
大厂的工程师都是经过非常严格的筛选,按理来说技术实力都很强,但他们却不如开源社区里的开发者们有激情——开源社区里,开发者们可能一开始并不是特别厉害,但因为能够参与到一些重要的开源项目,极有活力,效率也高,合作氛围极其融洽。
与之相对的,是在科技大厂里常常因为组织架构调整,导致 A 做了很久的项目被 B 接手了,最后项目黄了。
开源社区更容易让人参与到一个事情里面,因为所有的事情都是公开透明的,全世界对这个事情感兴趣的人都会加入进来。尤其是项目早期,因为参与者少,每一个人的贡献都是珍贵的。
同时,因为参与门槛被降到最低,开源社区能实现更好的资源利用。
在公司里,往往需要押注(或者说赌)技术发展的方向——有人认为要做 a 技术,有人认为该做 b 技术,但最后得选定一个方向将资源集中。
但在开源社区,因为大家基于爱好自由选择, a 和 b 两个方向都会得到发展。
大模型时代,第一次出现了开源和闭源「齐头并进」
像 Linux、MySQL、云架构等开源技术,历史上都一定滞后于当时最先进的技术。大模型是第一次出现开源和闭源齐头并进的状态。
原因在于,开源技术,需要感兴趣的开发者能在一起能够有效地去协作,这需要一些基础条件加持:比如高速网络、开源平台等。在 Linux 刚开始发展的那个时代,这些条件都不健全(比如能够访问到 Linux 代码的人也比较少、没有好的管理工具等)。
那时,开源技术只属于少部分极客。现在,网络、开源平台和各类管理工具已经发展得很完备,所以当下的开源时代,更多人是可以参与建设的,甚至普通人。
全世界都在反对李彦宏?开源、闭源并不绝对对立
李彦宏在百度 create 大会上发言称,「开源模型的能力会被闭源远远甩在身后。」一时间,周鸿祎、傅盛等创业者都表达了不同的看法。
这并不是一个「开源一定会赢、或者闭源一定赢」的问题。
Robin 的话更多是基于企业价值观和战略选择的一种输出。在 ChatGPT 出来之前,其实百度在开源领域的工作是非常非常好的,百度自己做了一个深度学习的框架叫 PaddlePaddle,它在 NLP 领域的一个库叫 paddlenlp,当时也是获得了非常大的影响。
ChatGPT 出现之后,可以看到百度在开源上的投入逐渐变小——也许闭源能给百度带来更多优势。
其实,开源、闭源是可以互相转化的,其中的光谱非常宽。比如 OpenAI 最早也是做开源的,比如发了 whisper 这些开源的模型,只是后来他选择了把大语言模型闭源。再比如,Meta 也做了很多开源的工作,但其内部也有模型是不开源的,另外,开源模型和闭源模型也可以互相转化——比如有一个开源模型,一家企业用自己的语料去微调它,这基础上再做一些优化,最终形成的这个模型是闭源的,可能产生商业价值——这最后一公里(优化)是收费的,这仍然算闭源。
这道光谱很宽,光谱的最右侧,是只有少数机构和公司才会做的全流程开源。
所谓全流程开源是指:模型数据集是什么、怎么洗、怎么构建、如何做模型架构的选择、如何去训练这个模型(包括训练日志)、推理代码和权重、部署——这些全部公开。
即,只要你有算力,就可以参照这整个流程,把你的数据用起来,然后训练一个自己的模型。
将权重也公开的这类开源,叫 open source;而只发布权重供访问,而不告诉你权重是怎么来的,这类叫 open access。这类可能会会和商业应用捆绑在一起——想要商业应用的话,需要购买授权。除非是用于学术研究。
光谱再往左一点,可能是开放一个小一版的模型,如果想用更好的模型则需要采购更大的模型组。这相当于拿开源做一个引流,我让你先试用一下,如果你觉得效果不错,我还有更好的,你要不要?
许多开源项目的最后一公里是闭源,是为了更好地复制商业化。
硬件公司一般都很拥抱开源:比如英伟达,通过更好地支持整个开源社区,它可以卖更多的硬件;再比如说阿里巴巴,通过开源,大家能更好地采购它的云服务。再比如 Meta,能通过开源去解决它元宇宙(或者说游戏)里交互不足的问题,对它的股价也有好处。
往往,能产生商业模式的开源项目才能够走得更远。
如果按盈利模式来分,开源的商业化可以大致分为两类:
大模型具「黑盒效应」,不可编码、不可解释,所以无法开源?
如果把开源视作:把一个搭成的积木模型共享给大家,每个人都可以复制一份带回家,然后自己重新优化组装。
那么有另外一种观点认为,大模型它并不是传统意义上的软件开源,因为模型是有黑盒效应的,它不可编码,不可解释,是没有办法真正开源、让大家一起做贡献的。
这种说法对吗?
其实,模型的可解释性和是否能被全部开源无关。就好像炒菜,食物上发生的化学反应是非常复杂且难以理解的,但我们可以分享菜谱、让大家可以重复地制作这道菜 (open source),并基于此,作一些个人口味上的调整,而不仅仅是免费让别人来吃这个菜(open access)。
如何在开源模型上,去训一个自己的模型?
在 open access 的模型上训练的过程:1. import Transformers(将模型载入tranformers 库)——2. 喂数据、模型输出完成推理——3. 微调(SFT)——4. 继续预训练( Continuous Pre-training)
可以将微调的过程简单理解为:模型就像一个刚进大学的大学生,微调的目的是将他变成某个领域的专家。怎么做呢?搜集这个领域的知识(是它从前没见过的),教给他,再给他一套测试题,使其通过测试题后,就完成了微调的训练,接下来他就可以上岗工作、解决现实问题了。
再举个例子,微调还要解决「模型是谁」的问题:比如你的模型是用 llama 3 微调出来、要解决企业客服的需求。那么,当用户问「你是谁」时,它不能回答「我是 llama3」,而要回答,「我是 XX 企业的智能客服 XX。」相当于告诉这个大学生,你的社会身份是什么。
而 open source 的模型所公布的、open access 没公布的那些过程,则相当于一个孩子从入学到大学毕业,整个过程经历了什么。
可以将继续预训练的过程简单理解为:让一个数学系学生,解决化学问题——修双学位、成为复合型人才、解决复杂问题。
创业者、开发者如何更科学、经济地使用开源模型?
有许多人并非传统做 AI 技术出身,但是看到大模型的能力,希望将其与自己领域的一些应用结合起来。
通常,给这类开发者的建议是:
做微调(SFT)、继续预训练(Continuous Pre-Training)分别需要具备哪些条件?
微调:需要算力、语料、数据。
(微调对算力的要求比推理高得多,调一个非常小的模型至少需要一个 A100 或者 8 个 H100。以及数据的处理也是一个经验活——整理语料对并不难,随着工具的成熟,只需要勾选、配对就好了,相当于用 word 、excel,很容易;但难点在于:1,对需求场景的洞察 2,如何判断模型生成的质量好坏,这是专家才能做的;)
但微调的成本,国内大部分创业公司都能负担得起。
继续预训练:成本在微调的基础上要再上升一个量级,难度也更大。
改模型是什么?有哪些方法?
通常,为了模型达到更好效果、性能、或者成本更经济等目的,也可以使用一系列魔改的方式。魔改通常比微调的工作量更轻量一些。
年初的时候特别火的一种方式是 model merger,把两个架构一样但是权重不一样的模型给混合一下,就好像是:大学里面招了两个高中毕业生,一个特别写擅长写代码,一个特别擅长写小说。model merger 就试图将两个人合二为一。
还有量化(quantization),比如模型的权重一般是 B16,通过魔改,可以用更低的精度让这个模型变得更小(比如把 B16 降到 INT4 后,模型就会有一个四倍的性能和存储上的提升)。
Llama 3 发布,如何理解它在行业中的影响?
Llama 3,它是由 24000 块 GPU 组成的定制集群上使用 15 万亿个 token 训练的。国内有哪些公司能够拥有这个级别的算力和数据?
首先,这个量级的算力是国内大部分人和公司无法拿到的,太烧钱了。海外像 Google、微软、 Meta 这种公司级别驱动的开源项目,才能调动这个惊人级别的算力。
而从纯社区向(背后没有公司支持)角度来说,没有什么开源社区能有这么大的能量。开源社区通常通过捐赠方式获得算力支持,但最多也就是在百卡级别(当然这已经不便宜了),千卡都很少。因为到了千卡级别后,对整个数据中心的 Infra 基础设施已经有了非常高的要求:
比如,如果计算过程中卡烧了怎么办(毕竟要没日没夜地跑)——要换卡,以及在软件上当卡掉了时,能不能把所有的训练状态保存,卡修好之后再重新启动,包括做自动规避、如何让 GPU 的利用率保持在高量级等等。
总之,一旦计算规模到了千卡级别,运营侧就会产生很复杂、很大的问题。更别提万卡甚至 10 万卡级别了。Meta 在训练 Llama 3 时候的算力投入可以算是开源模型中的顶配。
对未来大模型发展趋势的一些判断
1. Llama 3 发布的三个不同参数版本,其中 8B 是对开发者更友好的,400B 值得期待,但能用的人没那么多
同样的模型架构,参数大的模型一定比参数小得模型:1,更智慧 2,知识丰富度更好
但,大模型也会比小模型:1,贵(成本高) 2,慢(输出等待时长更久)3,对硬件适配的要求更高(需要的 GPU 多) 4,难(运营复杂度更高)5,距离端上部署更遥远 6,可玩性更弱(能玩起来的人不够多,比如做各种魔改、定制化等)
2. 训练模型、选择参数时,需要神农尝百草
开发者通常会面临很多种超参数的选择,需要像「神农尝百草」一样,试不同参数的组合,大家一般会先从小的模型开始试,在小的模型上观察到一些现象后,再用这个推测,当模型 scale 变大,是否也符合这种现象,再用大一些的模型去试。
3. 模型会先变大,再变小
模型先变大,指的是先做大模型,把能力做上去,先解决从 0 到 1 的问题。
再变小,指的是解决它的实用性(包括成本、性能、效率等)。
4. 也许很快,模型要拼的就不是单一维度的能力,而是差异化
据传, Llama 3 的 400B 参数可能超越 GPT-4 的部分性能。如果事实的确如此,意味着开源模型的能力也会到达一个基本可用的状态(GPT-4 被认为是基本可用的)。这对很多公司是一个巨大的技术红利。
举个例子,现在很多企业的较难任务的拆解和分派,还是由 GPT-4 完成的,未来这些工作逐步可以被开源模型取代。对于企业而言,使用开源模型也更利于隐私保护。
一旦开源和闭源模型都达到了可用的这一条线,那么后面的竞争可能会是什么?
可能就需要大家在模型上做一个差异化:未来,大家不再用一个榜单来评测,而是在不同的领域去分别看不同模型的特点——比如,写代码方面,ABC 做得更好;创作方面,DEF 做得更好。
很难衡量两个都可用的模型,差距是多少。更可能是在不同生态位上错位竞争。
微信扫码关注该文公众号作者