币灵灵财经
首页 > 币圈新闻 > 文章正文

深入剖析ZKML赛道

币灵灵财经 2024-10-31 14:45 1492

通过 zkSNARKs 证明机器学习 (ML) 模型推理有望成为这十年智能合约最重要的进步之一。这一发展开辟了一个令人兴奋的大设计空间

通过添加 ML 功能,智能合约可以变得更加自主和动态,允许它们根据实时链上数据而不是静态规则做出决策。智能合约将是灵活的,可以适应各种场景,包括那些在最初创建合约时可能没有预料到的场景。简而言之,ML 功能将扩大我们放在链上的任何智能合约的自动化准确性效率和灵活性。ML 在 web3 之外的大多数应用程序中被广泛应用,在智能合约中的应用几乎是零。其主要是由于在链上运.这些模型的计算成本很高。例如,FastBERT 是一种计算优化语言模型,使用约 1800 MFLOPS这无法接在 EVM 上运行。链上 ML 模型的应用,主要关注的是推理阶段:应用模型对真实世界的数据进行预测。为了拥有 ML 规模的智能合约,合约必须能够摄取此类预测,但正如我们之前提到的,直接在 EVM 上运行模型是不可行的。zkSNARKs 为我们提供了一个解决方案:任何人都可以在链下运行一个模型,并生成一个简洁且可验证的证明,表明预期的模型确实产生了特定的结果。该证明可以在链上发布并由智能合约摄取以增强其智能。我们将:查看链上 ML 的潜在应用程序和用例.探索 zkML 核心的新兴项目和基础设施建设.讨论现有实现的一些挑战以及 zkML 的未来会是什么样子机器学习简介机器学习是人工智能的一个子领域,专注于开发能够让计算机从数据中学习并进行预测或决策的算法和统计模型。ML模型通常具有三个主要组成部分:训练数据:一组用于训练机器学习算法进行预测或对新数据进行分类的输入数据。训练数据可以采用多种形式,如图像、文本、音频、数值数据或其组合.模型架构:机器学习模型的整体结构或设计。它定义了层次结构、激活函数和节点或神经元之间的连接类型和数量。架构的选择取决于具体的问题和使用的数据。模型参数:模型在训练过程中学习的值或权重,用于进行预测。这些值通过优化算法进行迭代调整,以最小化预测结果与实际结果之间的误差。模型的生成和部署分为两个阶段:在训练阶段,模型会接触到一个带标签的数据集,并调整其参数以最小化预测结果与实际结果之间的误差。训练过程通常涉及多次迭代或周期,模型的准确性会在单独的验证集上进行评估2推理阶段:使用经过训练的机器学习模型对新的未见数据进行预测的阶段。模型接收输入数据,并应用学习到的参数生成输出,如分类或回归预测。目前zkML主要关注于机器学习模型的推理阶段,而不是训练阶段,主要是由于验证电路中训练的计算复杂性。然而对推理的关注并不是一种限制:我们预计将会产生一些非常有趣的用例和应用。

6创作者经济/游戏

新兴项目和基础设施

zkML生态系统可以广泛分为四个主要类别:

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

01模型验证编译器(Model-to-Proof Compilers)

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

Cathie 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是一个基于他在《Scaling up Trustless DNN Inference with Zero-Knowledge Proofs》论文中的工作构建的ML模型执行证明的框架。在撰写本文时,它能够在约5GB的内存和约16秒的运行时间内证明一个MNIST电路。

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

02广义证明系统

01zkML特定的证明系统

zkCNN是一种使用零知识证明来证明卷积神经网络正确性的方法。它使用sumcheck协议来证明快速傅里叶变换和卷积,具有线性的证明时间,比渐近计算结果更快。已经引入了几个改进和泛化的交互证明,包括验证卷积层、ReLU激活函数和最大池化。根据Modulus Labs的基准测试报告,zkCNN特别有趣的地方在于它在证明生成速度和RAM消耗方面优于其他通用证明系统。

Zator是一个旨在探索使用递归SNARK来验证深度神经网络的项目。验证更深层次模型的当前限制是将整个计算轨迹适应单个电路中。Zator提出使用递归SNARK逐层进行验证,可以逐步验证N步重复计算。他们使用Nova将N个计算实例减少为一个可以通过单个步骤进行验证的实例。采用这种方法,Zator能够对具有512层的网络进行SNARK,这与大多数当前的生产AI模型一样深。Zator的证明生成和验证时间仍然对于主流应用案例来说过长,但他们的组合技术仍然是非常有趣的。

应用领域

鉴于zkML处于早期阶段,其关注点主要集中在上述基础设施上。然而,目前也有一些项目致力于应用开发。

Modulus Labs是zkML领域中最多样化的项目之一,他们既开展示例应用,也从事相关研究。在应用方面,Modulus Labs通过RockyBot(一个链上交易机器人)和Leela vs. the World(一个人类与经过验证的链上Leela国际象棋引擎对战的棋盘游戏)展示了zkML的用例。该团队还进行了研究,编写了《智能的代价》,对不同模型规模下的各种证明系统的速度和效率进行了基准测试。

Worldcoin正在尝试应用zkML来创建一个保护隐私的人类身份证明协议。Worldcoin使用定制硬件处理高分辨率虹膜扫描,并将其插入到Semaphore实现中。然后可以使用该系统执行诸如成员资格证明和投票等有用操作。他们目前使用受信任的运行时环境和安全的安全区域来验证相机签名的虹膜扫描,但他们最终的目标是使用零知识证明来验证神经网络的正确推理,以提供加密级别的安全保证。

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

Gensyn是一个分布式硬件供应网络,用于训练ML模型。具体而言,他们正在开发一个基于梯度下降的概率审计系统,并使用模型检查点来使分散式GPU网络能够为全尺度模型提供训练服务。尽管他们在这里的zkML应用非常特定于他们的用例——他们希望确保当一个节点下载和训练模型的一部分时,他们对模型更新的诚实性——但它展示了将zk和ML相结合的强大力量。

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

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

zkML面临的挑战

量化是将浮点数表示为定点数的过程,大多数机器学习模型使用浮点数表示模型参数和激活函数,在处理zk电路的域算术时,需要使用定点数。量化对机器学习模型的准确性的影响取决于所使用的精度级别。一般来说,使用较低的精度(即较少的比特数)可能会导致准确性降低,因为这可能引入舍入和近似误差。然而,有几种技术可用于最小化量化对准确性的影响,例如在量化后对模型进行微调,以及使用量化感知训练等技术。此外,zkSummit 9上的一项黑客马拉松项目Zero Gravity显示出,针对边缘设备开发的替代神经网络架构(例如无权重神经网络)可以用于避免电路中的量化问题。

除了量化之外,硬件是另一个关键挑战。一旦通过电路正确地表示了机器学习模型,由于zk的简洁性,验证其推理的证明将变得廉价且快速。这里的挑战不在于验证者,而在于证明者,因为随着模型规模的增长,RAM消耗和证明生成时间会迅速增加。某些证明系统(例如使用sumcheck协议和分层算术电路的基于GKR的系统)或组合技术(例如将Plonky2与Groth16相结合,Plonky2在证明时间方面效率高但对于大型模型的高效证明大小较差,而Groth16在复杂模型的复杂度上不会导致证明大小增长)更适合处理这些问题,但在zkML项目中管理权衡是一个核心挑战。