Exécuter Flower Localement avec un SuperLink Géré¶
Lorsque vous utilisez un profil local dans le Flower configuration avec address = ":local:", flwr ne lance pas directement l’exécution de la simulation. Au lieu de cela, Flower démarre une instance locale gérée sur demande, soumet l’exécution par l’API de contrôle et l’instance locale SuperLink exécute l’exécution avec le Simulation Runtime. Le SuperLink continuera à tourner en arrière-plan tout en acceptant des commandes jusqu’à ce que vous stop it manually.
Flower stocke cette instance locale gérée sous $HOME/.flwr/local-superlink. Si vous souhaitez changer cet emplacement, définissez la variable d’environnement FLWR_HOME sur un répertoire différent.
Note
Le reste de ce guide suppose que vous avez configuré le profil par défaut dans votre configuration Flower. Cela devrait déjà être le cas si vous avez installé Flower pour la première fois ou mis à jour une version précédente qui n’avait pas la fonctionnalité de configuration Flower. Pour plus d’informations, consultez le guide the Flower Configuration.
Ce que Flower démarre pour vous¶
Sur la première commande qui nécessite le contrôle local API (par exemple, flwr run, flwr list, etc.), Flower lance automatiquement un processus local flower-superlink. Ce processus :
écoute sur
127.0.0.1:39093pour le Contrôle APIassocie ServerAppIo à un port local libre choisi par l’OS
continue à tourner en arrière-plan après votre commande s’est terminée
est réutilisé par les commandes
flwr run,flwr list,flwr log, etflwr stopultérieures
Vous pouvez surcharger la valeur de port du contrôle local API avec l’environnement variable FLWR_LOCAL_CONTROL_API_PORT.
Soumettre une exécution¶
À partir de votre répertoire d’application Flower, soumettez une exécution comme d’habitude :
$ flwr run .
Sortie représentative :
Starting local SuperLink on 127.0.0.1:39093...
Successfully started run 1859953118041441032
Le flwr run . simple soumet l’exécution, imprime l’ID d’exécution, et retourne. Si vous voulez soumettre l’exécution et suivre les journaux dans la même fenêtre de terminal, utilisez :
$ flwr run . --stream
Lister les exécutations¶
Pour voir toutes les exécutations connues du SuperLink local :
$ flwr list
Pour inspecter une exécution en détail :
$ flwr list --run-id 1859953118041441032
Afficher les journaux¶
Pour diffuser les journaux de manière continue :
$ flwr log 1859953118041441032 --stream
Pour récupérer les journaux disponibles actuellement et les retourner :
$ flwr log 1859953118041441032 --show
Sortie représentative diffusée :
INFO : Starting FedAvg strategy:
INFO : Number of rounds: 3
INFO : [ROUND 1/3]
INFO : configure_train: Sampled 5 nodes (out of 10)
INFO : aggregate_train: Received 5 results and 0 failures
...
Arrêter une exécution¶
Pour arrêter une exécution soumise ou en cours :
$ flwr stop 1859953118041441032
Cela arrête uniquement l’exécution. Il ne ne s’arrête pas le processus de SuperLink local en arrière-plan.
Fichiers et état du runtime local¶
Le SuperLink local géré conserve ses fichiers dans $FLWR_HOME/local-superlink/ :
state.dbstocke l’état local SuperLinksuperlink.logstocke le processus local SuperLink sortie
Ces fichiers persistent jusqu’à ce que vous les supprimiez vous-même.
Note
À partir de Flower 1.29 FABs sont stockés dans l’état local SuperLink au lieu d’un répertoire local séparé ffs/. C’est une modification importante : les données de FAB du système de fichiers legacy ne sont pas migrées, et les anciennes exécutions qui dépendaient de cette mise en cache ne sont pas récupérables après mise à jour sans migration manuelle.
Arrêter le SuperLink local en arrière-plan¶
Il n’y a actuellement aucune commande flwr dédiée pour stopper le processus local SuperLink géré. Pour l’arrêter, inspectez d’abord le processus correspondant et puis terminez-le.
macOS/Linux¶
Inspecter le processus :
$ ps aux | grep '[f]lower-superlink.*--control-api-address 127.0.0.1:39093'
Arrêtez le processus :
$ pkill -f 'flower-superlink.*--control-api-address 127.0.0.1:39093'
Windows PowerShell¶
Inspecter le processus :
PS> Get-CimInstance Win32_Process |
>> Where-Object {
>> $_.CommandLine -like '*flower-superlink*--control-api-address 127.0.0.1:39093*'
>> } |
>> Select-Object ProcessId, CommandLine
Arrêtez le processus :
PS> Get-CimInstance Win32_Process |
>> Where-Object {
>> $_.CommandLine -like '*flower-superlink*--control-api-address 127.0.0.1:39093*'
>> } |
>> ForEach-Object { Stop-Process -Id $_.ProcessId }
Si vous avez changé la valeur de port du contrôle local API avec FLWR_LOCAL_CONTROL_API_PORT, remplacez 39093 dans les commandes ci-dessus.
Troubleshooting¶
Si vous voyez des erreurs de base de données SQL telles que database is locked, consultez la FAQ.
Si une exécution locale échoue avant de démarrer, ou si le SuperLink local géré ne s’ouvre pas correctement, inspectez :
$FLWR_HOME/local-superlink/superlink.log
Ce journal contient l’sortie du processus de fond flower-superlink et est le premier endroit à vérifier pour les erreurs d’amorçage, les conflits de port ou les échecs en temps réel.