Perform numpy-like analysis on data that remains in someone elses server
Project description
Perform data science on data
that remains in someone else's
server
Quickstart
✅ Linux
✅ macOS
✅ Windows
✅ Docker
✅ Kubernetes
Install Client
$ pip install -U syft[data_science]
Launch Server
# from Jupyter / Python
import syft as sy
sy.requires(">=0.8.7,<0.8.8")
server = sy.orchestra.launch(
name="my-datasite",
port=8080,
create_producer=True,
n_consumers=1,
dev_mode=True,
reset=True, # resets database
)
# or from the command line
$ syft launch --name=my-datasite --port=8080 --reset=True
Starting syft-datasite server on 0.0.0.0:8080
Launch Client
import syft as sy
sy.requires(">=0.8.6,<0.8.7")
datasite_client = sy.login(
port=8080,
email="info@openmined.org",
password="changethis"
)
PySyft in 10 minutes
- 00-load-data.ipynb
- 01-submit-code.ipynb
- 02-review-code-and-approve.ipynb
- 03-data-scientist-download-result.ipynb
- 04-pytorch-example.ipynb
- 05-custom-policy.ipynb
- 06-multiple-code-requests.ipynb
- 07-datasite-register-control-flow.ipynb
- 08-code-version.ipynb
- 09-blob-storage.ipynb
- 10-container-images.ipynb
- 11-container-images-k8s.ipynb
- 12-custom-api-endpoint.ipynb
Deploy Kubernetes Helm Chart
0. Deploy Kubernetes
Required resources: 1 CPU and 4GB RAM. However, you will need some special instructions to deploy, please consult these instructions or look at the resource constraint testing here.
Recommended resources: 8+ Cores and 16GB RAM
If you're using Docker Desktop to deploy your Kubernetes, you may need to go into Settings > Resources and increase CPUs and Memory.
Note: Assuming we have a Kubernetes cluster already setup.
1. Add and update Helm repo for Syft
helm repo add openmined https://openmined.github.io/PySyft/helm
helm repo update openmined
2. Search for available Syft versions
helm search repo openmined/syft --versions --devel
3. Set your preferred Syft Chart version
SYFT_VERSION="<paste the chart version number>"
4. Provisioning Helm Charts
helm install my-datasite openmined/syft --version $SYFT_VERSION --namespace syft --create-namespace --set ingress.className="traefik"
Ingress Controllers
For Azure AKS
helm install ... --set ingress.className="azure-application-gateway"
For AWS EKS
helm install ... --set ingress.className="alb"
For Google GKE we need the gce
annotation.
helm install ... --set ingress.class="gce"
Note:
🚨 Our old deployment tool HAGrid
has been deprecated
. For the updated deployment options kindly refer to:
Docs and Support
Install Notes
- PySyft 0.8.6 Requires: 🐍
python 3.10 - 3.12
- Run:pip install -U syft
- Syft Server Requires: 🐳
docker
or ☸️kubernetes
Versions
0.9.0
- Coming soon...
0.8.8
(Beta) - dev
branch 👈🏽 API - Coming soon...
0.8.7
(Stable) - API
Deprecated:
0.8.6
- API0.8.5-post.2
- API0.8.4
- API0.8.3
- API0.8.2
- API0.8.1
- API0.8.0
- API0.7.0
- Course 3 Updated0.6.0
- Course 30.5.1
- Course 2 + M1 Hotfix0.2.0
-0.5.0
PySyft and Syft Server use the same version
and its best to match them up where possible. We release weekly betas which can be used in each context:
PySyft (Stable): pip install -U syft
PySyft (Beta): pip install -U syft --pre
What is Syft?
Syft
is OpenMined's open source
stack that provides secure
and private
Data Science in Python. Syft decouples private data
from model training, using techniques like Federated Learning, Differential Privacy, and Encrypted Computation. This is done with a numpy
-like interface and integration with Deep Learning
frameworks, so that you as a Data Scientist
can maintain your current workflow while using these new privacy-enhancing techniques
.
Why should I use Syft?
Syft
allows a Data Scientist
to ask questions
about a dataset
and, within privacy limits
set by the data owner
, get answers
to those questions
, all without obtaining a copy
of the data itself. We call this process Remote Data Science
. It means in a wide variety of datasites
across society, the current risks
of sharing information (copying
data) with someone such as, privacy invasion, IP theft and blackmail will no longer prevent the vast benefits
such as innovation, insights and scientific discovery which secure access will provide.
No more cold calls to get access
to a dataset. No more weeks of wait times
to get a result
on your query
. It also means 1000x more data
in every datasite. PySyft opens the doors to a streamlined Data Scientist workflow
, all with the individual's privacy
at its heart.
Terminology
👨🏻💼 Data Owners |
👩🏽🔬 Data Scientists |
---|---|
Provide |
Are end |
🏰 Datasite Server |
🔗 Gateway Server |
Manages the |
Provides services to a group of |
Community
Courses
Contributors
OpenMined and Syft appreciates all contributors, if you would like to fix a bug or suggest a new feature, please see our guidelines.
Supporters
Disclaimer
Syft is under active development and is not yet ready for pilots on private data without our assistance. As early access participants, please contact us via Slack or email if you would like to ask a question or have a use case that you would like to discuss.
License
Apache License 2.0
Person icons created by Freepik - Flaticon
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file syft-0.8.8b2.tar.gz
.
File metadata
- Download URL: syft-0.8.8b2.tar.gz
- Upload date:
- Size: 614.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 98fc0f4ed22f3a028239da1741e509df6eb7c1607e599b6b50dd7a8f4008a111 |
|
MD5 | b9143a11fec27278206946706c616264 |
|
BLAKE2b-256 | ec2722f71648d933523e3882dd4cadd3c8257837f906b02a2e4da0342c56e2ff |
File details
Details for the file syft-0.8.8b2-py2.py3-none-any.whl
.
File metadata
- Download URL: syft-0.8.8b2-py2.py3-none-any.whl
- Upload date:
- Size: 709.1 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e0205caf097cce478a0e9873af5aa5579942d69ce802f1166788ce2c45d564ca |
|
MD5 | dea78c64684e4740ac02d3f0a21472ff |
|
BLAKE2b-256 | d1ba6cd203f4a80d2ab963f49e25659ca3c0075346ef6aee49352fd075b6557c |