KotlinSyft makes it easy for you to train and execute PySyft models on Android devices. This allows you to utilize training data located directly on the device itself, bypassing the need to send a user’s data to a central server. This is known as federated learning.

  • Training and inference of any PySyft model written in PyTorch or TensorFlow
  • 👤 Allows all data to stay on the user’s device
  • ⚡ Support for full multi-threading / background service execution
  • 🔑 Support for JWT authentication to protect models from Sybil attacks
  • 👍 A set of inbuilt best practices to prevent apps from over using device resources.
    • 🔌 Charge detection to allow background training only when device is connected to charger
    • 💤 Sleep and wake detection so that the app does not occupy resource when user starts using the device
    • 💸 Wifi and metered network detection to ensure the model updates do not use all the available data quota
    • 🔕 All of these smart defaults are easily are overridable
  • 🎓 Support for both reactive and callback patterns so you have your freedom of choice (in progress)
  • 🔒 Support for secure multi-party computation and secure aggregation protocols using peer-to-peer WebRTC connections (in progress).

There are a variety of additional privacy-preserving protections that may be applied, including differential privacy, muliti-party computation, and secure aggregation.

OpenMined set out to build the world’s first open-source ecosystem for federated learning on web and mobile. KotlinSyft is a part of this ecosystem, responsible for bringing secure federated learning to Android devices. You may also train models on iOS devices using SwiftSyft or in web browsers using syft.js.

If you want to know how scalable federated systems are built, Towards Federated Learning at Scale is a fantastic introduction!

Join us in the movement at Slack!

Varun Kumar Khare

My research interests include program synthesis, privacy and deep learning.