Skip to main content

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

  1. Create a virtual environment:

    python3 -m venv .venv
    
  2. Activate the virtual environment:

    On Linux/macOS:

    source .venv/bin/activate
    

    On Windows:

    .\venv\Scripts\activate
    
  3. 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

  1. Install Poetry (if not already installed):

    pip install poetry
    
  2. Install dependencies:

    cd aivm
    poetry install -E examples
    
  3. Activate the virtual environment:

    poetry shell
    

Install using Pip from source

  1. 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

  1. Start the AIVM devnet:

    aivm-devnet
    
  2. Open the provided Jupyter notebook examples/getting-started.ipynb to run private inference examples on AIVM.

  3. 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

  1. 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)
  1. 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
  1. Encrypt your input using the appropriate Cryptensor:
# Encrypt the input
encrypted_input = aic.LeNet5Cryptensor(random_input)
  1. 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

  1. Import the AIVM client:
import aivm_client as aic
  1. 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")
  1. 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

nillion_aivm-0.1.3.tar.gz (18.2 MB view details)

Uploaded Source

Built Distribution

nillion_aivm-0.1.3-py3-none-any.whl (18.4 MB view details)

Uploaded Python 3

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

Hashes for nillion_aivm-0.1.3.tar.gz
Algorithm Hash digest
SHA256 7c7e7818d77f7ea2fc54ccbca681a57b5aa1a2c9640b1b79711780326a5fecdf
MD5 6c501c54b2dbe8d49a4af6afe03cc9a5
BLAKE2b-256 5436d4a458d1db995ff089130cc8f357484b0f3e98a3970685fdf1d5c2bc9a55

See more details on using hashes here.

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

Hashes for nillion_aivm-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 79e31990046fad9d92a39fb21a99036aba62441f8d43afbf6c48adb17fa92192
MD5 0e41221f8e0bd1a53d64c332a4fbcc38
BLAKE2b-256 6630195559465e5b47a0c5deabd7aae658e37e391cefc7b5c0c0a1b0327ebf63

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page