ZKML 提供了一种解决方案,可以使用公共模型验证私有数据或使用公共数据验证私有模型。
ZK的趋势
- 隐私: 主要的项目: Semahpore, MACI, Penumbra, Aztec network;
- 扩展: Starknet, Scroll, Polygon, Zero, Polygon Miden, Polygon zkEVM, zkSync;
- 身份: 身份证明协议以创建加密证明: WorldID, Sismo, Clique, Axitom.
- 跨链桥: zkBridge, Telepathy
ZKML
ZKML 仍然是一项新兴技术,许多用例还有待探索, 用于实现计算完整性,隐私性,真实性,去中心化推理或计算。
模型到验证的编译器
在考察 zkML 生态系统时,大部分注意力都放在了创建模型到验证的编译器上。一般来说,这些编译器将用 Pytorch、Tensorflow 等编写的高级 ML 模型翻译成 zk 电路。
EZKL 是一个库和命令行工具,用于为 zk-SNARK 中的深度学习模型做推理。通过 EZKL,你可以在 Pytorch 或 TensorFlow 中定义一个计算图,将其导出为 ONNX 文件,并在 JSON 文件中包含一些样本输入,然后将 EZKL 指向这些文件,生成一个 zkSNARK 电路。随着最新一轮的性能改进,EZKL 现在可以在大约 2 秒内证明一个 [MNIST](https://en.wikipedia.org/wiki/MNIST_database#:~:text=The MNIST database (Modified National,the field of machine learning.) 尺寸的模型,并占用 700MB 的 RAM. 迄今为止,EZKL 已经看到了一些重要的早期应用,被用作各种黑客松项目的基础设施。
Cathie So的 circomlib-ml 库含有 Circom 的各种 ML 电路模板。电路包括一些最常见的 ML 函数。 Keras2circom 也是由 Cathie 建立的,它是一个 python 工具,使用底层的 circomlib-ml 库将 Keras 模型转变成 Circom 电路。
LinearA 已经为 zkML 开发了两个框架:Tachikoma 和 Uchikoma. Tachikoma 用于将神经网络转换为纯整数形式并生成计算轨迹。Uchikoma 是一个将 TVM 的中间表示法转换为不支持浮点运算的编程语言的工具。LinearA 计划支持使用场运算的 Circom,以及使用有符号和无符号整数运算的 Solidity.
Daniel Kang 的 zkml 是一个构建 ZK-SNARK 中 ML 模型执行证明的框架,基于他在 Scaling up Trustless DNN Inference with Zero-Knowledge Proofs 论文中的工作。截至本文撰写之时,它能够证明一个 MNIST 电路,使用大约 5GB 的内存和大约 16 秒的运行时间。
关于更普遍的模型到验证的编译器,有 Nil Foundation 和 Risc Zero 两种。Nil Foundation 的 zkLLVM 是一个基于 LLVM 的电路编译器,能够验证用 C++、Rust 和 JavaScript/TypeScript 等流行编程语言编写的计算模型。相对于这里提到的其他一些模型到验证的编译器,它是通用的基础设施,但它仍然适用于像 zkML 这样的复杂计算。当与他们的证明市场相结合时,这可能是特别强大的。
Risc Zero 建立了一个通用的 zkVM 标签,采用开源的 RISC-V 指令集,因此支持现有的成熟语言,如 C++ 和 Rust,以及 LLVM 工具链。这使得主机和客座 zkVM 代码之间可以无缝集成,类似于 Nvidia 的 CUDA C++ 工具链,但用 ZKP 引擎代替 GPU. 与 Nil 类似,可以使用 Risc Zero 验证 ML 模型的计算轨迹。
通用验证系统
证明系统的改进是实现 zkML 的主要推动力,特别是引入自定义门和查找表。这主要是由于 ML 对非线性的依赖。简而言之,非线性是通过激活函数(例如 ReLU、sigmoid 和 tanh)引入的,这些函数被应用于神经网络内线性变换的输出。由于数学运算门的限制,这些非线性在 zk 电路中的实现具有挑战性。位数分解和查找表可以帮助解决这个问题,将非线性的可能结果预先计算到查找表中,有趣的是在 zk 中计算效率更高。
[Plonkish](https://zcash.github.io/halo2/concepts/arithmetization.html#:~:text=PLONKish circuits are defined in,will be elements of F) 证明系统往往是 zkML 最受欢迎的后端,原因就在于此。Halo2 和 Plonky2 的表格式算术方案可以通过查找参数很好地处理神经网络的非线性问题。此外,前者有一个充满活力的开发者工具生态系统,再加上灵活性,使其成为包括 EZKL 在内的许多项目的事实上的后端。
其他证明系统也有其优点。[R1CS](https://learn.0xparc.org/materials/circom/additional-learning-resources/r1cs explainer/) 的证明系统包括 Groth16,因为它的证明规模小;Gemini,因为它可以处理极其庞大的电路和线性时间验证器。基于 STARK 的系统,如 Winterfell 校验器/验证器库也很有用,特别是当通过 Giza 的工具实现时,它将开罗程序的轨迹作为输入,并使用 Winterfell 生成 STARK 证明以证明输出的正确性。
zkML 专用证明系统
为验证任意的计算轨迹而建立的验证系统。
在设计高效的证明系统方面已经取得了一些进展,该系统可以处理高级 ML 模型的复杂的、对电路不友好的操作。像 zkCNN 这样基于 GKR 证明系统的系统,或者像 Zator 这样使用组合技术的系统,往往比它们的通用对应系统更有性能,这一点在 Modulus 实验室的基准测试报告中得到证明。
zkCNN 是一种使用零知识证明 rollup 神经网络正确性的方法。它使用 sumcheck 协议来证明快速傅里叶变换和 rollup,其线性证明者时间比渐进地计算结果快。为交互式证明引入了一些改进和概括,包括验证 rollup 层、ReLU 激活函数和 max pooling. 鉴于 Modulus Labs 的基准测试报告,他们发现它在证明生成速度和 RAM 消耗方面都优于其他概括式证明系统,因此 zkCNN 特别有趣。
Zator 是一个旨在探索使用递归 SNARK 来验证深度神经网络的项目。目前验证深层模型的制约因素是将整个计算轨迹装入单个电路。Zator 建议使用递归 SNARK 一次验证一个层,它可以逐步验证 N 步重复计算。他们使用 Nova 将 N 个计算实例减少为一个单一的实例,可以以一个步骤的代价进行验证。通过这种方法,Zator 能够对一个有 512 层的网络进行 snark,这与目前大多数生产型人工智能模型的深度一样。Zator 的证明生成和验证时间对于主流用例来说仍然太大,但他们的合成技术还是很有趣。
zkML 用例
专门为验证 ML 模型的计算轨迹而建立的验证系统。
鉴于 zkML 的早期阶段,它的大部分重点是在上述基础设施上。然而,今天也有一些项目正在进行应用。
Modulus Labs 是 zkML 领域中最多样化的项目之一,既致力于实例应用,也致力于相关研究。在应用方面,Modulus Labs 已经通过 RockyBot——一个链上交易机器人——和 Leela vs. the World——一个象棋游戏,全人类与 Leela 象棋引擎的一个经过验证的链上实例对弈。该团队还涉足研究,撰写了 The Cost of Intelligence,对各种证明系统的速度和效率在不同的模型规模下进行了基准测试。
Worldcoin 正在应用 zkML,试图制定一个保护隐私的人格证明协议。世界币正在使用定制的硬件来处理高分辨率的虹膜扫描,这些扫描被插入到他们的 Semaphore 实现中。然后,这可以用来执行有用的操作,如成员证明和投票。他们目前使用带有安全飞地的可信运行环境来验证相机签名的虹膜扫描,但他们最终的目标是使用 ZKP 来证明神经网络的正确推断,以获得密码学级别的安全保证。
Giza 是一个协议,能够使用完全无信任的方法在链上部署 AI 模型。它使用的技术栈包括代表机器学习模型的 ONNX 格式,将这些模型转换为 Cairo 程序格式的 Giza Transpiler,以可验证和确定性方式执行模型的 ONNX Cairo Runtime,以及在链上部署和执行模型的 Giza Model 智能合约。虽然 Giza 也可以归入模型到证明的编译器类别,但他们作为 ML 模型的市场定位是当今更有趣的应用之一。
Gensyn 是一个用于训练 ML 模型的分布式硬件供应网络。具体来说,他们正在设计一个基于梯度下降的概率审计系统,并使用模型检查点,使去中心化的 GPU 网络能够为全尺寸模型的训练提供服务。虽然他们在这里的 zkML 应用对于他们的用例来说是非常具体的——他们想确保当一个节点下载和训练一块模型时,他们对模型的更新是诚实的——但它展示了 zk 和 ML 结合的力量。
ZKaptcha 专注于 Web3 中的机器人问题,为智能合约提供验证码服务。他们目前的实现是让终端用户通过完成验证码来产生一个人类工作的证明,这由他们的链上验证器验证,并由智能合约通过几行代码访问。今天,他们主要只依靠 zk,但他们打算在未来实现 zkML,类似于现有的 Web2 验证码服务,分析鼠标运动等行为,以确定用户是否为人类。
鉴于 zkML 市场是如此之早,很多应用已经在黑客松层面进行了实验。项目包括 AI Coliseum,这是一个使用 EZKL 构建的链上人工智能竞赛,使用 ZK 证明来验证机器学习的输出;Hunter z Hunter,这是一个使用 EZKL 库来验证图像分类模型的输出与 halo2 电路的照片寻宝游戏;zk Section 9,将人工智能图像生成模型转换成电路,用于铸造和验证 AI 艺术。
zkML 挑战
- 以最小的精度损失进行量化
- 电路尺寸,特别是当网络由许多层组成时
- 矩阵乘法的高效证明
- 对抗性攻击
虽然 zkML 仍处于早期发展阶段,但它已经开始显示出令人鼓舞的结果。随着技术的发展和成熟,我们可以期待看到 zkML 在链上的更多创新使用案例。
网友评论