Exécuter ServerApp ou ClientApp en tant que Sous-Processus

Les composants SuperLink et SuperNode supportent deux modes d’isolement distincts, permettant un déploiement flexible et une prise en charge :

  1. Mode de sous-processus : Dans cette configuration (par défaut), les SuperLink et SuperNode sont responsables du lancement des processus ServerApp et ClientApp internes. Cela diffère de la mode d’isolement process, qui utilise des conteneurs séparés, comme le montre le guide Quickstart with Docker.

    L’utilisation de l’approche subprocess réduit le nombre de conteneurs en cours d’exécution, ce qui peut être bénéfique pour les environnements à ressources limitées. Cependant, cela signifie également que les applications ne sont pas isolées de leurs conteneurs parents, ce qui peut introduire des préoccupations de sécurité supplémentaires.

  2. Mode Processus : Dans ce mode, l’application ServerApp et les applications ClientApps s’exécutent dans des processus complètement séparés. Contrairement au mode de sous-processus alternatif, SuperLink ou SuperNode ne tente pas de créer ou gérer ces processus. Au lieu de cela, ils doivent être démarrés à l’extérieur.

Les deux modes peuvent être mélangés pour une flexibilité accrue. Par exemple, vous pouvez exécuter le SuperLink en mode subprocess, tout en gardant le SuperNode en mode process, ou vice versa.

Pour exécuter les SuperLink et SuperNode dans le mode d’isolement process, consultez le guide Quickstart with Docker. Pour les exécuter en mode subprocess, suivez les instructions ci-dessous.

Prerequisites

1. Before running the ServerApp as a subprocess, ensure that the FAB dependencies have been installed in the SuperLink images. This can be done by extending the SuperLink image:

superlink.Dockerfile
1FROM flwr/superlink:1.31.0
2
3WORKDIR /app
4COPY pyproject.toml .
5RUN sed -i 's/.*flwr\[simulation\].*//' pyproject.toml \
6    && python -m pip install -U --no-cache-dir .
7
8ENTRYPOINT ["flower-superlink"]

2. Next, build the SuperLink Docker image by running the following command in the directory where Dockerfile is located:

$ docker build -f superlink.Dockerfile -t flwr_superlink:0.0.1 .

Exécuter ServerApp en tant que Sous-Processus

Démarrer le SuperLink et exécuter le ServerApp sous forme de sous-processus (notez que le mode sous-processus est par défaut, vous n’avez donc pas besoin d’explicitement définir la variable --isolation) :

$ docker run --rm \
    -p 9091:9091 -p 9092:9092 -p 9093:9093 \
    --detach \
    flwr_superlink:0.0.1 \
    --insecure

Prerequisites

1. Before running the ClientApp as a subprocess, ensure that the FAB dependencies have been installed in the SuperNode images. This can be done by extending the SuperNode image:

supernode.Dockerfile
1FROM flwr/supernode:1.31.0
2
3WORKDIR /app
4COPY pyproject.toml .
5RUN sed -i 's/.*flwr\[simulation\].*//' pyproject.toml \
6    && python -m pip install -U --no-cache-dir .
7
8ENTRYPOINT ["flower-supernode"]

2. Next, build the SuperNode Docker image by running the following command in the directory where Dockerfile is located:

$ docker build -f supernode.Dockerfile -t flwr_supernode:0.0.1 .

Exécuter ClientApp en tant que Sous-Processus

Démarrer le SuperNode et exécuter le ClientApp sous forme de sous-processus (notez que le mode sous-processus est par défaut, vous n’avez donc pas besoin d’explicitement définir la variable --isolation) :

$ docker run --rm \
    --detach \
    flwr_supernode:0.0.1 \
    --insecure \
    --superlink <superlink-address>:9092