Tâche¶
Les tâches sont les blocs primaires des algorithmes décentralisés dans Manta. Une Task
définie les calculs spécifiques qui sont exécutés sur chaquenoeud dans un Swarm. En utilisant manta_light
, les tâches peuvent intéragir avec les données locales, accèder aux paramètres globaux et contribuer aux résultats en les partageant dans le contexte d’un Swarm.
Pour plus d’informations, veuillez vous réferer à Task
.
Intéractions avec les données locales et les données partagées¶
Le code:manta_light fournit trois interfaces principales qui sont essentielles pour le développement: World
, Globals
, et Results
.
World¶
World
est fourni dans le contexte d’exécution dans les tâches. Il permet aux tâches d’intéragir avec des variables globales partagées (Globals
) et de stocker des sorties des tâches (Results
). World
sert comme couche de communication entre les tâches, rendant possible la synchronisation et le partage des données à travers différents noeuds. Pour plus de détails, veuillez vous référer à la documentation World
.
Globals¶
Globals
sont des variables globales partagées à travers toutes les tâches et les itérations dans un Swarm. Ces variables peuvent inclure des paramètres tels que les hyperparamètres pour l’entraînement ou d’autres paramètres de configuration qui ont besoin d’être accessible par tous les noeuds.
Il y a plusieurs suivre à connaître
Comme les variables sont partagées par différentes tâches dans les noeuds, elles peuvent avoir plusieurs lecteurs au même moment comme le montre la précédente figure.
Cependant, s’il y a un écrivain ou plusieurs écrivains au même moment comme illustrée sur la figure précédente, ou un écrivain et plusieurs lecteurs au même moment, vous n’avez pas la garantie sur l’ordonnancement de l’écriture et la lecture des variables. Par conséquent, les globals sont utiles quand : - plusieurs lecteurs veulent accéder à la même donnée parmi les variables globales - il y a seulement un node qui écrit sur une variable spécifique pendant que les autres noeuds n’accèdent pas à cette valeur.
Pour plus de détails, veuillez vous réferer à la classe Globals
.
Results¶
Results
permet aux tâches de stocker les sorties qui peuvent être accéder à des future iterations. Par exemple, les métriques des modèles, les parameters d’entraînement, ou des résultats intermédiaires peuvent être sauvegardés et utilisés par des tâches ultérieures.
Il y a plusieurs suivre à connaître
En utilisant ces résultats, vous pouvez avoir plusieurs écrivains au même moment mais vous ajoutez l’information dans la base de données autant de fois qu’il y a d’écrivains.
La lecture pendant l’écriture sont possibles. Cependant, comme l’écriture et l’écriture ne sont pas synchronisées, une lecture peut conduire à des informations manquantes.Par exemple, imaginons que trois noeuds écrivent leurs métriques. Et qu’un quatrième noeud est en train de commencer à écrire ses métriques. Mais, au même moment, un cinquième noeud sélectionne les métriques, il pourrait recevoir trois métriques venant des trois premiers noeuds, si le quatrième noeud n’a pas eu le temps de stocker ses métriques.
Pour plus de détails, veuillez vous réferer à la Results
.
Local¶
Local
fournit aux tâches l’accès aux données locales des noeuds. Ces données peuvent inclure les datasets d’entrainement, des fichiers de configuration, ou d’autres ressources qui sont stockées localement dans chacun des noeuds. Local
abstrait les mécanismes de stockage des données, en permettant aux tâches de se concentrer aux traitement des données.
Pour cette version, accéder aux données locales doit être spécifié en premier quand manta_node
est exécuté :
manta_node --data_folder <folder_where_data_are_stored>
Par exemple :
# In the node
└── data
└── sensors
├── front_images.npz
└── back_images.npz
manta_node --data_folder data/sensors
Veuillez vous réferer à la Local
pour plus d’information détaillées sur l’intéraction avec les données locales.