:thought_balloon:
EZKL
简易零知识推理
ezkl
是一个库和命令行工具,用于在零知识证明(ZKML)中进行深度学习模型和其他计算图的推理。它支持以下工作流程:
- 像在pytorch或tensorflow中一样定义计算图,例如神经网络(实际上可以是任意一组操作)。
- 将最终的操作图导出为.onnx文件,并将一些样本输入导出到
.json
文件中。 - 将
ezkl
指向.onnx
和.json
文件,以生成ZK-SNARK电路,您可以用它来证明以下类型的陈述:
"我在一些私有数据上运行了这个公开可用的神经网络,并得到了这个输出"
"我在一些公开数据上运行了我的私有神经网络,并得到了这个输出"
"我正确地在一些公开数据上运行了这个公开可用的神经网络,并得到了这个输出"
在后端,我们使用协作开发的Halo2作为证明系统。
生成的证明可以用更少的计算资源进行验证,包括在链上(使用以太坊虚拟机)、在浏览器中或在设备上。
-
如果您有任何问题,我们欢迎您在讨论中开启一个讨论主题。或者,您可以加入✨EZKL社区Telegram群组💫。
-
如需更多技术文章和详细信息,请查看我们的博客。
-
要了解您可以用ezkl构建什么,请查看cryptoidol.tech,在那里ezkl被用来创建一个永远评判您歌唱的AI。
快速开始 ⚙️
最简单的入门方式是尝试一个笔记本。
Python
通过以下命令安装Python绑定。
pip install ezkl
或者对于GPU版本:
pip install ezkl-gpu
Google Colab示例,学习如何训练神经网络并在链上部署推理验证器以供其他智能合约使用。
更多笔记本教程可以在examples/notebooks
中找到。
CLI
安装CLI
curl https://raw.githubusercontent.com/zkonduit/ezkl/main/install_ezkl_cli.sh | bash
更多详情请访问文档。CLI比Python更快,因为它的开销更少。如需更快速和便捷的体验,请查看远程证明服务,它感觉像CLI但由调优过的集群提供支持。
构建自动生成的rust文档并在本地浏览器中打开文档。cargo doc --open
浏览器内EVM验证器
作为在浏览器中运行原生Halo2验证器作为WASM绑定的替代方案,您可以使用浏览器内EVM验证器。您可以在in-browser-evm-verifier
目录中找到其源代码,以及一个包含使用说明的README。
构建项目 🔨
Rust CLI
您可以从源代码安装库
cargo install --locked --path .
ezkl
现在会为您自动管理solc安装。
构建Python绑定
Python绑定存在,可以使用maturin
构建。您需要安装rust
和cargo
。
python -m venv .env
source .env/bin/activate
pip install -r requirements.txt
maturin develop --release --features python-bindings
# 教程特定的依赖项
pip install torch pandas numpy seaborn jupyter onnx kaggle py-solc-x web3 librosa tensorflow keras tf2onnx
GPU加速
如果您可以访问NVIDIA GPU,可以通过使用icicle
功能构建并设置以下环境变量来启用加速:
export ENABLE_ICICLE_GPU=true
GPU加速由Icicle提供
要切回到使用CPU运行,必须取消设置上述环境变量,而不是将其切换为false值:
unset ENABLE_ICICLE_GPU
**注意:**即使设置了上述环境变量,对于k <= 8的电路,icicle也会被禁用。要更改启用icicle的k
值,可以设置环境变量ICICLE_SMALL_K
。
贡献 🌎
如果您有兴趣贡献但不确定从哪里开始,请联系以下维护者之一:
- dante (alexander-camuto)
- jason (jasonmorton)
更广泛地:
-
查看当前开放的问题以了解如何贡献。
-
对于PR,我们使用conventional commits命名约定。
-
要报告错误或请求新功能,请在Issues中创建新的问题以通知更广泛的社区。
您有意提交以包含在作品中的任何贡献均应根据CLA中指定的条款和条件许可给Zkonduit Inc.,您同意通过有意提交贡献来接受这些条款。特别是,您有权提交贡献,我们可以分发它,以及其他条款和条件。
无安全保证
Ezkl是未经审核的测试版软件,正在快速开发中。可能存在错误。不保证安全性,不应在生产环境中依赖它。
注意:由于在将操作从onnx文件转换为zk电路时进行了量化,Python和ezkl中的输出可能略有不同。
无担保
版权所有 (c) 2024 Zkonduit Inc. 本软件"按原样"提供,不提供任何形式的明示或暗示担保,包括但不限于对适销性、特定用途适用性和非侵权性的担保。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论是在合同诉讼、侵权行为还是其他方面,产生于、源于或与本软件或本软件的使用或其他交易有关。