AIVM: secure infrastructure for running MLaaS.
Project description
Nillion AIVM
AIVM is a cutting-edge framework designed for privacy-preserving inference using advanced cryptographic protocols. With AIVM, you can deploy a local development network (devnet) to explore private inference using provided examples or custom models.
Table of Contents
Installing AIVM
Recommended Instalation
-
Create a virtual environment:
python3 -m venv .venv
-
Activate the virtual environment:
On Linux/macOS:
source .venv/bin/activate
On Windows:
.\venv\Scripts\activate
-
Install the package:
If you are going to execute the examples execute:
pip install "nillion-aivm[examples]"
Otherwise, if you are going to produce your own code, you can just:
pip install nillion-aivm
Install using Poetry from source
-
Install Poetry (if not already installed):
pip install poetry
-
Install dependencies:
cd aivm poetry install -E examples
-
Activate the virtual environment:
poetry shell
Install using Pip from source
-
Install dependencies:
cd aivm pip install ".[examples]"
If it is used as a development environment it is recommended to install using:
cd aivm pip install -e ".[examples]"
Running AIVM
-
Start the AIVM devnet:
aivm-devnet
-
Open the provided Jupyter notebook examples/getting-started.ipynb to run private inference examples on AIVM.
-
After completing your tasks, terminate the devnet process by pressing
CTRL+C
.
Usage
For additional usage, refer to the examples folder, which demonstrates how to set up private inference workflows using AIVM.
Performing Secure Inference
Basic Usage
- First, import the AIVM client and check available models:
import aivm_client as aic
# List all supported models
available_models = aic.get_supported_models()
print(available_models)
- Prepare your input data. Here's an example using PyTorch to generate a random input:
import torch
# Create a sample input (e.g., for LeNet5 MNIST)
random_input = torch.randn((1, 1, 28, 28)) # Batch size 1, 1 channel, 28x28 pixels
- Encrypt your input using the appropriate Cryptensor:
# Encrypt the input
encrypted_input = aic.LeNet5Cryptensor(random_input)
- Perform secure inference:
# Get prediction while maintaining privacy
result = aic.get_prediction(encrypted_input, "LeNet5MNIST")
The get_prediction
function automatically handles the secure computation protocol with the aivm-devnet
nodes, ensuring that your input data remains private throughout the inference process.
Custom Model Upload
You can deploy your own trained models to AIVM, provided they follow the supported architectures (BertTiny or LeNet5).
Uploading Custom Models
- Import the AIVM client:
import aivm_client as aic
- Upload your custom model:
# For BertTiny models
aic.upload_bert_tiny_model(model_path, "MyCustomBertTiny")
# For LeNet5 models
aic.upload_lenet5_model(model_path, "MyCustomLeNet5")
- Perform inference with your custom model:
# For BertTiny models
result = aic.get_prediction(private_berttiny_input, "MyCustomBertTiny")
# For LeNet5 models
result = aic.get_prediction(private_lenet5_input, "MyCustomLeNet5")
License
This project is licensed under the MIT License.
Project details
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
File details
Details for the file nillion_aivm-0.1.3.tar.gz
.
File metadata
- Download URL: nillion_aivm-0.1.3.tar.gz
- Upload date:
- Size: 18.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.4 CPython/3.12.7 Linux/6.5.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7c7e7818d77f7ea2fc54ccbca681a57b5aa1a2c9640b1b79711780326a5fecdf |
|
MD5 | 6c501c54b2dbe8d49a4af6afe03cc9a5 |
|
BLAKE2b-256 | 5436d4a458d1db995ff089130cc8f357484b0f3e98a3970685fdf1d5c2bc9a55 |
File details
Details for the file nillion_aivm-0.1.3-py3-none-any.whl
.
File metadata
- Download URL: nillion_aivm-0.1.3-py3-none-any.whl
- Upload date:
- Size: 18.4 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.4 CPython/3.12.7 Linux/6.5.0-1025-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 79e31990046fad9d92a39fb21a99036aba62441f8d43afbf6c48adb17fa92192 |
|
MD5 | 0e41221f8e0bd1a53d64c332a4fbcc38 |
|
BLAKE2b-256 | 6630195559465e5b47a0c5deabd7aae658e37e391cefc7b5c0c0a1b0327ebf63 |