ClientApp¶
- class ClientApp(client_fn: Callable[[Context], Client] | None = None, mods: list[Callable[[Message, Context, Callable[[Message, Context], Message]], Message]] | None = None)[source]¶
Bases :
objectApplication ClientApp Flower.
Exemples
En supposant une mise en œuvre typique d’un
ClientnomméFlowerClient, vous pouvez l’entourer d’unClientAppcomme suit :class FlowerClient(NumPyClient): # ... def client_fn(context: Context): return FlowerClient().to_client() app = ClientApp(client_fn)
Methods
evaluate([action, mods])Inscrivez une fonction d'évaluation avec le
ClientApp.lifespan()Retournez un décorateur qui enregistre la fonction lifespan avec l'application client.
query([action, mods])Inscrivez une fonction de requête avec le
ClientApp.train([action, mods])Inscrivez une fonction d'entraînement avec le
ClientApp.- evaluate(action: str = 'default', *, mods: list[Callable[[Message, Context, Callable[[Message, Context], Message]], Message]] | None = None) Callable[[Callable[[Message, Context], Message]], Callable[[Message, Context], Message]][source]¶
Inscrivez une fonction d’évaluation avec le
ClientApp.- Paramètres:
action (str (default: "default")) – Nom d’action utilisé pour router les messages. Par défaut, « default ».
mods (Optional[list[Mod]] (default: None)) – Liste de modificateurs spécifiques aux fonctions.
- Renvoie:
Un décorateur qui enregistre une fonction d’évaluation avec le
ClientApp.- Type renvoyé:
Callable[[ClientAppCallable], ClientAppCallable]
Exemples
Enregistrement d’une fonction d’évaluation :
app = ClientApp() @app.evaluate() def evaluate(message: Message, context: Context) -> Message: print("Executing default evaluate function") # Create and return an echo reply message return Message(message.content, reply_to=message)
Enregistrement d’une fonction d’évaluation avec un nom d’action personnalisé :
app = ClientApp() # Messages with `message_type="evaluate.custom_action"` will be # routed to this function. @app.evaluate("custom_action") def custom_action(message: Message, context: Context) -> Message: print("Executing evaluate function for custom action") return Message(message.content, reply_to=message)
Enregistrement d’une fonction d’évaluation avec une Flower Mod spécifique à la fonction :
from flwr.client.mod import message_size_mod app = ClientApp() # Using the `mods` argument to apply a function-specific mod. @app.evaluate(mods=[message_size_mod]) def evaluate(message: Message, context: Context) -> Message: print("Executing evaluate function with message size mod") # Create and return an echo reply message return Message(message.content, reply_to=message)
- lifespan() Callable[[Callable[[Context], Iterator[None]]], Callable[[Context], Iterator[None]]][source]¶
Retournez un décorateur qui enregistre la fonction lifespan avec l’application client.
La fonction décorée doit accepter un objet Context et utiliser yield pour définir le comportement d’entrée et de sortie.
Exemples
app = ClientApp() @app.lifespan() def lifespan(context: Context) -> None: # Perform initialization tasks before the app starts print("Initializing ClientApp") yield # ClientApp is running # Perform cleanup tasks after the app stops print("Cleaning up ClientApp")
- query(action: str = 'default', *, mods: list[Callable[[Message, Context, Callable[[Message, Context], Message]], Message]] | None = None) Callable[[Callable[[Message, Context], Message]], Callable[[Message, Context], Message]][source]¶
Inscrivez une fonction de requête avec le
ClientApp.- Paramètres:
action (str (default: "default")) – Nom d’action utilisé pour router les messages. Par défaut, « default ».
mods (Optional[list[Mod]] (default: None)) – Liste de modificateurs spécifiques aux fonctions.
- Renvoie:
Un décorateur qui enregistre une fonction de requête avec le
ClientApp.- Type renvoyé:
Callable[[ClientAppCallable], ClientAppCallable]
Exemples
Enregistrement d’une fonction de requête :
app = ClientApp() @app.query() def query(message: Message, context: Context) -> Message: print("Executing default query function") # Create and return an echo reply message return Message(message.content, reply_to=message)
Enregistrement d’une fonction de requête avec un nom d’action personnalisé :
app = ClientApp() # Messages with `message_type="query.custom_action"` will be # routed to this function. @app.query("custom_action") def custom_action(message: Message, context: Context) -> Message: print("Executing query function for custom action") return Message(message.content, reply_to=message)
Enregistrement d’une fonction de requête avec une Flower Mod spécifique à la fonction :
from flwr.client.mod import message_size_mod app = ClientApp() # Using the `mods` argument to apply a function-specific mod. @app.query(mods=[message_size_mod]) def query(message: Message, context: Context) -> Message: print("Executing query function with message size mod") # Create and return an echo reply message return Message(message.content, reply_to=message)
- train(action: str = 'default', *, mods: list[Callable[[Message, Context, Callable[[Message, Context], Message]], Message]] | None = None) Callable[[Callable[[Message, Context], Message]], Callable[[Message, Context], Message]][source]¶
Inscrivez une fonction d’entraînement avec le
ClientApp.- Paramètres:
action (str (default: "default")) – Nom d’action utilisé pour router les messages. Par défaut, « default ».
mods (Optional[list[Mod]] (default: None)) – Liste de modificateurs spécifiques aux fonctions.
- Renvoie:
Un décorateur qui enregistre une fonction d’entraînement avec le
ClientApp.- Type renvoyé:
Callable[[ClientAppCallable], ClientAppCallable]
Exemples
Enregistrement d’une fonction d’entraînement :
app = ClientApp() @app.train() def train(message: Message, context: Context) -> Message: print("Executing default train function") # Create and return an echo reply message return Message(message.content, reply_to=message)
Enregistrement d’une fonction d’entraînement avec un nom d’action personnalisé :
app = ClientApp() # Messages with `message_type="train.custom_action"` will be # routed to this function. @app.train("custom_action") def custom_action(message: Message, context: Context) -> Message: print("Executing train function for custom action") return Message(message.content, reply_to=message)
Enregistrement d’une fonction d’entraînement avec une Flower Mod spécifique à la fonction :
from flwr.client.mod import message_size_mod app = ClientApp() # Using the `mods` argument to apply a function-specific mod. @app.train(mods=[message_size_mod]) def train(message: Message, context: Context) -> Message: print("Executing train function with message size mod") # Create and return an echo reply message return Message(message.content, reply_to=message)