diff options
Diffstat (limited to 'python-syft.spec')
| -rw-r--r-- | python-syft.spec | 1186 |
1 files changed, 1186 insertions, 0 deletions
diff --git a/python-syft.spec b/python-syft.spec new file mode 100644 index 0000000..eacf5be --- /dev/null +++ b/python-syft.spec @@ -0,0 +1,1186 @@ +%global _empty_manifest_terminate_build 0 +Name: python-syft +Version: 0.8.0.post2 +Release: 1 +Summary: Perform numpy-like analysis on data that remains in someone elses server +License: Apache-2.0 +URL: https://openmined.github.io/PySyft/ +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/bd/05/e9cf0be923f524ef94c35efdcc959fafb0892f0841d8e3fa868d349fe42c/syft-0.8.0.post2.tar.gz +BuildArch: noarch + +Requires: python3-astunparse +Requires: python3-bcrypt +Requires: python3-flax +Requires: python3-forbiddenfruit +Requires: python3-gevent +Requires: python3-gipc +Requires: python3-jax +Requires: python3-jaxlib +Requires: python3-loguru +Requires: python3-numpy +Requires: python3-opendp +Requires: python3-packaging +Requires: python3-pandas +Requires: python3-pyarrow +Requires: python3-pycapnp +Requires: python3-pydantic[email] +Requires: python3-pymongo +Requires: python3-pynacl +Requires: python3-redis +Requires: python3-requests +Requires: python3-RestrictedPython +Requires: python3-result +Requires: python3-tqdm +Requires: python3-typeguard +Requires: python3-typing-extensions +Requires: python3-sherlock[filelock,redis] +Requires: python3-uvicorn[standard] +Requires: python3-fastapi +Requires: python3-hagrid +Requires: python3-opentelemetry-api +Requires: python3-opentelemetry-sdk +Requires: python3-opentelemetry-exporter-jaeger +Requires: python3-opentelemetry-instrumentation +Requires: python3-opentelemetry-instrumentation-requests +Requires: python3-pytest +Requires: python3-pytest-cov +Requires: python3-pytest-xdist[psutil] +Requires: python3-pytest-parallel +Requires: python3-pytest-asyncio +Requires: python3-pytest-randomly +Requires: python3-pytest-sugar +Requires: python3-pytest-mock-resources +Requires: python3-on-whales +Requires: python3-pytest-lazy-fixture +Requires: python3-pytest-rerunfailures +Requires: python3-coverage +Requires: python3-joblib +Requires: python3-faker +Requires: python3-bandit +Requires: python3-ruff +Requires: python3-importlib-metadata +Requires: python3-isort +Requires: python3-mypy +Requires: python3-pre-commit +Requires: python3-safety +Requires: python3-pyoblv +Requires: python3-pytest +Requires: python3-pytest-cov +Requires: python3-pytest-xdist[psutil] +Requires: python3-pytest-parallel +Requires: python3-pytest-asyncio +Requires: python3-pytest-randomly +Requires: python3-pytest-sugar +Requires: python3-pytest-mock-resources +Requires: python3-on-whales +Requires: python3-pytest-lazy-fixture +Requires: python3-pytest-rerunfailures +Requires: python3-coverage +Requires: python3-joblib +Requires: python3-faker + +%description +<div align="left"> <a href="https://pypi.org/project/syft/"><img src="https://pepy.tech/badge/syft" /></a> <a href="https://pypi.org/project/syft/"><img src="https://badge.fury.io/py/syft.svg" /></a> <a href="https://hub.docker.com/u/openmined"><img src="https://img.shields.io/badge/docker-images-blue?logo=docker" /></a> <a href="https://github.com/OpenMined/PySyft/actions/workflows/nightlies.yml"><img src="https://github.com/OpenMined/PySyft/actions/workflows/nightlies.yml/badge.svg?branch=dev" /></a> <a href="https://slack.openmined.org/"><img src="https://img.shields.io/badge/chat-on%20slack-purple?logo=slack" /></a> <a href="https://openmined.github.io/PySyft/"><img src="https://img.shields.io/badge/read-docs-yellow?logo=mdbook" /></a> +<br /><br /></div> + +<img alt="Syft Logo" src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/title_syft_light.png" width="200px" /> + +Perform `numpy`-like analysis on `data` that remains in `someone else's` server + +<div align="left"> +<img alt="Syft Logo" src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/header.png" alt="Syft Overview" width="100%" /> +</div> + +# Quickstart + +✅ `Linux` ✅ `macOS`\* ✅ `Windows`†‡ + +## Install syft on Python 3.9 - 3.10 + +```bash +$ pip install -U syft -f https://whls.blob.core.windows.net/unstable/index.html +``` + +## Launch a python dev Domain + +```python +# from Jupyter / Python +import syft as sy +sy.requires(">=0.8,<0.8.1") +node = sy.orchestra.launch(name="my-domain", port=8080, dev_mode=True, reset=True) +``` + +```bash +# or from the command line +$ syft launch --name=my-domain --port=8080 --reset=True + +Starting syft-node server on 0.0.0.0:8080 +``` + +## Connect with our Python Client + +```python +import syft as sy +sy.requires(">=0.8,<0.8.1") +domain_client = sy.login(port=8080, email="info@openmined.org", password="changethis") +``` + +## Deploy to a Container Engine or Cloud + +1. Install our handy 🛵 cli tool which makes deploying a Domain or Gateway server a one-liner: + `pip install -U hagrid` + +2. Then run our interactive jupyter Install 🧙🏽♂️ Wizard<sup>BETA</sup>: + `hagrid quickstart` + +3. In the tutorial you will learn how to install and deploy: + `PySyft` = our `numpy`-like 🐍 Python library for computing on `private data` in someone else's `Domain` + + `PyGrid` = our 🐳 `docker` / 🐧 `vm` `Domain` & `Gateway` Servers where `private data` lives + +4. During quickstart we will deploy `PyGrid` to localhost with 🐳 `docker`, however 🛵 HAGrid can deploy to `podman` or a 🐧 `ubuntu` VM on `azure` / `gcp` / `ANY_IP_ADDRESS` by using 🔨 `ansible`† + +## Docs and Support + +- 📝 <a href="https://github.com/OpenMined/PySyft/blob/0.8/notebooks/api">API Example Notebooks</a> +- 📚 <a href="https://openmined.github.io/PySyft/">Docs</a> +- `#support` on <a href="https://slack.openmined.org/">Slack</a> + +# Install Notes + +- HAGrid 0.3 Requires: 🐍 `python` 🐙 `git` - Run: `pip install -U hagrid` +- Interactive Install 🧙🏽♂️ Wizard<sup>BETA</sup> Requires 🛵 `hagrid`: - Run: `hagrid quickstart` + †`Windows` does not support `ansible`, preventing some remote deployment targets +- PySyft 0.8 Requires: 🐍 `python 3.10` - Run: `pip install -U syft` + \*`macOS` Apple Silicon users might need cmake: `brew install cmake` + ‡`Windows` users must run this first: `pip install jaxlib==0.3.14 -f https://whls.blob.core.windows.net/unstable/index.html` +- PyGrid Requires: 🐳 `docker` or 🐧 `ubuntu` VM - Run: `hagrid launch ...` + +# Versions + +`0.9.0` (Beta) - `dev` branch 👈🏽 <a href="https://github.com/OpenMined/PySyft/blob/dev/notebooks/api/0.9">API</a> +`0.8.0` (Stable) - <a href="https://github.com/OpenMined/PySyft/blob/0.8/notebooks/api/0.8">API</a> + +Deprecated: + +- `0.7.0` - <a href="https://github.com/OpenMined/courses/tree/introduction-to-remote-data-science-dev">Course 3 Updated</a> +- `0.6.0` - <a href="https://github.com/OpenMined/courses/tree/introduction-to-remote-data-science">Course 3</a> +- `0.5.1` - <a href="https://github.com/OpenMined/courses/tree/foundations-of-private-computation">Course 2</a> + M1 Hotfix +- `0.2.0` - `0.5.0` + +PySyft and PyGrid 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` +PyGrid (Stable) `hagrid launch ... tag=latest` + +PySyft (Beta): `pip install -U syft --pre` +PyGrid (Beta): `hagrid launch ... tag=beta` + +HAGrid is a cli / deployment tool so the latest version of `hagrid` is usually the best. + +# What is Syft? + +<img align="right" src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/logo_big.png" alt="Syft" height="250" style="padding-left:30px;"> + +`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](https://ai.googleblog.com/2017/04/federated-learning-collaborative.html), [Differential Privacy](https://en.wikipedia.org/wiki/Differential_privacy), and [Encrypted Computation](https://en.wikipedia.org/wiki/Homomorphic_encryption). 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 `domains` 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 domain. PySyft opens the doors to a streamlined Data Scientist `workflow`, all with the individual's `privacy` at its heart. + +# Tutorials + +<table border="5" bordercolor="grey"> +<tr> +<th align="center"> +<img width="441" height="1"> +<div align="center"> +<img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/personas_image/dataowner.png" alt="" width="100" height="100" align="center"> +<p>Data Owner</p></div> +</th> +<th align="center"> +<img width="441" height="1"> +<div align="center"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/personas_image/datascientist.png" alt="" width="100" height="100" align="center"> +<p>Data Scientist</p></div> + +</th> +<th align="center"> +<img width="441" height="1"> +<div align="center"> +<img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/personas_image/dataengineer.png" alt="" width="100" height="100" align="center"> +<p>Data Engineer</p> +</div> +</th> +</tr> +<tr> +<td valign="top"> + +- <a href="https://github.com/OpenMined/PySyft/blob/0.8/notebooks/quickstart/data-owner/00-deploy-domain.ipynb">Deploy a Domain Server</a> +- <a href="https://github.com/OpenMined/PySyft/blob/0.8/notebooks/quickstart/data-owner/01-upload-data.ipynb">Upload Private Data</a> +- <a href="https://github.com/OpenMined/PySyft/blob/0.8/notebooks/quickstart/data-owner/02-create-account-configure-pb.ipynb">Create Accounts</a> +- Manage Privacy Budget</a> +- <a href="https://github.com/OpenMined/PySyft/blob/0.8/notebooks/quickstart/data-owner/03-join-network.ipynb">Join a Network</a> +- Learn how PETs streamline Data Policies + +</td> +<td valign="top"> + +- Install Syft</a> +- Connect to a Domain</a> +- Search for Datasets</a> +- Train Models +- Retrieve Secure Results +- Learn Differential Privacy + +</td> +<td valign="top"> + +- Setup Dev Mode</a> +- Deploy to Azure +- Deploy to GCP +- Deploy to Kubernetes +- Customize Networking +- Modify PyGrid UI +</td> +</tr> +</table> + +# Terminology + +<table border="5" bordercolor="grey"> +<tr> +<th align="center"> +<img width="441" height="1"> +<p>👨🏻💼 Data Owners</p> +</th> +<th align="center"> +<img width="441" height="1"> +<p>👩🏽🔬 Data Scientists</p> +</th> +</tr> +<tr> +<td valign="top"> +<!-- REMOVE THE BACKSLASHES --> + +Provide `datasets` which they would like to make available for `study` by an `outside party` they may or may not `fully trust` has good intentions. + +</td> +<td valign="top"> +<!-- REMOVE THE BACKSLASHES --> + +Are end `users` who desire to perform `computations` or `answer` a specific `question` using one or more data owners' `datasets`. + +</td> +</tr> +<tr> +<th align="center"> +<img width="441" height="1"> +<p>🏰 Domain Server</p> +</th> +<th align="center"> +<img width="441" height="1"> +<p>🔗 Gateway Server</p> +</th> +</tr> +<tr> +<td valign="top"> +<!-- REMOVE THE BACKSLASHES --> + +Manages the `remote study` of the data by a `Data Scientist` and allows the `Data Owner` to manage the `data` and control the `privacy guarantees` of the subjects under study. It also acts as a `gatekeeper` for the `Data Scientist's` access to the data to compute and experiment with the results. + +</td> +<td valign="top"> +<!-- REMOVE THE BACKSLASHES --> + +Provides services to a group of `Data Owners` and `Data Scientists`, such as dataset `search` and bulk `project approval` (legal / technical) to participate in a project. A gateway server acts as a bridge between it's members (`Domains`) and their subscribers (`Data Scientists`) and can provide access to a collection of `domains` at once.</td> + +</tr> +<tr> +</table> + +# Community + +<table border="5" bordercolor="grey"> +<tr> +<th align="center" valign="top"> +<img width="441" height="1"> +<div align="center"> + +<img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/panel_slack_title_light.png" alt="" width="100%" align="center" /> + +<a href="https://slack.openmined.org/"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/panel_slack.png" alt="" width="100%" align="center" /></a> + +</div> +</th> +<th align="center" valign="top"> +<img width="441" height="1"> +<div align="center"> + +<img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/panel_title_videos_papers_light.png" alt="" width="100%" align="center" /> + +<p align="left"><sub><sup> +🎥 <a href="https://www.youtube.com/watch?v=qVf0tPBzr2k">PETs: Remote Data Science Unleashed - R gov 2021</a><br /> +🎥 <a href="https://youtu.be/sCoDWKTbh3s?list=PL_lsbAsL_o2BQKXG7mkGFA8LSApCnhljL">Introduction to Remote Data Science - PyTorch 2021</a><br /> +🎥 <a href="https://youtu.be/kzLeTz_vIeQ?list=PL_lsbAsL_o2BtOz6KUfUI_Zla6Rg5dmyc">The Future of AI Tools - PyTorch 2020</a><br /> +🎥 <a href="https://www.youtube.com/watch?v=4zrU54VIK6k&t=1s">Privacy Preserving AI - MIT Deep Learning Series</a><br /> +🎥 <a href="https://www.youtube.com/watch?v=Pr4erdusiW0">Privacy-Preserving Data Science - TWiML Talk #241</a><br /> +🎥 <a href="https://www.youtube.com/watch?v=NJBBE_SN90A">Privacy Preserving AI - PyTorch Devcon 2019</a><br /> +📖 <a href="https://arxiv.org/pdf/2110.01315.pdf">Towards general-purpose infrastructure for protect...</a><br /> +📖 <a href="https://arxiv.org/pdf/2104.12385.pdf">Syft 0.5: A platform for universally deployable ...</a><br /> +📖 <a href="https://arxiv.org/pdf/1811.04017.pdf">A generic framework for privacy preserving deep ...</a> +</sup></sup></p> +</div> +</th> +<th align="center" valign="top"> +<img width="441" height="1"> +<div align="center"> + +<img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/panel_padawan_title_light.png" alt="" width="100%" align="center" /> + +<a href="https://blog.openmined.org/work-on-ais-most-exciting-frontier-no-phd-required/"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/panel_padawan.png" alt="" width="100%" align="center"></a> + +</div> +</th> +</tr> +</table> + +# Courses + +<table border="5" bordercolor="grey"> +<tr> +<th align="center"> +<img width="441" height="1"> +<div align="center"> +<a href="https://courses.openmined.org/courses/our-privacy-opportunity"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/course_privacy.png" alt="" width="100%" align="center" /></a> +</th> +<th align="center"> +<img width="441" height="1"> +<div align="center"> +<a href="https://courses.openmined.org/courses/foundations-of-private-computation"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/course_foundations.png" alt="" width="100%" align="center" /></a> +</div> +</th> +<th align="center"> +<img width="441" height="1"> +<div align="center"> +<a href="https://courses.openmined.org/courses/introduction-to-remote-data-science"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/course_introduction.png" alt="" width="100%" align="center"></a> +</div> +</th> +</tr> +</table> + +# Contributors + +OpenMined and Syft appreciates all contributors, if you would like to fix a bug or suggest a new feature, please see our [guidelines](https://openmined.github.io/PySyft/developer_guide/index.html).<br /> + +<img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/contributors_light.jpg" alt="Contributors" width="100%" /> + +# Supporters + +<table border="0"> +<tr> +<th align="center"> +<a href="https://sloan.org/"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/logo_sloan.png" /></a> +</th> +<th align="center"> +<a href="https://opensource.fb.com/"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/logo_meta.png" /></a> +</th> +<th align="center"> +<a href="https://pytorch.org/"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/logo_torch.png" /></a> +</th> +<th align="center"> +<a href="https://www.udacity.com/"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/logo_udacity.png" /></a> +</th> +<th align="center"> +<a href="https://summerofcode.withgoogle.com/"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/logo_gsoc.png" /></a> +</th> +<th align="center"> +<a href="https://developers.google.com/season-of-docs"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/logo_gsod.png" /></a> +</th> +<th align="center"> + +<img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/logo_arkhn_light.png" /> + +</th> +<th align="center"> +<img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/logo_cape_light.png" /> +</th> +<th align="center"> +<a href="https://begin.ai/"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/logo_begin.png" /></a> +</th> +</tr> +</table> + +# Open Collective + +`OpenMined` is a fiscally sponsored `501(c)(3)` in the USA. We are funded by our generous supporters on <a href="https://opencollective.com/openmined">Open Collective</a>. <br /><br /> + +<img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/opencollective_light.png" alt="Contributors" width="100%" /> + +# 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](https://slack.openmined.org/) 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](LICENSE)<br /> +<a href="https://www.flaticon.com/free-icons/person" title="person icons">Person icons created by Freepik - Flaticon</a> + +<!-- 🥇 --> + + +%package -n python3-syft +Summary: Perform numpy-like analysis on data that remains in someone elses server +Provides: python-syft +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-syft +<div align="left"> <a href="https://pypi.org/project/syft/"><img src="https://pepy.tech/badge/syft" /></a> <a href="https://pypi.org/project/syft/"><img src="https://badge.fury.io/py/syft.svg" /></a> <a href="https://hub.docker.com/u/openmined"><img src="https://img.shields.io/badge/docker-images-blue?logo=docker" /></a> <a href="https://github.com/OpenMined/PySyft/actions/workflows/nightlies.yml"><img src="https://github.com/OpenMined/PySyft/actions/workflows/nightlies.yml/badge.svg?branch=dev" /></a> <a href="https://slack.openmined.org/"><img src="https://img.shields.io/badge/chat-on%20slack-purple?logo=slack" /></a> <a href="https://openmined.github.io/PySyft/"><img src="https://img.shields.io/badge/read-docs-yellow?logo=mdbook" /></a> +<br /><br /></div> + +<img alt="Syft Logo" src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/title_syft_light.png" width="200px" /> + +Perform `numpy`-like analysis on `data` that remains in `someone else's` server + +<div align="left"> +<img alt="Syft Logo" src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/header.png" alt="Syft Overview" width="100%" /> +</div> + +# Quickstart + +✅ `Linux` ✅ `macOS`\* ✅ `Windows`†‡ + +## Install syft on Python 3.9 - 3.10 + +```bash +$ pip install -U syft -f https://whls.blob.core.windows.net/unstable/index.html +``` + +## Launch a python dev Domain + +```python +# from Jupyter / Python +import syft as sy +sy.requires(">=0.8,<0.8.1") +node = sy.orchestra.launch(name="my-domain", port=8080, dev_mode=True, reset=True) +``` + +```bash +# or from the command line +$ syft launch --name=my-domain --port=8080 --reset=True + +Starting syft-node server on 0.0.0.0:8080 +``` + +## Connect with our Python Client + +```python +import syft as sy +sy.requires(">=0.8,<0.8.1") +domain_client = sy.login(port=8080, email="info@openmined.org", password="changethis") +``` + +## Deploy to a Container Engine or Cloud + +1. Install our handy 🛵 cli tool which makes deploying a Domain or Gateway server a one-liner: + `pip install -U hagrid` + +2. Then run our interactive jupyter Install 🧙🏽♂️ Wizard<sup>BETA</sup>: + `hagrid quickstart` + +3. In the tutorial you will learn how to install and deploy: + `PySyft` = our `numpy`-like 🐍 Python library for computing on `private data` in someone else's `Domain` + + `PyGrid` = our 🐳 `docker` / 🐧 `vm` `Domain` & `Gateway` Servers where `private data` lives + +4. During quickstart we will deploy `PyGrid` to localhost with 🐳 `docker`, however 🛵 HAGrid can deploy to `podman` or a 🐧 `ubuntu` VM on `azure` / `gcp` / `ANY_IP_ADDRESS` by using 🔨 `ansible`† + +## Docs and Support + +- 📝 <a href="https://github.com/OpenMined/PySyft/blob/0.8/notebooks/api">API Example Notebooks</a> +- 📚 <a href="https://openmined.github.io/PySyft/">Docs</a> +- `#support` on <a href="https://slack.openmined.org/">Slack</a> + +# Install Notes + +- HAGrid 0.3 Requires: 🐍 `python` 🐙 `git` - Run: `pip install -U hagrid` +- Interactive Install 🧙🏽♂️ Wizard<sup>BETA</sup> Requires 🛵 `hagrid`: - Run: `hagrid quickstart` + †`Windows` does not support `ansible`, preventing some remote deployment targets +- PySyft 0.8 Requires: 🐍 `python 3.10` - Run: `pip install -U syft` + \*`macOS` Apple Silicon users might need cmake: `brew install cmake` + ‡`Windows` users must run this first: `pip install jaxlib==0.3.14 -f https://whls.blob.core.windows.net/unstable/index.html` +- PyGrid Requires: 🐳 `docker` or 🐧 `ubuntu` VM - Run: `hagrid launch ...` + +# Versions + +`0.9.0` (Beta) - `dev` branch 👈🏽 <a href="https://github.com/OpenMined/PySyft/blob/dev/notebooks/api/0.9">API</a> +`0.8.0` (Stable) - <a href="https://github.com/OpenMined/PySyft/blob/0.8/notebooks/api/0.8">API</a> + +Deprecated: + +- `0.7.0` - <a href="https://github.com/OpenMined/courses/tree/introduction-to-remote-data-science-dev">Course 3 Updated</a> +- `0.6.0` - <a href="https://github.com/OpenMined/courses/tree/introduction-to-remote-data-science">Course 3</a> +- `0.5.1` - <a href="https://github.com/OpenMined/courses/tree/foundations-of-private-computation">Course 2</a> + M1 Hotfix +- `0.2.0` - `0.5.0` + +PySyft and PyGrid 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` +PyGrid (Stable) `hagrid launch ... tag=latest` + +PySyft (Beta): `pip install -U syft --pre` +PyGrid (Beta): `hagrid launch ... tag=beta` + +HAGrid is a cli / deployment tool so the latest version of `hagrid` is usually the best. + +# What is Syft? + +<img align="right" src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/logo_big.png" alt="Syft" height="250" style="padding-left:30px;"> + +`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](https://ai.googleblog.com/2017/04/federated-learning-collaborative.html), [Differential Privacy](https://en.wikipedia.org/wiki/Differential_privacy), and [Encrypted Computation](https://en.wikipedia.org/wiki/Homomorphic_encryption). 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 `domains` 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 domain. PySyft opens the doors to a streamlined Data Scientist `workflow`, all with the individual's `privacy` at its heart. + +# Tutorials + +<table border="5" bordercolor="grey"> +<tr> +<th align="center"> +<img width="441" height="1"> +<div align="center"> +<img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/personas_image/dataowner.png" alt="" width="100" height="100" align="center"> +<p>Data Owner</p></div> +</th> +<th align="center"> +<img width="441" height="1"> +<div align="center"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/personas_image/datascientist.png" alt="" width="100" height="100" align="center"> +<p>Data Scientist</p></div> + +</th> +<th align="center"> +<img width="441" height="1"> +<div align="center"> +<img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/personas_image/dataengineer.png" alt="" width="100" height="100" align="center"> +<p>Data Engineer</p> +</div> +</th> +</tr> +<tr> +<td valign="top"> + +- <a href="https://github.com/OpenMined/PySyft/blob/0.8/notebooks/quickstart/data-owner/00-deploy-domain.ipynb">Deploy a Domain Server</a> +- <a href="https://github.com/OpenMined/PySyft/blob/0.8/notebooks/quickstart/data-owner/01-upload-data.ipynb">Upload Private Data</a> +- <a href="https://github.com/OpenMined/PySyft/blob/0.8/notebooks/quickstart/data-owner/02-create-account-configure-pb.ipynb">Create Accounts</a> +- Manage Privacy Budget</a> +- <a href="https://github.com/OpenMined/PySyft/blob/0.8/notebooks/quickstart/data-owner/03-join-network.ipynb">Join a Network</a> +- Learn how PETs streamline Data Policies + +</td> +<td valign="top"> + +- Install Syft</a> +- Connect to a Domain</a> +- Search for Datasets</a> +- Train Models +- Retrieve Secure Results +- Learn Differential Privacy + +</td> +<td valign="top"> + +- Setup Dev Mode</a> +- Deploy to Azure +- Deploy to GCP +- Deploy to Kubernetes +- Customize Networking +- Modify PyGrid UI +</td> +</tr> +</table> + +# Terminology + +<table border="5" bordercolor="grey"> +<tr> +<th align="center"> +<img width="441" height="1"> +<p>👨🏻💼 Data Owners</p> +</th> +<th align="center"> +<img width="441" height="1"> +<p>👩🏽🔬 Data Scientists</p> +</th> +</tr> +<tr> +<td valign="top"> +<!-- REMOVE THE BACKSLASHES --> + +Provide `datasets` which they would like to make available for `study` by an `outside party` they may or may not `fully trust` has good intentions. + +</td> +<td valign="top"> +<!-- REMOVE THE BACKSLASHES --> + +Are end `users` who desire to perform `computations` or `answer` a specific `question` using one or more data owners' `datasets`. + +</td> +</tr> +<tr> +<th align="center"> +<img width="441" height="1"> +<p>🏰 Domain Server</p> +</th> +<th align="center"> +<img width="441" height="1"> +<p>🔗 Gateway Server</p> +</th> +</tr> +<tr> +<td valign="top"> +<!-- REMOVE THE BACKSLASHES --> + +Manages the `remote study` of the data by a `Data Scientist` and allows the `Data Owner` to manage the `data` and control the `privacy guarantees` of the subjects under study. It also acts as a `gatekeeper` for the `Data Scientist's` access to the data to compute and experiment with the results. + +</td> +<td valign="top"> +<!-- REMOVE THE BACKSLASHES --> + +Provides services to a group of `Data Owners` and `Data Scientists`, such as dataset `search` and bulk `project approval` (legal / technical) to participate in a project. A gateway server acts as a bridge between it's members (`Domains`) and their subscribers (`Data Scientists`) and can provide access to a collection of `domains` at once.</td> + +</tr> +<tr> +</table> + +# Community + +<table border="5" bordercolor="grey"> +<tr> +<th align="center" valign="top"> +<img width="441" height="1"> +<div align="center"> + +<img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/panel_slack_title_light.png" alt="" width="100%" align="center" /> + +<a href="https://slack.openmined.org/"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/panel_slack.png" alt="" width="100%" align="center" /></a> + +</div> +</th> +<th align="center" valign="top"> +<img width="441" height="1"> +<div align="center"> + +<img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/panel_title_videos_papers_light.png" alt="" width="100%" align="center" /> + +<p align="left"><sub><sup> +🎥 <a href="https://www.youtube.com/watch?v=qVf0tPBzr2k">PETs: Remote Data Science Unleashed - R gov 2021</a><br /> +🎥 <a href="https://youtu.be/sCoDWKTbh3s?list=PL_lsbAsL_o2BQKXG7mkGFA8LSApCnhljL">Introduction to Remote Data Science - PyTorch 2021</a><br /> +🎥 <a href="https://youtu.be/kzLeTz_vIeQ?list=PL_lsbAsL_o2BtOz6KUfUI_Zla6Rg5dmyc">The Future of AI Tools - PyTorch 2020</a><br /> +🎥 <a href="https://www.youtube.com/watch?v=4zrU54VIK6k&t=1s">Privacy Preserving AI - MIT Deep Learning Series</a><br /> +🎥 <a href="https://www.youtube.com/watch?v=Pr4erdusiW0">Privacy-Preserving Data Science - TWiML Talk #241</a><br /> +🎥 <a href="https://www.youtube.com/watch?v=NJBBE_SN90A">Privacy Preserving AI - PyTorch Devcon 2019</a><br /> +📖 <a href="https://arxiv.org/pdf/2110.01315.pdf">Towards general-purpose infrastructure for protect...</a><br /> +📖 <a href="https://arxiv.org/pdf/2104.12385.pdf">Syft 0.5: A platform for universally deployable ...</a><br /> +📖 <a href="https://arxiv.org/pdf/1811.04017.pdf">A generic framework for privacy preserving deep ...</a> +</sup></sup></p> +</div> +</th> +<th align="center" valign="top"> +<img width="441" height="1"> +<div align="center"> + +<img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/panel_padawan_title_light.png" alt="" width="100%" align="center" /> + +<a href="https://blog.openmined.org/work-on-ais-most-exciting-frontier-no-phd-required/"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/panel_padawan.png" alt="" width="100%" align="center"></a> + +</div> +</th> +</tr> +</table> + +# Courses + +<table border="5" bordercolor="grey"> +<tr> +<th align="center"> +<img width="441" height="1"> +<div align="center"> +<a href="https://courses.openmined.org/courses/our-privacy-opportunity"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/course_privacy.png" alt="" width="100%" align="center" /></a> +</th> +<th align="center"> +<img width="441" height="1"> +<div align="center"> +<a href="https://courses.openmined.org/courses/foundations-of-private-computation"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/course_foundations.png" alt="" width="100%" align="center" /></a> +</div> +</th> +<th align="center"> +<img width="441" height="1"> +<div align="center"> +<a href="https://courses.openmined.org/courses/introduction-to-remote-data-science"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/course_introduction.png" alt="" width="100%" align="center"></a> +</div> +</th> +</tr> +</table> + +# Contributors + +OpenMined and Syft appreciates all contributors, if you would like to fix a bug or suggest a new feature, please see our [guidelines](https://openmined.github.io/PySyft/developer_guide/index.html).<br /> + +<img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/contributors_light.jpg" alt="Contributors" width="100%" /> + +# Supporters + +<table border="0"> +<tr> +<th align="center"> +<a href="https://sloan.org/"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/logo_sloan.png" /></a> +</th> +<th align="center"> +<a href="https://opensource.fb.com/"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/logo_meta.png" /></a> +</th> +<th align="center"> +<a href="https://pytorch.org/"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/logo_torch.png" /></a> +</th> +<th align="center"> +<a href="https://www.udacity.com/"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/logo_udacity.png" /></a> +</th> +<th align="center"> +<a href="https://summerofcode.withgoogle.com/"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/logo_gsoc.png" /></a> +</th> +<th align="center"> +<a href="https://developers.google.com/season-of-docs"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/logo_gsod.png" /></a> +</th> +<th align="center"> + +<img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/logo_arkhn_light.png" /> + +</th> +<th align="center"> +<img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/logo_cape_light.png" /> +</th> +<th align="center"> +<a href="https://begin.ai/"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/logo_begin.png" /></a> +</th> +</tr> +</table> + +# Open Collective + +`OpenMined` is a fiscally sponsored `501(c)(3)` in the USA. We are funded by our generous supporters on <a href="https://opencollective.com/openmined">Open Collective</a>. <br /><br /> + +<img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/opencollective_light.png" alt="Contributors" width="100%" /> + +# 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](https://slack.openmined.org/) 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](LICENSE)<br /> +<a href="https://www.flaticon.com/free-icons/person" title="person icons">Person icons created by Freepik - Flaticon</a> + +<!-- 🥇 --> + + +%package help +Summary: Development documents and examples for syft +Provides: python3-syft-doc +%description help +<div align="left"> <a href="https://pypi.org/project/syft/"><img src="https://pepy.tech/badge/syft" /></a> <a href="https://pypi.org/project/syft/"><img src="https://badge.fury.io/py/syft.svg" /></a> <a href="https://hub.docker.com/u/openmined"><img src="https://img.shields.io/badge/docker-images-blue?logo=docker" /></a> <a href="https://github.com/OpenMined/PySyft/actions/workflows/nightlies.yml"><img src="https://github.com/OpenMined/PySyft/actions/workflows/nightlies.yml/badge.svg?branch=dev" /></a> <a href="https://slack.openmined.org/"><img src="https://img.shields.io/badge/chat-on%20slack-purple?logo=slack" /></a> <a href="https://openmined.github.io/PySyft/"><img src="https://img.shields.io/badge/read-docs-yellow?logo=mdbook" /></a> +<br /><br /></div> + +<img alt="Syft Logo" src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/title_syft_light.png" width="200px" /> + +Perform `numpy`-like analysis on `data` that remains in `someone else's` server + +<div align="left"> +<img alt="Syft Logo" src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/header.png" alt="Syft Overview" width="100%" /> +</div> + +# Quickstart + +✅ `Linux` ✅ `macOS`\* ✅ `Windows`†‡ + +## Install syft on Python 3.9 - 3.10 + +```bash +$ pip install -U syft -f https://whls.blob.core.windows.net/unstable/index.html +``` + +## Launch a python dev Domain + +```python +# from Jupyter / Python +import syft as sy +sy.requires(">=0.8,<0.8.1") +node = sy.orchestra.launch(name="my-domain", port=8080, dev_mode=True, reset=True) +``` + +```bash +# or from the command line +$ syft launch --name=my-domain --port=8080 --reset=True + +Starting syft-node server on 0.0.0.0:8080 +``` + +## Connect with our Python Client + +```python +import syft as sy +sy.requires(">=0.8,<0.8.1") +domain_client = sy.login(port=8080, email="info@openmined.org", password="changethis") +``` + +## Deploy to a Container Engine or Cloud + +1. Install our handy 🛵 cli tool which makes deploying a Domain or Gateway server a one-liner: + `pip install -U hagrid` + +2. Then run our interactive jupyter Install 🧙🏽♂️ Wizard<sup>BETA</sup>: + `hagrid quickstart` + +3. In the tutorial you will learn how to install and deploy: + `PySyft` = our `numpy`-like 🐍 Python library for computing on `private data` in someone else's `Domain` + + `PyGrid` = our 🐳 `docker` / 🐧 `vm` `Domain` & `Gateway` Servers where `private data` lives + +4. During quickstart we will deploy `PyGrid` to localhost with 🐳 `docker`, however 🛵 HAGrid can deploy to `podman` or a 🐧 `ubuntu` VM on `azure` / `gcp` / `ANY_IP_ADDRESS` by using 🔨 `ansible`† + +## Docs and Support + +- 📝 <a href="https://github.com/OpenMined/PySyft/blob/0.8/notebooks/api">API Example Notebooks</a> +- 📚 <a href="https://openmined.github.io/PySyft/">Docs</a> +- `#support` on <a href="https://slack.openmined.org/">Slack</a> + +# Install Notes + +- HAGrid 0.3 Requires: 🐍 `python` 🐙 `git` - Run: `pip install -U hagrid` +- Interactive Install 🧙🏽♂️ Wizard<sup>BETA</sup> Requires 🛵 `hagrid`: - Run: `hagrid quickstart` + †`Windows` does not support `ansible`, preventing some remote deployment targets +- PySyft 0.8 Requires: 🐍 `python 3.10` - Run: `pip install -U syft` + \*`macOS` Apple Silicon users might need cmake: `brew install cmake` + ‡`Windows` users must run this first: `pip install jaxlib==0.3.14 -f https://whls.blob.core.windows.net/unstable/index.html` +- PyGrid Requires: 🐳 `docker` or 🐧 `ubuntu` VM - Run: `hagrid launch ...` + +# Versions + +`0.9.0` (Beta) - `dev` branch 👈🏽 <a href="https://github.com/OpenMined/PySyft/blob/dev/notebooks/api/0.9">API</a> +`0.8.0` (Stable) - <a href="https://github.com/OpenMined/PySyft/blob/0.8/notebooks/api/0.8">API</a> + +Deprecated: + +- `0.7.0` - <a href="https://github.com/OpenMined/courses/tree/introduction-to-remote-data-science-dev">Course 3 Updated</a> +- `0.6.0` - <a href="https://github.com/OpenMined/courses/tree/introduction-to-remote-data-science">Course 3</a> +- `0.5.1` - <a href="https://github.com/OpenMined/courses/tree/foundations-of-private-computation">Course 2</a> + M1 Hotfix +- `0.2.0` - `0.5.0` + +PySyft and PyGrid 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` +PyGrid (Stable) `hagrid launch ... tag=latest` + +PySyft (Beta): `pip install -U syft --pre` +PyGrid (Beta): `hagrid launch ... tag=beta` + +HAGrid is a cli / deployment tool so the latest version of `hagrid` is usually the best. + +# What is Syft? + +<img align="right" src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/logo_big.png" alt="Syft" height="250" style="padding-left:30px;"> + +`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](https://ai.googleblog.com/2017/04/federated-learning-collaborative.html), [Differential Privacy](https://en.wikipedia.org/wiki/Differential_privacy), and [Encrypted Computation](https://en.wikipedia.org/wiki/Homomorphic_encryption). 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 `domains` 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 domain. PySyft opens the doors to a streamlined Data Scientist `workflow`, all with the individual's `privacy` at its heart. + +# Tutorials + +<table border="5" bordercolor="grey"> +<tr> +<th align="center"> +<img width="441" height="1"> +<div align="center"> +<img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/personas_image/dataowner.png" alt="" width="100" height="100" align="center"> +<p>Data Owner</p></div> +</th> +<th align="center"> +<img width="441" height="1"> +<div align="center"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/personas_image/datascientist.png" alt="" width="100" height="100" align="center"> +<p>Data Scientist</p></div> + +</th> +<th align="center"> +<img width="441" height="1"> +<div align="center"> +<img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/personas_image/dataengineer.png" alt="" width="100" height="100" align="center"> +<p>Data Engineer</p> +</div> +</th> +</tr> +<tr> +<td valign="top"> + +- <a href="https://github.com/OpenMined/PySyft/blob/0.8/notebooks/quickstart/data-owner/00-deploy-domain.ipynb">Deploy a Domain Server</a> +- <a href="https://github.com/OpenMined/PySyft/blob/0.8/notebooks/quickstart/data-owner/01-upload-data.ipynb">Upload Private Data</a> +- <a href="https://github.com/OpenMined/PySyft/blob/0.8/notebooks/quickstart/data-owner/02-create-account-configure-pb.ipynb">Create Accounts</a> +- Manage Privacy Budget</a> +- <a href="https://github.com/OpenMined/PySyft/blob/0.8/notebooks/quickstart/data-owner/03-join-network.ipynb">Join a Network</a> +- Learn how PETs streamline Data Policies + +</td> +<td valign="top"> + +- Install Syft</a> +- Connect to a Domain</a> +- Search for Datasets</a> +- Train Models +- Retrieve Secure Results +- Learn Differential Privacy + +</td> +<td valign="top"> + +- Setup Dev Mode</a> +- Deploy to Azure +- Deploy to GCP +- Deploy to Kubernetes +- Customize Networking +- Modify PyGrid UI +</td> +</tr> +</table> + +# Terminology + +<table border="5" bordercolor="grey"> +<tr> +<th align="center"> +<img width="441" height="1"> +<p>👨🏻💼 Data Owners</p> +</th> +<th align="center"> +<img width="441" height="1"> +<p>👩🏽🔬 Data Scientists</p> +</th> +</tr> +<tr> +<td valign="top"> +<!-- REMOVE THE BACKSLASHES --> + +Provide `datasets` which they would like to make available for `study` by an `outside party` they may or may not `fully trust` has good intentions. + +</td> +<td valign="top"> +<!-- REMOVE THE BACKSLASHES --> + +Are end `users` who desire to perform `computations` or `answer` a specific `question` using one or more data owners' `datasets`. + +</td> +</tr> +<tr> +<th align="center"> +<img width="441" height="1"> +<p>🏰 Domain Server</p> +</th> +<th align="center"> +<img width="441" height="1"> +<p>🔗 Gateway Server</p> +</th> +</tr> +<tr> +<td valign="top"> +<!-- REMOVE THE BACKSLASHES --> + +Manages the `remote study` of the data by a `Data Scientist` and allows the `Data Owner` to manage the `data` and control the `privacy guarantees` of the subjects under study. It also acts as a `gatekeeper` for the `Data Scientist's` access to the data to compute and experiment with the results. + +</td> +<td valign="top"> +<!-- REMOVE THE BACKSLASHES --> + +Provides services to a group of `Data Owners` and `Data Scientists`, such as dataset `search` and bulk `project approval` (legal / technical) to participate in a project. A gateway server acts as a bridge between it's members (`Domains`) and their subscribers (`Data Scientists`) and can provide access to a collection of `domains` at once.</td> + +</tr> +<tr> +</table> + +# Community + +<table border="5" bordercolor="grey"> +<tr> +<th align="center" valign="top"> +<img width="441" height="1"> +<div align="center"> + +<img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/panel_slack_title_light.png" alt="" width="100%" align="center" /> + +<a href="https://slack.openmined.org/"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/panel_slack.png" alt="" width="100%" align="center" /></a> + +</div> +</th> +<th align="center" valign="top"> +<img width="441" height="1"> +<div align="center"> + +<img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/panel_title_videos_papers_light.png" alt="" width="100%" align="center" /> + +<p align="left"><sub><sup> +🎥 <a href="https://www.youtube.com/watch?v=qVf0tPBzr2k">PETs: Remote Data Science Unleashed - R gov 2021</a><br /> +🎥 <a href="https://youtu.be/sCoDWKTbh3s?list=PL_lsbAsL_o2BQKXG7mkGFA8LSApCnhljL">Introduction to Remote Data Science - PyTorch 2021</a><br /> +🎥 <a href="https://youtu.be/kzLeTz_vIeQ?list=PL_lsbAsL_o2BtOz6KUfUI_Zla6Rg5dmyc">The Future of AI Tools - PyTorch 2020</a><br /> +🎥 <a href="https://www.youtube.com/watch?v=4zrU54VIK6k&t=1s">Privacy Preserving AI - MIT Deep Learning Series</a><br /> +🎥 <a href="https://www.youtube.com/watch?v=Pr4erdusiW0">Privacy-Preserving Data Science - TWiML Talk #241</a><br /> +🎥 <a href="https://www.youtube.com/watch?v=NJBBE_SN90A">Privacy Preserving AI - PyTorch Devcon 2019</a><br /> +📖 <a href="https://arxiv.org/pdf/2110.01315.pdf">Towards general-purpose infrastructure for protect...</a><br /> +📖 <a href="https://arxiv.org/pdf/2104.12385.pdf">Syft 0.5: A platform for universally deployable ...</a><br /> +📖 <a href="https://arxiv.org/pdf/1811.04017.pdf">A generic framework for privacy preserving deep ...</a> +</sup></sup></p> +</div> +</th> +<th align="center" valign="top"> +<img width="441" height="1"> +<div align="center"> + +<img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/panel_padawan_title_light.png" alt="" width="100%" align="center" /> + +<a href="https://blog.openmined.org/work-on-ais-most-exciting-frontier-no-phd-required/"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/panel_padawan.png" alt="" width="100%" align="center"></a> + +</div> +</th> +</tr> +</table> + +# Courses + +<table border="5" bordercolor="grey"> +<tr> +<th align="center"> +<img width="441" height="1"> +<div align="center"> +<a href="https://courses.openmined.org/courses/our-privacy-opportunity"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/course_privacy.png" alt="" width="100%" align="center" /></a> +</th> +<th align="center"> +<img width="441" height="1"> +<div align="center"> +<a href="https://courses.openmined.org/courses/foundations-of-private-computation"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/course_foundations.png" alt="" width="100%" align="center" /></a> +</div> +</th> +<th align="center"> +<img width="441" height="1"> +<div align="center"> +<a href="https://courses.openmined.org/courses/introduction-to-remote-data-science"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/course_introduction.png" alt="" width="100%" align="center"></a> +</div> +</th> +</tr> +</table> + +# Contributors + +OpenMined and Syft appreciates all contributors, if you would like to fix a bug or suggest a new feature, please see our [guidelines](https://openmined.github.io/PySyft/developer_guide/index.html).<br /> + +<img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/contributors_light.jpg" alt="Contributors" width="100%" /> + +# Supporters + +<table border="0"> +<tr> +<th align="center"> +<a href="https://sloan.org/"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/logo_sloan.png" /></a> +</th> +<th align="center"> +<a href="https://opensource.fb.com/"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/logo_meta.png" /></a> +</th> +<th align="center"> +<a href="https://pytorch.org/"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/logo_torch.png" /></a> +</th> +<th align="center"> +<a href="https://www.udacity.com/"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/logo_udacity.png" /></a> +</th> +<th align="center"> +<a href="https://summerofcode.withgoogle.com/"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/logo_gsoc.png" /></a> +</th> +<th align="center"> +<a href="https://developers.google.com/season-of-docs"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/logo_gsod.png" /></a> +</th> +<th align="center"> + +<img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/logo_arkhn_light.png" /> + +</th> +<th align="center"> +<img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/logo_cape_light.png" /> +</th> +<th align="center"> +<a href="https://begin.ai/"><img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/logo_begin.png" /></a> +</th> +</tr> +</table> + +# Open Collective + +`OpenMined` is a fiscally sponsored `501(c)(3)` in the USA. We are funded by our generous supporters on <a href="https://opencollective.com/openmined">Open Collective</a>. <br /><br /> + +<img src="https://raw.githubusercontent.com/OpenMined/PySyft/0.8/docs/img/opencollective_light.png" alt="Contributors" width="100%" /> + +# 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](https://slack.openmined.org/) 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](LICENSE)<br /> +<a href="https://www.flaticon.com/free-icons/person" title="person icons">Person icons created by Freepik - Flaticon</a> + +<!-- 🥇 --> + + +%prep +%autosetup -n syft-0.8.0.post2 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-syft -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Fri May 05 2023 Python_Bot <Python_Bot@openeuler.org> - 0.8.0.post2-1 +- Package Spec generated |
