|
1 | | -# Architectuur |
| 1 | +# Applicatie componenten voor decentrale verwerking |
2 | 2 |
|
3 | | -Om een federatieve infrastructuur mogelijk te maken, zijn er op technisch vlak twee vereisten: |
| 3 | +## Applicatiecomponenten van PLUGIN |
4 | 4 |
|
5 | | -* Software voor het federatief toegankelijk maken van data |
6 | | -* De data op de verschillende bronnen dient interoperabel te zijn. |
| 5 | + |
7 | 6 |
|
8 | | -PLUGIN maakt gebruik van **[Vantage6](https://vantage6.ai/)** om data te ontsluiten voor federatief gebruik. De data zelf wordt FAIR (en dus interoperabel) gemaakt door middel van **[HL7 FHIR](https://hl7.org/fhir/)**. |
| 7 | +Het datastation (links) en de federated processing hub (rechts) vormen de twee-eenheid van de PLUGIN/vantage6 architectuur. Hieronder wordt de functie van elke component in meer detail beschreven. |
9 | 8 |
|
10 | | -## Vantage6 |
| 9 | +!!! note "Gedetailleerde beschrijving applicatiecomponenten vantage6" |
11 | 10 |
|
12 | | -Vantage6 is een open-source infrastructuur voor het uitvoeren van een breed spectrum aan federatieve algoritmen. Bij ieder data station wordt een Vantage6 node geïnstalleerd. Een centraal Vantage6 server component faciliteert communicatie en bewaart slechts de tussentijdse resultaten, welke niet terug te herleiden zijn naar een patiënt. Vanuit een user interface en een client kunnen bevoegde gebruikers nieuwe analyses en algoritmen starten, welke rechtstreeks worden opgehaald uit een vertrouwde bibliotheek. |
| 11 | + === "**vantage6 server**" |
13 | 12 |
|
14 | | - |
| 13 | + Om communicatie mogelijk te maken tussen de verschillende nodes, slaat de Vantage6 Server informatie op over onder andere de deelnemende organisaties, de beschikbare nodes, en de invoer en resultaten van alle aangemaakte taken in het systeem. Deze informatie wordt opgevraagd door de nodes met behulp van een REST api en websockets, waardoor het niet nodig is binnenkomende poorten te openen op het data station. |
15 | 14 |
|
16 | | -### Vantage6 Server |
| 15 | + Door middel van authenticatie en authorisatie op basis van aan te wijzen rollen wordt bijgehouden welke acties toegestaan zijn voor o.a. gebruikers en nodes. |
17 | 16 |
|
18 | | -Om communicatie mogelijk te maken tussen de verschillende nodes, slaat de Vantage6 Server informatie op over onder andere de deelnemende organisaties, de beschikbare nodes, en de invoer en resultaten van alle aangemaakte taken in het systeem. Deze informatie wordt opgevraagd door de nodes met behulp van een REST api en websockets, waardoor het niet nodig is binnenkomende poorten te openen op het data station. |
19 | | -Door middel van authenticatie en authorisatie op basis van aan te wijzen rollen wordt bijgehouden welke acties toegestaan zijn voor o.a. gebruikers en nodes. |
| 17 | + === "**vantage6 node**" |
20 | 18 |
|
21 | | -### Algoritmen en Bibliotheek |
| 19 | + De Vantage6 Node voert openstaande taken uit. Hierbij wordt het aangegeven Docker image uit de bibliotheek gehaald en uitgevoerd, en gekoppeld aan een van de vooraf geconfigureerde databronnen. Voor elke taak wordt door middel van configuratie gecontroleerd of het uitvoeren van de Docker image toegestaan is. |
22 | 20 |
|
23 | | -Voor een maximale flexibiliteit in het soort uit te voeren taak, wordt in Vantage6 gebruik gemaakt van [Docker images](https://docs.docker.com/get-started/docker-concepts/the-basics/what-is-an-image/). Een sjabloon-image bevat vereiste logica zoals het verwerken van inputs en terugsturen van resultaten. Deze kan vervolgens worden uitgebreid met de specifieke logica voor de use-case, zoals bijvoorbeeld een federatieve query of een federated learning algoritme. Het Docker image dat hieruit resulteert wordt opgeslagen in een centrale [Docker registry](https://docs.docker.com/get-started/docker-concepts/the-basics/what-is-a-registry/) (een bibliotheek voor Docker images). |
| 21 | + Om het algoritme uit te voeren start de node op basis van het binnengehaalde Docker image een Docker container op het data station. Communicatie vanuit het algoritme verloopt hierbij altijd via de node naar de server. |
24 | 22 |
|
25 | | -### Vantage6 Node |
| 23 | + === "**Algoritmen en bibliotheek**" |
26 | 24 |
|
27 | | -De Vantage6 Node voert openstaande taken uit. Hierbij wordt het aangegeven Docker image uit de bibliotheek gehaald en uitgevoerd, en gekoppeld aan een van de vooraf geconfigureerde databronnen. Voor elke taak wordt door middel van configuratie gecontroleerd of het uitvoeren van de Docker image toegestaan is. |
| 25 | + Voor een maximale flexibiliteit in het soort uit te voeren taak, wordt in Vantage6 gebruik gemaakt van [Docker images](https://docs.docker.com/get-started/docker-concepts/the-basics/what-is-an-image/). Een sjabloon-image bevat vereiste logica zoals het verwerken van inputs en terugsturen van resultaten. Deze kan vervolgens worden uitgebreid met de specifieke logica voor de use-case, zoals bijvoorbeeld een federatieve query of een federated learning algoritme. Het Docker image dat hieruit resulteert wordt opgeslagen in een centrale [Docker registry](https://docs.docker.com/get-started/docker-concepts/the-basics/what-is-a-registry/) (een bibliotheek voor Docker images). |
28 | 26 |
|
29 | | -Om het algoritme uit te voeren start de node op basis van het binnengehaalde Docker image een Docker container op het data station. Communicatie vanuit het algoritme verloopt hierbij altijd via de node naar de server. |
30 | 27 |
|
31 | | -## HL7 FHIR |
32 | 28 |
|
| 29 | +## Federatief leren met PLUGIN/vantage6 |
33 | 30 |
|
| 31 | +De PLUGIN-architectuur is gebaseerd op vantage6. Het gefedereerd leren van een algoritme omvat een reeks gecoördineerde stappen tussen de onderzoeker, de centrale server en de datastations. Dit proces is ontworpen om de analyse uit te voeren zonder dat de brongegevens de lokale omgeving van het datastation verlaten. Hieronder volgt een detailleerde beschrijving wat elk van de applicatiecomponenten hierin doen. |
34 | 32 |
|
| 33 | + |
35 | 34 |
|
36 | | -## Benodigdheden |
| 35 | +???+ note "**Authenticatie**" |
37 | 36 |
|
38 | | -### Juridisch |
| 37 | + De onderzoeker start het proces door te authenticeren bij de centrale Vantage6-server. |
39 | 38 |
|
40 | | -https://www.medicaldataworks.nl/governance |
| 39 | +??? note "**Taak specificatie**" |
| 40 | + |
| 41 | + Na succesvolle authenticatie definieert de onderzoeker een taak. Hierbij wordt opgegeven: |
| 42 | + * Welk algoritme (Docker-image) gebruikt moet worden. |
| 43 | + * Specifieke inputparameters voor de analyse. |
| 44 | + * Het aantal iteraties (indien van toepassing, voor machine learning). |
| 45 | + * De identiteit van de *Secure Aggregation Server* (SAS), de node die verantwoordelijk is voor het aggregeren van resultaten. |
41 | 46 |
|
| 47 | +??? note "**Verzending naar nodes**" |
| 48 | + |
| 49 | + De centrale server stuurt de taak door naar de betrokken nodes. De SAS (Secure Aggregation Server, een specifieke node) ontvangt het verzoek als eerste. |
42 | 50 |
|
43 | | -### Data Station Hardware |
| 51 | +??? note "**Start hoofdalgoritme (SAS)**" |
| 52 | + |
| 53 | + De SAS downloadt het Docker-image, start het hoofd-algoritme en orkestreert de subtaken die door de datastations uitgevoerd moeten worden. |
44 | 54 |
|
45 | | -PLUGIN verwacht bij voorkeur de volgende hardware-specificaties: |
| 55 | +??? note "**Start subtaken (datastations)**" |
| 56 | + |
| 57 | + De datastations ontvangen hun subtaak van de centrale server, downloaden hetzelfde Docker-image en starten het lokale deel van het algoritme. De analyse wordt uitgevoerd op de lokale data. |
46 | 58 |
|
47 | | -* ≥ 16 cores, x86/x64 CPU |
48 | | -* ≥ 56 GB CPU RAM |
49 | | -* ≥ 360 GB SSD |
50 | | -* virtualization enabled |
51 | | -* GPU (optioneel, maar aanbevolen): |
52 | | - * CUDA compatible NVIDIA kaart |
53 | | - * 16 GB GPU RAM |
| 59 | +??? note "**Verzending lokale resultaten**" |
| 60 | + |
| 61 | + Na elke trainingscyclus of analysestap stuurt het algoritme op het datastation de lokale resultaten (bijv. modelgewichten of statistische coëfficiënten) naar de SAS. De brongegevens verlaten het datastation niet. |
54 | 62 |
|
| 63 | +??? note "**Verificatie en aggregatie**" |
| 64 | + |
| 65 | + De SAS verifieert de resultaten, extraheert de metadata en voegt de resultaten van alle datastations samen tot een geaggregeerd tussenmodel. Dit voltooit één iteratie. |
55 | 66 |
|
56 | | -Specificaties zijn echter sterk afhankelijk van de uit te voeren algoritmen. |
| 67 | +??? note "**Vervolg-iteraties**" |
| 68 | + |
| 69 | + Voor vervolgstappen vragen de datastations de geaggregeerde resultaten van de vorige ronde op bij de SAS om hun lokale modellen verder te trainen. Deze cyclus herhaalt zich totdat het model convergeert of het gewenste aantal iteraties is bereikt. |
57 | 70 |
|
58 | | -### Netwerk |
| 71 | +??? note "**Afronding**" |
| 72 | + |
| 73 | + De SAS informeert de onderzoeker dat de taak is voltooid. De onderzoeker kan vervolgens het finale, globale model downloaden van de server. Gedurende het proces heeft niemand, ook de onderzoeker niet, toegang tot de tussenresultaten, wat de veiligheid waarborgt. |
59 | 74 |
|
60 | | -* ≥ 100Mbit ethernet |
61 | | -* Poort 443/TCP (https) open voor **uitgaand** verkeer naar de server |
62 | | -* Een Publiek IP-adres voor whitelisting bij de server |
| 75 | +## PLUGIN en de European Interoperability Reference Architecture (EIRA) |
63 | 76 |
|
64 | | -### Software |
| 77 | +De architectuur van PLUGIN, gebaseerd op de principes van de Personal Health Train en Vantage6, kan worden beschreven aan de hand van de **European Interoperability Reference Architecture (EIRA)**. EIRA biedt een raamwerk om interoperabele architecturen te ontwerpen door herbruikbare *Architectural Building Blocks (ABBs)* te identificeren. |
65 | 78 |
|
66 | | -* Besturingssysteem: Ubuntu 22.04+, Windows 10 of hoger, macOS 13.x of hoger |
67 | | -* Docker of Docker Desktop |
68 | | -* Python versie 3.10+ |
| 79 | +Hoewel een gedetailleerde mapping naar specifieke EIRA ABB's een technische oefening is (vaak vastgelegd in een Archimate-model), kunnen we de componenten van PLUGIN conceptueel positioneren binnen de EIRA-gedachte. De architectuur is opgebouwd uit logische componenten die elk een specifieke rol vervullen, wat aansluit bij de EIRA-visie. De belangrijkste componenten, beschouwd als ABBs, zijn hieronder weergegeven. |
| 80 | + |
| 81 | + |
| 82 | +!!! note "PLUGIN in termen van EIRA architectural building blocks" |
| 83 | + |
| 84 | + === "**Processing hub**" |
| 85 | + |
| 86 | + Fungeert als een intermediair voor communicatie, beheert metadata van taken en orkestreert de interacties. Dit kan worden gezien als een combinatie van EIRA ABBs gerelateerd aan *Message Exchange*, *Service Registry* en *Process Control*. |
| 87 | + |
| 88 | + === "**Datastation**" |
| 89 | + |
| 90 | + De component binnen de jurisdictie van de datahouder (bv. een ziekenhuis). Het voorziet in de rekenkracht voor de lokale analyse en waarborgt dat data de eigen omgeving niet verlaat. Dit komt overeen met EIRA ABBs voor *Secure Data Processing* en *Service Consumption*. |
| 91 | + |
| 92 | + === "**Secure Aggregation Server (SAS)**" |
| 93 | + |
| 94 | + Een gespecialiseerde node die verantwoordelijk is voor het veilig aggregeren van de lokale resultaten. Dit is een specifieke invulling van een *Data Processing* en *Security* ABB. |
| 95 | + |
| 96 | + === "**Algoritme (Docker Image)**" |
| 97 | + |
| 98 | + Het "treintje" dat de analyse definieert. Het is een zelfstandige, uitvoerbare component die de logica, het model en de API bevat. Dit sluit aan bij het idee van een *Business Logic Component* of *Application Service* in EIRA. |
| 99 | + |
| 100 | + === "**Beveiligde Communicatiekanalen**" |
| 101 | + |
| 102 | + De infrastructuur die veilige data-uitwisseling (van geaggregeerde resultaten, niet brongegevens) mogelijk maakt. Dit valt onder EIRA ABBs zoals *Secure Communication* en *Network Infrastructure*. |
| 103 | + |
| 104 | +Door de architectuur op deze manier in componenten op te delen, wordt een modulaire en interoperabele opzet gerealiseerd die in lijn is met de principes van EIRA voor het bouwen van grensoverschrijdende en sector-overstijgende digitale diensten. |
| 105 | + |
| 106 | + |
| 107 | +## PLUGIN en de composable data stack |
| 108 | + |
| 109 | + |
| 110 | + |
| 111 | +TO DO: uitleggen hoe al deze componenten eigenlijk een-op-een te vertalen zijn naar de moderne lakehouse architectuur. |
69 | 112 |
|
70 | | -## Data |
71 | 113 |
|
72 | 114 |
|
73 | 115 |
|
|
0 commit comments