Lib for generating model inference and training proofs
Project description
TOPLOC: A Locality Sensitive Hashing Scheme for Trustless Verifiable Inference
TOPLOC is a novel method for verifiable inference that enables users to verify that LLM providers are using the correct model configurations and settings. It leverages locality sensitive hashing for intermediate activations to detect unauthorized modifications.
Features
- Detect unauthorized modifications to models, prompts, and precision settings
- 1000x reduction in storage requirements compared to full activation storage
- Validation speeds up to 100x faster than original inference
- Robust across different hardware configurations and implementations
- Zero false positives/negatives in empirical testing
Key Components
Proof Generation
- Extracts top-k values from the last hidden state
- Uses polynomial encoding for compact storage
- Generates verifiable proof during inference
Validation
- Recalculates top-k features
- Compares exponent and mantissa differences
- Validates against predefined error thresholds
Storage Requirements
- Only 258 bytes per 32 new tokens
- Compared to 262KB for full token embeddings (Llama-3.1-8B-Instruct)
Integrations
vLLM
TOPLOC is integrated with vLLM for efficient inference and validation as part of this repository. The integration allows you to leverage vLLM's optimized inference pipeline while maintaining verification capabilities.
SGLang
We maintain a fork of SGLang that includes TOPLOC integration, enabling verifiable inference with SGLang's framework.
How to use the code
Installation
git clone https://github.com/PrimeIntellect/toploc.git
pip install -r requirements.txt
Run Experiments
This is an example on running validation with Llama-3.1-8B-Instruct over the ultrachat dataset.
First, generate the polynomial encodings for the model using:
python vllm_generate_poly.py --model_name meta-llama/Llama-3.1-8B-Instruct --tp 1 --n_samples 4 --save_dir signatures --max_decode_tokens 512 --dataset_name stingning/ultrachat --dtype bfloat16
This should create a directory called signatures with the polynomial encodings for the model.
You can then run validation with:
python vllm_validate_poly.py --decode_model_name meta-llama/Llama-3.1-8B-Instruct --validate_model_name meta-llama/Llama-3.1-8B-Instruct --tp 1 --n_samples 4 --save_dir just4 --max_decode_tokens 512 --dataset_name stingning/ultrachat --dtype bfloat16 --attn flash
If the verification passes, you should see:
VERIFICATION PASSED: Mantissa error mean: 0. below 10 and median: 0. below 8 and exp intersections: 100 below 90
And if it fails, you should see something like:
VERIFICATION FAILED: Mantissa error mean: 11.000000 above 10 or median: 10.000000 above 8 or exp intersections: 0 above 90
Citing
@misc{ong2025toploclocalitysensitivehashing,
title={TOPLOC: A Locality Sensitive Hashing Scheme for Trustless Verifiable Inference},
author={Jack Min Ong and Matthew Di Ferrante and Aaron Pazdera and Ryan Garner and Sami Jaghouar and Manveer Basra and Johannes Hagemann},
year={2025},
eprint={2501.16007},
archivePrefix={arXiv},
primaryClass={cs.CR},
url={https://arxiv.org/abs/2501.16007},
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file toploc-0.0.0.dev0.tar.gz.
File metadata
- Download URL: toploc-0.0.0.dev0.tar.gz
- Upload date:
- Size: 9.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eec7f581ec02bd6abd1415f27a37dfa9bcc5ba7488b6a97b1785cebcca381cf7
|
|
| MD5 |
640d8e16d34475201eebcecd4bda6a0a
|
|
| BLAKE2b-256 |
4550d6de2cce7fd4327889585774699762f1897d439916c2cddac1a1ad26a382
|
File details
Details for the file toploc-0.0.0.dev0-py3-none-any.whl.
File metadata
- Download URL: toploc-0.0.0.dev0-py3-none-any.whl
- Upload date:
- Size: 7.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
223e0df4a46cec39eb6038d53650324c8d9c4e31b1126b917666a992505c0634
|
|
| MD5 |
df9e1b3a7209d351ca53034743ce2f04
|
|
| BLAKE2b-256 |
4ec8eb229f536a2003ad813ac08c7fc8a18518bd4e434381e069ca7d3c47ba6a
|