Hybrid models
Compilation
import numpy as np
import os
import torch
from pathlib import Path
from torch import nn
from concrete.ml.torch.hybrid_model import HybridFHEModel, tuple_to_underscore_str
from concrete.ml.deployment import FHEModelServer
class FCSmall(nn.Module):
"""Torch model for the tests."""
def __init__(self, dim):
super().__init__()
self.seq = nn.Sequential(nn.Linear(dim, dim), nn.ReLU(), nn.Linear(dim, dim))
def forward(self, x):
return self.seq(x)
model = FCSmall(10)
model_name = "FCSmall"
submodule_name = "seq.0"
inputs = torch.Tensor(np.random.uniform(size=(10, 10)))
# Prints ['', 'seq', 'seq.0', 'seq.1', 'seq.2']
print([k for (k, _) in model.named_modules()])
# Create a hybrid model
hybrid_model = HybridFHEModel(model, [submodule_name])
hybrid_model.compile_model(
inputs,
n_bits=8,
)
models_dir = Path(os.path.abspath('')) / "compiled_models"
models_dir.mkdir(exist_ok=True)
model_dir = models_dir / model_name
Server Side Deployment
Client Side
Last updated
Was this helpful?