区块链和机器学习交集密切,但在去中心化推理中,平衡成本和信任是关键挑战。

原文:Don’t Trust, Verify: An Overview of Decentralized Inference

作者:Haseeb Qureshi

编译:白话区块链

封面:Photo by Shubham Dhage on Unsplash

image.png

如果你想要运行类似 Llama2-70B 这样的大型语言模型。这种庞大的模型需要超过 140GB 的内存,这就意味着你无法在家用机器上直接运行原始模型。那么你有什么选择呢?你可能会转向云服务提供商,但你可能不太愿意信任一个单一的集中式公司来为你处理这个工作负载,并收集你的所有使用数据。所以,你需要的是去中心化推理,它能让你在不依赖于任何单一提供商的情况下运行机器学习模型。

1、信任问题

在一个去中心化的网络中,仅仅运行模型并信任输出是不够的。假设我让网络使用 Llama2-70B 来分析一个治理困境。我怎么知道它实际上没有使用 Llama2-13B,给我更糟糕的分析,并将差异收入囊中呢?

在中心化世界中,你可能会相信像 OpenAI 这样的公司是诚实的,因为它们的声誉受到了威胁(而且在某种程度上,LLM 的质量是不言而喻的)。但在去中心化的世界中,诚实并不是默认的——它需要验证。

这就是可验证推理发挥作用的地方。除了提供对查询的响应之外,您还要证明它在您要求的模型上正确运行了。但是如何做到呢?

天真的方法是将模型作为智能合约在链上运行。这肯定会保证输出是经过验证的,但这是非常不切实际的。GPT-3 用 12288 的嵌入维度表示单词。如果您在链上进行这样大小的单次矩阵乘法,根据当前的 gas 价格,它将耗费约 100 亿美元——计算将连续填充每个区块约一个月的时间。

所以,不行,我们需要一个不同的方法。

观察了这个领域之后,我清楚地看到,有三种主要方法出现来解决可验证推理的问题:零知识证明、乐观欺诈证明和密码经济学。每种方法都有其自身的安全性和成本影响。

image.png

2、零知识证明(ZK ML)

想象一下,你能够证明你运行了一个庞大的模型,但无论模型有多大,这个证明的大小都是固定的。这就是 ZK ML 承诺的,通过 ZK-SNARKs 的神奇之处实现。

虽然在原理上听起来很优雅,但将深度神经网络编译成零知识电路,然后进行证明是非常困难的。而且这是非常昂贵的——最低成本可能是推理成本增加 1000 倍,延迟增加 1000 倍(生成证明的时间),更不用说在任何这些事情发生之前,将模型本身编译成电路了。最终,这种成本必须转嫁给用户,所以这对最终用户来说会非常昂贵。

另一方面,这是唯一一种在密码学上保证正确性的方法。使用 ZK,无论模型提供者如何努力,都不能作弊。但这样做成本巨大,这使得这种方法在可预见的未来对于大型模型来说不切实际。

示例:EZKL、Modulus Labs、Giza

3、乐观欺诈证明(Optimistic ML)

乐观的方法是信任,但要进行验证。我们假设推理是正确的,除非证明相反。如果某个节点试图作弊,“观察者” 在网络中可以指出作弊者,并使用欺诈证明来挑战他们。这些观察者必须始终在链上观察,并在自己的模型上重新运行推理,以确保输出是正确的。

这些欺诈证明是 Truebit 风格的交互式挑战-响应游戏,在链上重复对模型执行轨迹进行二分,直到找到错误为止。

image.png

如果这种情况真的发生了,那也将是非常昂贵的,因为这些程序庞大而内部状态巨大——单个 GPT-3 推理成本约为 1 petaflop(10¹⁵ 浮点运算)。但是博弈论表明,这几乎不会发生(欺诈证明也因为代码几乎从不在生产中被触发而臭名昭著地难以编写正确)。

乐观 ML  的优势在于只要有一个诚实的观察者在关注,就是安全的。成本比 ZK ML 便宜,但请记住,网络中的每个观察者都在重新运行每个查询。在均衡状态下,这意味着如果有 10 个观察者,安全成本必须转嫁给用户,因此他们将不得不支付比推理成本更多的费用(或者观察者的数量)。

与乐观 Rollups 一样,不利之处在于你必须等待挑战期过去,才能确保响应被验证。不过,这取决于网络参数化的方式,你可能只需要等待几分钟而不是几天。

示例:Ora、Gensyn(尽管当前尚未具体说明)。

4、加密经济学(Cryptoeconomic ML)

在这里,我们放弃所有花哨的技术,采取简单的方法:权益加权投票。用户决定有多少节点应该运行他们的查询,它们各自透露其响应,如果响应之间存在差异,那么异常的那个将被扣除权益。标准的预言机内容——这是一种更直接的方法,让用户设置他们所需的安全级别,平衡成本和信任。如果 Chainlink 做机器学习,这就是他们的做法。

这里没有什么延迟很快——你只需要从每个节点获得一次提交和揭示。如果这些记录被写入区块链,那么技术上可以在两个区块内完成。

然而,安全性是最弱的。如果多数节点足够狡猾,它们可能会合谋。作为用户,你必须考虑这些节点所承担的风险以及作弊所需的成本。话虽如此,使用像 Eigenlayer 重新抵押和可归属安全性这样的东西,网络在安全失败的情况下可以有效地提供保险。

但这个系统的好处是用户可以指定他们想要多少安全性。他们可以选择在他们的选区中有 3 个节点或 5 个节点,或者是网络中的每个节点——或者,如果他们想要冒险,他们甚至可以选择 n=1。这里的成本函数很简单:用户为他们想要的节点数付费。如果你选择了 3 个,你就要支付 3 倍的推理成本。

这里的棘手问题是:你能让 n=1 安全吗?在一个简单的实现中,如果没有人检查,一个孤立的节点应该每次都会作弊。但我怀疑,如果你加密查询并通过意图进行支付,你可能能够模糊节点的视线,让他们认为他们实际上是唯一回应这个任务的人。在这种情况下,你可能能够让普通用户支付的费用不到 2 倍的推理成本。

最终,加密经济学方法是最简单、最容易、可能也是最便宜的,但原则上是最不吸引人和最不安全的。但一如既往,细节决定成败。

示例:Ritual(尽管目前说明不足)、Atoma Network

5、为什么可验证的机器学习这么难

你可能会想知道为什么我们还没有这一切?毕竟,归根结底,机器学习模型只是非常大的计算机程序。证明程序是否被正确执行长期以来一直是区块链的基础。

这就是为什么这三种验证方法与区块链保护其区块空间的方式如此相似——ZK Rollups 使用 ZK 证明,OP Rollups 使用欺诈证明,而大多数 L1 区块链使用加密经济学。毫不奇怪,我们最终得到了基本相同的解决方案。那么,应用到机器学习时,是什么使这一过程变得困难呢?

机器学习独特之处在于,机器学习计算通常被表示为密集的计算图,旨在在GPU上高效运行。它们并不是设计来进行证明的。因此,如果你想在ZK或 OP 的环境中证明机器学习计算,它们必须以使此成为可能的格式重新编译——这非常复杂且昂贵。

image.png

ML中的第二个基本困难是非确定性,程序验证假设程序的输出是确定性的。但是,如果你在不同的 GPU 架构或 CUDA 版本上运行相同的模型,你会得到不同的输出。即使你强制每个节点使用相同的架构,你仍然会遇到算法中使用的随机性问题(扩散模型中的噪声,或 LLM 中的令牌抽样)。你可以通过控制随机数发生器的种子来固定随机性。但即使有了这一切,你仍然面临着最后一个令人头疼的问题:浮点运算中固有的非确定性。

GPU中几乎所有的操作都是基于浮点数的。浮点数很挑剔,因为它们不是可交换的——也就是说,对于浮点数来说,(a + b) + c 不总是等同于 a + (b + c)。由于 GPU 高度并行化,每次执行时加法或乘法的顺序可能不同,这可能导致输出的微小差异。鉴于单词的离散性,这不太可能影响 LLM 的输出,但对于图像模型来说,可能会导致像素值略有不同,从而使两幅图像无法完全匹配。

这意味着你要么需要避免使用浮点数,这将极大地影响性能,要么你需要允许在比较输出时有些放松。无论哪种方式,细节都很繁琐,你不能将它们简单地抽象掉。(这就是为什么 EVM 不支持浮点数的原因,尽管一些区块链像 NEAR 支持浮点数。)

简而言之,去中心化的推理网络很难,因为所有细节都很重要,而现实中却有大量的细节。

6、总结

总的来说,目前区块链和机器学习显然有很多交集,一个是创造信任的技术,另一个是急需信任的技术。虽然每种去中心化推理方法都有其自身的权衡,但我对看到创业者如何利用这些工具来构建最佳网络非常感兴趣。

注:本文代表作者的主观观点,不代表 Dragonfly 或其关联公司的观点。Dragonfly 管理的基金可能已经投资了本文提到的某些协议和加密货币。本文不构成投资建议,不应作为任何投资的依据,也不应被用来评估任何投资的优点。

免责声明:作为区块链信息平台,本站所发布文章仅代表作者及嘉宾个人观点,与 Web3Caff 立场无关。文章内的信息仅供参考,均不构成任何投资建议及要约,并请您遵守所在国家或地区的相关法律法规。