paint-brush
以太坊和以太坊 Swarm 上的集体人工智能概念经过@thebojda
609 讀數
609 讀數

以太坊和以太坊 Swarm 上的集体人工智能概念

经过 Laszlo Fazekas11m2024/07/15
Read on Terminal Reader

太長; 讀書

我相信,未来人工智能将成为我们日常生活的一部分,比现在更加不可或缺。人工智能将成为我们的一部分!我们将不再使用手机,而是戴上智能眼镜,眼镜上装有可以记录一切的摄像头和可以听到一切的麦克风。我们将与本地运行的语言模型和其他代理进行持续对话,这些代理将通过微调随着时间的推移适应我们的需求。但这些代理不仅会与我们交流,还会相互交流,不断利用整个社区产生的集体知识。这个系统将把人类组织成一种集体智慧的形式,这是一件非常重要的事情。这种集体智慧不能成为单个公司或实体的财产。这就是为什么我们需要上述系统或类似的系统!
featured image - 以太坊和以太坊 Swarm 上的集体人工智能概念
Laszlo Fazekas HackerNoon profile picture

目前,人工智能领域的主要参与者可以分为两大类:开源人工智能的支持者和封闭人工智能的支持者。


有趣的是,封闭式人工智能的最大支持者之一就是 OpenAI 本身,它不发布其模型的源代码,只提供对它们的访问。他们通常认为发布这些模型太危险了,因此需要集中控制,就像核能一样。显然,这种说法是有依据的,但不难看出这一决定背后的商业利益。如果 ChatGPT 的源代码对每个人都开放,谁会为这项服务付费呢?!


相反,开源 AI 的支持者,比如 Meta(Facebook),认为封闭式 AI 阻碍了进步,开源 AI 才是正确的方向。当然,这里面的商业因素也值得一看。对于 Meta 来说,AI 模型并不是主要产品。对他们来说,AI 只是一种工具,分享模型并不会带来商业劣势。相反,它带来了商业优势,因为 Meta 以后可以利用社区的成果。然而,这种模式也有一个小问题。它并不是真正的开源。


人工智能模型本质上是一个巨大的数学方程,具有可调参数。这些参数是在训练过程中设置的。每当一家公司谈到开源人工智能时,就意味着这些参数是可以自由访问的,这样任何人都可以在他们的机器上运行该模型。但它并不是完全开源的!


对于人工智能来说,训练类似于传统程序中的构建。在此基础上,模型参数代表二进制文件。因此,当 Meta、X(Twitter)或其他公司开放其模型源代码时,他们实际上只是在免费提供结果。


因此,我们得到的是固定架构的参数化。如果我们想改变或改进架构中的任何内容,例如使用 Mamba 架构而不是 Transformer 架构,我们需要重新训练模型,而这离不开训练集。因此,这些模型只能进行微调,而不能进一步开发。


所谓的开源模型并不是真正的开源,因为架构是固定的。这些模型只能进行微调,而不能进一步开发,因为那也需要训练集。真正的开源人工智能由模型和训练集组成!


“开源”人工智能模型通常是大公司的产品。这是可以理解的,因为训练一个大型模型需要大量的计算能力,因此需要大量的资金。只有大公司才有这样的资源,这就是人工智能开发集中化的原因。


正如比特币形式的区块链技术创造了去中心化货币的可能性一样,它也使我们能够创建真正由社区而非公司拥有的开源人工智能。


本文提出了如何使用区块链技术开发真正开源、社区驱动的人工智能的概念。


正如我之前提到的,真正开源的 AI 的基础是开放的数据集。数据集实际上是最宝贵的资源。以 ChatGPT 为例,语言模型是在公开可用的数据库(例如 Common Crawl)上进行训练的,然后在后续阶段通过人工协助(RLHF)进行微调。由于涉及人力,这种微调成本极高,但这正是 ChatGPT 的优势所在。架构本身(大概)是一个通用转换器或其修改版本,即 Mixture of Experts,这意味着多个并行转换器。关键点在于架构并不特殊。ChatGPT(以及所有其他模型)的独特之处在于良好的数据集。这就是模型强大的原因。


人工智能训练数据集通常有几 TB 大小,而这种数据集中可以包含或不可以包含的内容会因群体和文化而异。数据的选择非常重要,因为它将决定大型语言模型的“个性”。由于大公司(谷歌、微软等)的人工智能模型表现出种族主义,爆发了几起重大丑闻。这是由于数据集选择不当造成的。由于对数据集的要求可能因文化而异,因此可能需要多个分叉。去中心化的内容寻址存储解决方案(如 IPFS 或以太坊 Swarm)非常适合存储这种版本化、多分叉的大型数据集。这些存储解决方案的工作原理类似于 GIT 版本控制系统,其中可以使用从内容生成的哈希来寻址单个文件。在这样的系统中,可以廉价地创建分叉,因为只需要存储更改,并且两个数据集的公共部分存储在单个实例中。


一旦我们有了适当的数据集,我们就可以继续训练模型。


正如介绍中提到的,AI模型本质上是一个巨大的数学方程,具有大量自由参数。通常,模型拥有的自由参数越多,它就越“智能”,因此参数数量通常在模型名称中指明。例如,llma-2-7b 模型表示模型架构为 llma-2,具有 70 亿个参数。在训练期间,使用数据集设置这些参数,以便模型为给定的输入提供指定的输出。反向传播用于训练,它借助偏导数找到最合适的参数。


在训练过程中,数据集被分成多个批次。在每个步骤中,给定的批次提供输入和输出参数,并使用反向传播来计算需要如何修改模型的参数才能从给定的输入准确计算出给定的输出。这个过程必须在给定的数据集上重复多次,直到模型达到所需的准确度。可以使用测试数据集检查准确度。


大型公司在大型 GPU 集群上进行训练,因为训练需要巨大的计算能力。在去中心化系统中,另一个挑战是单个节点不可靠,不可靠性总是有代价的!这种不可靠性就是比特币的能源消耗量与小国相当的原因。比特币使用工作量证明共识,其中计算能力取代可靠性。我们不再信任单个节点,而是相信网络中善意节点拥有比恶意节点更多的计算能力。幸运的是,还有其他共识机制,例如以太坊使用的权益证明,其中质押资金保证了我们的可靠性而不是计算能力。在这种情况下,不需要大的计算能力,从而显著降低能源需求和环境影响。


在去中心化训练中,需要某种机制来取代训练节点和请求者之间的信任。一种可能的解决方案是让训练节点创建整个训练过程的日志,第三方(验证者节点)在某些点随机检查日志。如果验证者节点发现训练令人满意,训练节点将收到提供的付款。验证者无法检查整个日志,因为这意味着重新进行所有计算,而验证的计算要求将等于训练的计算要求。


另一种选择是乐观解决方案,我们假设节点正确执行了计算,并提供一个挑战期,在此期间任何人都可以证明计算不正确。在这种情况下,执行计算的节点会押注更大的金额(惩罚),而请求计算的节点也会押注一定金额(奖励)。节点执行计算,然后发布结果。接下来是挑战期(例如 1 天)。如果有人在此期间通过随机检查发现计算中的错误并将其发布,他们将收到计算节点押注的惩罚,而请求者将获得他们的奖励。如果在挑战期内没有人能证明计算不正确,则计算节点将获得奖励。


零知识证明还有一种变体,称为 zkSNARK,它也适用于验证某人是否执行了计算。这种方法的主要优点是验证过程可以很便宜地完成,但生成证明是一项计算密集型任务。由于这种方法即使对于较简单的计算也非常昂贵,因此它需要的 AI 训练计算资源比训练本身多得多,因此我们目前可能无法将其用于此目的。尽管如此,zkML 是一个活跃的研究领域,可以想象,未来第三方可能会被验证 SNARK 的智能合约所取代。


从上面可以看出,验证计算的解决方案有很多种。基于这些,我们来看看如何构建基于区块链的去中心化培训支持系统。


在这个系统中,数据集通过 DAO 由社区拥有。DAO 决定哪些数据可以包含在数据集中。如果一组成员不同意该决定,他们可以脱离 DAO 并组建一个新的 DAO,在那里他们分叉现有数据集并继续独立构建它。因此,DAO 会与数据集一起分叉。由于数据集存储在内容寻址的去中心化存储(例如以太坊 Swarm)中,因此分叉并不昂贵。数据集的存储由社区资助。


训练过程也由 DAO 控制。通过 DAO,希望出售其闲置计算能力的训练节点可以注册。要申请,他们必须在智能合约中投入资金。如果节点在计算过程中试图作弊,它将失去这笔资金。


请求者选择他们想要训练的数据集和模型,然后提供奖励。奖励是公开的,因此任何训练节点都可以申请执行任务。训练节点会创建训练过程的完整日志,其中每个条目对应一个批次的训练。条目包括输入、输出、权重矩阵和所有相关参数(例如,dropout 层用于选择要丢弃的数据的随机种子)。因此,可以根据日志重现整个计算过程。


如前所述,可以使用多种方法来验证计算。最简单的方法是乐观方法。在这种情况下,请求者将奖励放在智能合约中,训练节点发布训练日志。发布后,可在指定的时间范围内(例如 1 天)验证计算。如果在此期间请求者或任何其他人提交了某个步骤不正确的证明,则训练节点将失去其质押,而请求者将获得奖励。在这种情况下,提交正确证明的节点将获得质押,从而激励每个人验证计算。如果没有人提交这样的证明,则训练节点将在时间到期后获得奖励。


简而言之,这就是系统的运作方式。当然,也会出现一些问题。

谁将支付训练和存储数据集的费用?

该系统的商业模式与大多数免费开源解决方案相同,例如 Linux 商业模式。如果一家公司需要一个模型,并且不介意它是免费和开源的,那么投资于此比训练自己的模型更具成本效益。想象一下,10 家公司需要相同的语言模型。如果他们不介意模型是开放的,那么每家公司支付 1/10 的培训费用比每家支付全额要经济得多。这同样适用于构成培训基础的数据集。甚至可以为训练模型创建众筹活动,让模型的未来用户可以为其开发做出贡献。


在云端训练模型不是更便宜吗?

由于这种系统中的价格受市场调节,因此很难给出明确的答案。这取决于用户可用的免费计算能力。我们已经看到了比特币社区的力量。比特币网络的计算能力超过了任何超级计算机。云提供商需要创造利润,而在像这样的去中心化系统中,用户提供他们的闲置计算能力。例如,拥有功能强大的游戏电脑的人可以在不玩游戏时提供他们的闲置容量。在这种情况下,如果服务产生的能源略多于使用的能量,那么对用户来说已经是值得的。此外,世界上有很多浪费的能源无法通过传统方式利用。火山产生的热能就是一个例子。这些地方通常没有建立电网,因此不适合产生可用电力。已经有初创公司使用这种能源进行比特币挖矿。为什么不用它来进行“情报挖掘”呢?由于这种情况下的能量几乎是免费的,因此只需支付硬件成本。因此,显然有许多因素可以使这种分散系统中的训练比在云端便宜得多。


那么推理又如何呢?

在运行 AI 模型的情况下,隐私是一个非常重要的问题。大型服务提供商自然会保证他们对我们的数据进行保密处理,但我们能确保没有人窃听我们与 ChatGPT 的对话吗?有一些方法(例如同态加密)允许服务器对加密数据执行计算,但这些方法的开销很高。最安全的解决方案是在本地运行模型。幸运的是,硬件越来越强大,已经有专门用于运行 AI 的硬件解决方案。模型本身也在显著改进。研究表明,在许多情况下,即使在量化之后,性能也不会下降太多,即使在仅使用 1.5 位来表示权重的极端情况下也是如此。后一种解决方案特别有前景,因为它消除了乘法,这是最昂贵的操作。因此,在未来,得益于模型和硬件的发展,我们很可能在本地运行超过人类水平的模型。此外,我们可以使用 LoRA 等解决方案根据自己的喜好定制这些模型。


分布式知识

另一个非常有前途的方向是检索增强生成 (RAG)。这意味着“词汇知识”存储在向量数据库中,我们的语言模型会从该数据库中收集给定问题的适当上下文。这与我们人类的功能非常相似。显然,没有人会记住整个词典。当被问到问题时,知道在哪里可以找到必要的知识就足够了。通过阅读和解释相关条目,我们可以提供连贯的答案。这种解决方案有许多优点。一方面,较小的模型就足够了,更容易在本地运行,另一方面,语言模型的一个主要问题幻觉可以最小化。此外,只需向向量数据库添加新知识,就可以轻松扩展模型的知识而无需重新训练。以太坊 Swarm 是创建这种向量数据库的理想解决方案,因为它不仅是一个去中心化的存储引擎,而且还是一个通信解决方案。例如,可以通过 Swarm 实现群组消息传递,从而创建一个简单的分布式向量数据库。该节点发布搜索查询,其他节点通过返回相关知识进行响应。


摘要:基于以太坊和 Swarm 的 LLM OS 实现

LLM OS 的想法源自 Andrej Karpathy,他在 Twitter 上发表了这一想法。LLM OS 是一个以大型语言模型为中心的假想操作系统。在我们基于区块链的分布式系统中,我们可以将其视为在用户节点上运行的代理。该代理可以与其他代理和传统软件 1.0 工具进行通信。这些可以包括计算器、Python 解释器,甚至可以控制物理机器人、汽车或智能家居。在我们的系统中,文件系统由 Swarm 和通过 Swarm 创建的矢量数据库表示,其中可以访问共同知识。整个系统(代理的集合)可以看作是一种集体智慧。

我相信,未来人工智能将成为我们日常生活的一部分,比现在更加不可或缺。人工智能将成为我们的一部分!我们将不再使用手机,而是戴上智能眼镜,眼镜上装有可以记录一切的摄像头和可以听到一切的麦克风。我们将与本地运行的语言模型和其他代理进行持续对话,这些代理将通过微调随着时间的推移适应我们的需求。但这些代理不仅会与我们交流,还会相互交流,不断利用整个社区产生的集体知识。这个系统将把人类组织成一种集体智慧的形式,这是一件非常重要的事情。这种集体智慧不能成为单个公司或实体的财产。这就是为什么我们需要上述系统或类似的系统!