PySyft README

The project's README from github.com/OpenMined/PySyft. As one markdown file: README.md.

Syft Logo

PySyft v2

syft 0.10+ is the successor of syft-client. syft is the sync engine (import syft as sy); datasets and jobs live in syft-rds (from syft_rds import login_do, login_ds). If you depend on the legacy PySyft ≤0.9 API, pin syft<0.10.

Unit Tests Integration Tests PyPI Python 3.10+ License: Apache 2.0

PySyft lets data scientists submit computations which are run by data owners on private data — all through cloud storage their organizations already use (Google Drive, Microsoft 365, etc.). No new infrastructure required.

Docs

Tutorials

Features

Quick Start

We assume two parties here, a Data Owner (DO) and a Data Scientist (DS), the DS wants to do an analysis on private data of the DO. For brevity we use code blocks, but in practice these would be distributed: each party executes their code on their own machine.

# Data scientist
uv pip install "syft>=0.10.0" "syft-rds>=0.6.0"
# Data owner (adds the background services)
uv pip install "syft>=0.10.0" "syft-rds>=0.6.0" "syft-bg>=0.3.12"
import syft as sy                          # sync engine + helpers (resolve_dataset_file_path, bug_report, ...)
from syft_rds import login_do, login_ds    # datasets + jobs (the Remote Data Science client)
# Login (colab auth, for non-colab pass token_path)
do = login_do(email="[email protected]") # use your own email
ds = login_ds(email="[email protected]") # use another email here

# Peer request & approve
ds.add_peer("[email protected]")
do.approve_peer_request("[email protected]")

# Create & sync dataset
do.create_dataset(
    name="census",
    mock_path="mock.txt", # create this and add some text
    private_path="private.txt", # create this and add some text
    users=["[email protected]"],
)
do.sync(); ds.sync()
datasets = ds.datasets.get_all()

Write an analysis.py that reads the dataset and produces a result in our case this is just the length of the data. Inside a job, resolve_dataset_file_path automatically resolves to the private data:

# analysis.py
import json
import syft as sy

data_path = sy.resolve_dataset_file_path("census")
with open(data_path, "r") as f:
    data = f.read()

with open("outputs/result.json", "w") as f:
    json.dump({"length": len(data)}, f)

Submit the job and retrieve results:

# Submit job
ds.submit_python_job(
    user="[email protected]",
    code_path="analysis.py",
)
ds.sync(); do.sync()

# Data owner Approves & runs job
do.jobs[0].approve()
do.process_approved_jobs(share_outputs_with_submitter=True)
do.sync(); ds.sync()
result = open(ds.jobs[-1].output_paths[0]).read()

Packages

Package Description
syft-rds Remote Data Science client: login_do/login_ds, datasets, jobs
syft-datasets Dataset management and sharing
syft-job Job submission and execution
syft-permissions Permission system for Syft datasites
syft-perms User-facing permission API for Syft datasites
syft-bg Background services TUI dashboard for SyftBox
syft-notebook-ui Jupyter notebook display utilities

Development

# Install in development mode
uv pip install -e .

# Run tests
just test-unit          # Unit tests (fast, mocked)
just test-integration   # Integration tests (slow, real API)

Built by OpenMined — building open-source technology for privacy-preserving data science and AI.

Support

For questions about PySyft, reach out via #support on Slack.

Community

Supported by the OpenMined Foundation, the OpenMined Community is an online network of over 17,000 technologists, researchers, and industry professionals keen to unlock 1000x more data in every scientific field and industry.

Contributors

OpenMined and Syft appreciates all contributors, if you would like to fix a bug or suggest a new feature, please reach out via Github or Slack!

Contributors

About OpenMined

OpenMined is a non-profit foundation creating technology infrastructure that helps researchers get answers from data without needing a copy or direct access. Our community of technologists is building Syft.

Supporters

License

Apache License 2.0
Person icons created by Freepik - Flaticon

PySyft (OpenMined/PySyft)

Searching Database…

10K ·GitHub
Что это?PySyft (пакет «syft») позволяет заниматься наукой о данных, которые остаются на чужом сервере, так что исследователи могут получать ответы из данных, не имея их копии или прямого доступа к ним.
Это библиотека для импорта или отдельное приложение?Это Python-библиотека/синхронизационный движок, который вы импортируете как `syft`, в паре с отдельным пакетом (`syft-rds`), управляющим наборами данных и задачами.
Как начать им пользоваться?Установите пакет `syft` и выполните `import syft as sy`, чтобы пользоваться sync-движком; для управления наборами данных и задачами дополнительно используется `syft-rds` через `from syftrds import logindo, loginds`.
Нужен ли PyTorch для работы с ним?Судя по перечисленным темам, проект построен вокруг PyTorch и рабочих процессов глубокого/федеративного обучения, хотя точные требования к зависимостям в этом фрагменте README не расписаны.
Продолжит ли мой существующий код PySyft работать после этого обновления?Нет — syft 0.10+ это новая архитектура, сменившая старый syft-client; если вы опираетесь на устаревший API PySyft ≤0.9, нужно закрепить более старую версию syft, а не обновляться.
Как он сохраняет приватность данных, если я их никогда не копирую?Он создан OpenMined специально для того, чтобы исследователи могли получать ответы из данных, не имея копии или прямого доступа к самим данным, которые остаются на своём исходном сервере.
Какие методы Syft использует для защиты данных?Судя по GitHub-темам, Syft сочетает криптографию, защищённые вычисления и федеративное обучение, позволяя выполнять вычисления на удалённых данных, не раскрывая их.
Есть ли более старая версия, о которой стоит знать?Да, до 0.10 у проекта была другая архитектура (syft-client); если нужно старое поведение, закрепите релиз PySyft ≤0.9.
Creator
OpenMined
Size
766.3 MB
Stars
10K
Age
9y
Commits · 90 Days