jfrery-zama's picture
init sentiment analysis in FHE
2dcbc14
raw
history blame
1.71 kB
import onnx
import pandas as pd
from concrete.ml.deployment import FHEModelDev, FHEModelClient
from concrete.ml.onnx.convert import get_equivalent_numpy_forward
import json
import os
import shutil
from pathlib import Path
script_dir = Path(__file__).parent
print("Compiling the model...")
# Load the onnx model
model_onnx = onnx.load(Path.joinpath(script_dir, "sentiment_fhe_model/server_model.onnx"))
# Load the data from the csv file to be used for compilation
data = pd.read_csv(
Path.joinpath(script_dir, "sentiment_fhe_model/samples_for_compilation.csv"), index_col=0
).values
# Convert the onnx model to a numpy model
_tensor_tree_predict = get_equivalent_numpy_forward(model_onnx)
model = FHEModelClient(
Path.joinpath(script_dir, "sentiment_fhe_model/deployment"), ".fhe_keys"
).model
# Assign the numpy model and compile the model
model._tensor_tree_predict = _tensor_tree_predict
# Compile the model
model.compile(data)
# Load the serialized_processing.json file
with open(
Path.joinpath(script_dir, "sentiment_fhe_model/deployment/serialized_processing.json"), "r"
) as f:
serialized_processing = json.load(f)
# Delete the deployment folder if it exist
if Path.joinpath(script_dir, "sentiment_fhe_model/deployment").exists():
shutil.rmtree(Path.joinpath(script_dir, "sentiment_fhe_model/deployment"))
fhe_api = FHEModelDev(
model=model, path_dir=Path.joinpath(script_dir, "sentiment_fhe_model/deployment")
)
fhe_api.save()
# Write the serialized_processing.json file to the deployment folder
with open(
Path.joinpath(script_dir, "sentiment_fhe_model/deployment/serialized_processing.json"), "w"
) as f:
json.dump(serialized_processing, f)
print("Done!")