1. 引言
本文主要参考:
- 2023年6月drCathieSo.eth 与 Ethereum Malaysia 视频 ZKML: Verifiable & Privacy-Preserving Compute in Blockchain
- 2023年6月drCathieSo.eth 与 PSE 视频 Folding Circom circuits: a ZKML case study - Dr. Cathie So
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交易计算。
最近的应用案例有:
- EIP-7007: zkML AIGC-NFTs, an ERC-721 extension interface for zkML based AIGC-NFTs:Verifiable AI generated NFT。
开源代码实现见:
- https://github.com/AIGC-NFT/implementation(Solidity + JavaScript)
其简化的工作流示意为:
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,使得开发者可用公开数据来验证私有模型。
开源代码见:
- https://github.com/socathie/ZKaggleV2(Solidity + JavaScript)
基本架构图为:
其中:
- 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-ml 和 https://github.com/socathie/keras2circom:开源库,寻找贡献者ing。定位为:
- 机器学习的Circom电路库。
- Python工具:将tf.keras模型移植到某circom电路中。
4. 未来展望
4.1 ZKML方向PSE未来规划
当前PSE在ZKML方向的规划见:
- ZKML Research Initiatives
具体规划主要分为3大方向:
- 1)Benchmarking:
- 1.1)quantization量化如何影响模型精度?即如何避免性能降级。
- 1.2)证明时长、验证时长、所需内存量等等。
- 1.3)类似工作有:Modulus Labs的《The Cost of Intelligence: Proving Machine Learning Inference with Zero-Knowledge》。
- 2)ZK友好的机器学习:如:
- 2.1)无权重神经网络:如https://github.com/zkp-gravity/0g-halo2(Rust):使用Halo2来做无权重神经网络推理证明。
- 2.2)Boolean circuits:见[2023年4月twitter讨论]。(https://twitter.com/cronokirby/status/1642963522924711936)
- 2.3)Binarized神经网络:见2016年论文《Binarized Neural Networks: Training Deep Neural Networks with Weights and Activations Constrained to +1 or -1》。
- 2.4)Truth table net:见2023年论文《A Scalable, Interpretable, Verifiable & Differentiable Logic Gate Convolutional Neural Network Architecture From Truth Tables》。
- 2.5)以及受全同态加密启发的机器学习方案等等。
- 3)Folding using Nova/Sangria:使用Nova(基于R1CS约束系统nova-ml) 或 Sangria(基于PLONK约束系统) 来实现Recursive ZKML。如对大量图片应用同一模型。
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-ml、ezkl、keras2circom等开源库贡献。
- 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系列博客
- zkML零知识机器学习介绍
- ZKML:ZK+机器学习