OPML enables off-chain AI model inference using optimistic approach with an on chain interactive dispute engine implementing fault proofs.
For more in-depth information, refer to the project wiki.
You can also find a tutorial on building a straightforward handwritten digit recognition DNN model (MNIST) within OPML in the docs/tutorial.md
.
Pre-requisites: Go (Go 1.19), Node.js, Make, and CMake.
git clone git@github.com:hyperoracle/opml.git --recursive
make build
The script files demo/challenge_simple.sh
presents an example scenario (a DNN model for MNIST) demonstrating the whole process of a fault proof, including the challenge game and single step verification.
To test the example, we should first start a local node:
npx hardhat node
Then we can run:
bash ./demo/challenge_simple.sh
A large language model, the llama example is provided in the branch "llama" (It also works for llama 2).
🔨 = Pending
🛠 = Work In Progress
✅ = Feature complete
Feature | Status |
---|---|
Supported Model | |
DNN for MNIST | ✅ |
LLaMA | ✅ |
General DNN Model (Onnx Support) | 🛠 |
Traditional ML Algorithm (Decision Tree, KNN etc) | 🔨 |
Mode | |
Inference | ✅ |
Training | 🔨 |
Fine-tuning | 🔨 |
Optimization | |
ZK Fault Proof with zkOracle and zkWASM | 🛠 |
GPU Acceleration | 🛠 |
High Performance VM | 🛠 |
Functionality | |
User-Friendly SDK | 🛠 |
mlgo -- A tensor library for machine learning in pure Golang that can run on MIPS.
mlvm -- A MIPS runtime with ML execution
contracts -- A Merkleized MIPS processor on chain + the challenge logic
This code is MIT licensed.
Part of this code is borrowed from ethereum-optimism/cannon
Note: This code is unaudited. It in NO WAY should be used to secure any money until a lot more testing and auditing are done.