作者:Jason Corso(密歇根大学机器人学与EECS系教授 | 他同时也是Voxel51的联合创始人兼首席科学官)https://www.linkedin.com/in/jason-corso/
如果开源AI仅仅包括软件和模型权重,那它就不应该被叫做开源AI。但这算一个问题吗?
这些天,这已不仅仅是荣誉徽章,更像是某种宗教宣言。“我已经开源了我的AI。”就像从山顶上传来的福音一样。无论是我作为CVPR 2024的领域负责人的尚未发表的研究论文,还是AI领域的知名人士Yann Lecun,开源人工智能似乎一直是人们关注的焦点。关于这个主题,有一个(虽然简短的)维基百科页面。甚至有一个由知名风投公司Andreessen Horowitz(安德森霍洛维茨)提供的开源AI资助项目:https://a16z.com/supporting-the-open-source-ai-community/
推动开源AI既有趣又相关。开源软件在过去五十年里对计算领域产生了重大影响:例如,Linux、MySQL和Apache这些软件构成了互联网的基础。
但是,我觉得这个对话有点难以接受。这并不是因为我不欣赏创新中的开放性价值或必要性。事实上,我是创新开放性的一大倡导者。我尽量在我的每篇论文中发布开源代码,以便重现所有结果,并且我也要求我的学生这样做。我甚至创办了一家专注于开源AI软件的公司,Voxel51(Voxel51,https://voxel51.com/)。
这也不是因为人工智能领域的开源软件不够多。事实上,GitHub称在2023年就创建了65,000多个新的开源AI项目(https://aibusiness.com/nlp/gen-ai-projects-soar-more-than-triple-on-github)。
那么,问题在哪?到底什么是开源AI?当人们说诸如“开源模型已成为AI领域内的重要组成部分”、“开源AI对于赋能新一代科技初创企业至关重要”和“AI太危险,不能专有……它必须是开源的.”时,他们具体指的是什么?
就这一点而言,现状似乎是在发布一些功能性的软件和模型权重,并称之为开源AI。例如,图1展示了Meta为什么选择这种现状的解释。
图1 来自Llama 2文档的截图,说明了他们只发布了Llama2的模型权重和代码片段的原因。来源是Llama 2的FAQ。
这够了吗?[1]或者说这只是唬人的吗?“听起来像是居高临下的官方说辞”。当然,仅凭这两部分就可以直接运行系统。但,能否从零开始复现这项工作?显然不能。有时候,即使发布的代码也只是核心部分,而重要的连接代码却未包含其中。但这重要吗?
[1] 原链接保持英文不变: https://thenewstack.io/metas-llama-2-is-not-open-source-and-thats-ok/
为了搞清楚这些问题,我们需要了解现代AI系统是由什么构成的,并就开源AI意味着什么达成一些共识。只有这样,我们才能明确我们对开源AI的需求。我[也不是第一个问这些问题的人],还好。但本文也提出了一个具体的开源AI方案。
现代AI系统的特点是什么?冒着啰嗦的风险,让我来详细说明我认为构成AI系统的关键七个部分。
系统源代码。 实现关键功能的特定于系统的软件,包括模型架构定义、输入和输出的模型封装代码,以及其他用于实现和部署整个AI系统的常规源代码。理想情况下,还可以访问与源代码一同维护的文档(这通常并非如此)。重要的是,这些文档还应描述硬件和驱动程序的要求。
模型参数部分。 它使系统源代码变得完全可部署。这包括训练模型权重文件的二进制文件以及正确配置系统所需的参数。
数据集,训练源代码用于生成模型参数的原始媒体和这些媒体上的任何注释。这可能还包括用于筛选最佳候选模型的保留验证集或其他类似数据。
超参数,用于训练模型参数(例如学习率等)的配置参数。这些可以是特定值或带有选择标准的值范围。
训练部分。 软件系统中将超参数(hyperparameters)、数据集和部分系统源代码转换为模型参数的部分。这类部分类似于系统源代码,应进行文档记录,包括所需的硬件要求。
随机数生成。对于某些AI系统来说,所用的随机数生成器及其种子可能是必需的,以完全重现一个会话。
软件框架是什么? 这些是构建系统源代码的库和框架。不仅需要这些框架(其中许多已经是开源软件,例如PyTorch和Tensorflow),还需要特定版本,这些版本在系统源代码和训练源代码中使用。细节非常关键。
所有这些都是构建和部署AI系统所必需的。“系统源代码”与“模型参数”紧密结合在一起,无法分开;同样,系统源代码和模型参数也离不开数据集和超参数。它们是一个整体。
什么是开源AI这些人工智能系统各部分与开源AI有什么关系?当有人说开源软件时,他们通常是指人们可以查看、理解、修改、扩展并分享源代码。有许多开源许可证,但我在这里说的是一个思想或态度。还有一个相关的概念是自由软件,但这会把讨论引向另一个话题。
本文中提到的开源核心思想是提供了足够的材料,可以全面理解、分析并评估软件的安全性和隐私等特性,并且最终能够复制、修改并扩展其功能。能够独立复制一项功能,能够增强对该功能背后理念和努力的信心,并且在此基础上进一步发展。没有独立复制的能力,只能依赖信任或信念。
在现代AI系统的背景下,我们需要什么才能达到开放源代码那样的足够水平?
以上,我列出了创建现代AI系统所需的所有材料清单。这标志着“软件”从我们过去几十年所熟悉的形态向一个重要进化。例如,他称其为Software 2.0,我认为这很好地捕捉了这一演变的精髓。这七个部分共同构成了一个完整的现代AI系统。
开源人工智能涵盖了所有构成AI系统的关键要素,包括系统源代码和架构、模型参数、数据集和标注、超参数配置、训练代码、随机数生成器以及理解、重现、修改和扩展AI系统功能所必需的软件框架。
要完全理解一个AI系统的功能和能力,这七个部分都需要包含在开源AI的定义中并进行发布。系统的源代码。模型参数。数据集。超参数。训练源代码。随机数生成过程。软件框架。缺少其中任何一个,我们几乎什么也得不到。确实,我们无法完全理解和复制AI系统的功能。在这七个部分中的任何一个都不允许存在基于专有的排除。此外,所有这些实际内容都是必需的;这些实际内容不仅仅是通过某种参考就能描述的,例如“模型卡片”,虽然它们有正确的思路,但未能真正实现可复现性。
否则,声称在发布中使用开源AI只是走过场。为什么?开源AI需要能够理解、复制、修改和扩展AI系统功能。如果缺少这些组成部分,就无法实现这些目标。
最关键的是,可能根本无法真正“完全搞懂一个现代AI系统”(比如说,参见我在结尾的最后评论),但这一点仍然至关重要,这七个部分包含在开源AI定义里。
当前的开源AI情况目前的开源AI简直就是扯淡。
当代的开源人工智能并没有达到真正的或完整的开放性的概念。它并不接近我的定义。不同的群体各自独立地且大多互补地发布了拼图中的各个部分。例如,谷歌领导了广泛使用的Open Images 数据集的开发和发布;其他人发布了使用各种数据集的模型代码,但训练超参数或代码有限,如赢得ECCV2022Ego4D挑战的团队。但这确实是现状。发布一个数据集,发布一个模型。我自己也做过类似的事情。也许从谷歌和Meta那里找到参考文献比较容易,因为他们在这方面做得很好,经常发布开源AI的各种元素。
所以,我们该怎么办?释放开源AI的一些元素确实是个好开始,但那并不是真正意义上的开源AI。它并没有损害社区的利益,反而在某种程度上有所帮助,比如ImageNet挑战中的表现。然而,越来越多的大型AI系统被广泛应用于各种应用,并打着开源AI的旗号部分公开,比如Llama2。这对我来说是无法接受的。
每个人都有自己的开源权利吗?当然。这和创作者是否愿意自由分享他们的作品是一样的;有些人选择自由分享他们的作品而不设任何限制,而有些人则要求在使用他们的作品之前必须获得许可。没有不同。
但如果没有完全开源的人工智能,这限制了社区了解这些系统如何运行、为何有效以及如何最好地发展。此外,如果你声称一个发布为开源人工智能,而实际上并没有达到我在这里提供的这种严格的开放性标准,那你就是在自找没趣。在这个时代,人工智能不仅仅是软件。
结束部分这篇文章的核心是,要全面理解、复制、修改和拓展一个AI系统——其中一些功能目前可能还无法实现——需要接触系统的每一个方面,包括所有软件、所有文档、所有数据和所有参数。这可能是一个难以接受的事实。但如果没有完全开源的AI,这会限制社区对这些系统的工作原理、工作原因以及最佳推进方式的理解。
要么站出来,把你们的人工智能都开源,要么别再说一套做一套了。
它重要吗? 最后我要说一点。我完全支持开源AI。但是,科学的进步有时会以不同的形式展现。比如在视觉心理物理学实验中,这种情况,研究对象,比如人类,是完全封闭的。在这种情况下,没有开源的概念。然而,存在可重复性的概念,这仍然是关键。当一个AI系统被开源时,人们可能会倾向于走捷径实现这种类型的实验可重复性。但是,能够在不同的计算机上重复AI系统的输出并不能带来这种类型的科学可重复性。那么,AI的可重复性到底意味着什么呢?
致谢
感谢阅读本文早期版本并启发了重要变化的朋友和同事们,尤其是Jeffrey Siskind, Filipos Bellos, Yayuan Li, Dave Mekelburg, Michelle Brinich和Jacob Marks。感谢所有为开源技术做出贡献的人。开源技术改变了世界。
传记
贾森·科索是密歇根大学机器人学、电气工程和计算机科学教授,同时也是AI初创公司Voxel51的联合创始人和首席科学官。他在2005年和2002年分别获得了约翰霍普金斯大学的博士学位和硕士学位,以及在2000年获得了马里兰洛约拉大学的荣誉学士学位,均在计算机科学专业。他于2018年荣获密歇根大学EECS杰出成就奖,2015年谷歌教员研究奖,2010年美国陆军研究办公室青年研究员奖,2009年国家科学基金会CAREER奖,2011年纽约州立大学布法罗分校青年研究员奖,是2009年DARPA计算机科学研究组的成员,并获得了2003年Link基金会高级模拟和训练奖学金。科索撰写了超过150篇同行评审的论文,还编写了数十万行开源代码,涵盖了他感兴趣的多个领域,包括计算机视觉、机器人技术、数据科学和一般计算。他是AAAI、ACM和MAA的成员,并且是IEEE的高级会员。
版权所有 2024 Jason J. Corso。保留所有版权。
未经出版者事先书面许可,不得以任何形式复制、分发或传输本出版物的内容,包括影印、录音或其它电子或机械手段。法律允许的简短引用及某些非商业用途除外。如需申请许可,请通过 X/Twitter 的直接消息联系 JasonCorso。