concrete.ml.deployment.fhe_client_server.md

module concrete.ml.deployment.fhe_client_server

APIs for FHE deployment.

Global Variables

  • CML_VERSION


class FHEModelServer

Server API to load and run the FHE circuit.

method __init__

__init__(path_dir: str)

Initialize the FHE API.

Args:

  • path_dir (str): the path to the directory where the circuit is saved


method load

load()

Load the circuit.

Raises:

  • ValueError: if mismatch in versions between serialized file and runtime


method run

run(
    serialized_encrypted_quantized_data: bytes,
    serialized_evaluation_keys: bytes
)bytes

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


class FHEModelDev

Dev API to save the model and then load and run the FHE circuit.

method __init__

__init__(path_dir: str, model: Any = None)

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


method save

save(via_mlir: bool = False)

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


class FHEModelClient

Client API to encrypt and decrypt FHE data.

method __init__

__init__(path_dir: str, key_dir: Optional[str] = None)

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


method deserialize_decrypt

deserialize_decrypt(serialized_encrypted_quantized_result: bytes) → ndarray

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


method deserialize_decrypt_dequantize

deserialize_decrypt_dequantize(
    serialized_encrypted_quantized_result: bytes
) → ndarray

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


method generate_private_and_evaluation_keys

generate_private_and_evaluation_keys(force=False)

Generate the private and evaluation keys.

Args:

  • force (bool): if True, regenerate the keys even if they already exist


method get_serialized_evaluation_keys

get_serialized_evaluation_keys()bytes

Get the serialized evaluation keys.

Returns:

  • bytes: the evaluation keys


method load

load()

Load the quantizers along with the FHE specs.

Raises:

  • ValueError: if mismatch in versions between serialized file and runtime


method quantize_encrypt_serialize

quantize_encrypt_serialize(x: ndarray)bytes

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

Last updated