ZKML:区块链世界的AI+隐私

1. 引言

本文主要参考:

ZKML(Zero-Knowledge Machine Learning),本文内容主要分为三大块:

  • 1)背景知识:
    • ZKP介绍
    • 为何需要ZKML?
    • 什么是ZKML?
  • 2)当前现状:
    • ZKML现状
    • ZKML挑战
    • 现有ZKML库
  • 3)未来展望:
    • ZKML方向PSE未来规划
    • 从何处着手做ZKML
    • 有启发的ZKML应用
    • 头脑风暴

2. 背景知识

2.1 ZKP介绍

何为ZKP(Zero-Knowledge Proof):
在这里插入图片描述
ZKP具有4大属性:

  • 1)Completeness完备性:若Prover诚实,则最终将让Verifier信服。
  • 2)Soundness可靠性:当且仅当statement为true时,Prover才能让Verifier信服;若statement为false,则无法让Verifier信服。
  • 3)Zero-Knowledge零知识性:除了statement为true这个事实,不会向Verifier泄露额外信息。
  • 4)Succinctness简洁性:相比于底层计算,proof size要明显小很多。【简洁性,对于区块链场景来说,是一个尤其用用的属性。】

2.2 为何需要ZKML?

以太坊,被称为World Computer(世界计算机),当前期存在以下2大限制,可借助ZK(ML)来解决:

  • 1)以太坊具有有限的区块size和合约size:如当前合约size约为24KB,当做复杂逻辑时,需将拆分为多个合约。
    借助ZKP的第4个属性(简洁性),可将复杂的链下计算压缩为一个简洁证明,并在以太坊链上验证。应用案例有:L2 zkRollups等。
  • 2)以太坊交易是完全透明的。
    借助ZKP的第3个属性(零知识性):在保证隐私的前提下,证明拥有特定信息或数据。应用案例有:Tornado Cash、zkID等。

即,可借助ZK来证明拥有特定数据,如:

  • 知道某图片上 ( x , y ) (x,y) (x,y)坐标位置上的像素值为 z z z

不过这种data(或value) proving 应用相对来说意义不大,且仅借助ZK就够了,无需ZKML。借助机器学习,可证明与数据(data)关联的信息,如:

  • 某图片上有一只猫。

这样仅借助ZK就不够了,还需要某些机器学习模型或算法。因此就需要ZK+ML,来证明数据内容关联的信息。

2.3 什么是ZKML?

ZKML,主要针对的是机器学习推理证明,而不是模型训练证明:
在这里插入图片描述
有针对NN(Neural Network神经网络)的ZKP电路。
根据不同的应用场景,主要分为三大类:

  • 1)公开的输入数据 和 公开的模型权重,对应的输出也为公开的
  • 2)私有的输入数据 和 公开的模型权重
  • 3)公开的输入数据 和 私有的模型权重

2.3.1 ZKML:公开的输入数据 和 公开的模型权重

公开的输入数据 和 公开的模型权重,对应的输出也为公开的:借助ZKP的简洁性,可将整个机器学习模型压缩在单个solidity合约内。从而实现在链下进行机器学习,在链上进行验证。这与zkRollup类似,只不过此处链下进行的是机器学习推理计算,而不是L2交易计算。
在这里插入图片描述
最近的应用案例有:

开源代码实现见:

其简化的工作流示意为:
在这里插入图片描述

ZKML-AIGC-NFTs(兼容EIP7007,并做了Claimable扩展)中主要包含4大模块:

  • 1)ML Model机器学习模型:包含预训练模型的权重,根据推理输入,可生成输出。
  • 2)ZKML Prover:基于输入、输出以及推理任务,生成zk proof。
  • 3)AIGC-NFT智能合约:为兼容ERC7007的合约,具有全部ERC721功能。
  • 4)Verifier智能合约:实现了verify函数,根据推理任务以及zk proof,返回验证boolean结果。

关键点在于:

  • 用户在将prompt提交给ML Model之前,会先调用AIGC-NFT合约的claim接口(即用户先向以太坊发起一笔交易),来claim对该prompt的所有权。这样模型owner就仅能为用户上传aigc并mint NFT,而无法窃取所有权。

2.3.2 ZKML:私有的输入数据 和 公开的模型权重

私有的输入数据 和 公开的模型权重:私有的输入数据,可为想要隐藏的个人敏感数据。而公开的模型权重,对应用户信任的可验证模型。
在这里插入图片描述
可用于需要隐私的场景,如:

  • 智能合约钱包的生物特征认证:在合约内进行生物特征认证,而不是在设备端进行生物特征认证,从而实现trustless生物特征认证。公开的模型权重,对应为某知名的擅长识别指纹或人脸的模型。
  • 私有图像市场或私有数据市场:实现图像或数据的买卖。

2.3.3 ZKML:公开的输入数据 和 私有的模型权重

公开的输入数据 和 私有的模型权重:
在这里插入图片描述
应用案例,类似具有某专利模型的某(Web2)公司,证明其对每个人都采用了相同的模型。如,Twittter最近开源了其算法,但如何来确认其实际运行的是相同的算法——可在隐藏模型权重的情况下,对模型哈希值进行比较。

一个具体的应用案例为:

  • ZKaggle:为去中心化的bounty平台,用于主办、验证和支付bounty。与Kaggle类似,但是添加了隐私保护特性。
    解决了传统机器学习bounty平台的限制——为验证性能,要求公开整个模型。借助ZKP,使得开发者可用公开数据来验证私有模型。

开源代码见:

基本架构图为:
在这里插入图片描述

其中:

  • circomlib-ml:为易于理解的Circom库,包含了TensorFlow Kera中计算common layers的电路。
  • keras2circom:为用户友好的转换器,将用Python编写的ML模型转换为Circom电路。
  • pyTorch2circom:

3. 当前现状

3.1 ZKML现状

当前并没有ZKML相关产品,现阶段主要有:

  • ZKML黑客松
  • POC原型
  • 研究
  • 服务端ZKML:即Prover为具有数TB内存的大型机器,但是更多的应用场景在客户端(设备端)。

3.2 ZKML挑战

ZKML挑战主要在于:

  • 1)挑战一:机器学习与ZK电路内在数学不兼容:

    • ML模型采用浮点数权重:机器学习模型中的基础梯度演算中包含了大量的小数,性能好的模型通常使用(至少32bit的)浮点数权重。

    • ZK电路采用定点数运算:ZK电路中通常使用整数。

    • 需要量化:若想要在手机上做机器学习,工程师并不知道如何 使用量化来 将其模型转换为8-bit或16-bit模型。
      量化分为2方面:

      • 训练或预训练量化:这样量化模型不会丢失太多精度。
      • 后训练量化:即正常训练模型,尽量根据量化位数字来量化。这样会丢失更多的精度。

      当某些应用(如指纹识别)要求很高的精度时,这是一大挑战。不过现有的LLM(大语言模型)和 stable diffusion模型,量化时,性能降级并不明显。因此有Fackbook LLM的8-bit版本——LLaMA,可在笔记本上运行。原因在于这些大模型对量化更模糊。
      当需要更高的精度时——如分类场景,量化就是挑战了。

  • 2)挑战二:ZKML太太昂贵了:

    • 用ZK方式做机器学习,比只做机器学习,要贵约1000倍:如在GB级内存机器上做ML,则需要在TB级内存机器上做ZKML。
    • 借助Recursive ZKP?:可用于提升客户端ZKML性能。
    • 等待硬件加速技术的发展?:可用于提升服务端ZKML性能。

    需注意的是,不同于证明神经网络模型中的所有层,能否只证明某数据模型中的最后三层呢?——答案是肯定的,具体取决于应用场景。如证明某图像,可对该图像进行哈希,与此同时,将该图像输入到某模型并获得某结果,仅对模型的最后三层进行ZK证明,可能存在如下问题:

    • 在最后三层之前,可能篡改数据。
    • 可能泄露数据的某些细节。
  • 3)挑战三:现有投入不够。

    • 当前约有四五个项目致力于ZKML,以ZKML作为其商业目标:与TensorFlow和PyTorch的人员投入相比,远远不够。
    • 需将ML operation 定制化转换为 ZK template
    • 想法很多,但人手不够

3.3 现有ZKML库

现有ZKML库有:

  • 1)https://github.com/zkonduit/ezkl(Rust):ezkl为可做深度学习模型推理的库和命令行工具。将ML转换为ZK电路。基本工作流程为:

    • 1.1)使用常规PyTorch或Tensorflow来定义某computational graph。
    • 1.2)将最终的operation graph导出为.onnx文件,将某些sample输入导出为.json文件。
    • 1.3)使用ezkl来处理.onnx和.json文件,以生成相应的ZK电路(当前为Halo2电路)。

    ezkl 近期增加了Python bindings,可在不安装Rust的情况下,直接在Python环境下运行 。

  • 2)https://github.com/ddkang/zkml:以ZK方式构建机器学习模型执行证明的框架。亮点为:

    • 2.1)致力于解决模型训练的ZKML
    • 2.2)致力于如GPT2、Bert和Diffusion模型
    • 2.3)与Daniel Kang的论文配套
  • 3)https://github.com/socathie/circomlib-mlhttps://github.com/socathie/keras2circom:开源库,寻找贡献者ing。定位为:

    • 机器学习的Circom电路库。
    • Python工具:将tf.keras模型移植到某circom电路中。

4. 未来展望

4.1 ZKML方向PSE未来规划

当前PSE在ZKML方向的规划见:

具体规划主要分为3大方向:

4.2 从何处着手做ZKML

不同的技术或知识背景,可采用不同的方式来着手做ZKML:

  • 1)若具有机器学习背景,可 :

    • 1.1)玩转 ezkl(Rust)库,将某些现有模型转换为ZK电路并证明。
    • 1.2)构建ZKML应用,如algo trading算法交易、指纹识别等。
  • 2)若具有ZK背景,可:

    • 2.1)学习Circom、Halo2、Nova
    • 2.2)帮助ML工程师将其模型转换为ZK版本
    • 2.3)为 circomlib-mlezklkeras2circom等开源库贡献。
    • 2.4)加入PSE research initiative。

4.3 有启发的ZKML应用

Modulus Labs发布了RockyBot——首个完全链上AI交易机器人。
在这里插入图片描述
Modulus Labs还发布了链上机器学习游戏 Leela Vs World Chess Game
在这里插入图片描述

4.4 头脑风暴

具体见2023年6月drCathieSo.eth 视频 ZKML: Verifiable & Privacy-Preserving Compute in Blockchain 最后半小时讨论。

参考资料

[1] 2023年6月PSE视频 ZKML: Verifiable & Privacy-Preserving Compute in Blockchain
[2] Zero Knowledge Proofs : What exactly are they?
[3] drCathieSo.eth 2023年3月hackmd ZKML: Bridging AI/ML and Web3 with Zero-Knowledge Proofs
[4] zkML: Demo for circomlib-ml on Goerli testnet
[5] drCathieSo.eth 2023年5月hackmd ZKML Research Initiatives
[6] Modulus Labs团队2023年3月博客 Chapter 6: The World’s 1st On-Chain AI Game

zkML系列博客

猜你喜欢

转载自blog.csdn.net/mutourend/article/details/131624431