GithubHelp home page GithubHelp logo

dcmmc / zkfixedpointchip Goto Github PK

View Code? Open in Web Editor NEW
19.0 3.0 7.0 2.74 MB

ZK Fixed Point Arithmetic with its Application in Machine Learning based on Halo2

License: MIT License

Python 23.24% Rust 76.76%

zkfixedpointchip's Introduction

ZKFixedPointChip

ZK Fixed Point Arithmetic with its Application in Machine Learning based on Halo2 & Axiom's Halo2-base.

Features

  • FixedPointChip: Fixed point arithmetic and math library
    • Support different kinds of precisions (from 32.32 to 63.63) with automatically generated polynomial using Remez algorithm
    • Support negative number arithmetics with quantization
    • Support functions: add, sub, mul, div, mod, sign, clip, polynomial, bit_xor, sum, neg, exp, log, pow, sqrt, max, sin, cos, tan, sinh, cosh, etc.
  • ZK-LR: LinearRegressionChip/LogisticRegressionChip
    • Support inference with vector multiplication and sigmoid (based on exp) using FixedPointChip
    • Support training with gradient descent algorithm
  • ZK-DT: DecisionTreeChip
    • Support inference with tree traversal over the decision tree
    • Support training by building the decision tree recursively with the calculated Gini Impurity in each node

Setup

Install rust:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Clone this repo:

git clone https://github.com/DCMMC/ZKFixedPointChip.git
cd ZKFixedPointChip

Build & Run Examples

Fixed Point Arithmetic (exp2, log2, sin):

cargo run --example fixed_point

Linear Regression (Inference & Training):

cargo run --example linear_regression

Logistic Regression (Inference & Training):

cargo run --example logistic_regression

Decision Tree (Inference & Training):

cargo run --example decision_tree

For visualizing, you should install graphviz and the generated svg file is located in ./figure/dt.svg.

Benchmark

benchmark

The complexity of decision tree training is proportional to $2^d$ where $d$ is the tree depth.

Decision Tree Visualization

dt

zkfixedpointchip's People

Contributors

dcmmc avatar

Stargazers

Severiano Sisneros avatar WangYao avatar Shabbir Hasan avatar Alexis Bed avatar Sora Suegami avatar Federico Carrone avatar Harvey Specter avatar nullity avatar Richard avatar Erhan avatar senww.eth avatar longcpp avatar Lyron Co Ting Keh avatar  avatar Han Wu avatar lkkchen avatar Chen Kai avatar Pierre avatar Kevin avatar

Watchers

 avatar Kostas Georgiou avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.