# SPU: Secure Processing Unit
[![CircleCI](https://dl.circleci.com/status-badge/img/gh/secretflow/spu/tree/main.svg?style=shield)](https://dl.circleci.com/status-badge/redirect/gh/secretflow/spu/tree/main)
[![Python](https://img.shields.io/pypi/pyversions/spu.svg)](https://pypi.org/project/spu/)
[![PyPI version](https://img.shields.io/pypi/v/spu)](https://pypi.org/project/spu/)
[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/secretflow/spu/badge)](https://securityscorecards.dev/viewer/?uri=github.com/secretflow/spu)
[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/8311/badge)](https://www.bestpractices.dev/projects/8311)
SPU (Secure Processing Unit) aims to be a `provable`, `measurable` secure computation device,
which provides computation ability while keeping your private data protected.
SPU could be treated as a programmable device, it's not designed to be used directly.
Normally we use SecretFlow framework, which use SPU as the underline secure computing device.
Currently, we mainly focus on `provable` security. It contains a secure runtime that evaluates
[XLA](https://www.tensorflow.org/xla/operation_semantics)-like tensor operations,
which use [MPC](https://en.wikipedia.org/wiki/Secure_multi-party_computation) as the underline
evaluation engine to protect privacy information.
SPU python package also contains a simple distributed module to demo SPU usage,
but it's **NOT designed for production** due to system security and performance concerns,
please **DO NOT** use it directly in production.
## Contribution Guidelines
If you would like to contribute to SPU, please check [Contribution guidelines](CONTRIBUTING.md).
This documentation also contains instructions for [build and testing](CONTRIBUTING.md#build).
## Installation Guidelines
### Supported platforms
| | Linux x86_64 | Linux aarch64 | macOS x64 | macOS Apple Silicon | Windows x64 | Windows WSL2 x64 |
|------------|--------------|---------------|----------------|---------------------|----------------|---------------------|
| CPU | yes | yes | yes<sup>1</sup>| yes | no | yes |
| NVIDIA GPU | experimental | no | no | n/a | no | experimental |
1. Due to CI resource limitation, macOS x64 prebuild binary is no longer available.
### Instructions
Please follow [Installation Guidelines](INSTALLATION.md) to install SPU.
### Hardware Requirements
| General Features | FourQ based PSI | GPU |
| ---------------- | --------------- | --- |
| AVX/ARMv8 | AVX2/ARMv8 | CUDA 11.8+ |
## Citing SPU
If you think SPU is helpful for your research or development, please consider citing our [paper](https://www.usenix.org/conference/atc23/presentation/ma):
```text
@inproceedings {spu,
author = {Junming Ma and Yancheng Zheng and Jun Feng and Derun Zhao and Haoqi Wu and Wenjing Fang and Jin Tan and Chaofan Yu and Benyu Zhang and Lei Wang},
title = {{SecretFlow-SPU}: A Performant and {User-Friendly} Framework for {Privacy-Preserving} Machine Learning},
booktitle = {2023 USENIX Annual Technical Conference (USENIX ATC 23)},
year = {2023},
isbn = {978-1-939133-35-9},
address = {Boston, MA},
pages = {17--33},
url = {https://www.usenix.org/conference/atc23/presentation/ma},
publisher = {USENIX Association},
month = jul,
}
```
## Acknowledgement
We thank the significant contributions made by [Alibaba Gemini Lab](https://alibaba-gemini-lab.github.io).
Raw data
{
"_id": null,
"home_page": "https://github.com/secretflow/spu",
"name": "spu",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "spu mpc secretflow compiler vm ABY3 secure computation",
"author": "SecretFlow Team",
"author_email": "secretflow-contact@service.alipay.com",
"download_url": null,
"platform": null,
"description": "# SPU: Secure Processing Unit\n\n[![CircleCI](https://dl.circleci.com/status-badge/img/gh/secretflow/spu/tree/main.svg?style=shield)](https://dl.circleci.com/status-badge/redirect/gh/secretflow/spu/tree/main)\n[![Python](https://img.shields.io/pypi/pyversions/spu.svg)](https://pypi.org/project/spu/)\n[![PyPI version](https://img.shields.io/pypi/v/spu)](https://pypi.org/project/spu/)\n[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/secretflow/spu/badge)](https://securityscorecards.dev/viewer/?uri=github.com/secretflow/spu)\n[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/8311/badge)](https://www.bestpractices.dev/projects/8311)\n\nSPU (Secure Processing Unit) aims to be a `provable`, `measurable` secure computation device,\nwhich provides computation ability while keeping your private data protected.\n\nSPU could be treated as a programmable device, it's not designed to be used directly.\nNormally we use SecretFlow framework, which use SPU as the underline secure computing device.\n\nCurrently, we mainly focus on `provable` security. It contains a secure runtime that evaluates\n[XLA](https://www.tensorflow.org/xla/operation_semantics)-like tensor operations,\nwhich use [MPC](https://en.wikipedia.org/wiki/Secure_multi-party_computation) as the underline\nevaluation engine to protect privacy information.\n\nSPU python package also contains a simple distributed module to demo SPU usage,\nbut it's **NOT designed for production** due to system security and performance concerns,\nplease **DO NOT** use it directly in production.\n\n## Contribution Guidelines\n\nIf you would like to contribute to SPU, please check [Contribution guidelines](CONTRIBUTING.md).\n\nThis documentation also contains instructions for [build and testing](CONTRIBUTING.md#build).\n\n## Installation Guidelines\n\n### Supported platforms\n\n| | Linux x86_64 | Linux aarch64 | macOS x64 | macOS Apple Silicon | Windows x64 | Windows WSL2 x64 |\n|------------|--------------|---------------|----------------|---------------------|----------------|---------------------|\n| CPU | yes | yes | yes<sup>1</sup>| yes | no | yes |\n| NVIDIA GPU | experimental | no | no | n/a | no | experimental |\n\n1. Due to CI resource limitation, macOS x64 prebuild binary is no longer available.\n\n### Instructions\n\nPlease follow [Installation Guidelines](INSTALLATION.md) to install SPU.\n\n### Hardware Requirements\n\n| General Features | FourQ based PSI | GPU |\n| ---------------- | --------------- | --- |\n| AVX/ARMv8 | AVX2/ARMv8 | CUDA 11.8+ |\n\n## Citing SPU\n\nIf you think SPU is helpful for your research or development, please consider citing our [paper](https://www.usenix.org/conference/atc23/presentation/ma):\n\n```text\n@inproceedings {spu,\n author = {Junming Ma and Yancheng Zheng and Jun Feng and Derun Zhao and Haoqi Wu and Wenjing Fang and Jin Tan and Chaofan Yu and Benyu Zhang and Lei Wang},\n title = {{SecretFlow-SPU}: A Performant and {User-Friendly} Framework for {Privacy-Preserving} Machine Learning},\n booktitle = {2023 USENIX Annual Technical Conference (USENIX ATC 23)},\n year = {2023},\n isbn = {978-1-939133-35-9},\n address = {Boston, MA},\n pages = {17--33},\n url = {https://www.usenix.org/conference/atc23/presentation/ma},\n publisher = {USENIX Association},\n month = jul,\n}\n```\n\n## Acknowledgement\n\nWe thank the significant contributions made by [Alibaba Gemini Lab](https://alibaba-gemini-lab.github.io).\n",
"bugtrack_url": null,
"license": "Apache 2.0",
"summary": "SPU aims to be a 'provable', 'measurable' secure computation device.",
"version": "0.9.0.dev20240415",
"project_urls": {
"Homepage": "https://github.com/secretflow/spu"
},
"split_keywords": [
"spu",
"mpc",
"secretflow",
"compiler",
"vm",
"aby3",
"secure",
"computation"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "3f9e1828a1e4980c412fc9ea6cfc1a0754455220e5c8953f68330597cddf14de",
"md5": "6ec440ea686f19d30fca8786313ccac7",
"sha256": "1997cf8fbb1ea36b4166521e705d4285143c919f74dd5c8069f53e2e5f7c1ddb"
},
"downloads": -1,
"filename": "spu-0.9.0.dev20240415-cp310-cp310-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "6ec440ea686f19d30fca8786313ccac7",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 32597364,
"upload_time": "2024-04-15T03:01:36",
"upload_time_iso_8601": "2024-04-15T03:01:36.876594Z",
"url": "https://files.pythonhosted.org/packages/3f/9e/1828a1e4980c412fc9ea6cfc1a0754455220e5c8953f68330597cddf14de/spu-0.9.0.dev20240415-cp310-cp310-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "83d8e505d62187b42efae37b43c402099ac71aff4431f638e2c308ed41a60e57",
"md5": "27de63f1516a7a8d65b1bde5cdfac936",
"sha256": "18c50703e0efd99159b814e31b3dfc0f3a8048cac60b172619167a9e0d574186"
},
"downloads": -1,
"filename": "spu-0.9.0.dev20240415-cp310-cp310-manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "27de63f1516a7a8d65b1bde5cdfac936",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 37529628,
"upload_time": "2024-04-15T02:54:00",
"upload_time_iso_8601": "2024-04-15T02:54:00.823677Z",
"url": "https://files.pythonhosted.org/packages/83/d8/e505d62187b42efae37b43c402099ac71aff4431f638e2c308ed41a60e57/spu-0.9.0.dev20240415-cp310-cp310-manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8d1c03bc85948e952b225951c0b3b2a48f0848dbd6407530c8431f1aa8b58407",
"md5": "d5b0f5ec7cab03b375f976c31e7fa8f3",
"sha256": "546e511ee9a30db45c540c9ee7ff29c59e58a82281753108d2c3671473dd9526"
},
"downloads": -1,
"filename": "spu-0.9.0.dev20240415-cp310-cp310-manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "d5b0f5ec7cab03b375f976c31e7fa8f3",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 36454748,
"upload_time": "2024-04-15T03:00:26",
"upload_time_iso_8601": "2024-04-15T03:00:26.458856Z",
"url": "https://files.pythonhosted.org/packages/8d/1c/03bc85948e952b225951c0b3b2a48f0848dbd6407530c8431f1aa8b58407/spu-0.9.0.dev20240415-cp310-cp310-manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-04-15 03:01:36",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "secretflow",
"github_project": "spu",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"circle": true,
"requirements": [
{
"name": "grpcio",
"specs": [
[
">=",
"1.42.0"
],
[
"!=",
"1.48.0"
]
]
},
{
"name": "numpy",
"specs": [
[
">=",
"1.22.0"
]
]
},
{
"name": "protobuf",
"specs": [
[
"<",
"5"
],
[
">=",
"4"
]
]
},
{
"name": "cloudpickle",
"specs": [
[
">=",
"2.0.0"
]
]
},
{
"name": "multiprocess",
"specs": [
[
">=",
"0.70.12.2"
]
]
},
{
"name": "cachetools",
"specs": [
[
">=",
"5.0.0"
]
]
},
{
"name": "jax",
"specs": [
[
">=",
"0.4.16"
]
]
},
{
"name": "termcolor",
"specs": [
[
">=",
"2.0.0"
]
]
}
],
"lcname": "spu"
}