A Privacy Enhancing Technology (PET) Operations platform
Quickstart •
Project structure •
Join the community •
License •
Code of conduct •
References
This repository is contains all the vantage6 infrastructure source code. The vantage6 technology enables to manage and deploy privacy enhancing technologies like Federated Learning (FL) and Multi-Party Computation (MPC). Please visit our website to learn more!
You can find more (user) documentation at readthedocs. If you have any questions, suggestions or just want to chat about federated learning: join our Discord) channel.
Infrastructure overview
A High level overview of the vantage6 infrastructure. Vantage6 has both a
client-server and peer-to-peer architecture. The client is used by the researcher to
create (PET) computation requests. It is also used to manage users, organizations and
collaborations. The server contains users, organizations, collaborations, tasks and
their results. It provides a central access point for both the clients and nodes. The
nodes have access to privacy sensitive data and handle computation requests retrieved
from the server. Computation request are executed as separate containers on the node.
These containers are connected to containers at other nodes by a VPN network.
:books: Quickstart
Requirements
The vantage6 infrastructure is delivered in Docker images. To run these images, you
need to have Docker installed. To install the
latest version of the vantage6 CLI, you need to have
Python, we recommend using an environment manager
like mini-conda.
Install the latest version of the vantage6 CLI by using:
pip install vantage6
This install the v6
commands, which allows you to manage your nodes and servers. To view all available options, run:
v6 --help
For example you can create a local test setup by using:
v6 dev create-demo-network
This creates a local network with a server and two nodes. You can start the network by running:
v6 dev start-demo-network
This will start the server and nodes in the background. You can view the logs by running:
v6 node attach
v6 server attach
From here you can use the vantage6-client
to interact with the server. The demo network has a pre-configured organization with
the following credentials:
- Username:
dev_admin
- Password:
password
For example, you can create a new organization by running:
from vantage6.client import Client
client = Client('http://127.0.0.1', 7601, '/api', log_level='debug')
client.authenticate('dev_admin', 'password')
client.setup_encryption(None)
client.organization.create(
name='My organization',
address1='My address',
address2='My address',
zipcode='1234AB',
country='The Netherlands',
domain='my-organization.com'
)
You can find more (user) documentation at readthedocs
Project structure
PYPI packages
This repository is home to 6 PyPi packages:
Note that when using vantage6 you do not install the server and node packages. These are delivered to you in Docker images.
This repository also hosts the code for the vantage6 user interface (UI). The UI
is an Angular web application that can be used to interact with the vantage6 server
easily.
Docker images
The vantage6 infrastructure is delivered in Docker images. All Docker images are stored
in our private Harbor registry. The most important images are:
harbor2.vantage6.ai/infrastructure/node:VERSION
-> Node application Docker imageharbor2.vantage6.ai/infrastructure/server:VERSION
-> Server application Docker imageharbor2.vantage6.ai/infrastructure/ui:VERSION
-> User interface Docker imageharbor2.vantage6.ai/infrastructure/algorithm-store:VERSION
-> Algorithm store Docker image
with VERSION
being the full semantic version of the vantage6 infrastructure, e.g.
4.0.0
or 4.1.0rc0
.
Several other images are used to support the infrastructure:
harbor2.vantage6.ai/infrastructure/infrastructure-base:VERSION
-> Base image for the infrastructureharbor2.vantage6.ai/infrastructure/squid:VERSION
-> Squid proxy image used for the whitelisting serviceharbor2.vantage6.ai/infrastructure/alpine
-> Alpine image used for vpn traffic forwardingharbor2.vantage6.ai/infrastructure/vpn-client
-> VPN image used to connect to the VPNharbor2.vantage6.ai/infrastructure/vpn-configurator
-> VPN image used for initializationharbor2.vantage6.ai/infrastructure/ssh-tunnel
-> SSH tunnel image used for connecting algorithms to external services
And finally there are some images released for algorithm development:
harbor2.vantage6.ai/infrastructure/algorithm-base:MAJOR.MINOR
-> Base image for algorithm developmentharbor2.vantage6.ai/infrastructure/algorithm-ohdsi-base:MAJOR.MINOR
-> Extended algorithm base image for OHDSI algorithm development
We hope to continue developing, improving, and supporting vantage6 with the help of
the federated learning community. If you are interested in contributing, first of all,
thank you! Second, please take a look at our
contributing guidelines
and our code of conduct.
:scroll: License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
:black_nib: Code of Conduct
Please note that this project is released with a Contributor Code of Conduct. By participating in any way in this project you agree to abide by its terms.
:black_nib: References
If you are using vantage6, please cite this repository as well as the accompanying papers as follows:
- F. Martin, M. Sieswerda, H. Alradhi, et al. vantage6. Available at https://doi.org/10.5281/zenodo.7221216. Accessed on MONTH, 20XX.
- A. Moncada-Torres, F. Martin, M. Sieswerda, J. van Soest, G. Gelijnse. VANTAGE6: an open source priVAcy preserviNg federaTed leArninG infrastructurE for Secure Insight eXchange. AMIA Annual Symposium Proceedings, 2020, p. 870-877. [BibTeX, PDF]
- D. Smits*, B. van Beusekom*, F. Martin, L. Veen, G. Geleijnse, A. Moncada-Torres, An Improved Infrastructure for Privacy-Preserving Analysis of Patient Data, Proceedings of the International Conference of Informatics, Management, and Technology in Healthcare (ICIMTH), vol. 25, 2022, p. 144-147. [BibTeX, PDF]
vantage6.ai •
Discord •
Discourse •
User documentation