HE Transformer for nGraph

nGraph-HE:通过英特尔 nGraph 的深度学习与同态加密(HE)。「nGraph-HE: Deep learning with Homomorphic Encryption (HE) through Intel nGraph」

Github星跟蹤圖

HE Transformer for nGraph

This project has moved to https://github.com/IntelAI/he-transformer

The Intel® HE transformer for nGraph™ is a Homomorphic Encryption (HE) backend to the Intel® nGraph Compiler, Intel's graph compiler for Artificial Neural Networks.

Homomorphic encryption is a form of encryption that allows computation on encrypted data, and is an attractive remedy to increasing concerns about data privacy in the field of machine learning. For more information, see our original paper. Our updated paper showcases many of the recent advances in he-transformer.

This project is meant as a proof-of-concept to demonstrate the feasibility of HE on local machines. The goal is to measure performance of various HE schemes for deep learning. This is not intended to be a production-ready product, but rather a research tool.

Currently, we support the CKKS encryption scheme, implemented by the Simple Encrypted Arithmetic Library (SEAL) from Microsoft Research.

Additionally, we integrate with the Intel® nGraph™ Compiler and runtime engine for TensorFlow to allow users to run inference on trained neural networks through Tensorflow.

Examples

The examples folder contains a deep learning example which depends on the Intel® nGraph™ Compiler and runtime engine for TensorFlow.

Building HE Transformer

Dependencies

  • Operating system: Ubuntu 16.04, Ubuntu 18.04.
  • CMake >= 3.12
  • Compiler: g++ version >= 6.0, clang >= 5.0
  • OpenMP is strongly suggested, though not strictly necessary. You may experience slow runtimes without OpenMP
  • python3 and pip3
  • virtualenv v16.1.0
  • bazel v0.25.2

For a full list of dependencies, see the docker containers, which build he-transformer on a reference OS.

The following dependencies are built automatically

To install bazel

    wget https://github.com/bazelbuild/bazel/releases/download/0.25.2/bazel-0.25.2-installer-linux-x86_64.sh
    bash bazel-0.25.2-installer-linux-x86_64.sh --user

Add and source the bin path to your ~/.bashrc file to call bazel

 export PATH=$PATH:~/bin
 source ~/.bashrc

1. Build HE-Transformer

Before building, make sure you deactivate any active virtual environments (i.e. run deactivate)

git clone https://github.com/NervanaSystems/he-transformer.git
cd he-transformer
export HE_TRANSFORMER=$(pwd)
mkdir build
cd $HE_TRANSFORMER/build
cmake .. -DCMAKE_CXX_COMPILER=clang++-6.0
make install
source external/venv-tf-py3/bin/activate

Note, you may need sudo permissions to install he_seal_backend to the default location. To set a custom installation prefix, add the -DCMAKE_INSTALL_PREFIX=~/my_install_prefix flag to the cmake command.

1a. To build documentation

First install doxygen, i.e.

sudo apt-get install doxygen

Then add the following CMake flag

cmake .. -DNGRAPH_HE_DOC_BUILD_ENABLE=ON

and call

make docs

to create doxygen documentation in $HE_TRANSFORMER/build/doc/doxygen.

1b. Python bindings for client

To build a client-server model with python bindings (recommended for running neural networks through TensorFlow):

cd $HE_TRANSFORMER/build
source external/venv-tf-py3/bin/activate
make install python_client

This will create python/dist/pyhe_client-*.whl. Install it using

pip install python/dist/pyhe_client-*.whl

To check the installation worked correctly, run

python3 -c "import pyhe_client"

This should run without errors.

2. Run C++ unit-tests

cd $HE_TRANSFORMER/build
# To run single HE_SEAL unit-test
./test/unit-test --gtest_filter="HE_SEAL.add_2_3_cipher_plain_real_unpacked_unpacked"
# To run all C++ unit-tests
./test/unit-test

3. Run python examples

See examples/README.md for examples of running he-transformer for deep learning inference on encrypted data.

Code formatting

Please run maint/apply-code-format.sh before submitting a pull request.

主要指標

概覽
名稱與所有者NervanaSystems/he-transformer
主編程語言C++
編程語言CMake (語言數: 6)
平台Linux
許可證Apache License 2.0
所有者活动
創建於2018-04-09 18:14:49
推送於2023-01-03 22:54:12
最后一次提交2023-01-03 14:54:12
發布數19
最新版本名稱v0.6.0 (發布於 )
第一版名稱v0.1-rc1 (發布於 )
用户参与
星數225
關注者數30
派生數39
提交數242
已啟用問題?
問題數65
打開的問題數5
拉請求數228
打開的拉請求數0
關閉的拉請求數7
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?