zkML:zk+机器学习 新兴项目和基础设施

作者:Justin McAfee,1kx研究分析师;翻译:金色财经xiaozou

通过zkSNARKs证明机器学习(ML)模型推理将成为这个十年智能合约发展最重要的进步之一。这一发展开辟了一个令人兴奋的广阔设计空间,允许应用程序和基础设施发展成更复杂智能的系统。

通过添加机器学习功能,智能合约可以变得更加自主和动态,允许它们基于实时链上数据做出决策,而不仅仅囿于静态规则。智能合约将更加灵活,可适应各种场景,包括那些合约初建时可能没有预料到的场景。简而言之,机器学习功能使我们置于链上的任何智能合约更加自动化、准确、高效和灵活。

从很多方面来看,鉴于机器学习在web3之外的大多数应用程序中的突出地位,智能合约没有使用嵌入式ML模型着实令人惊讶。之所以不使用ML,主要是因为链上运行这些模型的计算成本太高。例如,FastBERT是一种计算优化的语言模型,使用约1800 MFLOPS(百万浮点运算),直接在EVM上运行是行不通的。

在考虑链上ML模型的应用时,重点关注的是推理阶段:应用模型对现实世界的数据进行预测。为了拥有ML规模的智能合约,合约必须能够ingest(摄取)这类预测数据,但正如前面提到的,直接在EVM上运行ML模型是不可行的。zkSNARK给我们提供了一个解决方案:任何人都可以在链下运行一个模型,并生成一个简洁且可验证的证明,证明预期模型确实产生了特定的结果。这个证明可以在链上发布,并被智能合约摄取,让合约更加智能。

本文,我们将:

· 研究链上ML的潜在应用和用例;

· 探索zkML相关的新兴项目和基础设施建设;

· 讨论现有实现面临的一些挑战,以及zkML的未来。

1、快速了解ML

机器学习(ML)是人工智能(AI)下面的一个领域,专注于开发算法和统计模型,使计算机能够基于数据学习并做出预测或决策。ML模型通常有三个主要组成部分:

· 训练数据:即一组输入数据,用于训练机器学习算法进行预测或对新数据分类。训练数据可以有多种形式,例如图像、文本、音频、数字数据或以上这些数据的组合。

· 模型架构:即某个机器学习模型的整体结构或设计。它定义了层的类型和数量、激活函数以及节点或神经元之间的连接。架构的选择取决于具体问题和所使用的数据。

· 模型参数:即模型在训练过程中学习的值或权重,以进行预测。这些值经过优化算法迭代调整,以最小化预测结果与实际结果之间的误差。

模型的生成和部署分为两个阶段:

· 训练阶段:在训练阶段,模型暴露于标注数据集,并调整其参数以最小化预测结果与实际结果之间的误差。训练过程通常涉及若干迭代或epoch,模型的准确性会在单独的验证集上进行评估。

· 推理阶段:推理阶段是指使用经过训练的机器学习模型对新的、未见过的数据进行预测。该模型接收输入数据,并应用学习到的参数来生成输出数据,例如分类或回归预测。

zkML目前主要关注ML模型的推理阶段,而不是训练阶段,这主要是碍于验证在线训练的计算复杂性。zkML对验证推理的关注并非是限制因素:我们期望从推理阶段中可以产生出一些非常有趣的用例和应用程序。

2、验证推理场景

验证推理有四种可能的场景:

· 私有输入,公共模型。模型消费者(MC)可能想对其输入保密,不希望模型提供者(MP)知道。例如,MC可能希望在不披露个人财务信息的情况下向贷款人证明信用评分模型的结果。这可以通过使用预承诺方案并在本地运行模型来实现。

· 公共输入,私有模型。ML-as-a-Service(ML即服务)的一个常见问题是,MP可能希望隐藏他们的参数或权重以保护自己的IP,而MC希望验证生成的推论确实来自于对抗设置中的指定模型。可以这样考虑:MP在向MC提供推论时,有动机运行更轻型的模型以节省成本。使用链上模型权重承诺,MC可以随时审计私有模型。

· 私有输入,私有模型。当用于推理的数据高度敏感或高度机密,并且模型隐藏自身以保护IP时,就会出现这种情况。举个关于这方面的例子:使用私有患者信息审计医疗保健模型。零知识证明(ZK)的复合技术或多方计算(MPC)的使用或FHE(全同态加密)的变体可用于服务于此场景。

· 公共输入,公共模型。当模型的各方面都可以公开时,zkML将服务于一个不同用例:压缩并验证链下计算,以适应链上环境。对于较大的模型,验证推理的简洁的ZK证明比重新运行模型本身更具成本效益。

3、应用及机会

经过验证的ML推理为智能合约开启了新的设计空间。下面来看一些加密原生应用:

(1)DeFi

· 可验证的链下ML预言机。继续采用生成式AI可能有助于推动行业为内容实施签名方案。签名数据可随时应用于ZK,使数据具有可组合性且可信。ML模型可以对签名数据进行链下处理以进行预测和分类(例如,对选举结果或天气事件进行分类)。这些链下ML预言机可以通过验证推理并在链上发布证明,以无需信任的方式解决现实世界的预测市场、保险协议合约等问题。

· ML参数化的DeFi应用。DeFi有很多方面可以更加自动化。例如,借贷协议可以使用ML模型实时更新参数。今天的借贷协议主要信任由组织运行的链下模型来进行抵押品事宜、LTV、清算门槛等相关决策,但社区训练的开源模型可能是更好的替代方案,这类模型可以由任何人运行和验证。

· 自动交易策略。展示财务模型策略的回报状况的一种常见方法是,MP向投资者提供各种回测。然而,在执行交易时,是没有办法验证策略是否遵循了模型的——投资者必须相信策略确实遵循了模型。zkML提供了一个解决方案,MP可以在进行特定位置部署时提供财务模型推理证明。这对于DeFi管理的金库来说特别有用。

(2)安全性

· 智能合约的欺诈监控。ML模型可以用来检测潜在的恶意行为并暂停合约,而不依靠缓慢的人工治理或中心化主体来控制是否暂停合约。

(3)传统ML

· Kaggle的去中心化、无需信任的实现。可以创建这样一个协议或市场,允许MC或其他相关方在MP不披露模型权重的情况下验证模型的准确性。这对于模型销售、模型准确性竞争等会很有用。

· 生成式AI的去中心化prompt(提示)市场。生成式AI的prompt创建已经演变成一种复杂的工艺,最好的prompt输出通常包含许多modifier修饰符。外部各方可能愿意从创建者那里购买这些复杂的prompt。zkML可以在这里发挥两方面作用:1)验证prompt输出,以向潜在购买者确保prompt确实创建了所需的图像;2)允许prompt所有者在prompt被购买后仍然保有prompt的所有权,对购买者匿名的同时仍然为他们生成经过验证的图像。

(5)身份验证

· 用保护隐私的生物识别身份验证取代私钥。私钥管理仍然是web3用户体验最大的摩擦之一。通过面部识别或其他独特因素提取私钥是zkML的一种可能的解决方案。

· 公平的空投和贡献者奖励。ML模型可用于创建详细的用户角色,以根据多种因素确定空投分配或贡献奖励。当与身份解决方案结合使用时,这种功能会特别强大。在这种情况下,有种可能性是让用户运行一个开源模型来评估他们在应用程序中的参与度,以及更高层的生态参与度(比如治理论坛帖子),以推断他们的分配额度。然后,他们向合约提供此证明以接收代币分配。

(6)Web3社交

· web3社交媒体过滤功能。web3社交应用程序的去中心化性质将导致更多的垃圾邮件和恶意内容。理想情况下,社交媒体平台可以使用社区同意的开源ML模型,并在选择过滤帖子时发布模型推理的证明。

· 广告/推荐。作为一个社交媒体用户,我可能愿意看到个性化的广告,但希望对广告商保密我的偏好和兴趣。我可以选择根据我的喜好在本地运行一个模型,该模型向媒体应用程序提供信息,然后展示我想要的内容。在这种情况下,广告商可能愿意为终端用户付费,但这些模型可能远没有当前的目标广告模型那么复杂。

(7)创作者经济/游戏

· 游戏内经济再平衡。ML模型可用于动态调整代币的发行、供应、销毁、投票阈值等。一种可能的模式是,如果达到一定的再平衡阈值,并且推理证明得到验证,那么合约就可能受激励以重新平衡游戏内经济。

· 新型链上游戏。可以创建人类对抗AI的合作游戏和其他创新的链上游戏,此时无需信任的AI模型充当非玩家(NPC)角色。NPC采取的每一个行动都会被发布到链上,并带有一个证明,任何人都可以验证该证明以确定运行模型的正确性。在Modulus Labs的Leela vs. the World案例中,验证者希望确保正在下棋的是1900 ELO AI,而非棋手Magnus Carlson。另一个例子是AI Arena,这是一款Super Smash Brothers风格的AI战斗游戏。高风险竞争环境中的玩家希望确保他们训练的模型不受干扰或者不会出现作弊行为。

4、新兴项目和基础设施

zkML的生态系统可以大致分为四大类:

· Model-to-Proof Compilers(模型到证明编译器):将模型从现有格式(例如Pytorch、ONNX等)编译成可验证计算电路的基础设施。

· 通用证明系统:用来验证任意计算轨迹的证明系统。

· 特定zkML证明系统:专门用于验证ML模型的计算轨迹的证明系统。

· 应用程序:处理独特zkML用例的项目。

S2YIWGzwQ9XqG2AvN9s18TPzyfFEXvVGWOpdoqjs.png

(1)Model-to-Proof Compilers(模型到证明编译器)

在研究zkML生态系统时,大多数注意力都集中在模型到证明编译器上。通常,这些编译器会将使用Pytorch、Tensorflow或类似语言编写的高级ML模型转换为ZK电路。

EZKL是一个库和命令行工具,用于在zk-SNARK中对深度学习模型进行推理。使用EZKL,你可以在Pytorch或TensorFlow中定义计算图,将其导出为ONNX文件,一些样本输入包含在JSON文件中,并将EZKL指向这些文件以生成zkSNARK电路。随着最新的性能改进,EZKL现在可以在大约6秒内占用1.1GB RAM证明一个MNIST大小的模型。到目前为止,EZKL已经有一些重要的早期采用,被用作各种黑客马拉松项目的基础设施。

Cathy So的circomlib-ml库包含Circom的各种ML电路模板。电路包含一些最常见的ML功能。同样由Cathie开发的Keras2circom是一个python工具,它使用底层circomlib-ml库将Keras模型转换为Circom电路。

LinearA为zkML开发了两个框架:Tachikoma和Uchikoma。Tachikoma用于将神经网络转换为纯整数形式并生成计算轨迹。Uchikoma是一个将TVM的中间表示转换为不支持浮点运算的编程语言的工具。LinearA计划支持Circom和Solidity,前者使用域算法,后者使用有符号和无符号整数算法。

Daniel Kang的zkml是一个用于在ZK-SNARKs中构建ML模型执行证明的框架。在撰写本文时,它能够证明一个使用大约5GB内存运行约16秒的MNIST电路。

更通用的模型到证明编译器还有Nil FoundationRisc Zero。Nil Foundation的zkLLVM是一个基于LLVM的电路编译器,能够验证使用流行编程语言(如C++、Rust和JavaScript/TypeScript等)编写的计算模型。与本文提到的其他一些模型到证明编译器相比,它是通用的基础设施,但仍然适用于像zkML这样的复杂计算。当与证明市场相结合时,该功能将格外强大。

Risc Zero面向RISC-V开原指令集构建了一个通用的zkVM,因此支持现有的成熟语言,如C++和Rust,以及LLVM工具链。这将支持主机和客户端zkVM代码之间的无缝集成,类似于Nvidia的CUDA C++工具链,但使用了ZKP引擎代替GPU。与Nil类似,可以使用Risc Zero来验证ML模型的计算轨迹。

(2)通用证明系统

证明系统的改进是zkML实现的主要推动力,特别是custom gates(自定义门)和lookup tables(查找表)的引入。这主要是由于ML对非线性的依赖。简而言之,非线性是通过激活函数(例如ReLU、sigmoid和tanh)引入的,这些函数应用于神经网络内线性变换的输出。由于受数学运算门的限制,在ZK电路中这些非线性实现是有难度的。Bitwise decomposition(逐位分解)和lookup tables(查找表)可以通过将非线性的可能结果预先计算到查找表中来帮助解决这个问题,有趣的是,这在ZK中计算效率更高。

由于这个原因,Plonkish证明系统往往是zkML最流行的后端。Halo2和Plonky2的table-style(表式)算法方案可以通过lookup参数很好地处理神经网络非线性。此外,Halo2有一个充满活力的开发者工具生态系统,再加上它非常灵活,使其成为包括EZKL在内的很多项目名副其实的后端支柱。

其他证明系统也有自己的优点。基于R1CS的证明系统包括用于小型证明的Groth16和处理超大电路和线性时间证明器的Gemini。如Winterfell证明者/验证者库这样的基于STARK的系统也非常有用,特别是当通过Giza的工具实现时,Giza工具将Cairo程序的轨迹作为输入值,并使用Winterfell生成STARK证明来证明输出值的正确性。

(3)特定zkML证明系统

在有效的证明系统设计方面已经取得了一些进展,这些系统可以处理复杂的、电路不友好的高级ML模型操作。Modulus Labs的基准报告证明,像zkCNN这样基于GKR证明系统的系统,或者像Zator这样使用复合技术的系统,通常比通用的同类系统性能更高。

zkCNN是一种使用零知识证明来证明卷积神经网络(convolutional neural networks)正确性的方法。它使用sumcheck协议来证明快速傅里叶(Fourier)变换和卷积,其线性证明时间比渐近计算结果更快。交互式证明引入了若干改进和通则,包括验证卷积层、ReLU激活函数和最大池化。zkCNN特别有趣,因为Modulus Labs的基准报告发现,zkCNN在证明生成速度和RAM消耗方面都优于其他通用证明系统。

Zator是一个旨在探索使用递归SNARKs来验证深度神经网络的项目。目前验证深层模型的约束条件是将整个计算轨迹拟合到单个电路中。Zator提出使用递归SNARKs一次验证一层,可以渐进增量验证N步重复计算。他们使用Nova将N个计算实例缩减到一个实例中,这个实例可以通过单个步骤进行验证。通过这种方法,Zator能够snark一个具有512层的网络,这与当今大多数生产式AI模型一样深。对于主流用例来说,Zator的证明生成和验证时间仍然太长,但是其复合技术还是很有趣的。

(4)应用程序

鉴于zkML仍处于早期阶段,它将大部分重心都放在了上述基础设施方面。然而,目前有一些项目正在进行应用开发。

Modulus Labs是zkML领域中最多样化的项目之一,致力于应用范例和相关研究。在应用方面,Modulus Labs通过RockyBot(链上交易机器人)和Leela vs. the World(一种国际象棋游戏,所有人与经验证的Leela国际象棋引擎实例对决)展示了zkML的用例。该团队还涉足研究领域,撰写了The Cost of Intelligence(智能的成本)一文,对不同大小模型的各种验证系统的速度和效率进行了基准测试。

Worldcoin正在应用zkML,试图建立一个保护隐私的人格证明协议。Worldcoin正在使用定制硬件来处理高分辨率虹膜扫描,这些扫描被插入到他们的Semaphore实现中。然后,可用于执行有用的操作,如成员资格认证和投票。他们目前使用具有安全enclave的可信运行环境来验证摄像头签名的虹膜扫描,但他们最终的目标是使用ZKP来证明神经网络对加密级别安全保障的正确推理。

Giza是一种可以以一种完全无需信任的方法在链上部署AI模型的协议。它使用的技术栈包括用于表示机器学习模型的ONNX格式,用于将这些模型转换为Cairo程序格式的Giza Transpiler,用于以可验证和确定性的方式执行模型的ONNX Cairo Runtime,以及用于部署和执行链上模型的Giza Model智能合约。虽然Giza也可以属于模型到证明的编译器类别,但它们定位为ML模型市场是当今更有趣的应用之一。

Gensyn是一个去中心化硬件供应网络,用于训练ML模型。具体来说,他们正在设计一个基于梯度下降算法的概率审计系统,并使用模型检查点使去中心化的GPU网络能够为大规模模型训练提供服务。虽然他们的zkML应用明显特定于自身用例——他们希望确保当节点下载和训练模型的一部分时,他们对模型的更新是诚实的——但却展示了ZK和ML结合的强大功能。

ZKaptcha专注于web3的bot问题,为智能合约提供captcha(验证码)服务。它们目前的实现是让终端用户通过完成captcha来生成人类工作的证明,captcha由链上验证者验证,并通过几行代码由智能合约访问。今天,它们主要只依赖于ZK,但计划在未来实现zkML,类似于现有的web2 captcha服务,分析鼠标移动等行为,以确定用户是否是人类。

zkML市场仍处于相当早期的阶段,但很多应用程序已经进行了黑客马拉松级别的试验。这些项目包括AI Coliseum(一个使用ZK证明来验证机器学习输出的链上AI竞赛)、Hunter z Hunter(一个使用EZKL库来验证带有halo2电路的图像分类模型输出的照片寻宝游戏),以及zk Section 9(它将AI图像生成模型转换为用于铸造和验证AI艺术的电路)。

5zkML面临的挑战

虽然zkML正在以光速进行改进和优化,但该领域仍然存在一些核心挑战。这些挑战涉及到技术和实践方面,具体如下:

· 高精度的量化

· 电路的大小(特别是多层网络)

· 矩阵乘法的有效证明

· 对抗攻击

量化是将大多数ML模型用来表示模型参数和激活函数的浮点数表示为定点数的过程,这在处理ZK电路的域算法时是必不可少的。量化对机器学习模型精度的影响取决于所使用的精度水平。通常,使用较低的精度(即更少的bits)会导致准确性降低,因为它会应用四舍五入和近似误差。然而,有几种技术可以用来最小化量化对准确性的影响,例如在量化之后微调模型,以及使用量化感知训练等技术。此外,zkSummit 9上的一个黑客马拉松项目Zero Gravity已表明,为边缘设备开发的替代神经网络架构(如无权重神经网络)可用于避免电路量化的问题。

除了量化,硬件是另一个关键挑战。一旦机器学习模型通过电路进行了正确表示,由于ZK的简洁性,验证其推论的证明既便宜又快速。这里的挑战不在于验证者,而是在于证明者,因为随着模型越来越大,RAM消耗和证明生成时间会迅速增加。某些证明系统(例如使用sumcheck协议和分层算法电路的基于GKR的系统)或复合技术(例如wrapping Plonky2,它有高效的证明时间,但在较大模型的有效证明大小方面表现很差,使用Groth16,它不会随着模型的复杂性加大而增加证明大小)更适合处理这些问题,但是管理权衡是构建zkML项目的核心挑战。

在对抗方面,还有工作要做。首先,如果一个无需信任的协议或DAO选择实现一个模型,在训练阶段仍然存在对抗攻击的风险(例如,训练一个模型在看到一个可用于操纵后续推理的输入时表现出特定的行为方式)。联邦学习(federated learning)技术和训练阶段zkML可能是最小化这种攻击面的一种方法。

另一个核心挑战是,当一个模型属于隐私保护模型时,存在模型窃取攻击的风险。虽然模型的权重可以被混淆,但理论上仍可以在有足够的输入-输出对的情况下对权重进行反向工程。虽然这种风险主要针对小型模型,但风险就是风险。

6、扩展智能合约

尽管优化这些模型以符合ZK运行条件还存在着这样那样的挑战,但优化改进正在以指数级的速度进行,有人预计,假设在进一步的硬件加速条件下,我们将很快扩展更广泛的机器学习领域。zkML已经从2021年0xPARC的zk-MNIST演示(展示了如何在可验证的电路中执行小型MNIST图像分类模型),发展到Daniel Kang在不到一年后对ImageNet-scale模型做了同样的验证。2022年4月,ImageNet-scale模型的准确率从79%进一步提高到92%,尽管目前的验证时间较慢,但像GPT-2这样大的网络在短期内是可行的。

我们认为zkML是一个丰富且不断发展的生态系统,它希望扩展区块链和智能合约的功能,使其更加灵活、适应性更强、更加智能。

虽然zkML仍处于早期开发阶段,但它已经开始显示出光明前景。随着技术的发展和成熟,我们有望看到出现更多链上zkML的创新用例。

如有疑问联系邮箱:微信:ETH_88889
*本文转载自网络转载,版权归原作者所有。本站只是转载分享,不代表赞同其中观点。请自行判断风险,本文不构成投资建议。*