You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+44-38Lines changed: 44 additions & 38 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,8 +6,8 @@ Extension of [zkml](https://github.com/uiuc-kang-lab/zkml) for distributed provi
6
6
7
7
## Next Steps
8
8
9
-
1.~~**Make Merkle root public**: Add root to public values so next chunk can verify it~~✅ Done
10
-
2.**Complete proof generation**: Connect chunk execution to actual proof generation ([#8](https://github.com/ray-project/distributed-zkml/issues/8))
9
+
1.~~**Make Merkle root public**: Add root to public values so next chunk can verify it~~ Done
10
+
2.~~**Complete proof generation**: Connect chunk execution to actual proof generation ([#8](https://github.com/ray-project/distributed-zkml/issues/8))~~ Done
11
11
3.**Ray-Rust integration**: Connect Python Ray workers to Rust proof generation ([#9](https://github.com/ray-project/distributed-zkml/issues/9))
12
12
4.**GPU acceleration**: Current implementation is CPU-based. GPU acceleration for proof generation requires additional work ([#10](https://github.com/ray-project/distributed-zkml/issues/10))
13
13
@@ -16,13 +16,15 @@ Extension of [zkml](https://github.com/uiuc-kang-lab/zkml) for distributed provi
-[Testing on AWS GPUs](#testing-on-aws-gpus-a100h100)
25
-
-[CI](#ci)
24
+
-[Testing and CI](#testing-and-ci)
25
+
-[Testing](#testing)
26
+
-[Testing on AWS GPU Instances](#testing-on-aws-gpu-instances)
27
+
-[CI](#ci)
26
28
-[References](#references)
27
29
-[Requirements](#requirements)
28
30
@@ -49,9 +51,11 @@ distributed-zkml adds:
49
51
50
52
The key difference: zkml optimizes circuit layout for a single proving instance, while distributed-zkml enables parallel proving of model chunks with privacy-preserving commitments to intermediate values.
51
53
52
-
## How Distributed Proving Works
54
+
## Implementation
53
55
54
-
### Architecture
56
+
### How Distributed Proving Works
57
+
58
+
#### Architecture
55
59
56
60
1. Model Layer Partitioning: Partition the ML model into chunks at the layer level (e.g., layers 0-2, 3-5, 6-8). Each chunk can execute on a separate GPU.
57
61
@@ -61,7 +65,7 @@ The key difference: zkml optimizes circuit layout for a single proving instance,
61
65
62
66
4. On-Chain Commitment: Publish only the Merkle root (a single hash) on-chain. This proves intermediate values were computed correctly without revealing their actual values.
63
67
64
-
### Example Flow
68
+
####Example Flow
65
69
66
70
```
67
71
Model: 9 layers total
@@ -81,7 +85,7 @@ On-chain: Only the Root hash
81
85
Private: Outputs A, B, C (never revealed)
82
86
```
83
87
84
-
### Why Merkle Trees?
88
+
####Why Merkle Trees?
85
89
86
90
Without Merkle trees, all intermediate values must be public for the next chunk to verify them—**O(n) public values**, which is expensive in ZK circuits.
87
91
@@ -92,7 +96,7 @@ With Merkle trees, only the root is public—**O(1) public values**. The next ch
92
96
| No Merkle | O(n) | O(1) per value | All intermediate values exposed |
93
97
| Merkle | O(1) | O(log n) per value | Only root exposed |
94
98
95
-
## Structure
99
+
###Structure
96
100
97
101
```
98
102
distributed-zkml/
@@ -107,9 +111,9 @@ distributed-zkml/
107
111
108
112
This is a separate Rust crate that extends zkml. The `zkml/` directory is a git submodule containing a modified version of zkml with Merkle tree support for intermediate value commitments.
109
113
110
-
## Implementation Status
114
+
###Implementation Status
111
115
112
-
### Merkle Tree Integration
116
+
####Merkle Tree Integration
113
117
114
118
- Binary Merkle tree implementation (`zkml/src/commitments/merkle.rs`)
0 commit comments