diff --git a/lib/python/flame/examples/adult/aggregator/config.json b/lib/python/flame/examples/adult/aggregator/config.json index 66d6b2ab8..0b8a35fa6 100644 --- a/lib/python/flame/examples/adult/aggregator/config.json +++ b/lib/python/flame/examples/adult/aggregator/config.json @@ -21,9 +21,15 @@ "trainer", "aggregator" ], - "funcTags": { - "aggregator": ["distribute", "aggregate"], - "trainer": ["fetch", "upload"] + "funcTags": { + "aggregator": [ + "distribute", + "aggregate" + ], + "trainer": [ + "fetch", + "upload" + ] } } ], @@ -33,20 +39,22 @@ "rounds": 5 }, "baseModel": { - "name": "", - "version": 1 + "name": "", + "version": 1 }, - "job" : { - "id": "622a358619ab59012eabeefb", - "name": "adult" + "job": { + "id": "622a358619ab59012eabeefb", + "name": "adult" }, "registry": { - "sort": "mlflow", - "uri": "http://flame-mlflow:5000" + "sort": "mlflow", + "uri": "http://flame-mlflow:5000" }, "selector": { - "sort": "random", - "kwargs": {"k": 1} + "sort": "random", + "kwargs": { + "k": 1 + } }, "maxRunTime": 300, "realm": "", diff --git a/lib/python/flame/examples/adult/trainer/config.json b/lib/python/flame/examples/adult/trainer/config.json index 23f6603c4..2eb0fe726 100644 --- a/lib/python/flame/examples/adult/trainer/config.json +++ b/lib/python/flame/examples/adult/trainer/config.json @@ -21,9 +21,15 @@ "trainer", "aggregator" ], - "funcTags": { - "aggregator": ["distribute", "aggregate"], - "trainer": ["fetch", "upload"] + "funcTags": { + "aggregator": [ + "distribute", + "aggregate" + ], + "trainer": [ + "fetch", + "upload" + ] } } ], @@ -37,20 +43,22 @@ "rounds": 5 }, "baseModel": { - "name": "", - "version": 1 + "name": "", + "version": 1 }, - "job" : { - "id": "622a358619ab59012eabeefb", - "name": "adult" + "job": { + "id": "622a358619ab59012eabeefb", + "name": "adult" }, "registry": { - "sort": "mlflow", - "uri": "http://flame-mlflow:5000" + "sort": "mlflow", + "uri": "http://flame-mlflow:5000" }, "selector": { - "sort": "random", - "kwargs": {"k": 1} + "sort": "random", + "kwargs": { + "k": 1 + } }, "maxRunTime": 300, "realm": "default/us/west", diff --git a/lib/python/flame/examples/dist_mnist/trainer/config1.json b/lib/python/flame/examples/dist_mnist/trainer/config1.json index dbdcba115..29b257293 100644 --- a/lib/python/flame/examples/dist_mnist/trainer/config1.json +++ b/lib/python/flame/examples/dist_mnist/trainer/config1.json @@ -26,8 +26,10 @@ "trainer", "trainer" ], - "funcTags": { - "trainer": ["ring_allreduce"] + "funcTags": { + "trainer": [ + "ring_allreduce" + ] } } ], @@ -41,20 +43,20 @@ "rounds": 10 }, "baseModel": { - "name": "", - "version": 1 + "name": "", + "version": 1 }, - "job" : { - "id": "622a358619ab59012eabeefb", - "name": "dist_mnist" + "job": { + "id": "622a358619ab59012eabeefb", + "name": "dist_mnist" }, "registry": { "sort": "dummy", "uri": "" }, "selector": { - "sort": "default", - "kwargs": {} + "sort": "default", + "kwargs": {} }, "optimizer": { "sort": "fedavg", diff --git a/lib/python/flame/examples/dist_mnist/trainer/config2.json b/lib/python/flame/examples/dist_mnist/trainer/config2.json index 51f9f20ce..15369288c 100644 --- a/lib/python/flame/examples/dist_mnist/trainer/config2.json +++ b/lib/python/flame/examples/dist_mnist/trainer/config2.json @@ -25,8 +25,10 @@ "trainer", "trainer" ], - "funcTags": { - "trainer": ["ring_allreduce"] + "funcTags": { + "trainer": [ + "ring_allreduce" + ] } } ], @@ -40,20 +42,20 @@ "rounds": 10 }, "baseModel": { - "name": "", - "version": 1 + "name": "", + "version": 1 }, - "job" : { - "id": "622a358619ab59012eabeefb", - "name": "dist_mnist" + "job": { + "id": "622a358619ab59012eabeefb", + "name": "dist_mnist" }, "registry": { "sort": "dummy", "uri": "" }, "selector": { - "sort": "default", - "kwargs": {} + "sort": "default", + "kwargs": {} }, "optimizer": { "sort": "fedavg", diff --git a/lib/python/flame/examples/dist_mnist/trainer/config3.json b/lib/python/flame/examples/dist_mnist/trainer/config3.json index fc0803635..4907ef270 100644 --- a/lib/python/flame/examples/dist_mnist/trainer/config3.json +++ b/lib/python/flame/examples/dist_mnist/trainer/config3.json @@ -25,8 +25,10 @@ "trainer", "trainer" ], - "funcTags": { - "trainer": ["ring_allreduce"] + "funcTags": { + "trainer": [ + "ring_allreduce" + ] } } ], @@ -40,20 +42,20 @@ "rounds": 10 }, "baseModel": { - "name": "", - "version": 1 + "name": "", + "version": 1 }, - "job" : { - "id": "622a358619ab59012eabeefb", - "name": "dist_mnist" + "job": { + "id": "622a358619ab59012eabeefb", + "name": "dist_mnist" }, "registry": { "sort": "dummy", "uri": "" }, "selector": { - "sort": "default", - "kwargs": {} + "sort": "default", + "kwargs": {} }, "optimizer": { "sort": "fedavg", diff --git a/lib/python/flame/examples/hier_mnist/middle_aggregator/config_uk.json b/lib/python/flame/examples/hier_mnist/middle_aggregator/config_uk.json index db3d31e6b..41848a898 100644 --- a/lib/python/flame/examples/hier_mnist/middle_aggregator/config_uk.json +++ b/lib/python/flame/examples/hier_mnist/middle_aggregator/config_uk.json @@ -25,28 +25,40 @@ "top-aggregator", "middle-aggregator" ], - "funcTags": { - "top-aggregator": ["distribute", "aggregate"], - "middle-aggregator": ["fetch", "upload"] + "funcTags": { + "top-aggregator": [ + "distribute", + "aggregate" + ], + "middle-aggregator": [ + "fetch", + "upload" + ] } }, - { + { "description": "Model update is sent from mid aggregator to trainer and vice-versa", "groupBy": { "type": "tag", "value": [ - "default/us/west/org1", - "default/uk/london/org2" - ] + "default/us/west/org1", + "default/uk/london/org2" + ] }, "name": "param-channel", "pair": [ "middle-aggregator", "trainer" ], - "funcTags": { - "middle-aggregator": ["distribute", "aggregate"], - "trainer": ["fetch", "upload"] + "funcTags": { + "middle-aggregator": [ + "distribute", + "aggregate" + ], + "trainer": [ + "fetch", + "upload" + ] } } ], @@ -60,12 +72,12 @@ "rounds": 5 }, "baseModel": { - "name": "", - "version": 1 + "name": "", + "version": 1 }, - "job" : { - "id": "622a358619ab59012eabeefb", - "name": "mnist" + "job": { + "id": "622a358619ab59012eabeefb", + "name": "mnist" }, "registry": { "sort": "dummy", diff --git a/lib/python/flame/examples/hier_mnist/middle_aggregator/config_us.json b/lib/python/flame/examples/hier_mnist/middle_aggregator/config_us.json index 02e17163e..28a6a7337 100644 --- a/lib/python/flame/examples/hier_mnist/middle_aggregator/config_us.json +++ b/lib/python/flame/examples/hier_mnist/middle_aggregator/config_us.json @@ -25,28 +25,40 @@ "top-aggregator", "middle-aggregator" ], - "funcTags": { - "top-aggregator": ["distribute", "aggregate"], - "middle-aggregator": ["fetch", "upload"] + "funcTags": { + "top-aggregator": [ + "distribute", + "aggregate" + ], + "middle-aggregator": [ + "fetch", + "upload" + ] } }, - { + { "description": "Model update is sent from mid aggregator to trainer and vice-versa", "groupBy": { "type": "tag", "value": [ - "default/us/west/org1", - "default/uk/london/org2" - ] + "default/us/west/org1", + "default/uk/london/org2" + ] }, "name": "param-channel", "pair": [ "middle-aggregator", "trainer" ], - "funcTags": { - "middle-aggregator": ["distribute", "aggregate"], - "trainer": ["fetch", "upload"] + "funcTags": { + "middle-aggregator": [ + "distribute", + "aggregate" + ], + "trainer": [ + "fetch", + "upload" + ] } } ], @@ -60,12 +72,12 @@ "rounds": 5 }, "baseModel": { - "name": "", - "version": 1 + "name": "", + "version": 1 }, - "job" : { - "id": "622a358619ab59012eabeefb", - "name": "mnist" + "job": { + "id": "622a358619ab59012eabeefb", + "name": "mnist" }, "registry": { "sort": "dummy", diff --git a/lib/python/flame/examples/hier_mnist/top_aggregator/config.json b/lib/python/flame/examples/hier_mnist/top_aggregator/config.json index 3dcf24010..22309ffad 100644 --- a/lib/python/flame/examples/hier_mnist/top_aggregator/config.json +++ b/lib/python/flame/examples/hier_mnist/top_aggregator/config.json @@ -25,9 +25,15 @@ "top-aggregator", "middle-aggregator" ], - "funcTags": { - "top-aggregator": ["distribute", "aggregate"], - "middle-aggregator": ["fetch", "upload"] + "funcTags": { + "top-aggregator": [ + "distribute", + "aggregate" + ], + "middle-aggregator": [ + "fetch", + "upload" + ] } } ], @@ -41,20 +47,20 @@ "rounds": 5 }, "baseModel": { - "name": "", - "version": 1 + "name": "", + "version": 1 }, - "job" : { - "id": "622a358619ab59012eabeefb", - "name": "mnist" + "job": { + "id": "622a358619ab59012eabeefb", + "name": "mnist" }, "registry": { "sort": "dummy", "uri": "http://flame-mlflow:5000" }, "selector": { - "sort": "default", - "kwargs": {} + "sort": "default", + "kwargs": {} }, "maxRunTime": 300, "realm": "", diff --git a/lib/python/flame/examples/hier_mnist/trainer/config_uk.json b/lib/python/flame/examples/hier_mnist/trainer/config_uk.json index b52b3aa6c..c9bee1d56 100644 --- a/lib/python/flame/examples/hier_mnist/trainer/config_uk.json +++ b/lib/python/flame/examples/hier_mnist/trainer/config_uk.json @@ -12,23 +12,29 @@ } ], "channels": [ - { + { "description": "Model update is sent from mid aggregator to trainer and vice-versa", "groupBy": { "type": "tag", "value": [ - "default/us/west/org1", - "default/uk/london/org2" - ] + "default/us/west/org1", + "default/uk/london/org2" + ] }, "name": "param-channel", "pair": [ "middle-aggregator", "trainer" ], - "funcTags": { - "middle-aggregator": ["distribute", "aggregate"], - "trainer": ["fetch", "upload"] + "funcTags": { + "middle-aggregator": [ + "distribute", + "aggregate" + ], + "trainer": [ + "fetch", + "upload" + ] } } ], @@ -42,12 +48,12 @@ "rounds": 5 }, "baseModel": { - "name": "", - "version": 1 + "name": "", + "version": 1 }, - "job" : { - "id": "622a358619ab59012eabeefb", - "name": "mnist" + "job": { + "id": "622a358619ab59012eabeefb", + "name": "mnist" }, "registry": { "sort": "dummy", diff --git a/lib/python/flame/examples/hier_mnist/trainer/config_us.json b/lib/python/flame/examples/hier_mnist/trainer/config_us.json index 9fb50e04e..480db4364 100644 --- a/lib/python/flame/examples/hier_mnist/trainer/config_us.json +++ b/lib/python/flame/examples/hier_mnist/trainer/config_us.json @@ -12,23 +12,29 @@ } ], "channels": [ - { + { "description": "Model update is sent from mid aggregator to trainer and vice-versa", "groupBy": { "type": "tag", "value": [ - "default/us/west/org1", - "default/uk/london/org2" - ] + "default/us/west/org1", + "default/uk/london/org2" + ] }, "name": "param-channel", "pair": [ "middle-aggregator", "trainer" ], - "funcTags": { - "middle-aggregator": ["distribute", "aggregate"], - "trainer": ["fetch", "upload"] + "funcTags": { + "middle-aggregator": [ + "distribute", + "aggregate" + ], + "trainer": [ + "fetch", + "upload" + ] } } ], @@ -42,12 +48,12 @@ "rounds": 5 }, "baseModel": { - "name": "", - "version": 1 + "name": "", + "version": 1 }, - "job" : { - "id": "622a358619ab59012eabeefb", - "name": "mnist" + "job": { + "id": "622a358619ab59012eabeefb", + "name": "mnist" }, "registry": { "sort": "dummy", diff --git a/lib/python/flame/examples/hybrid/aggregator/config.json b/lib/python/flame/examples/hybrid/aggregator/config.json index 0a0ef510f..7103c5baa 100644 --- a/lib/python/flame/examples/hybrid/aggregator/config.json +++ b/lib/python/flame/examples/hybrid/aggregator/config.json @@ -25,9 +25,15 @@ "trainer", "aggregator" ], - "funcTags": { - "trainer": ["fetch", "upload"], - "aggregator": ["distribute", "aggregate"] + "funcTags": { + "trainer": [ + "fetch", + "upload" + ], + "aggregator": [ + "distribute", + "aggregate" + ] } } ], @@ -41,20 +47,20 @@ "rounds": 5 }, "baseModel": { - "name": "", - "version": 1 + "name": "", + "version": 1 }, - "job" : { - "id": "622a358619ab59012eabeefc", - "name": "hybrid_mnist" + "job": { + "id": "622a358619ab59012eabeefc", + "name": "hybrid_mnist" }, "registry": { - "sort": "dummy", - "uri": "" + "sort": "dummy", + "uri": "" }, "selector": { - "sort": "default", - "kwargs": {} + "sort": "default", + "kwargs": {} }, "optimizer": { "sort": "fedavg", diff --git a/lib/python/flame/examples/hybrid/trainer/config_eu_org1.json b/lib/python/flame/examples/hybrid/trainer/config_eu_org1.json index 8d29caf61..6a8b718fa 100644 --- a/lib/python/flame/examples/hybrid/trainer/config_eu_org1.json +++ b/lib/python/flame/examples/hybrid/trainer/config_eu_org1.json @@ -26,8 +26,10 @@ "trainer", "trainer" ], - "funcTags": { - "trainer": ["ring_allreduce"] + "funcTags": { + "trainer": [ + "ring_allreduce" + ] } }, { @@ -43,9 +45,15 @@ "trainer", "aggregator" ], - "funcTags": { - "trainer": ["fetch", "upload"], - "aggregator": ["distribute", "aggregate"] + "funcTags": { + "trainer": [ + "fetch", + "upload" + ], + "aggregator": [ + "distribute", + "aggregate" + ] } } ], @@ -59,20 +67,20 @@ "rounds": 5 }, "baseModel": { - "name": "", - "version": 1 + "name": "", + "version": 1 }, - "job" : { - "id": "622a358619ab59012eabeefc", - "name": "hybrid_mnist" + "job": { + "id": "622a358619ab59012eabeefc", + "name": "hybrid_mnist" }, "registry": { - "sort": "dummy", - "uri": "" + "sort": "dummy", + "uri": "" }, "selector": { - "sort": "default", - "kwargs": {} + "sort": "default", + "kwargs": {} }, "optimizer": { "sort": "fedavg", diff --git a/lib/python/flame/examples/hybrid/trainer/config_eu_org2.json b/lib/python/flame/examples/hybrid/trainer/config_eu_org2.json index ccf3c7cec..5ca84614b 100644 --- a/lib/python/flame/examples/hybrid/trainer/config_eu_org2.json +++ b/lib/python/flame/examples/hybrid/trainer/config_eu_org2.json @@ -26,8 +26,10 @@ "trainer", "trainer" ], - "funcTags": { - "trainer": ["ring_allreduce"] + "funcTags": { + "trainer": [ + "ring_allreduce" + ] } }, { @@ -43,9 +45,15 @@ "trainer", "aggregator" ], - "funcTags": { - "trainer": ["fetch", "upload"], - "aggregator": ["distribute", "aggregate"] + "funcTags": { + "trainer": [ + "fetch", + "upload" + ], + "aggregator": [ + "distribute", + "aggregate" + ] } } ], @@ -59,20 +67,20 @@ "rounds": 5 }, "baseModel": { - "name": "", - "version": 1 + "name": "", + "version": 1 }, - "job" : { - "id": "622a358619ab59012eabeefc", - "name": "hybrid_mnist" + "job": { + "id": "622a358619ab59012eabeefc", + "name": "hybrid_mnist" }, "registry": { - "sort": "dummy", - "uri": "" + "sort": "dummy", + "uri": "" }, "selector": { - "sort": "default", - "kwargs": {} + "sort": "default", + "kwargs": {} }, "optimizer": { "sort": "fedavg", diff --git a/lib/python/flame/examples/hybrid/trainer/config_us_org1.json b/lib/python/flame/examples/hybrid/trainer/config_us_org1.json index b80aa1b23..fd616c6b6 100644 --- a/lib/python/flame/examples/hybrid/trainer/config_us_org1.json +++ b/lib/python/flame/examples/hybrid/trainer/config_us_org1.json @@ -26,8 +26,10 @@ "trainer", "trainer" ], - "funcTags": { - "trainer": ["ring_allreduce"] + "funcTags": { + "trainer": [ + "ring_allreduce" + ] } }, { @@ -43,9 +45,15 @@ "trainer", "aggregator" ], - "funcTags": { - "trainer": ["fetch", "upload"], - "aggregator": ["distribute", "aggregate"] + "funcTags": { + "trainer": [ + "fetch", + "upload" + ], + "aggregator": [ + "distribute", + "aggregate" + ] } } ], @@ -59,20 +67,20 @@ "rounds": 5 }, "baseModel": { - "name": "", - "version": 1 + "name": "", + "version": 1 }, - "job" : { - "id": "622a358619ab59012eabeefc", - "name": "hybrid_mnist" + "job": { + "id": "622a358619ab59012eabeefc", + "name": "hybrid_mnist" }, "registry": { - "sort": "dummy", - "uri": "" + "sort": "dummy", + "uri": "" }, "selector": { - "sort": "default", - "kwargs": {} + "sort": "default", + "kwargs": {} }, "optimizer": { "sort": "fedavg", diff --git a/lib/python/flame/examples/hybrid/trainer/config_us_org2.json b/lib/python/flame/examples/hybrid/trainer/config_us_org2.json index 44a7c1f03..27c538182 100644 --- a/lib/python/flame/examples/hybrid/trainer/config_us_org2.json +++ b/lib/python/flame/examples/hybrid/trainer/config_us_org2.json @@ -26,8 +26,10 @@ "trainer", "trainer" ], - "funcTags": { - "trainer": ["ring_allreduce"] + "funcTags": { + "trainer": [ + "ring_allreduce" + ] } }, { @@ -43,9 +45,15 @@ "trainer", "aggregator" ], - "funcTags": { - "trainer": ["fetch", "upload"], - "aggregator": ["distribute", "aggregate"] + "funcTags": { + "trainer": [ + "fetch", + "upload" + ], + "aggregator": [ + "distribute", + "aggregate" + ] } } ], @@ -59,20 +67,20 @@ "rounds": 5 }, "baseModel": { - "name": "", - "version": 1 + "name": "", + "version": 1 }, - "job" : { - "id": "622a358619ab59012eabeefc", - "name": "hybrid_mnist" + "job": { + "id": "622a358619ab59012eabeefc", + "name": "hybrid_mnist" }, "registry": { - "sort": "dummy", - "uri": "" + "sort": "dummy", + "uri": "" }, "selector": { - "sort": "default", - "kwargs": {} + "sort": "default", + "kwargs": {} }, "optimizer": { "sort": "fedavg", diff --git a/lib/python/flame/examples/medmnist/aggregator/config.json b/lib/python/flame/examples/medmnist/aggregator/config.json index 89e5d9158..54d1ece3f 100644 --- a/lib/python/flame/examples/medmnist/aggregator/config.json +++ b/lib/python/flame/examples/medmnist/aggregator/config.json @@ -21,9 +21,15 @@ "trainer", "aggregator" ], - "funcTags": { - "aggregator": ["distribute", "aggregate"], - "trainer": ["fetch", "upload"] + "funcTags": { + "aggregator": [ + "distribute", + "aggregate" + ], + "trainer": [ + "fetch", + "upload" + ] } } ], @@ -35,27 +41,27 @@ "batchSize": 32, "learningRate": 0.001, "rounds": 5, - "epochs": 2 + "epochs": 2 }, "baseModel": { - "name": "", - "version": 1 + "name": "", + "version": 1 }, - "job" : { - "id": "622a358619ab59012eabeefb", - "name": "mednist" + "job": { + "id": "622a358619ab59012eabeefb", + "name": "mednist" }, "registry": { - "sort": "dummy", - "uri": "" + "sort": "dummy", + "uri": "" }, "selector": { - "sort": "default", - "kwargs": {} + "sort": "default", + "kwargs": {} }, "optimizer": { - "sort": "fedavg", - "kwargs": {} + "sort": "fedavg", + "kwargs": {} }, "maxRunTime": 300, "realm": "default", diff --git a/lib/python/flame/examples/medmnist/trainer/config.json b/lib/python/flame/examples/medmnist/trainer/config.json index 3a4dd7c7c..503e66a1b 100644 --- a/lib/python/flame/examples/medmnist/trainer/config.json +++ b/lib/python/flame/examples/medmnist/trainer/config.json @@ -21,9 +21,15 @@ "trainer", "aggregator" ], - "funcTags": { - "aggregator": ["distribute", "aggregate"], - "trainer": ["fetch", "upload"] + "funcTags": { + "aggregator": [ + "distribute", + "aggregate" + ], + "trainer": [ + "fetch", + "upload" + ] } } ], @@ -35,27 +41,27 @@ "batchSize": 32, "learningRate": 0.001, "rounds": 5, - "epochs": 2 + "epochs": 2 }, "baseModel": { - "name": "", - "version": 1 + "name": "", + "version": 1 }, - "job" : { - "id": "622a358619ab59012eabeefb", - "name": "mednist" + "job": { + "id": "622a358619ab59012eabeefb", + "name": "mednist" }, "registry": { - "sort": "dummy", - "uri": "" + "sort": "dummy", + "uri": "" }, "selector": { - "sort": "default", - "kwargs": {} + "sort": "default", + "kwargs": {} }, "optimizer": { - "sort": "fedavg", - "kwargs": {} + "sort": "fedavg", + "kwargs": {} }, "maxRunTime": 300, "realm": "default", diff --git a/lib/python/flame/examples/mnist/aggregator/config.json b/lib/python/flame/examples/mnist/aggregator/config.json index ac8efe28f..3a464705f 100644 --- a/lib/python/flame/examples/mnist/aggregator/config.json +++ b/lib/python/flame/examples/mnist/aggregator/config.json @@ -25,9 +25,15 @@ "trainer", "aggregator" ], - "funcTags": { - "aggregator": ["distribute", "aggregate"], - "trainer": ["fetch", "upload"] + "funcTags": { + "aggregator": [ + "distribute", + "aggregate" + ], + "trainer": [ + "fetch", + "upload" + ] } } ], @@ -41,20 +47,20 @@ "rounds": 20 }, "baseModel": { - "name": "", - "version": 2 + "name": "", + "version": 2 }, - "job" : { - "id": "622a358619ab59012eabeefb", - "name": "mnist" + "job": { + "id": "622a358619ab59012eabeefb", + "name": "mnist" }, "registry": { - "sort": "dummy", - "uri": "" + "sort": "dummy", + "uri": "" }, "selector": { - "sort": "default", - "kwargs": {} + "sort": "default", + "kwargs": {} }, "optimizer": { "sort": "fedavg", diff --git a/lib/python/flame/examples/mnist/trainer/config.json b/lib/python/flame/examples/mnist/trainer/config.json index c640681cd..77bc1d0a5 100644 --- a/lib/python/flame/examples/mnist/trainer/config.json +++ b/lib/python/flame/examples/mnist/trainer/config.json @@ -25,9 +25,15 @@ "trainer", "aggregator" ], - "funcTags": { - "aggregator": ["distribute", "aggregate"], - "trainer": ["fetch", "upload"] + "funcTags": { + "aggregator": [ + "distribute", + "aggregate" + ], + "trainer": [ + "fetch", + "upload" + ] } } ], @@ -41,20 +47,20 @@ "rounds": 5 }, "baseModel": { - "name": "", - "version": 1 + "name": "", + "version": 1 }, - "job" : { - "id": "622a358619ab59012eabeefb", - "name": "mnist" + "job": { + "id": "622a358619ab59012eabeefb", + "name": "mnist" }, "registry": { - "sort": "dummy", - "uri": "" + "sort": "dummy", + "uri": "" }, "selector": { - "sort": "default", - "kwargs": {} + "sort": "default", + "kwargs": {} }, "optimizer": { "sort": "fedavg",