From 3668dbcf63337703250bfe3315cbebeb96b91fb2 Mon Sep 17 00:00:00 2001 From: mhchia Date: Fri, 13 Sep 2024 18:27:02 +0800 Subject: [PATCH] feat: no manually setting selected_columns --- public/assets/generate_data_commitment.ipynb | 73 +++--- public/assets/template.ipynb | 229 +++---------------- public/assets/verifier.ipynb | 174 +++++++------- src/app/page.tsx | 21 +- 4 files changed, 171 insertions(+), 326 deletions(-) diff --git a/public/assets/generate_data_commitment.ipynb b/public/assets/generate_data_commitment.ipynb index a43ff14..23483a4 100644 --- a/public/assets/generate_data_commitment.ipynb +++ b/public/assets/generate_data_commitment.ipynb @@ -9,48 +9,45 @@ "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: zkstats==0.1.5 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (0.1.5)\n", - "Requirement already satisfied: click<9.0.0,>=8.1.7 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.5) (8.1.7)\n", - "Requirement already satisfied: ezkl==9.1.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.5) (9.1.0)\n", - "Requirement already satisfied: matplotlib<4.0.0,>=3.8.2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.5) (3.8.3)\n", - "Requirement already satisfied: numpy<2.0.0,>=1.26.2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.5) (1.26.4)\n", - "Requirement already satisfied: onnx<2.0.0,>=1.15.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.5) (1.15.0)\n", - "Requirement already satisfied: requests<3.0.0,>=2.31.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.5) (2.31.0)\n", - "Requirement already satisfied: scipy<2.0.0,>=1.11.4 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.5) (1.12.0)\n", - "Requirement already satisfied: statistics<2.0.0,>=1.0.3 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.5) (1.0.3.5)\n", - "Requirement already satisfied: torch<3.0.0,>=2.1.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.5) (2.2.2)\n", - "Requirement already satisfied: contourpy>=1.0.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.5) (1.2.0)\n", - "Requirement already satisfied: cycler>=0.10 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.5) (0.12.1)\n", - "Requirement already satisfied: fonttools>=4.22.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.5) (4.49.0)\n", - "Requirement already satisfied: kiwisolver>=1.3.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.5) (1.4.5)\n", - "Requirement already satisfied: packaging>=20.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.5) (23.2)\n", - "Requirement already satisfied: pillow>=8 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.5) (10.2.0)\n", - "Requirement already satisfied: pyparsing>=2.3.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.5) (3.1.1)\n", - "Requirement already satisfied: python-dateutil>=2.7 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.5) (2.9.0.post0)\n", - "Requirement already satisfied: protobuf>=3.20.2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from onnx<2.0.0,>=1.15.0->zkstats==0.1.5) (4.25.3)\n", - "Requirement already satisfied: charset-normalizer<4,>=2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests<3.0.0,>=2.31.0->zkstats==0.1.5) (3.3.2)\n", - "Requirement already satisfied: idna<4,>=2.5 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests<3.0.0,>=2.31.0->zkstats==0.1.5) (3.6)\n", - "Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests<3.0.0,>=2.31.0->zkstats==0.1.5) (2.2.1)\n", - "Requirement already satisfied: certifi>=2017.4.17 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests<3.0.0,>=2.31.0->zkstats==0.1.5) (2024.2.2)\n", - "Requirement already satisfied: docutils>=0.3 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from statistics<2.0.0,>=1.0.3->zkstats==0.1.5) (0.20.1)\n", - "Requirement already satisfied: filelock in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch<3.0.0,>=2.1.1->zkstats==0.1.5) (3.13.1)\n", - "Requirement already satisfied: typing-extensions>=4.8.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch<3.0.0,>=2.1.1->zkstats==0.1.5) (4.10.0)\n", - "Requirement already satisfied: sympy in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch<3.0.0,>=2.1.1->zkstats==0.1.5) (1.12)\n", - "Requirement already satisfied: networkx in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch<3.0.0,>=2.1.1->zkstats==0.1.5) (3.2.1)\n", - "Requirement already satisfied: jinja2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch<3.0.0,>=2.1.1->zkstats==0.1.5) (3.1.3)\n", - "Requirement already satisfied: fsspec in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch<3.0.0,>=2.1.1->zkstats==0.1.5) (2024.2.0)\n", - "Requirement already satisfied: six>=1.5 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from python-dateutil>=2.7->matplotlib<4.0.0,>=3.8.2->zkstats==0.1.5) (1.16.0)\n", - "Requirement already satisfied: MarkupSafe>=2.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from jinja2->torch<3.0.0,>=2.1.1->zkstats==0.1.5) (2.1.5)\n", - "Requirement already satisfied: mpmath>=0.19 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from sympy->torch<3.0.0,>=2.1.1->zkstats==0.1.5) (1.3.0)\n", - "\n", - "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m23.3.1\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.0\u001b[0m\n", - "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n", + "Requirement already satisfied: zkstats==0.1.10 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (0.1.10)\n", + "Requirement already satisfied: click<9.0.0,>=8.1.7 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.10) (8.1.7)\n", + "Requirement already satisfied: ezkl==9.1.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.10) (9.1.0)\n", + "Requirement already satisfied: matplotlib<4.0.0,>=3.8.2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.10) (3.9.2)\n", + "Requirement already satisfied: numpy<2.0.0,>=1.26.2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.10) (1.26.4)\n", + "Requirement already satisfied: onnx<2.0.0,>=1.15.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.10) (1.16.2)\n", + "Requirement already satisfied: requests<3.0.0,>=2.31.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.10) (2.32.3)\n", + "Requirement already satisfied: scipy<2.0.0,>=1.11.4 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.10) (1.13.1)\n", + "Requirement already satisfied: statistics<2.0.0,>=1.0.3 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.10) (1.0.3.5)\n", + "Requirement already satisfied: torch==2.2.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.10) (2.2.0)\n", + "Requirement already satisfied: filelock in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch==2.2.0->zkstats==0.1.10) (3.16.0)\n", + "Requirement already satisfied: typing-extensions>=4.8.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch==2.2.0->zkstats==0.1.10) (4.12.2)\n", + "Requirement already satisfied: sympy in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch==2.2.0->zkstats==0.1.10) (1.13.2)\n", + "Requirement already satisfied: networkx in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch==2.2.0->zkstats==0.1.10) (3.2.1)\n", + "Requirement already satisfied: jinja2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch==2.2.0->zkstats==0.1.10) (3.1.4)\n", + "Requirement already satisfied: fsspec in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch==2.2.0->zkstats==0.1.10) (2024.9.0)\n", + "Requirement already satisfied: contourpy>=1.0.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.10) (1.3.0)\n", + "Requirement already satisfied: cycler>=0.10 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.10) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.10) (4.53.1)\n", + "Requirement already satisfied: kiwisolver>=1.3.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.10) (1.4.7)\n", + "Requirement already satisfied: packaging>=20.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.10) (24.1)\n", + "Requirement already satisfied: pillow>=8 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.10) (10.4.0)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.10) (3.1.4)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.10) (2.9.0.post0)\n", + "Requirement already satisfied: protobuf>=3.20.2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from onnx<2.0.0,>=1.15.0->zkstats==0.1.10) (5.28.1)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests<3.0.0,>=2.31.0->zkstats==0.1.10) (3.3.2)\n", + "Requirement already satisfied: idna<4,>=2.5 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests<3.0.0,>=2.31.0->zkstats==0.1.10) (3.8)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests<3.0.0,>=2.31.0->zkstats==0.1.10) (2.2.3)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests<3.0.0,>=2.31.0->zkstats==0.1.10) (2024.8.30)\n", + "Requirement already satisfied: docutils>=0.3 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from statistics<2.0.0,>=1.0.3->zkstats==0.1.10) (0.21.2)\n", + "Requirement already satisfied: six>=1.5 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from python-dateutil>=2.7->matplotlib<4.0.0,>=3.8.2->zkstats==0.1.10) (1.16.0)\n", + "Requirement already satisfied: MarkupSafe>=2.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from jinja2->torch==2.2.0->zkstats==0.1.10) (2.1.5)\n", + "Requirement already satisfied: mpmath<1.4,>=1.1.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from sympy->torch==2.2.0->zkstats==0.1.10) (1.3.0)\n", "Note: you may need to restart the kernel to use updated packages.\n" ] } ], "source": [ - "%pip install zkstats==0.1.5" + "%pip install zkstats==0.1.10" ] }, { @@ -101,7 +98,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.1" + "version": "3.12.5" } }, "nbformat": 4, diff --git a/public/assets/template.ipynb b/public/assets/template.ipynb index 196339a..34ef613 100644 --- a/public/assets/template.ipynb +++ b/public/assets/template.ipynb @@ -2,72 +2,28 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Requirement already satisfied: torch in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (2.2.2)\n", - "Requirement already satisfied: zkstats==0.1.8 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (0.1.8)\n", - "Requirement already satisfied: click<9.0.0,>=8.1.7 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.8) (8.1.7)\n", - "Requirement already satisfied: ezkl==9.1.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.8) (9.1.0)\n", - "Requirement already satisfied: matplotlib<4.0.0,>=3.8.2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.8) (3.8.4)\n", - "Requirement already satisfied: numpy<2.0.0,>=1.26.2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.8) (1.26.4)\n", - "Requirement already satisfied: onnx<2.0.0,>=1.15.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.8) (1.16.0)\n", - "Requirement already satisfied: requests<3.0.0,>=2.31.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.8) (2.31.0)\n", - "Requirement already satisfied: scipy<2.0.0,>=1.11.4 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.8) (1.13.0)\n", - "Requirement already satisfied: statistics<2.0.0,>=1.0.3 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.8) (1.0.3.5)\n", - "Requirement already satisfied: filelock in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch) (3.13.4)\n", - "Requirement already satisfied: typing-extensions>=4.8.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch) (4.11.0)\n", - "Requirement already satisfied: sympy in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch) (1.12)\n", - "Requirement already satisfied: networkx in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch) (3.2.1)\n", - "Requirement already satisfied: jinja2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch) (3.1.3)\n", - "Requirement already satisfied: fsspec in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch) (2024.3.1)\n", - "Requirement already satisfied: contourpy>=1.0.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.8) (1.2.1)\n", - "Requirement already satisfied: cycler>=0.10 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.8) (0.12.1)\n", - "Requirement already satisfied: fonttools>=4.22.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.8) (4.51.0)\n", - "Requirement already satisfied: kiwisolver>=1.3.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.8) (1.4.5)\n", - "Requirement already satisfied: packaging>=20.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.8) (24.0)\n", - "Requirement already satisfied: pillow>=8 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.8) (10.3.0)\n", - "Requirement already satisfied: pyparsing>=2.3.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.8) (3.1.2)\n", - "Requirement already satisfied: python-dateutil>=2.7 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.8) (2.9.0.post0)\n", - "Requirement already satisfied: protobuf>=3.20.2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from onnx<2.0.0,>=1.15.0->zkstats==0.1.8) (4.25.3)\n", - "Requirement already satisfied: charset-normalizer<4,>=2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests<3.0.0,>=2.31.0->zkstats==0.1.8) (3.3.2)\n", - "Requirement already satisfied: idna<4,>=2.5 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests<3.0.0,>=2.31.0->zkstats==0.1.8) (3.7)\n", - "Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests<3.0.0,>=2.31.0->zkstats==0.1.8) (2.2.1)\n", - "Requirement already satisfied: certifi>=2017.4.17 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests<3.0.0,>=2.31.0->zkstats==0.1.8) (2024.2.2)\n", - "Requirement already satisfied: docutils>=0.3 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from statistics<2.0.0,>=1.0.3->zkstats==0.1.8) (0.21.1)\n", - "Requirement already satisfied: MarkupSafe>=2.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from jinja2->torch) (2.1.5)\n", - "Requirement already satisfied: mpmath>=0.19 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from sympy->torch) (1.3.0)\n", - "Requirement already satisfied: six>=1.5 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from python-dateutil>=2.7->matplotlib<4.0.0,>=3.8.2->zkstats==0.1.8) (1.16.0)\n", - "\n", - "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m23.3.1\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.1.1\u001b[0m\n", - "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n", - "Note: you may need to restart the kernel to use updated packages.\n" - ] - } - ], + "outputs": [], "source": [ - "%pip install torch zkstats==0.1.8" + "%pip install torch zkstats==0.1.10" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import json\n", "import os\n", + "\n", "from zkstats.core import (\n", " prover_gen_settings,\n", " prover_gen_proof,\n", " setup,\n", " verifier_verify,\n", ")\n", - "from zkstats.computation import computation_to_model\n", "\n", "cwd = os.getcwd()\n", "\n", @@ -91,17 +47,9 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'x': 7, 'y': 7}\n" - ] - } - ], + "outputs": [], "source": [ "# Data provided shared by the data provider beforehand\n", "\n", @@ -125,24 +73,6 @@ "data_commitment_path = f\"{output_dir}/data_commitment.json\"" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Columns selected by the user" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "# FIXME: this should be provided by users\n", - "# selected_columns = [\"x\", \"y\"]\n", - "selected_columns = [\"x\"]" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -153,9 +83,9 @@ "\n", "```python\n", "def computation(state: State, args: Args):\n", - " out_0 = state.median(x[0])\n", - " out_1 = state.median(x[1])\n", - " return state.mean(torch.cat([out_0.unsqueeze(0), out_1.unsqueeze(0)]).reshape(-1,1))\n", + " x = args[\"x\"]\n", + " y = args[\"y\"]\n", + " return state.mean(x), state.mean(y)\n", "```\n", "\n", "FIXME: The following code snippet is entirely from the user. You MUST check\n", @@ -165,7 +95,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -175,7 +105,8 @@ "\n", "def computation(state: State, args: Args):\n", " x = args[\"x\"]\n", - " return state.mean(x), state.median(x)" + " y = args[\"y\"]\n", + " return state.mean(x), state.mean(y)" ] }, { @@ -187,69 +118,20 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "selected_columns=['x']\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages/torch/onnx/symbolic_opset9.py:2174: FutureWarning: 'torch.onnx.symbolic_opset9._cast_Bool' is deprecated in version 2.0 and will be removed in the future. Please Avoid using this function and create a Cast node instead.\n", - " return fn(g, to_cast_func(g, input, False), to_cast_func(g, other, False))\n", - "/Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages/torch/onnx/utils.py:1703: UserWarning: The exported ONNX model failed ONNX shape inference. The model will not be executable by the ONNX Runtime. If this is unintended and you believe there is a bug, please report an issue at https://github.com/pytorch/pytorch/issues. Error reported by strict ONNX shape inference: [ShapeInferenceError] (op_type:Where, node name: /Where_1): Y has inconsistent type tensor(float) (Triggered internally at /Users/runner/work/pytorch/pytorch/pytorch/torch/csrc/jit/serialization/export.cpp:1490.)\n", - " _C._check_onnx_proto(proto)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "==== Generate & Calibrate Setting ====\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "\n", - " <------------- Numerical Fidelity Report (input_scale: 3, param_scale: 3, scale_input_multiplier: 10) ------------->\n", - "\n", - "+---------------+--------------+------------+--------------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", - "| mean_error | median_error | max_error | min_error | mean_abs_error | median_abs_error | max_abs_error | min_abs_error | mean_squared_error | mean_percent_error | mean_abs_percent_error |\n", - "+---------------+--------------+------------+--------------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", - "| -0.0023816426 | 0.04285431 | 0.04285431 | -0.049999237 | 0.030951181 | 0.04285431 | 0.049999237 | 0 | 0.0014454719 | -0.0000836013 | 0.0006378884 |\n", - "+---------------+--------------+------------+--------------+----------------+------------------+---------------+---------------+--------------------+--------------------+------------------------+\n", - "\n", - "\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "scale: [3]\n", - "setting: {\"run_args\":{\"tolerance\":{\"val\":0.0,\"scale\":1.0},\"input_scale\":3,\"param_scale\":3,\"scale_rebase_multiplier\":10,\"lookup_range\":[-856,754],\"logrows\":11,\"num_inner_cols\":2,\"variables\":[[\"batch_size\",1]],\"input_visibility\":{\"Hashed\":{\"hash_is_public\":true,\"outlets\":[]}},\"output_visibility\":\"Public\",\"param_visibility\":\"Fixed\",\"div_rebasing\":false,\"rebase_frac_zero_constants\":false,\"check_mode\":\"UNSAFE\"},\"num_rows\":1312,\"total_assignments\":502,\"total_const_size\":212,\"model_instance_shapes\":[[1],[1],[1]],\"model_output_scales\":[0,3,3],\"model_input_scales\":[3],\"module_sizes\":{\"kzg\":[],\"poseidon\":[1312,[1]]},\"required_lookups\":[{\"GreaterThan\":{\"a\":0.0}},\"Abs\",\"ReLU\",{\"Floor\":{\"scale\":16.0}}],\"required_range_checks\":[],\"check_mode\":\"UNSAFE\",\"version\":\"9.1.0\",\"num_blinding_factors\":null,\"timestamp\":1720109952300}\n" - ] - } - ], + "outputs": [], "source": [ - "print(f\"{selected_columns=}\")\n", - "_, model = computation_to_model(computation, precal_witness_path, isProver=True, selected_columns=selected_columns)\n", + "from zkstats.computation import computation_to_model\n", + "\n", + "used_columns, state, model = computation_to_model(computation, precal_witness_path, data_shape, isProver=True)\n", "prover_gen_settings(\n", " data_path,\n", - " selected_columns,\n", + " used_columns,\n", " comb_data_path,\n", " model,\n", " model_onnx_path,\n", - " [3],\n", + " [7],\n", " \"resources\",\n", " settings_path,\n", ")\n", @@ -263,18 +145,9 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "==== setting up ezkl ====\n", - "Time setup: 0.7527332305908203 seconds\n" - ] - } - ], + "outputs": [], "source": [ "setup(model_onnx_path, compiled_model_path, settings_path, vk_path, pk_path)" ] @@ -288,22 +161,9 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "==== Generating Witness ====\n", - "witness boolean: 1.0\n", - "witness result 1 : 51.5\n", - "==== Generating Proof ====\n", - "proof: {'instances': [['3bea079e2a500a3285d05fd174263a5ffd78c2dd63131c52abd2a199f786f601', '0100000000000000000000000000000000000000000000000000000000000000', '9c01000000000000000000000000000000000000000000000000000000000000', '7201000000000000000000000000000000000000000000000000000000000000']], 'proof': '0x1151a27e4fff31b51cbc475a9a4b9cce6cf662e530e1f9ba74495ef85b6f244a2672447acedbc2a14098e04c347828f398f83d7488da7249043625b25769c70a120102370a549dcffb5c6da3efb1a7f0890ac67dc8fddc8c21085314f7e5cc1b2cb82377d5297b8fe2973b9970340588d5597a083223493029802bf562c19a8b0c87b0c4b645666f4cc0ef617e6da951f76ac252ed72c573002f3330104b553128b546384da61dddb10d3f8c92fe005bb6ecd4847bf5cccedab4f0bb9a96598c04e97e41c660d5d060ce9d2fa700fded05010375c9bbf7d5b58374d098e4a2dc090b2fa4b07184594f89bbaa174495e1d5f2ffc1c49d9f080a6b3eac3214fbb01416c736561f88f82c4b6618967d675eb0d95f4683efa785310817a81c3407360b845cfe18aa94fb6b9eec3b702dd1ed1c636e3c01be09dbaa75bb038c0452af284afeb9aa6c21f3386cd6542cf65584247cd592063b798286490bb1168c48362dd6a20a23e230fc4c8054b02aaf61f087997bb342dd246714767153bfc7158a02ffad4636b8e792fd5db4b0a497efcc8e6271d4156d7139dbb636b23864b0c3123480946806d074fd5206fe2d8767bf74c844022092e20d2f11a26268b72fe20aca7dcb296a250d70b9c40277c98d791c476e21cc25885430632c3d338ec3c4155d74be329ce7823dbd7db5abc8ffa9d7c7f6e3114a8b7d46a971f4f6b9e12426e477935a49bb341771773ac46c3c6b6bb8d8c08fb10bc764968da2087a10c623e4601d5bf933d10be6a63888d67c772db7baa5710b8cb4b2ef8868da5b430203da89fb4721472725b24e7525c23d08499478199b931d2e2ace8940717659f211d9e23dee678e8d005e16567ba9b3244ecff819068b5129f94ad140cba68708201c1c2033ca6c78378fe5cb875dcbc0f074e3bb50b50f9fd1e0efc1e085f1f00342915a6f57a960c65d93227cb4ebaadf36b345e333e0770c1bff89339cffd807148ebff7c88ac853bece8cd80cb87deb762aced604fe5ae8e430fc0fc37c6b3013fdcdfb894592e3b3b6a1d886e12b2e308d7028db5aaca5155c836f026dd106c2026e8c84d5f936b5a3fae4ec4c2fa162a0cbe4cc0a52acce7d64f83d1e3829f18d5aa59256607148735422d3dbaaf1e5fe904fe01663ac2ebb157078c0622682438634d22ada77b993fd148b6339275c846b66b0cbc382939fa6e67a96ea2dc5162a879786e0fe0a8b0f955c6fbed2da6c8c3e00c053d50649c214d62b9a2f73e71e9a9b08956ad6bd05e0ec17b17e0a2b543142db23bc0f0330403176900aa23851ffd430ef10ff44998ea730d444b86ac055991efeae7148bdbe261d100b9ec017e7e06cc7e63454c3bc2e61669f2d4303dd87ac65473268927c30663d0e057b2c976083152614b26dbdd5156d69afe50c7e98ab0151232e9cc886990807148ebff7c88ac853bece8cd80cb87deb762aced604fe5ae8e430fc0fc37c6b3013fdcdfb894592e3b3b6a1d886e12b2e308d7028db5aaca5155c836f026dd10ae39e2cdac93297110712805806e266864f0f1a937f344f273a7895a6fec77a262acd5145a304dfc67fe3b80eb4b979da509c1fc0e90498ffe257df0270b98d15d41bf55cd1999e376ab0460d713a17448427449cd65b2556b6eda41e23f73a1ca74b788a72e802bad23842f543da2ff424bcca337b61e8caa50c6cc14d52f92c6fc77572057382fc660c2dc286d12da3b221d7f125115097861c9f5703c5a317131464842a08c3f6bc9ccb699b20fdb9e3f26c6af9ff11c0602b047fc606340623bcb46aebe43a64f89a76ec40f598ba0ea4e387c0c5a6722309f2761633aa2004a6666307aff3acd9d6485f1e63aeb27408b6621e19f8a61cd850bfa21a94236bd196ffa2b688fcfe4fdd15c62c617f53ae212f8650cc7cc83f5905aca09e0db6271896fa369b6a941ede3354608fa81456eb7ea90729a4ec231288e657d72438eaaa69c5959e625b0063501164e7c158c932f969316d301989fd2520272421e2cd70d66f6f4170ce85d01a3b8af71f4a3a8ed0e7b66689cbc098b10fc4a33006c82c38d49509159047866d29207763ef59b2ed9e17079db0a0992c27cb9d2e330aea0ddbcb2a6a47e131303ac2647c00107ce61cae86690d3ae9bc3e4a1f01e7d7cad168d37bc43d8a5092b9a05d9a05d6fef738117d9e1ae2038cb1d7941928a0a8b53258c153d89e1236964ce26da097f039e050a3ea7b7f87538e4ffb0f7566fac5c96edff2050ce5ec019b4d30dd6a7c71fb0598b71bd8ad8f59222207f9ab630195accd148362baf59ba5fda963c8d5f894b88f0ab33c678bad8bc71ba424e4ba3f70873e7f965790b5d1a35eb76053e014f41ffc5ac6e23eae8d360e1b81f3617ecf955689c98a138a9406d5d016141e1dc1bb832870da1df5e199172f942b3aea75d11f7cf8a93f4dfdb2b7b04df13476b2c55e00ed4832d90e181a96eb5d87c84b888dcc1cc4b156441b8828b3e7591257d3e225746b0b28c9982a753413e46f8bd38544a8e78125368530d9edb5be669f8cd5b0274b74d7a570281b3265f58d445b35695c494a88ca8a2c82789c970b02d26fbd5d8052f543480c2e604f3afb2e5403cdfcb4f01e09da333f5b9037a60014c547858e4666aab4117e6e1bc3c155075dc9fdea02aa70ec94207c0c627a5a9dda85a4fdc1684d9a299788fb5986f421266a4fb1570517c958119291d1543e455f33139b9e96aacf09ad4c353088d8ff9ec5411a4859d2e7646fadf54ea155c5c70abecb28f04fdd099ca562156f87c88009298f1c24be31e9fa39a548a29d928d7a85fe202ffe730a573a32be540fa687578963d0d59528dee124aa44f23850d10af3c31a1d7da3151ece7395b9763307b39d39a1e1a744142b13b5c693b3855c6d60f46ee81106278a2d5eac4f83bd240710b1330ee64ea5e479047c9590cae1a2a4a26931df0808161febe71d277931c57086a52d1b37bd92c9554035782a880594b43bd613d023a30e5821d5cffafb5b620e744d9647f4cfd1310e6b957efd3888e6b0763015263b626ab05173940826dcac0b5bc72d6fbb4e08f3042802aeaa87f060119e7e05899635dda498a7ecfeefff71615b85c6f1cdb74e3629fcd3511bb5a2df6a370c2243f1b8e2680073d770a993a641d83c0cf2e7a265f514db3434fd2b2970972fa73fcfc02337a09036fffe7c17663e21f9d668e62505740b0b32c2a899ebb02f4029d9d764c1886a3b26c791fdf107b0e4076302d7db218fded11a7e915e2a277c9ba7dbcc7b78ece1b2efa2b1c9c53f02495cc7702a99a35f1953256484cc2c0298f8856dbba6971d45a1808e6b65b78d7a316a4dd5e968b2b213f6fbe9442974ad4b021f745a34e7cdc71d1fd5d50f597480ec1eb2bef4113a7aa3efd8c40c80c83022165bcdab725d70c5d743a0fa0573a3186a542309bc699b6a7cd01c16727fd601001ad3a439fc8f5e8e91fc6af3594660a58a9c70ff70076fdca78b2ed373b6fd2afbb8980a14711ca837f7f08ec90724b619e343a4fca4f5dd1bcd1c3c1b09b2d19ec77470890ff933470aa13179eb8c1344b47d36a806775e80af23694e8482a2b29de96e7a326cd61edc662d2b25b0c9ce6b90fca6b4d11ccce9243809583a4ae33f0d7216fb4e7ff3abf380b42f70b9ce9e193c726e9e7a886c2524f3f8d5698d85c9aaece7d97cbf1bc7b1e67e7ecba616c5895e1909f67c232ab8d70ede450bdc9060bff925c33ed394d67ab668eb476d4dcc384ecc5f1db01a402babd0e6f46f6db8f89667a34e5e897d274c8a9512d7ee26270aa2da3495098ee6e072781774f5b5b613cd8d91ed999c06a09ad5ac5aedf56a52d0a0441a01cd67db705cdfa3c7f764d1bac1cbffcf6c485950c1e86d37ae78917b2cdfe60762b506cc5427834a3f4c5f0002cdbf9e8c809eac300cb4b0986708697963e71f0cbb95c5d0871cf0315e10d8cd7df336a2fcf5a0c0213a7f9fb5600b84d2c22dd98c2d2ef85e194a2923c7d5232c5f1bf95a5a674bfff3a10105111d5931ac026bf9608d0d72b96e0c153829d250e0c928f9584ce14e0b86dbbb42cb694ac9172bb62f231fc668253533ab368234fc51bc5ffa05d6f1f30c3b66b826a5e7e602740c83c7d8a6989e4e571ea08506e3afb7e940113851db8e8116c7eee650d5280ea8579e1211742ca7cbbcb5a69ebe81e0a6403d1e13e9b468668083c82bea0bf74e3eb247d9f23e76b12ca9d685624aa0fb6c432adbfc855321ae23722b99005f74607f51e7791aa4a9e7495d14a2f6bf11833f802f0d6525fc9830f5e48a2af37c42e7fe8d3c91b9d181bb841bd06fe56c98acc0b1623dbadf69736b20c30000000000000000000000000000000000000000000000000000000000000000077737b01c9d9aa8acc810213ade26a3e012d45304b6e4ff5d8aa4f8a52cf43027b8abfa3ae46c3b878bc14e78823720d50a9751066193cf05fd5504af61d4a2000000000000000000000000000000000000000000000000000000000000000020fbd35294ee30fd9ef31dcf9b6e6b7e890f123a39f8f816849a8c7e16d889d5137f68d2bf2700e31bd3a2656655a0f770abd2f2b7fa853c380f40d940fb4d25057c99d74a6b03c79956903fc591f4be5c686f42078b81bcdb4d3157f5f2ff3b0000000000000000000000000000000000000000000000000000000000000000269d185b469f09a3051af6d1f2c7cbd46820970347072ae050d3b35d305bcf0f1a4a05129c1899d4ad9c95343a14133737f19c601af26ab87c21f3c9c4fb169300000000000000000000000000000000000000000000000000000000000000000d4ab62401887a3471e59769642e5db266eebb82a1f7f9ac24312709f7488b5500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002332ed690a2182f2abdab74665959c34d85bff96972af7c3422f5c086bc76fb91d9715ffb1c821a811a09712225ab4347f1482fe810e07463f262629e41dc9d70a3dddb13ccd2c02c8d55d6e9eb6e71e5347f77e21a9e518d6da14e370803d4b06df7e448e315ac549ed0e42fa7b61434eea74c95d1f6170aaf46f72f384b16400000000000000000000000000000000000000000000000000000000000000000b9b7cecd84d2126b392f215804b1428199fc3384ee43a6b0719921ea03899ea1f0a14a680523f30d52ef11c6cf71399222840d2c035837a40ffca3afdf3a7c919788e79793091d3bc91bfe8d4a24dfc9723c5291201f6118f310ac3af81ef0700e7cab150ebf579692f24641899c98690f29830da475273c089c57b36178e800000000000000000000000000000000000000000000000000000000000000000164102268334d944dcfcdca9a0a954bd6de5822d6038b00978e24edd4b38a6e71bbb96414e1eab0cb431cede3d4d98072f08adcf20556b81ba3f3b8ed53ced43122b96e6911eb390c9bde43376ef7e578f368dd9b5175eca732d989af8c546032905d0e74c8fa1998b1f40dcaf331636468eaabf69df85a8c10e13444b5d7dfc12eee4bf7818b3cb26739317255eb339255cfa14d15edb6b81850a27c6c9ebd511a03a52f8c798e43f4f21bb74f858941157b9a82c2da03a1ca7be9ce12cbe2c006bac66700b6a0ba80fe4f4f4403364b86d9e134b29bb7d366d5906b7bffae71d1d8af4e5ff6ac2fb93c7020b9917250e39887e8b834add06f92bcb0b6d8d79195a05a4449a2c6367dae820c9c2d618929405cfc190a4c7c04a88bb20b0781119aff06b43022c7b53369e5aeeb34a5969874a788e97e0412aa5b35a49587bba2f76a39f5ea260d6da5041277c1f75bc4376f5f3aa76f2f728277e02a6e8509d2e6b3a905188d7e9df941b40b7e4ca44df5c599779665661d3c636d0e93a9a1811439c971e87d67b5a9d22d2b58622ab069b20b4f18a988454a875146e67c13908afcaccc9793e358776aec766ac6b5f951d06c75de7e9ad5713a65a246a72e41e8894efd1e2280e67f8659aafda331ab4d06f82bd33debeb7835fc6bfa3946d2a438876dee407afb67316b35bd5d18ef06d51477b26d7be0c91eb1aed2384a41383ab251d519baf1569035f9b7be365a45ef7448d428f3abad13d37bfcdbe57151c3d080da31380d49c9ee7322c7fbfaff3391769e6eab502fe27e15970c01023af259f908de6ce9c0324b5ddacce370f648c84fc9e29ffe182d8bb8874812c262bf221bd601435732979d2139436ce6eb00860694a34c896354292a19469142eb65cc69d0567858e01dbebca25e00316741200f946ce28fe2fccfa63cbc3422d3d880a13247ef49a8984b9400ceb2c34a6c4920a53976db063fc6d5c74b25b178847aad54e920bb6e97e1397f93eca02f7f880afadad0cd98a873305f7d1fe10e5fced2fefb541cca5e0e21a81df747dbd2d75e1ca9d94b86027e2bab887af1cb8f60e4b65627f6f12074edd6ed3775ac1076ddc554b653bc073a045ba1c7701fd450becf85dea9449599fcf8620efa43106b4ec399ba6278ac84fdc1703f8266e5693d55d0c665a0c0fbc8b1f32131baa66cb5a695aa8e9cbd38f04ada5570b74150f72c22f0c466cb1f8e4a1558ece875052ec63b1599dc877bd92af0efc07881b5920c6eff44e03842aaf3a0ad2016ac8c36904574bde614fb0115278b71172e3eabe45dc082e2c8a31558a83bf806bd29024ac1f983c4f5a9cbb999a2e12547cca1ca5b57353cff0d17f13ba2ae2b292cb02252b543055e39a481f367319686ca4314a7df5b0951860aa38c213ed2bbd5bd256c68855d6f9c51dfabf3704151b426cf8dd92bb47d7f00ee40001b9e79613e11b60cd859d54ccc9a8a0311fbd391a3bd9d40a06971c5b3ab3e7e661da61d4a3eee340909769625cda39c50bfa25e362706c209847e09ba2292407f14552e0b2b7731311a5f9356d92dc1c20ecd909adc32407081775612b49106bb8727c3a1311a3eb9a2d2ede74102a8228ee12b043c643ae1e04434881487d40445ea93f8629c5343985a3e887913c810f9447343789d6942cd6135029ae90147ff91398904a9c97f5a08e825f2c9c0801e94987531ec128bfbc457c4c2b42ae4e2047321a7b44eded58b14ac4b5fb320933a6cd76f691c8bbba3de48d2ecd99c2e647bc2ddae32b00612b800ca90acf24c6517d86a687f0dfd78f48903409e7ae0504104bd50d5f3c6b849255aa7b091778f9136bc0d1920eda68ddf548d6a2dab64c63ae14edc1f061b8d22a00507309b797dbbef28d70419df84e7076ab35b482e9b294b0c224706639234685243a29d51d4b77086bb62bda354ea7dc9454e43ff29e42dee6ac06820140cf0df3701172e3eabe45dc082e2c8a31558a83bf806bd29024ac1f983c4f5a9cbb999a2e1f797d33d96b3622d2c8447551917dfb3a8b6040dcbab8104c0046caef8b80c92e72f982152f504b48b4c9a254b9bcc8a447e4ae69a7c17853021fa18b9a9df90908715b66a7e56b2cde4f25123c8e1feb7e7a0d07c25f7a8d2838f703b008e101c4ff211a0d94159cd31485033e57f385f33a44379bf9cae7640a397e284019', 'transcript_type': 'EVM'}\n", - "Time gen prf: 0.6213669776916504 seconds\n" - ] - } - ], + "outputs": [], "source": [ "prover_gen_proof(\n", " model_onnx_path,\n", @@ -326,25 +186,20 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[51.5, 46.25]" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# verify the proof\n", - "verifier_verify(proof_path, settings_path, vk_path, selected_columns, data_commitment_path)" + "res = verifier_verify(proof_path, settings_path, vk_path, used_columns, data_commitment_path)\n", + "print(f\"!@# res: {res}\")\n" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, { "cell_type": "markdown", "metadata": {}, @@ -354,21 +209,9 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Model onnx:\t\t /Users/mhchia/projects/work/pse/demo-next/public/assets/out/model.onnx\n", - "Settings:\t\t /Users/mhchia/projects/work/pse/demo-next/public/assets/out/settings.json\n", - "Proof:\t\t\t /Users/mhchia/projects/work/pse/demo-next/public/assets/out/model.pf\n", - "Verification key:\t /Users/mhchia/projects/work/pse/demo-next/public/assets/out/model.vk\n", - "Srs path:\t\t ~/.ezkl/srs/kzg11.srs\n" - ] - } - ], + "outputs": [], "source": [ "print(\"Model onnx:\\t\\t\", model_onnx_path)\n", "print(\"Settings:\\t\\t\", settings_path)\n", @@ -394,7 +237,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.4" + "version": "3.12.5" } }, "nbformat": 4, diff --git a/public/assets/verifier.ipynb b/public/assets/verifier.ipynb index f4efe6b..8018ec3 100644 --- a/public/assets/verifier.ipynb +++ b/public/assets/verifier.ipynb @@ -2,64 +2,60 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: torch in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (2.2.2)\n", - "Requirement already satisfied: zkstats==0.1.8 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (0.1.8)\n", - "Requirement already satisfied: click<9.0.0,>=8.1.7 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.8) (8.1.7)\n", - "Requirement already satisfied: ezkl==9.1.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.8) (9.1.0)\n", - "Requirement already satisfied: matplotlib<4.0.0,>=3.8.2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.8) (3.8.4)\n", - "Requirement already satisfied: numpy<2.0.0,>=1.26.2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.8) (1.26.4)\n", - "Requirement already satisfied: onnx<2.0.0,>=1.15.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.8) (1.16.0)\n", - "Requirement already satisfied: requests<3.0.0,>=2.31.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.8) (2.31.0)\n", - "Requirement already satisfied: scipy<2.0.0,>=1.11.4 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.8) (1.13.0)\n", - "Requirement already satisfied: statistics<2.0.0,>=1.0.3 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.8) (1.0.3.5)\n", - "Requirement already satisfied: filelock in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch) (3.13.4)\n", - "Requirement already satisfied: typing-extensions>=4.8.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch) (4.11.0)\n", - "Requirement already satisfied: sympy in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch) (1.12)\n", + "Requirement already satisfied: torch in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (2.2.0)\n", + "Requirement already satisfied: zkstats==0.1.10 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (0.1.10)\n", + "Requirement already satisfied: click<9.0.0,>=8.1.7 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.10) (8.1.7)\n", + "Requirement already satisfied: ezkl==9.1.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.10) (9.1.0)\n", + "Requirement already satisfied: matplotlib<4.0.0,>=3.8.2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.10) (3.9.2)\n", + "Requirement already satisfied: numpy<2.0.0,>=1.26.2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.10) (1.26.4)\n", + "Requirement already satisfied: onnx<2.0.0,>=1.15.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.10) (1.16.2)\n", + "Requirement already satisfied: requests<3.0.0,>=2.31.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.10) (2.32.3)\n", + "Requirement already satisfied: scipy<2.0.0,>=1.11.4 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.10) (1.13.1)\n", + "Requirement already satisfied: statistics<2.0.0,>=1.0.3 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from zkstats==0.1.10) (1.0.3.5)\n", + "Requirement already satisfied: filelock in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch) (3.16.0)\n", + "Requirement already satisfied: typing-extensions>=4.8.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch) (4.12.2)\n", + "Requirement already satisfied: sympy in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch) (1.13.2)\n", "Requirement already satisfied: networkx in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch) (3.2.1)\n", - "Requirement already satisfied: jinja2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch) (3.1.3)\n", - "Requirement already satisfied: fsspec in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch) (2024.3.1)\n", - "Requirement already satisfied: contourpy>=1.0.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.8) (1.2.1)\n", - "Requirement already satisfied: cycler>=0.10 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.8) (0.12.1)\n", - "Requirement already satisfied: fonttools>=4.22.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.8) (4.51.0)\n", - "Requirement already satisfied: kiwisolver>=1.3.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.8) (1.4.5)\n", - "Requirement already satisfied: packaging>=20.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.8) (24.0)\n", - "Requirement already satisfied: pillow>=8 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.8) (10.3.0)\n", - "Requirement already satisfied: pyparsing>=2.3.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.8) (3.1.2)\n", - "Requirement already satisfied: python-dateutil>=2.7 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.8) (2.9.0.post0)\n", - "Requirement already satisfied: protobuf>=3.20.2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from onnx<2.0.0,>=1.15.0->zkstats==0.1.8) (4.25.3)\n", - "Requirement already satisfied: charset-normalizer<4,>=2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests<3.0.0,>=2.31.0->zkstats==0.1.8) (3.3.2)\n", - "Requirement already satisfied: idna<4,>=2.5 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests<3.0.0,>=2.31.0->zkstats==0.1.8) (3.7)\n", - "Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests<3.0.0,>=2.31.0->zkstats==0.1.8) (2.2.1)\n", - "Requirement already satisfied: certifi>=2017.4.17 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests<3.0.0,>=2.31.0->zkstats==0.1.8) (2024.2.2)\n", - "Requirement already satisfied: docutils>=0.3 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from statistics<2.0.0,>=1.0.3->zkstats==0.1.8) (0.21.1)\n", + "Requirement already satisfied: jinja2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch) (3.1.4)\n", + "Requirement already satisfied: fsspec in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from torch) (2024.9.0)\n", + "Requirement already satisfied: contourpy>=1.0.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.10) (1.3.0)\n", + "Requirement already satisfied: cycler>=0.10 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.10) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.10) (4.53.1)\n", + "Requirement already satisfied: kiwisolver>=1.3.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.10) (1.4.7)\n", + "Requirement already satisfied: packaging>=20.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.10) (24.1)\n", + "Requirement already satisfied: pillow>=8 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.10) (10.4.0)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.10) (3.1.4)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from matplotlib<4.0.0,>=3.8.2->zkstats==0.1.10) (2.9.0.post0)\n", + "Requirement already satisfied: protobuf>=3.20.2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from onnx<2.0.0,>=1.15.0->zkstats==0.1.10) (5.28.1)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests<3.0.0,>=2.31.0->zkstats==0.1.10) (3.3.2)\n", + "Requirement already satisfied: idna<4,>=2.5 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests<3.0.0,>=2.31.0->zkstats==0.1.10) (3.8)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests<3.0.0,>=2.31.0->zkstats==0.1.10) (2.2.3)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from requests<3.0.0,>=2.31.0->zkstats==0.1.10) (2024.8.30)\n", + "Requirement already satisfied: docutils>=0.3 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from statistics<2.0.0,>=1.0.3->zkstats==0.1.10) (0.21.2)\n", "Requirement already satisfied: MarkupSafe>=2.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from jinja2->torch) (2.1.5)\n", - "Requirement already satisfied: mpmath>=0.19 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from sympy->torch) (1.3.0)\n", - "Requirement already satisfied: six>=1.5 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from python-dateutil>=2.7->matplotlib<4.0.0,>=3.8.2->zkstats==0.1.8) (1.16.0)\n", - "\n", - "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m23.3.1\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.1.1\u001b[0m\n", - "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n", + "Requirement already satisfied: mpmath<1.4,>=1.1.0 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from sympy->torch) (1.3.0)\n", + "Requirement already satisfied: six>=1.5 in /Users/mhchia/Library/Caches/pypoetry/virtualenvs/zkstats-brXmXluj-py3.12/lib/python3.12/site-packages (from python-dateutil>=2.7->matplotlib<4.0.0,>=3.8.2->zkstats==0.1.10) (1.16.0)\n", "Note: you may need to restart the kernel to use updated packages.\n" ] } ], "source": [ - "%pip install torch zkstats==0.1.8" + "%pip install torch zkstats==0.1.10" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ - "import json\n", "import os\n", "from zkstats.core import (\n", " setup,\n", @@ -76,7 +72,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ @@ -92,17 +88,6 @@ "User select the columns" ] }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "# FIXME: this should be provided by users\n", - "# selected_columns = [\"x\", \"y\"]\n", - "selected_columns = [\"x\"]" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -112,10 +97,10 @@ "A computation should be of type `TComputation`. For example, the following code snippet defines a computation that computes the sum of the private data.\n", "\n", "```python\n", - "def computation(state: State, x: list[torch.Tensor]):\n", - " out_0 = state.median(x[0])\n", - " out_1 = state.median(x[1])\n", - " return state.mean(torch.cat([out_0.unsqueeze(0), out_1.unsqueeze(0)]).reshape(-1,1))\n", + "def computation(state: State, args: Args):\n", + " x = args[\"x\"]\n", + " y = args[\"y\"]\n", + " return state.mean(x), state.mean(y)\n", "```\n", "\n", "FIXME: The following code snippet is entirely from the user. You MUST check\n", @@ -125,7 +110,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 18, "metadata": {}, "outputs": [], "source": [ @@ -135,7 +120,8 @@ "\n", "def computation(state: State, args: Args):\n", " x = args[\"x\"]\n", - " return state.mean(x), state.median(x)" + " y = args[\"y\"]\n", + " return state.mean(x), state.mean(y)" ] }, { @@ -147,7 +133,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ @@ -166,9 +152,16 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 20, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "==== setting up ezkl ====\n" + ] + }, { "name": "stderr", "output_type": "stream", @@ -183,17 +176,16 @@ "name": "stdout", "output_type": "stream", "text": [ - "==== setting up ezkl ====\n", - "Time setup: 0.5496859550476074 seconds\n" + "Time setup: 0.907416820526123 seconds\n" ] }, { "data": { "text/plain": [ - "[51.5, 46.25]" + "[51.5390625, 4.0859375]" ] }, - "execution_count": 7, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -223,27 +215,49 @@ "\n", "from zkstats.core import verifier_define_calculation, verifier_verify\n", "\n", - "verifier_model_path = f\"{output_dir}/verifier_model.onnx\"\n", - "verifier_compiled_model_path = f\"{output_dir}/verifier_model.compiled\"\n", - "verifier_vk_path = f\"{output_dir}/verifier_model.vk\"\n", - "verifier_pk_path = f\"{output_dir}/verifier_model.pk\"\n", - "dummy_data_path = f\"{output_dir}/dummy_data.json\"\n", - "sel_dummy_data_path = f\"{output_dir}/sel_dummy_data.json\"\n", "\n", - "# NOTE: generate the verifier model with the `precal_witness_path` provided by the prover\n", - "_, verifier_model = computation_to_model(computation, precal_witness_path, isProver=False, selected_columns=selected_columns)\n", + "def generate_verifier_model_and_setup(\n", + " output_dir: str,\n", + " computation, # from myself\n", + " precal_witness_path, # from prover\n", + " data_shape, # from prover\n", + "):\n", + " # Generate the verifier model with the `precal_witness_path` provided by the prover\n", + " selected_columns, _, verifier_model = computation_to_model(computation, precal_witness_path, data_shape, isProver=False)\n", + "\n", + " verifier_model_path = f\"{output_dir}/verifier_model.onnx\"\n", + " verifier_compiled_model_path = f\"{output_dir}/verifier_model.compiled\"\n", + "\n", + " verifier_vk_path = f\"{output_dir}/verifier_model.vk\"\n", + " verifier_pk_path = f\"{output_dir}/verifier_model.pk\"\n", + " dummy_data_path = f\"{output_dir}/dummy_data.json\"\n", + " sel_dummy_data_path = f\"{output_dir}/sel_dummy_data.json\"\n", + "\n", + " # Create dummy data with the same shape as the original data\n", + " create_dummy(data_shape, dummy_data_path)\n", + "\n", + " # Generate the verifier model given the dummy data and the selected columns\n", + " verifier_define_calculation(dummy_data_path, selected_columns, sel_dummy_data_path, verifier_model, verifier_model_path)\n", + "\n", + " # Generate the verification key\n", + " setup(verifier_model_path, verifier_compiled_model_path, settings_path, verifier_vk_path, verifier_pk_path)\n", + "\n", + " return selected_columns, verifier_vk_path\n", + "\n", "# Determine which srs to use with the logrows in the settings.json\n", "with open(settings_path, \"r\") as f:\n", " settings = json.load(f)\n", "logrows = int(settings[\"run_args\"][\"logrows\"])\n", "srs_path = f'~/.ezkl/srs/kzg{logrows}.srs'\n", "\n", - "# create dummy data with the same shape as the original data\n", - "create_dummy(data_shape, dummy_data_path)\n", - "# generate the verifier model given the dummy data and the selected columns\n", - "verifier_define_calculation(dummy_data_path, selected_columns, sel_dummy_data_path, verifier_model, verifier_model_path)\n", - "# generate the verification key\n", - "setup(verifier_model_path, verifier_compiled_model_path, settings_path, verifier_vk_path, verifier_pk_path)\n", + "# Call the function with the necessary parameters\n", + "selected_columns, verifier_vk_path = generate_verifier_model_and_setup(\n", + " output_dir,\n", + " computation,\n", + " precal_witness_path,\n", + " data_shape,\n", + ")\n", + "\n", "# verify the proof\n", "verifier_verify(proof_path, settings_path, verifier_vk_path, selected_columns, data_commitment_path)" ] @@ -257,23 +271,21 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Model onnx:\t\t /Users/mhchia/projects/work/pse/demo-next/public/assets/out/verifier_model.onnx\n", "Settings:\t\t /Users/mhchia/projects/work/pse/demo-next/public/assets/out/settings.json\n", "Proof:\t\t\t /Users/mhchia/projects/work/pse/demo-next/public/assets/out/model.pf\n", "Verification key:\t /Users/mhchia/projects/work/pse/demo-next/public/assets/out/verifier_model.vk\n", - "Srs path:\t\t ~/.ezkl/srs/kzg11.srs\n" + "Srs path:\t\t ~/.ezkl/srs/kzg12.srs\n" ] } ], "source": [ - "print(\"Model onnx:\\t\\t\", verifier_model_path)\n", "print(\"Settings:\\t\\t\", settings_path)\n", "print(\"Proof:\\t\\t\\t\", proof_path)\n", "print(\"Verification key:\\t\", verifier_vk_path)\n", @@ -297,7 +309,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.4" + "version": "3.12.5" } }, "nbformat": 4, diff --git a/src/app/page.tsx b/src/app/page.tsx index 67c550f..7fe40fc 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -18,8 +18,7 @@ const possibleScales = Array.from({ length: 20 }, (_, i) => i); // template notebook settings const templateNotebook = `${assetsURL}/template.ipynb`; -const cellForSelectedColumns = 4; -const cellForUserComputation = 6; +const cellForUserComputation = 4; /** * Generate the notebook for the computation @@ -27,16 +26,11 @@ const cellForUserComputation = 6; */ export async function generateJupyterNotebookForComputation( computation: string, - selectedColumns: string[], templateURL: string, ) { const splitCode = computation.split("\n").map((line) => `${line}\n`); const response = await fetch(templateURL); const template = await response.json(); - // Fill the selected columns in the notebook - const selectedColumnsCell = template.cells[cellForSelectedColumns]; - // Put `selected_columns = ["col1", "col2", ...]` in the notebook - selectedColumnsCell.source = `selected_columns = ${JSON.stringify(selectedColumns)}`; // Fill the user computation in the notebook const codeCell = template.cells[cellForUserComputation]; codeCell.source = splitCode; @@ -46,15 +40,14 @@ export async function generateJupyterNotebookForComputation( async function exampleDownloadNotebook() { const name = "mean"; const date = Date.now(); - const selectedColumns = ["x", "y"]; const computation = `import torch -from zkstats.computation import State +from zkstats.computation import State, Args -def computation(state: State, x: list[torch.Tensor]): - out_0 = state.median(x[0]) - out_1 = state.median(x[1]) - return state.mean(torch.cat([out_0.unsqueeze(0), out_1.unsqueeze(0)]).reshape(-1,1))` - const notebook = await generateJupyterNotebookForComputation(computation, selectedColumns, templateNotebook) +def computation(state: State, args: Args): + x = args["x"] + y = args["y"] + return state.mean(x), state.mean(y)` + const notebook = await generateJupyterNotebookForComputation(computation, templateNotebook) // Download for testing const element = document.createElement("a"); const file = new Blob([notebook], {type: 'text/plain'});