zkml 项目使用教程
zkml 项目地址: https://gitcode.com/gh_mirrors/zk/zkml
1. 项目目录结构及介绍
zkml/
├── examples/
│ ├── mnist/
│ │ ├── model.msgpack
│ │ ├── inp.msgpack
│ │ ├── model.tflite
│ │ ├── data_to_npy.py
│ │ └── ...
│ └── ...
├── src/
│ ├── circuit/
│ │ ├── mnist.rs
│ │ └── ...
│ └── ...
├── testing/
│ ├── circuits/
│ │ ├── mnist.rs
│ │ └── ...
│ └── ...
├── .gitignore
├── Cargo.toml
├── LICENSE
├── README.md
└── rustfmt.toml
目录结构说明
- examples/: 包含示例代码和数据,例如 MNIST 数据集和模型的示例。
- src/: 项目的核心代码,包含电路的实现。
- testing/: 包含测试代码,用于验证电路的正确性。
- .gitignore: Git 忽略文件,指定哪些文件或目录不需要被版本控制。
- Cargo.toml: Rust 项目的配置文件,定义项目的依赖和构建配置。
- LICENSE: 项目的开源许可证,本项目使用 Apache-2.0 许可证。
- README.md: 项目的说明文档,包含项目的概述和使用说明。
- rustfmt.toml: Rust 代码格式化配置文件。
2. 项目启动文件介绍
项目的启动文件主要是 src/main.rs
,但在这个项目中,启动文件的具体位置可能会有所不同,因为项目的主要功能是通过命令行工具来执行的。以下是一些关键的启动文件和命令:
主要启动命令
# 安装 Rust 工具链
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# 克隆项目
git clone https://github.com/ddkang/zkml.git
cd zkml
# 设置 Rust 工具链为 nightly 版本
rustup override set nightly
# 构建项目
cargo build --release
# 运行 MNIST 电路示例
./target/release/time_circuit examples/mnist/model.msgpack examples/mnist/inp.msgpack kzg
启动文件说明
- src/main.rs: 项目的入口文件,通常包含主函数
main()
,用于启动整个应用程序。 - examples/mnist/model.msgpack: MNIST 模型的序列化文件,用于电路的输入。
- examples/mnist/inp.msgpack: MNIST 输入数据的序列化文件,用于电路的输入。
3. 项目的配置文件介绍
Cargo.toml
[package]
name = "zkml"
version = "0.1.0"
edition = "2018"
[dependencies]
# 依赖项列表
rustfmt.toml
# Rust 代码格式化配置
配置文件说明
- Cargo.toml: 定义了项目的元数据和依赖项。
[package]
部分包含项目的基本信息,如名称、版本和 Rust 版本。[dependencies]
部分列出了项目所需的依赖库。 - rustfmt.toml: 配置 Rust 代码格式化工具
rustfmt
,确保代码风格一致。
通过以上配置文件和启动文件,可以顺利地构建和运行 zkml
项目,并进行相关的开发和测试工作。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考