# 3. Technische specificaties Om gebruik te kunnen maken van de AI-modellen ontwikkeld door DHD, moet aan een aantal technische vereisten worden voldaan. Elk ziekenhuis dient een lokale server in te richten. **Let op**: De systeemvereisten en hardware van de benodigde server verschillen voor *trainingsziekenhuizen*- en *inferentieziekenhuizen*. Inhoud: ***Hier nog inhoudsopgave toevoegen*** ## 3.1 Inferentie ziekenhuis Ziekenhuizen waar het AI-model wordt toegepast, maar waar het model niet wordt getraind noemen we *inferentie ziekenhuizen*. Deze ziekenhuizen maken dus alleen gebruik van het AI-model, zonder de data te leveren waarmee het model wordt getraind voor doorontwikkeling. Als het model wordt toegepast bij deze ziekenhuizen dan zet het ziekenhuis een dagopnamen dataset klaar op de lokale server van het ziekenhuis en stuurt DHD het model erheen om de resultaten op dezelfde server neer te zetten. Het ziekenhuis zorgt vervolgens voor de upload van de resultaten in het EPD. Ziekenhuizen die als inferentie ziekenhuis deelnemen aan AI ondersteund coderen dienen lokaal een server in te richten om het model daar te hosten. De vereisten van deze server zijn lichter dan die van de servers van de trainingsziekenhuizen. Maar ook bij inferentie ziekenhuizen waar het AI-model wordt toegepast geldt dat de ongestructureerde data (zoals de ontslagbrieven) binnen de beveiligde IT-omgeving van het ziekenhuis blijven. ### 3.1.1 Systeemvereisten voor inferentie ziekenhuis Voor de vantage6 node software, is een server nodig die (bij voorkeur) continue aanstaat. Dit mag ook een virtual machine zijn. De belangrijkste voorwaarden van de inferentieserver zijn: - Ubuntu 22.04 (Andere linux distributies zijn mogelijk indien de benodigde software geïnstalleerd kan worden) - Docker en Python (versie 3.10) moeten toegankelijk zijn - Toegang tot data ### 3.1.2 Hardware voor inferentie ziekenhuis Specificaties voor de hardware voor een inferentieserver zijn als volgt: - ≥ 16 cores x86/x64 CPU - ≥ 64 GB CPU RAM - ≥ 360 GB (SSD) ## 3.2 Trainingsziekenhuis Bij *trainingsziekenhuizen* wordt de data gebruikt om het model te trainen en door te ontwikkelen. Als uw ziekenhuis deelneemt als trainingsziekenhuis, dan zijn zwaardere technische vereisten nodig dan om als inferentie ziekenhuis deel te nemen. Een veel gestelde vraag van IT-afdelingen is of het noodzakelijk is om de server te voorzien van een GPU. Een GPU versnelt het trainingsproces met een factor 100. Voor deelname aan het project als trainingsziekenhuis is het daarom noodzakelijk dat de server wordt opgeleverd voorzien van een GPU. Voor een uitwerking van de kosten van een GPU, zie onze installatiegids: 7. Kosten GPU voor trainingsziekenhuis AIOC — installatiegids_AIOC v1.0 documentatie ### 3.2.1 Systeemvereisten voor trainingsziekenhuis Voor de vantage6 node software, is een server nodig die (bij voorkeur) continue aanstaat. Dit mag ook een virtual machine zijn. De belangrijkste voorwaarden van de trainingsserver zijn: - Ubuntu 22.04 (server of desktop) - Windows is helaas niet mogelijk. Eén van de hardware eisen van de trainingsserver is 1 GPU. Het is binnen Windows niet mogelijk om binnen Docker containers gebruik te maken van deze GPU. - Docker en Python moeten toegankelijk zijn - Toegang tot data ### 3.2.2 Hardware voor trainingsziekenhuis Specificaties voor de hardware voor een trainingsserver zijn als volgt: - ≥ 16 cores x86/x64 CPU - ≥ 64 GB CPU RAM - 1 GPU CUDA [compatibel](https://developer.nvidia.com/cuda-gpus) NVIDIA kaart - ≥ 16 GB GPU RAM - ≥ 360 GB (SSD) ### 3.2.3. Kosten GPU voor trainingsziekenhuis Binnen het project AI ondersteund coderen is het de wens om zo veel mogelijk ziekenhuizen als trainingsziekenhuis aan te sluiten, zodat we het AI-modellen voor dagopnamen en klinische opnamen kunnen blijven verbeteren. Wanneer een ziekenhuis een trainingsziekenhuis wordt, in plaats van een inferentieziekenhuis zullen er een tweetal wijzigingen doorgevoerd moeten worden: 1. GPU toevoegen aan de server 2. Klaarzetten van 5 jaar aan historische data Hieronder wordt duidelijkheid gegeven over wat het betekent voor ziekenhuizen om een GPU aan te schaffen. Ten eerste is de setup van de techniek bepalend in wat voor een GPU een ziekenhuis dient aan te schaffen. Je hebt hierin twee smaken: 1. **On-premise** = een lokaal (vaste) computer/server aanwezig in het ziekenhuis 2. **Cloud** = een niet lokale computer/server, maar online, in de cloud buiten het ziekenhuis Op dit moment hebben de meeste ziekenhuizen voor project AI ondersteund coderen een on-premise server klaargezet. #### 3.2.3.1 Prijsbepaling Ten eerste is het belangrijk om te kijken naar de verschillende soorten GPUs die CUDA compatibel zijn voor NVIDIA GPUs. Hieronder een overzicht van de meest interessante: | GPU | CPU | Compute capability | Azure ($/hour) | Google ($/hour) | |-----------|-----|--------------------|----------------|-----------------| | Tesla K80 | 6 | 3.7 | 0.90 | 0.85 | | Tesla P4 | 8 | 6.1 | 1.00 | - | | NVIDIA T4 | 16 | 7.5 | 1.20 | 0.75 | *Tabel 1: CUDA compatible NVIDIA Data Center GPUs ([bron 1](#), [bron 2](#))* De NVIDIA T4 kaart is het meest aantrekkelijk en voldoet aan de technische specificaties van het project. Hieronder meer in detail prijsinformatie over deze type GPU. #### 3.2.3.2 Prijs on-premise Belangrijk om hierbij aan te geven is dat wij de GPU niet 24/7 nodig hebben. In periodes van trainen verwachten wij de GPU maximaal 16 uur per maand nodig te hebben. Eventueel kan de GPU dus gedeeld worden met andere lokale servers in het ziekenhuis. De eenmalige aanschafkosten van NVIDIA T4 videokaart voor een on-premise server zijn ongeveer €3.000,-. Mochten jullie in het ziekenhuis een andere videokaarten beschikbaar hebben, neem dan contact met ons op of we ook met dit type kunnen werken. #### 3.2.3.3 Prijs per type cloud aanbieder Belangrijk om hierbij aan te geven is dat wij de GPU niet 24/7 nodig hebben. In periodes van trainen verwachten wij de GPU maximaal 16 uur per maand nodig te hebben. Onderstaande prijzen zijn uitgegaan van 16 uur. Per type cloud: 1. **Google Cloud** (bron: n1-highmem-16): - 16 uur per maand = €17,84 per maand 2. **Azure Cloud** (bron: NC16as T4 v3) - 16 uur per maand = €22,30 per maand ## 3.3 Specificaties software (voor trainings- en inferentie ziekenhuizen) Specificaties voor de software zijn als volgt: - [Docker](https://www.docker.com/) (we gebruiken docker engine, docker desktop is niet mogelijk) - Hier een [Link](https://docs.docker.com/engine/install/ubuntu/) naar installatie Docker Engine op een Ubuntu server. - [Python](https://www.python.org/) == 3.10 (we gebruiken de venv versie) - [Vantage6](https://distributedlearning.ai/) (zie [hoofdstuk 3](https://installatiegids-aioc.dhd.nl/Hoofdstuk3.html#) voor installatie uitleg) ### 3.3.1 Testen of Docker werkt Graag willen wij u vragen om na de installatie van Docker te controleren of Docker werkt. Dit kunt u als volgt doen. Type in Command Prompt: ```bash docker run hello-world ``` of ```bash docker ps ``` ### 3.3.2 Testen of Python werkt Graag willen wij u vragen om na de installatie van Python te controleren of Python werkt en of de juiste versie (3.10-venv versie) is gedownload. Dit kunt u als volgt doen. Type in Command Prompt: ```bash python3 --version ``` ### 3.4 Netwerk (zowel voor trainings- als inferentie ziekenhuizen) Specificaties voor het netwerk zijn als volgt: - ≥ 100Mbit ethernet - Port 443/TCP (https) open voor uitgaand verkeer naar de volgende vijf urls: - DHD Docker registry: - https://drplugindhdprd.azurecr.io - https://drplugindhdprd.westeurope.data.azurecr.io - DHD Blob storage: - https://stplugindhdp.blob.core.windows.net - DHD Vantage6 server: - https://plugin.dhd.nl - Container registry voor vantage6 updates: - https://harbor2.vantage6.ai/ ### 3.5 Accounts (zowel voor trainings- als inferentie ziekenhuizen) Op de lokale server zijn meerdere accounts nodig: - Een DHD-account (dit is nodig voor de installatie van de Vantage6 node) - Het is belangrijk dat dit account aan de Docker Group wordt toegevoegd. Voor meer informatie: [Add user to Docker group](https://docs.docker.com/engine/install/linux-postinstall/) - Persoonlijke accounts voor onze data scientisten en IT'ers. - Het is belangrijk dat deze accounts "lees" en "schrijf" toegang hebben tot de map waar de data wordt geplaatst. - Voor het opvragen welke personen van DHD een gebruikersaccount nodig hebben, kunt u een mail sturen naar ai-coderen@dhd.nl. ## 3.6 Installatie vantage6 In dit hoofdstuk wordt stap-voor-stap beschreven hoe het ziekenhuis zelf vantage6 kan installeren op de lokale ingerichte server. ### 3.6.1 Randvoorwaarden - Docker geïnstalleerd (zie hoofdstuk 2.3) - Huidige gebruiker heeft voldoende rechten om Docker te gebruiken (Let op! Bij een Linux server is het belangrijk dat het DHD-account wordt toegevoegd aan de Docker usergroup) - Python == 3.10 ````{tip} Voor de installatie van Python packages raden we een virtual environment aan. Zie de documentatie van de gebruikte Python distributie voor meer informaite over hoe dit op te zetten. ```{list-table} :header-rows: 1 :width: "100%" * - Distributie - Documentatie * - Python3 (vanilla) - [Creation of virtual environments](https://docs.python.org/3/library/venv.html) * - Anaconda - [Managing environments](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html) ``` ```` ### 3.6.2 Installatie van vantage6 software Vantage6 nodes draaien als Docker container op de server. Om interactie met deze containers te vergemakkelijken, is er een command line interface (CLI) beschikbaar. Deze CLI is geschreven in Python3 en is als package beschikbaar via [PyPI](https://pypi.org). Het volgende commando installeert de laatste versie van CLI: ```bash pip install --upgrade vantage6 ``` ````{tip} Het volgende commando verifieert of installatie van de software succesvol was. ```bash vnode --help ``` ```` ### 3.6.3 Configuratie van de node(s) Binnen een vantage6 netwerk is het mogelijk om verschillende samenwerkingsverbanden te definieren. Per samenwerkingsverband wordt bepaald _1)_ welke data wordt gebruikt, en _2)_ wat er precies mee gedaan mag worden. Per samenwerkingsverband, wordt een node geconfigureerd: de node heeft toegang tot de (juiste) data én houdt in de gaten dat alleen de toegestane algoritmes op de data worden toegepast. Om een configuratiebestand voor een nieuwe node aan te maken wordt vanaf de command line het commando `vnode new` gebruikt. ```bash vnode new ``` Dit start een "wizard" die een aantal vragen stelt. Deze worden hieronder nader toegelicht. ```{list-table} **Configuratie wizard** :name: configuratie-target :header-rows: 1 :widths: 100 200 * - Prompt - Antwoord / Omschrijving * - Please enter a configuration-name - Naam van de node (en het configuratiebestand).

Dit is enkel voor intern gebruik. Binnen DHD wordt hier vaak een combinatie van naam van de organisatie en samenwerking voor gebruikt. Bijvoorbeeld LUMC-AIOC voor een node die geïnstalleerd wordt door het LUMC en gebruikt wordt voor AI ondersteund coderen. * - Please select the environment you want to configure - Kies `application`. Deze vraag verdwijnt in een toekomstige versie van vantage6. * - Enter given api-key - De API-key wordt gebruikt voor authenticatie van de node bij de server. Deze ontvangt u van DHD. * - The base-URL of the server - Kies voor AIOC: [https://plugin.dhd.nl](https://plugin.dhd.nl) * - Enter port to which the server listens - Kies/typ `443` (https). * - Path of the api - Haal de standaardwaarde `/api` weg. * - Task directory path - Accepteer de voorgesteld waarde. * - Task directory path - Accepteer de voorgesteld waarde. * - Do you want to add a database? - Kies `Yes`. * - Enter unique label for the database - Accepteer de voorgestelde waarde `default`. * - Database URI - Voer de URI voor de database in. Dit is _of_ een URI in de vorm `dialect+driver://username:password@host:port/database` _of_ een absoluut pad naar een databestand (bijv. `/home/melle/database.csv`). * - Database type - Kies het juiste database/bestands type. * - Do you want to add a database? - Kies `No`. * - Which level of logging would you like? - Kies `DEBUG`. * - Do you want to connect to a VPN server? - Kies `Yes`. * - Subnet of the VPN server you want to connect to - Kies voor AIOC: `10.76.0.0/16` * - Enable encryption? - Kies `Yes`. * - Path to private key file - Geef een absoluut pad op naar de private key. Deze key maken we in de vervolgstap [Aanmaken private key](#aanmaken-private-key) aan. ``` Na afronding van de wizard, wordt de locatie van het aangemaakte configuratiebestand op het scherm getoond. Dit bestand kan m.b.v. een tekst-editor (bijv. Notepad of Visual Studio Code) worden geopend en aangepast. De locatie van dit configuratiebestand kan ook worden teruggevonden met behulp van het volgende commando: ```bash vnode files ``` ### 3.6.4 Aanmaken private key Het handmatig aanmaken van een private key kan via het volgende commando: ```bash vnode create-private-key ``` Hiervoor heeft zijn de gebruikersnaam en password, verstrekt door DHD, IKNL, of EZA, noodzakelijk. ### 6.3.5 Starten en stoppen van een node Om een node te starten, wordt het volgende commando gebruikt: ```bash vnode start ``` Om een idee te krijgen van wat er op de achtergrond gebeurt, is het mogelijk om de output van de node naar het scherm te sturen. Dit kan op twee manieren: ```bash vnode start --attach ``` Of op een later moment via het commando: ```bash vnode attach ``` Voor het stoppen van een node bestaat een vergelijkbaar commando: ```bash vnode stop ``` ### 3.6.6 Meer informatie Zie voor meer informatie de documentatie van [vantage6](https://docs.vantage6.ai/en/main/node/install.html) *Let op: de specificaties in de officiële vantage6 documentatie kunnen afwijken van de specificaties in dit document.*