开源还是封闭?人工智能的两难选择

这篇文章于 2024 年 7 月 29 日首次出现在 The New Stack 上。人工智能正处于软件行业的完美风暴中,现在马克·扎克伯格 (Mark Zuckerberg) 正在呼吁开源 AI。
关于如何控制 AI 的三个强大观点正在发生碰撞:
1 . 所有 AI 都应该是开源的,以实现共享和透明。
2 . 保持 AI 闭源,并允许大型科技公司控制它。
3 . 制定 AI 使用法规。
有几个事实使这场辩论变得棘手。首先,如果你有模型的源代码,你对模型的行为方式完全一无所知。AI 的开放性需要的远不止提供源代码。其次,AI 有很多不同的风格,可用于解决广泛的问题。从用于欺诈检测和定向广告的传统 AI 到用于创建聊天机器人的生成式 AI,这些聊天机器人从表面上产生类似人类的结果,使我们越来越接近人工生成智能 (AGI) 的最终(和可怕)目标。最后,上面列出的控制 AI 的想法在改进软件方面都有良好的记录。
在本文中,我将讨论:
-
开源的真正本质以及为什么该行业必须为 AI 模型重新定义它。
-
理想主义者的常见论点和逻辑缺陷,他们高度关注单一用例。
-
创新者的权利和公众的权利。
-
关于在正确的模型上使用适当控件的想法。
了解不同的观点
在深入研究之前,让我们更详细地讨论上面列出的不同观点。
观点 #1 – 所有 AI 都应该是开源的,以实现共享和透明: 这来自于 AI 对透明度的推动。 开源是共享和改进软件的一种行之有效的方法。当用于传统软件时,它提供完全透明。(在本文中,我将使用术语 conventional software 来指代与 AI 无关的软件。例如,操作系统、服务、可重用库或完整应用程序。开源软件推动了软件行业的突飞猛进。
观点 #2 – 保持 AI 闭源并允许大型科技公司控制它: 闭源或专有软件是指发明可以保密,远离竞争对手,以实现经济利益最大化的想法。对于开源理想主义者来说,这听起来完全是邪恶的;然而,它更像是一种哲学选择,而不是存在于善与恶的光谱上的选择。大多数软件都是专有的,这本身并不是坏事 - 它是竞争和健康生态系统的基础。选择闭源道路是任何创造新事物的创新者的基本权利。问题变成了,如果你在没有透明度的情况下运营,那么负责任的 AI 有什么保证呢?
观点 #3 – 制定 AI 使用法规: 这来自推动监管的立法者和民选官员。基本思想是,如果公共职能或技术如此强大,以至于不良行为者或不负责任的管理可能会伤害公众,那么应该任命一个政府机构来制定控制措施并执行这些控制措施。有一种观点认为,人工智能领域的现任和现任领导者也希望进行监管,但原因不那么纯粹——他们想冻结由他们主导的竞争环境。我们将主要关注公共产品领域。
开源的真正本质
在生成式 AI 出现之前,在数据中心运行的大多数软件都是传统软件。如果您有传统软件的源代码,则可以准确确定它的作用。精通适当编程语言的工程师可以查看代码并确定其逻辑。您甚至可以修改它并更改其行为。开源(或开源代码)是另一种说法 - 我将提供确定行为和改变行为所需的一切。简而言之,开源软件的真正本质是提供了解软件行为并对其进行更改所需的一切。现在,使用 AI 模型,如果你有模型的源代码,你对模型的行为方式完全一无所知。要使模型完全开放,您需要训练数据、模型的源代码、训练期间使用的超参数,当然还需要训练后的模型本身,它由存储模型知识的数十亿(很快是数万亿)参数组成,也称为参数内存。现在,一些组织只提供模型,将其他所有内容留给自己,并声称该模型是“开源的”。这是一种被称为 “公开清洗” 的做法,通常被开放和闭源社区视为不诚实。我希望看到一个新术语用于部分共享的 AI 模型。也许是 “partially open model” 或 “model from an open washing company”。当涉及到完全共享的模型时,还有最后一个问题。假设一个组织想要做正确的事情并分享有关模型的所有内容 - 训练数据、源代码、超参数和训练的模型。好吧,除非您对其进行广泛测试,否则您仍然无法确定它的具体行为。确定行为的参数内存不是人类可读的。同样,该行业需要一个不同的术语来描述完全开放的模型。与“开源”不同的术语,“开源”只应用于非 AI 软件,因为模型的源代码无助于确定模型的行为。也许是“开放模式”。
常见参数
让我们看看你在互联网上找到的一些常见论点,这些论点只支持使用前面描述的其中一种观点。这些人是他们观点的热情捍卫者,但这种热情可能会蒙蔽判断力。
论点: (封闭的 AI 支持者声称,大型科技公司有办法防范潜在的危险和滥用。因此,AI 应该保持私有,远离开源社区。
反驳: 大型科技公司确实有办法防范潜在的滥用行为,但这并不意味着他们会明智地这样做,甚至根本不这样做。此外,这不是他们的主要目标。他们的主要目标是为股东赚钱 - 这永远是优先的。
论点: 那些认为 AI 可能会对人类构成威胁的人喜欢问:“你会开源曼哈顿计划吗?
反驳: 这显然是治理的论点。然而,这是一个不公平和不正确的类比。曼哈顿计划的目的是在战时通过使用放射性材料产生核聚变来制造炸弹。核聚变不是一种可以应用于不同任务的通用技术。你可以制造炸弹,也可以发电——就是这样。成分和结果对公众来说非常危险,因此应监管所有方面。AI 则大不相同。如上所述,它有不同的口味和不同的风险。
论点: 开源 AI 的支持者表示,开源促进了科学的共享,提供了透明度,并且是防止少数人垄断强大技术的一种手段。
反驳: 这在很大程度上是正确的,但并不完全正确。开源确实提供共享。对于 AI 模型,它只会提供一些透明度。最后,“开放模式”是否会阻止少数人垄断他们的权力,还有待商榷。要大规模运行像 ChatGPT 这样的模型,您需要的计算能力只有少数公司能够获得。
多数人的需求超过了少数人的需求
在《星际迷航 II:可汗之怒》中,斯波克死于辐射中毒。斯波克意识到必须修理飞船的主引擎以方便逃生,但机舱被致命的辐射淹没。尽管存在危险,斯波克还是进入了充满辐射的房间进行必要的维修。他成功地恢复了曲速驱动器,使企业号能够到达安全距离。不幸的是,瓦肯人不能免疫辐射。他对柯克船长的临终遗言解释了他行动背后的逻辑,“许多人的需求超过了少数人或一个人的需求。这是完全合理的逻辑,它必须用于控制 AI。有些型号会对公众构成风险。对于这些模式,公众的需求超过了创新者的权利。
所有 AI 都应该开源吗?
我们现在准备将所有内容联系在一起并回答本文标题的问题。首先,让我们回顾一下到目前为止建立的公理:
-
开源应该仍然是一种选择。
-
开放模型不如开源的非 AI 软件透明。
-
Close Source 是创新者的权利。
-
无法保证大型科技公司会正确控制他们的 AI。
-
公众的需求必须优先于所有其他需求。
上面的 5 个项目符号代表了我试图阐明的有关开源、闭源和法规的所有内容。如果你相信它们是真的,那么“所有 AI 都应该开源吗”这个问题的答案是否定的,因为它不会控制 AI,闭源也不会。此外,在一个公平的世界中,开源和开放模型应该仍然是一种选择,而关闭源代码应该仍然是一种权利。我们可以更进一步,讨论整个行业可以采取哪些行动来有效控制 AI:
-
确定对公众构成风险的模型类型。由于控制信息(聊天机器人)或危险资源(自动驾驶汽车)而具有高风险的模型应该受到监管。
-
应鼓励组织将其模型作为完全开放的模型共享。开源社区需要加紧行动,防止或标记仅部分共享的模型。开源社区还应该将可用于对模型进行评级的测试放在一起。
-
如果封闭模型不会对公众构成风险,则仍应允许使用。大型科技公司应该加紧开发自己的一套控制措施和测试,并为其提供资金和共享。也许这是大型科技公司与开源社区密切合作解决常见问题的机会。
相关文章:

开源还是封闭?人工智能的两难选择
这篇文章于 2024 年 7 月 29 日首次出现在 The New Stack 上。人工智能正处于软件行业的完美风暴中,现在马克扎克伯格 (Mark Zuckerberg) 正在呼吁开源 AI。 关于如何控制 AI 的三个强大观点正在发生碰撞: 1 . 所有 AI 都应该是开…...

Prometheus 服务监控
官网:https://prometheus.io Prometheus 是什么 Prometheus 是一个开源的系统监控和报警工具,专注于记录和存储时间序列数据(time-series data)。它最初由 SoundCloud 开发,并已成为 CNCF(云原生计算基金会…...

建模杂谈系列252 规则的串行改并行
说明 提到规则,还是需要看一眼RETE算法: Rete算法是一种用于高效处理基于规则的系统中的模式匹配问题的算法,广泛应用于专家系统、推理引擎和生产系统。它的设计目的是在大量规则和数据的组合中快速找到满足特定规则条件的模式。 Rete算法…...

0.ffmpeg面向对象oopc
因为查rtsp相关问题,接触了下ffmpeg源码,发现它和linux内核一样,虽然都是c写的,但是都是面向对象的思想,c的面向对象称之为oopc。 这让我想起来一件好玩的事,有些搞linux内核驱动的只会c的开发人员不知道l…...

KDD2024参会笔记-Day1
知乎想法:链接 听的第一场汇报:RAG Meeting LLMs 综述论文:https://arxiv.org/pdf/2405.06211 PPT:https://advanced-recommender-systems.github.io/RAG-Meets-LLMs/2024-KDD-RAG-Meets-LLM-tutorial-Part1.pdf 检索࿱…...

Java操作Elasticsearch的实用指南
Java操作Elasticsearch的实用指南 一、创建索引二、增删改查 一、创建索引 在ElasticSearch中索引相当于mysql中的表,mapping相当于表结构,所以第一步我们要先创建索引。 假设我们有一张文章表的数据需要同步到ElasticSearch,首先需要根据数据库表创建…...

数据库系统 第42节 数据库索引简介
数据库索引是数据库表中一个或多个列的数据结构,用于加快数据检索速度。除了基础的B-Tree索引,其他类型的索引针对特定的数据类型和查询模式提供了优化。以下是几种不同类型的索引及其使用场景的详细说明和示例代码。 1. 位图索引 (Bitmap Index) 位图…...

C++11 --- 智能指针
序言 在使用 C / C 进行编程时,许多场景都需要我们在堆上申请空间,堆内存的申请和释放都需要我们自己进行手动管理。这就存在容易造成堆内存泄露(忘记释放),二次释放,程序发生异常时内存泄露等问题…...

C#顺序万年历自写的求余函数与周位移算法
static int 返回月的天数(int 年, int 月){return (月 2 ?(((年 % 4 0 && 年 % 100 > 0) || 年 % 400 0) ? 29 : 28) :(((月 < 7 && 月 % 2 > 0) || (月 > 7 && 月 % 2 0)) ? 31 : 30));}static int 返回年总天数(int 年, int 标 …...

【Java并发编程一】八千字详解多线程
目录 多线程基础 1.线程和进程 线程是什么? 为啥要有线程? 进程和线程的区别? Java 的线程 和 操作系统线程 的关系 使用jconsole观察线程 2.创建线程的多种方式 3.Thread类及其常见方法 Thread类的常见构造方法 Thread类的常见属性…...

CentOS 8FTP服务器
FTP(文件传输协议)是一种客户端-服务器网络协议,允许用户在远程计算机之间传输文件。这里有很多可用于Linux的开源FTP服务软件,最流行最常用的FTP服务软件有 PureFTPd, ProFTPD, 和 vsftpd。在本教程中,我们将在CentOS…...

C++ | Leetcode C++题解之第385题迷你语法分析器
题目: 题解: class Solution { public:NestedInteger deserialize(string s) {if (s[0] ! [) {return NestedInteger(stoi(s));}stack<NestedInteger> st;int num 0;bool negative false;for (int i 0; i < s.size(); i) {char c s[i];if …...

【软件设计师真题】第一大题---数据流图设计
解答数据流图的题目关键在于细心。 考试时一定要仔细阅读题目说明和给出的流程图。另外,解题时要懂得将说明和流程图进行对照,将父图和子图进行对照,切忌按照常识来猜测。同时应按照一定顺序考虑问题,以防遗漏,比如可以…...

系统架构的发展历程之模块化与组件化
模块化开发方法 模块化开发方法是指把一个待开发的软件分解成若干个小的而且简单的部分,采用对复杂事物分而治之的经典原则。模块化开发方法涉及的主要问题是模块设计的规则,即系统如何分解成模块。而每一模块都可独立开发与测试,最后再组装…...

基因组学中的深度学习
----/ START /---- 基因组学其实是一门将数据驱动作为主要研究手段的学科,机器学习方法和统计学方法在基因组学中的应用一直都比较广泛。 不过现在多组学数据进一步激增——这个从目前逐渐增多的各类大规模人群基因组项目上可以看出来,这其实带来了新的挑…...

解决老师询问最高分数问题的编程方案
解决老师询问最高分数问题的编程方案 问题分析数据结构选择:线段树线段树的基本操作伪代码伪代码:构建线段树伪代码:更新操作伪代码:查询操作C语言实现代码详细解释在日常教学中,老师经常需要查询某一群学生中的最高分数,并有时会更新某位同学的成绩。为了实现这一功能,…...

com.baomidou.mybatisplus.annotation.DbType 无法引入
com.baomidou.mybatisplus.annotation.DbType 无法引入爆红 解决 解决 ❤️ 3.4.1 是mybatis-plus版本,根据实际的配置→版本一致 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-annotation</artifactId>&…...

从零开始学习JVM(七)- StringTable字符串常量池
1 概述 String应该是Java使用最多的类吧,很少有Java程序没有使用到String的。在Java中创建对象是一件挺耗费性能的事,而且我们又经常使用相同的String对象,那么创建这些相同的对象不是白白浪费性能吗。所以就有了StringTable这一特殊的存在&…...

数据库课程设计mysql
进行 MySQL 数据库课程设计通常包括以下几个步骤,从需求分析到数据库设计和实现。以下是一个常见的流程及要点: 1. 需求分析 首先,明确系统的功能需求。这包括用户需求、业务流程、功能模块等。你需要与相关人员(比如老师、同学…...

AI学习指南深度学习篇-带动量的随机梯度下降法的基本原理
AI学习指南深度学习篇——带动量的随机梯度下降法的基本原理 引言 在深度学习中,优化算法被广泛应用于训练神经网络模型。随机梯度下降法(SGD)是最常用的优化算法之一,但单独使用SGD在收敛速度和稳定性方面存在一些问题。为了应…...

点餐小程序实战教程03创建应用
目录 1 创建应用2 第一部分侧边栏3 第二部分页面功能区4 第三部分大纲树5 第四部分代码区6 第五部分模式切换7 第六部分编辑区域8 第七部分组件区域9 第八部分,发布区域10 第九部分开发调试和高阶配置总结 上一篇我们介绍了如何实现后端API,介绍了登录验…...

鸿蒙自动化发布测试版本app
创建API客户端 API客户端是AppGallery Connect用于管理用户访问AppGallery Connect API的身份凭据,您可以给不同角色创建不同的API客户端,使不同角色可以访问对应权限的AppGallery Connect API。在访问某个API前,必须创建有权访问该API的API…...

力扣9.7
115.不同的子序列 题目 给你两个字符串 s 和 t ,统计并返回在 s 的 子序列 中 t 出现的个数,结果需要对 109 7 取模。 数据范围 1 < s.length, t.length < 1000s 和 t 由英文字母组成 分析 令dp[i][j]为s的前i个字符构成的子序列中为t的前j…...

GPU 带宽功耗优化
移动端GPU 的内存结构: 先简述移动端内存cache结构;上图的UMA结构 on-Chip memory 包括了 L1、L2 cache,非常关键的移动端的 Tiles 也是保存在 on-chip上还包括寄存器文件:提供给每个核心使用的极高速存储。 共享内存(…...

Linux Centos 7网络配置
本步骤基于Centos 7,使用的虚拟机是VMware Workstation Pro,最终可实现虚拟机与外网互通。如为其他发行版本的linux,可能会有差异。 1、检查外网访问状态 ping www.baidu.com 2、查看网卡配置信息 ip addr 3、配置网卡 cd /etc/sysconfig…...

第三天旅游线路规划
第三天:从贾登峪到禾木风景区,晚上住宿贾登峪; 从贾登峪到禾木风景区入口: 1、行程安排 根据上面的耗时情况,规划一天的行程安排如下: 1)早上9:00起床,吃完早饭&#…...

C++第四十七弹---深入理解异常机制:try, catch, throw全面解析
✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1.C语言传统的处理错误的方式 2.C异常概念 3. 异常的使用 3.1 异常的抛出和捕获 3.2 异常的重新抛出 3.3 异常安全 3.4 异常规范 4.自定义…...

go 和 java 技术选型思考
背景: go和java我这边自身都在使用,感受比较深,java使用了有7年多,go也就是今年开始的,公司需要所以就学了使用,发现这两个语言都很好,需要根据场景选择,我写下我这边的看法。 关于…...

传统CV算法——边缘算子与图像金字塔算法介绍
边缘算子 图像梯度算子 - Sobel Sobel算子是一种用于边缘检测的图像梯度算子,它通过计算图像亮度的空间梯度来突出显示图像中的边缘。Sobel算子主要识别图像中亮度变化快的区域,这些区域通常对应于边缘。它是通过对图像进行水平和垂直方向的差分运算来…...

图像去噪算法性能比较与分析
在数字图像处理领域,去噪是一个重要且常见的任务。本文将介绍一种实验,通过MATLAB实现多种去噪算法,并比较它们的性能。实验中使用了包括中值滤波(MF)、自适应加权中值滤波(ACWMF)、差分同态算法…...