Home

Awesome

Note: The master branch undergoes frequent changes and can be unstable or even broken during development. To obtain a stable version, we recommend using the releases instead of the master branch.

License

Overview

Federated learning involves multiple parties to collaboratively train a machine learning model, therefore it is usually based on a distributed system. KubeteFATE operationalizes federated learning workloads using cloud native technologies such as containers and Kubernetes. KubeFATE enables federated learning tasks to run across public, private and hybrid cloud environments.

FATE (Federated AI Technology Enabler) is an open-source project to provide a secure computing framework to support the federated AI ecosystem. It implements secure computation protocols based on homomorphic encryption and secure multi-party computation (MPC). It supports federated learning architectures and secure computation of various machine learning algorithms, including logistic regression, tree-based algorithms, deep learning and transfer learning.

KubeFATE facilitates the deployment of FATE using both Docker Compose and Kubernetes. For a development environment of FATE, we recommend utilizing Docker Compose, while for a production environment, Kubernetes is the preferred option.

Getting Involved

Project Structure

KubeFATE
|-- docker-deploy   
|-- k8s-deploy   

docker-deploy: The primary objective is to swiftly establish a federated learning environment. Docker Compose allows for the deployment of FATE components on a single host. Leveraging Docker Compose, FATE can be configured for multi-party environments, facilitating collaborative federated setups. For further information, kindly refer to the Docker Compose Deployment documentation.

k8s-deploy: The deployment approach is specifically tailored for production environments, providing a robust and scalable solution. Its design offers exceptional flexibility, enabling seamless operation of FATE clusters across various environments with ease and efficiency.

Major features of KubeFATE k8s-deploy

For more details, please refer to Kubernetes Deployment.

Building KubeFATE

To build the binary of KubeFATE (both CLI and KubeFATE service), a Golang development environment is needed.

$ git clone https://github.com/FederatedAI/KubeFATE.git
$ cd KubeFATE/k8s-deploy/
$ make kubefate-without-swag

To build the container image of KubeFATE service, a Docker environment is needed.

$ make docker-build

Specifying an image repository (registry)

By default, the installation script pulls the images from Docker Hub during the deployment process.

License

Apache License 2.0