concrete.ml.deployment.fhe_client_server
APIs for FHE deployment.
CML_VERSION
check_concrete_versions
Check that current versions match the ones used in development.
This function loads the version JSON file found in client.zip or server.zip files and then checks that current package versions (Concrete Python, Concrete ML) as well as the Python current version all match the ones that are currently installed.
Args:
zip_path
(Path): The path to the client or server zip file that contains the version.json file to check.
Raises:
ValueError
: If at least one version mismatch is found.
FHEModelServer
Server API to load and run the FHE circuit.
__init__
Initialize the FHE API.
Args:
path_dir
(str): the path to the directory where the circuit is saved
load
Load the circuit.
run
Run the model on the server over encrypted data.
Args:
serialized_encrypted_quantized_data
(bytes): the encrypted, quantized and serialized data
serialized_evaluation_keys
(bytes): the serialized evaluation keys
Returns:
bytes
: the result of the model
FHEModelDev
Dev API to save the model and then load and run the FHE circuit.
__init__
Initialize the FHE API.
Args:
path_dir
(str): the path to the directory where the circuit is saved
model
(Any): the model to use for the FHE API
save
Export all needed artifacts for the client and server.
Arguments:
via_mlir
(bool): serialize with via_mlir
option from Concrete-Python. For more details on the topic please refer to Concrete-Python's documentation.
Raises:
Exception
: path_dir is not empty
FHEModelClient
Client API to encrypt and decrypt FHE data.
__init__
Initialize the FHE API.
Args:
path_dir
(str): the path to the directory where the circuit is saved
key_dir
(str): the path to the directory where the keys are stored
deserialize_decrypt
Deserialize and decrypt the values.
Args:
serialized_encrypted_quantized_result
(bytes): the serialized, encrypted and quantized result
Returns:
numpy.ndarray
: the decrypted and deserialized values
deserialize_decrypt_dequantize
Deserialize, decrypt and de-quantize the values.
Args:
serialized_encrypted_quantized_result
(bytes): the serialized, encrypted and quantized result
Returns:
numpy.ndarray
: the decrypted (de-quantized) values
generate_private_and_evaluation_keys
Generate the private and evaluation keys.
Args:
force
(bool): if True, regenerate the keys even if they already exist
get_serialized_evaluation_keys
Get the serialized evaluation keys.
Returns:
bytes
: the evaluation keys
load
Load the quantizers along with the FHE specs.
quantize_encrypt_serialize
Quantize, encrypt and serialize the values.
Args:
x
(numpy.ndarray): the values to quantize, encrypt and serialize
Returns:
bytes
: the quantized, encrypted and serialized values