APIs for FHE deployment.
- CML_VERSION
check_concrete_versions(zip_path: Path)
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.
Server API to load and run the FHE circuit.
__init__(path_dir: str)
Initialize the FHE API.
Args:
path_dir
(str): the path to the directory where the circuit is saved
load()
Load the circuit.
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 dataserialized_evaluation_keys
(bytes): the serialized evaluation keys
Returns:
bytes
: the result of the model
Dev API to save the model and then load and run the FHE circuit.
__init__(path_dir: str, model: Any = None)
Initialize the FHE API.
Args:
path_dir
(str): the path to the directory where the circuit is savedmodel
(Any): the model to use for the FHE API
save(via_mlir: bool = False)
Export all needed artifacts for the client and server.
Arguments:
via_mlir
(bool): serialize withvia_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
Client API to encrypt and decrypt FHE data.
__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 savedkey_dir
(str): the path to the directory where the keys are stored
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
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
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
get_serialized_evaluation_keys() → bytes
Get the serialized evaluation keys.
Returns:
bytes
: the evaluation keys
load()
Load the quantizers along with the FHE specs.
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