Changelog#

[1.5.4.0] - 2024-07-24#

  • Add support for hierarchical rotation key generation. This allows the user to generate a base set of rotation keys that contains two subsets: the level-0 (a.k.a. “small” or regular) rotation keys, and the level-1 (a.k.a. “large”) rotation keys. The server, who doesn’t have the secret key, can later use these sets to generate new rotation keys.

  • Add anti money laundering AI model.

  • CircLayer supports running on GPU.

  • Add more stable and quicker polynomial evaluation method using the polynomial’s roots.

  • Add support for multiparty FHE using OpenFHE.

  • Add support for CKKS bootstrapping with OpenFHE.

  • Add circuit optimizations: merge duplicate nodes, optimize rotations, chain indices, and replace multiplications with squares where possible.

  • Upgraded to HEaaN 0.3.0.

  • Add an optimized ReLU activation

  • Upgraded to OpenFHE 1.2.0.

[1.5.3.1] - 2023-11-16#

  • MlToolBox improvements.

  • s390x related fixes.

[1.5.3.0] - 2023-06-27#

  • HEbase: Add Multi-Party FHE support for Palisade.

  • HEbase: Support for decreasing the rotation keys size while using HeaanContext, by setting the gadget rank and the size of the temporary primes when possible from a security standpoint (see HEaaN documentation for further details about gadget rank and temporary primes).

  • Math: Support for linear regression estimation. It is available through the LogisticRegression class by setting the activation type to none (LR_ACTIVATION_NONE).

  • Math: Tile tensor supports diagonalization techniques in matrix multiplication. See CTileTensor::getMatrixMultiplication().

  • Math: Convolution operator supports any arrangement of image, channels, filter, and batch dimensions.

  • AI: Extended functionality for neural networks: support new operators (MatMul, Mul and Add over N-dimensional tensors with broadcasting, Transpose, Squeeze, Unsqueeze, ReduceSum, ReduceMean), removal of restrictions (structure of CNNs, in which the location of fully-connected and flatten layers is flexible).

  • AI: Support generic packing of inputs for AI models. Some details on generic packing can be found at the methods HeContext::initForGenericPacking(), TTEncoder::encodeEncryptGenericPacking() and HeRunRequirements::setSimpleGenericPacking().

  • Examples: Added demo of linear regression estimation with Multi-Party FHE (C++ and Python).

  • Examples: Added range query example (C++).

  • Upgraded HEaaN backend to 0.2.0.

  • New HElayers website and API documentation.

[1.5.2.0] - 2023-02-28#

  • CircLayer: Improved API, support bootstrapping operators, new C++ tutorials in helayers-lab.

  • AES decryption under FHE; AI supports AES-encrypted inputs.

  • Extended CTile API: Added polymorphic binary operations that accept a Tile as second argument.

  • New TTFunctionEvaluator::compare() for comparing tile tensors.

  • New CTileTensor::shiftAlongDim() for shifting a tile tensor.

  • HeContext: Create context from a prioritized list of context names.

  • Performance: Improve simulations of deep computations; enable unlimited depth in simulations.

  • Performance: Replace integer multiply with additions in SealCkksCiphertext (when it’s empirically faster).

  • Upgraded HEaaN backend to 0.1.0, and added HEaaN to the pyhelayers wheels.

  • Added Lattigo backend.

  • Added macOS Intel 64-bit build for pyhelayerslite wheel.

[1.5.1.0] - 2022-11-30#

  • New notebooks with thorough explanations of Tile Tensors.

  • ARIMA: Add support for parameter d=1 in training and prediction. Now supporting all models of type ARIMA(p=*,d=0/1,q=1).

  • Python: CTile now supports multiply_scalar with integer, multiply_imaginary_unit, and nullify_imaginary_part.

[1.5.0.3] - 2022-11-02#

  • A new API for HeModel and PlainModel: Includes support for training, multiple inputs/outputs.

  • pyhelayers: Added some missing HeConfigRequirement methods.

  • MockupContext includes operation counts tracking.

  • Tile tensors: Rotate method now supports interleaved dimensions.

  • Tile tensors: A new printing mode for tile tensor that prints tiles.

[1.4.0.5] - 2022-07-19#

  • Fix a bug in which encode() and encode_encrypt() encoded Python lists of doubles as lists of integers.

  • Allow XGBoost inference using HeModel interface.

  • XGBoost demo notebook: Use HeProfileOptimizer to find optimal packing configuration and context parameters; encrypt and decrypt using IoProcessor.

[1.4.0.4] - 2022-06-27#

  • Fix bug in XGBoost inference when a tree has a single leaf node.

[1.4.0.3] - 2022-06-21#

  • mltoolbox: Improve trainer API; add starting_point() helper

[1.4.0.2] - 2022-06-13#

  • Add support for HEaaN on IBM Z (s390x)

  • Bug fixes

[1.4.0.1] - 2022-06-06#

  • ‘accord’ submodule in pyhelayers: MPC and ZK, including demo notebooks.

  • ‘mltoolbox’ submodule in pyhelayers: Convert a network to be HE friendly. Including a new demo notebook.

  • ARIMA model training and prediction, including a new demo notebook.

  • Added automatic bootstrapping to logistic regression training.

  • Upgraded to HEaaN 3.5.0.

  • Added support for Batch Normalization layer in NN.

  • Added optimization of rotation keys in HE models: Optimizer to detect and include only the necessary rotation keys in the HE context.

  • New demo notebook for deep neural networks: AlexNet, SqueezeNet and ResNet-18.

  • New demo notebook for FHE XGBoost inference over the iris dataset.

[1.3.0] - 2022-04-03#

  • Support for HEaaN as backend

  • Added helayerslite - a basic version of the library.

  • helayerslite compiled for WASM (Web assembly)

  • Faster logistic regression training

  • Support for convolution with custom padding