Skip to content

Commit

Permalink
Worker ets (#185)
Browse files Browse the repository at this point in the history
* [WORKER] Clean redundatnt prints and code

* [GENWORKER] WIP implement workers and change worker to ets support

* [GENWORKER] WIP add new hrl

* update phase

* federated flow

* federated avg weights

* full federated flow

* json stantard

* final federated flow

* CI pass?

* CI pass

* comments

* working CI version

* federeated nif compatability

* remove print

* synth exp

---------

Co-authored-by: halfway258 <[email protected]>
  • Loading branch information
leondavi and halfway258 authored Jun 12, 2023
1 parent 5cf3ba7 commit 179fb2e
Show file tree
Hide file tree
Showing 35 changed files with 769 additions and 1,665 deletions.
4 changes: 0 additions & 4 deletions NerlnetTest.sh
Original file line number Diff line number Diff line change
@@ -1,8 +1,4 @@
#!/bin/bash
# set -e # TODO remove
# cd src_py/apiServer
# python3 experiment_flow_test.py
# cd -

function print()
{
Expand Down
105 changes: 105 additions & 0 deletions inputJsonFiles/Architecture/ArchExample.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
{
"NerlNetSettings":
{
"frequency": "5",
"batchSize": "10"
}
,
"devices": [
{
"host": "192.168.0.108",
"entities": "mainServer,c1,c2,s1,r1,nerlGUI,apiServer",
"desc": "entity names are atoms (start with lowercase letter). special entities have immutable names"
}
],
"apiServer":
{
"host": "192.168.0.108",
"port": "8095",
"args": ""
}
,
"nerlGUI":
{
"host": "192.168.0.108",
"port": "8096",
"args": ""
}
,
"mainServer":
{
"host": "192.168.0.108",
"port": "8080",
"args": ""
}
,
"workers": [
{
"name": "w1",
"modelType_desc": "E_APPROXIMATION = 1, E_CLASSIFICATION = 2, E_FORECASTING = 3 , E_NCODER_DECODER = 4, E_CUSTOMNN = 5, E_AE = 6, E_AEC = 7, E_FEDERATED_CLIENT = 8, E_FEDERATED_SERVER = 9",
"modelType": "8",
"scalingMethod_desc": "Non-Scaling = 1 , MinimumMaximum = 2 , MeanStandardDeviation = 3 , StandardDeviation = 4 , Logarithm = 5",
"scalingMethod": "1",
"layerTypesList_desc": "E_LAYER_TYPE_DEFAULT(perceptron) = 0, E_LAYER_TYPE_SCALING = 1, E_LAYER_TYPE_CONVOLUTIONAL = 2 , E_LAYER_TYPE_PERCEPTRON = 3 , E_LAYER_TYPE_POOLING = 4 , E_LAYER_TYPE_PROBABILISTIC = 5 , E_LAYER_TYPE_LSTM = 6 , E_LAYER_TYPE_RECURRENT = 7 , E_LAYER_TYPE_UNSCALING = 8 , E_LAYER_TYPE_BOUNDING = 9 ",
"layerTypesList": "[4,1,1,1,0,0,0]",
"layersSizes": "[4,1,1,13,10,6,5]",
"layersActivationFunctions_desc": "Threshold = 1, SymmetricThreshold = 2 ,Logistic = 3 ,HyperbolicTangent = 4 ,Linear = 5,RectifiedLinear = 6 ,ExponentialLinear = 7 ,ScaledExponentialLinear = 8 ,SoftPlus = 9 ,SoftSign = 10 ,HardSigmoid = 11",
"layersActivationFunctions": "[4,1,1,6,6,11,11]",
"lossMethod_desc": "SUM_SQUARED_ERROR = 1, MSE = 2 /* MSE - Mean Squared Error */, E_LOSS_METHOD_NSE = 3 /* NSE - Normalized Squared Error */, MINKOWSKI_ERROR = 4, WSE = 5 /* WSE - Weighted Squared Error */, CEE = 6 /* CEE - Cross Entropy Error */",
"lossMethod": "2",
"learningRate": "0.01",
"optimizer_desc": "0- NONE, 1- SGD, 2- MINI_BATCH_SGD, 3- MOMENTUM, 4- NAG, 5- ADAGRAD, 6- ADAM",
"optimizer":"6",
"federatedServer_desc": "federatedServer = name of fedServerWorker (if modelType==8), syncCount = after how many batches to sync/update weights",
"federatedServer": "w2",
"syncCount": "10"
},
{
"name": "w2",
"_comment0": "E_APPROXIMATION = 1, E_CLASSIFICATION = 2, E_FORECASTING = 3 , E_NCODER_DECODER = 4, E_CUSTOMNN = 5, E_AE = 6, E_AEC = 7, E_FEDERATED_CLIENT = 8, E_FEDERATED_SERVER = 9",
"modelType": "9",
"scalingType_comment1": "Non-Scaling = 1 , MinimumMaximum = 2 , MeanStandardDeviation = 3 , StandardDeviation = 4 , Logarithm = 5",
"scalingMethod": "1",
"_commnet_layer_type": "E_LAYER_TYPE_DEFAULT(perceptron) = 0, E_LAYER_TYPE_SCALING = 1, E_LAYER_TYPE_CONVOLUTIONAL = 2 , E_LAYER_TYPE_PERCEPTRON = 3 , E_LAYER_TYPE_POOLING = 4 , E_LAYER_TYPE_PROBABILISTIC = 5 , E_LAYER_TYPE_LSTM = 6 , E_LAYER_TYPE_RECURRENT = 7 , E_LAYER_TYPE_UNSCALING = 8 , E_LAYER_TYPE_BOUNDING = 9 ",
"layerTypesList": "[4,1,1,1,0,0,0]",
"layersSizes": "[4,1,1,13,10,6,5]",
"_comment2": "Activation functions explain: Threshold = 1, SymmetricThreshold = 2 ,Logistic = 3 ,HyperbolicTangent = 4 ,Linear = 5,RectifiedLinear = 6 ,ExponentialLinear = 7 ,ScaledExponentialLinear = 8 ,SoftPlus = 9 ,SoftSign = 10 ,HardSigmoid = 11",
"layersActivationFunctions": "[4,1,1,6,6,11,11]",
"_comment4": "LOSS: SUM_SQUARED_ERROR = 1, MSE = 2 /* MSE - Mean Squared Error */, E_LOSS_METHOD_NSE = 3 /* NSE - Normalized Squared Error */, MINKOWSKI_ERROR = 4, WSE = 5 /* WSE - Weighted Squared Error */, CEE = 6 /* CEE - Cross Entropy Error */",
"lossMethod": "2",
"_comment5": "TODO explain learningRate",
"learningRate": "0.01",
"_comment3": "OptimizerExplain: 0- NONE, 1- SGD, 2- MINI_BATCH_SGD, 3- MOMENTUM, 4- NAG, 5- ADAGRAD, 6- ADAM",
"optimizer":"6",
"_comment6": "Federated options: federatedServer = name of fedServerWorker, syncCount = after how many batches to sync/update weights",
"federatedServer": "w2",
"syncCount": "10"
}
],
"clients": [
{
"name": "c1",
"port": "8081",
"workers": "w1"
},
{
"name": "c2",
"port": "8082",
"workers": "w2"
}
],
"sources": [
{
"name": "s1",
"port": "8091",
"method_desc": "methods allowed: '1': sends each sample to all clients listed, '2': round robin between all clients",
"method": "1"
}
],
"routers": [
{
"name": "r1",
"port": "8084"
}
]
}
79 changes: 79 additions & 0 deletions inputJsonFiles/Architecture/arch_1PC1WorkerSynth.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
{
"NerlNetSettings":
{
"frequency": "5",
"batchSize": "50"
}
,
"devices": [
{
"host": "192.168.0.108",
"entities": "mainServer,c1,s1,r1,nerlGUI,apiServer"
}
],
"apiServer":
{
"host": "192.168.0.108",
"port": "8095",
"args": ""
}
,
"nerlGUI":
{
"host": "192.168.0.108",
"port": "8096",
"args": ""
}
,
"mainServer":
{
"host": "192.168.0.108",
"port": "8080",
"args": ""
}
,
"workers": [
{
"name": "w1",
"modelId": "1",
"_comment0": "E_APPROXIMATION = 1, E_CLASSIFICATION = 2, E_FORECASTING = 3 , E_NCODER_DECODER = 4, E_CUSTOMNN = 5, E_AE = 6, E_AEC = 7",
"modelType": "5",
"scalingType_comment1": "Non-Scaling = 1 , MinimumMaximum = 2 , MeanStandardDeviation = 3 , StandardDeviation = 4 , Logarithm = 5",
"scalingMethod": "1",
"_commnet_layer_type": "E_LAYER_TYPE_DEFAULT(perceptron) = 0, E_LAYER_TYPE_SCALING = 1, E_LAYER_TYPE_CONVOLUTIONAL = 2 , E_LAYER_TYPE_PERCEPTRON = 3 , E_LAYER_TYPE_POOLING = 4 , E_LAYER_TYPE_PROBABILISTIC = 5 , E_LAYER_TYPE_LSTM = 6 , E_LAYER_TYPE_RECURRENT = 7 , E_LAYER_TYPE_UNSCALING = 8 , E_LAYER_TYPE_BOUNDING = 9 ",
"layerTypesList": "[3,1,1,1,0,0]",
"layersSizes": "[3,1,1,5,3,3]",
"_comment2": "Activation functions explain: Threshold = 1, SymmetricThreshold = 2 ,Logistic = 3 ,HyperbolicTangent = 4 ,Linear = 5,RectifiedLinear = 6 ,ExponentialLinear = 7 ,ScaledExponentialLinear = 8 ,SoftPlus = 9 ,SoftSign = 10 ,HardSigmoid = 11",
"layersActivationFunctions": "[3,1,1,6,6,11]",
"federatedMode": "0",
"countLimit": "10",
"_comment4": "LOSS: SUM_SQUARED_ERROR = 1, MSE = 2 /* MSE - Mean Squared Error */, E_LOSS_METHOD_NSE = 3 /* NSE - Normalized Squared Error */, MINKOWSKI_ERROR = 4, WSE = 5 /* WSE - Weighted Squared Error */, CEE = 6 /* CEE - Cross Entropy Error */",
"lossMethod": "2",
"_comment5": "TODOTODO explain learningRate",
"learningRate": "0.01",
"_comment3": "OptimizerExplain: 0- NONE, 1- SGD, 2- MINI_BATCH_SGD, 3- MOMENTUM, 4- NAG, 5- ADAGRAD, 6- ADAM",
"optimizer":"6"
}
],
"clients": [
{
"name": "c1",
"port": "8081",
"workers": "w1"
}
],
"sources": [
{
"name": "s1",
"port": "8091",
"method": "1",
"COMMENTS": "method allowed: '1': sends each exapme to all clients listed, '2': round robin between all clients"
}
],
"routers": [
{
"name": "r1",
"port": "8084"
}
]
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"NerlNetSettings":
{
"frequency": "5",
"frequency": "100",
"batchSize": "10"
}
,
Expand Down Expand Up @@ -55,9 +55,7 @@
"_comment5": "TODOTODO explain learningRate",
"learningRate": "0.01",
"_comment3": "OptimizerExplain: 0- NONE, 1- SGD, 2- MINI_BATCH_SGD, 3- MOMENTUM, 4- NAG, 5- ADAGRAD, 6- ADAM",
"optimizer":"6",
"features": "13",
"labels": "5"
"optimizer":"6"
},
{
"name": "w2",
Expand Down
105 changes: 105 additions & 0 deletions inputJsonFiles/Architecture/arch_1PC2WorkerFed.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
{
"NerlNetSettings":
{
"frequency": "5",
"batchSize": "10"
}
,
"devices": [
{
"host": "192.168.0.108",
"entities": "mainServer,c1,c2,s1,r1,nerlGUI,apiServer"
}
],
"apiServer":
{
"host": "192.168.0.108",
"port": "8095",
"args": ""
}
,
"nerlGUI":
{
"host": "192.168.0.108",
"port": "8096",
"args": ""
}
,
"mainServer":
{
"host": "192.168.0.108",
"port": "8080",
"args": ""
}
,
"workers": [
{
"name": "w1",
"_comment0": "E_APPROXIMATION = 1, E_CLASSIFICATION = 2, E_FORECASTING = 3 , E_NCODER_DECODER = 4, E_CUSTOMNN = 5, E_AE = 6, E_AEC = 7, E_FEDERATED_CLIENT = 8, E_FEDERATED_SERVER = 9",
"modelType": "8",
"scalingType_comment1": "Non-Scaling = 1 , MinimumMaximum = 2 , MeanStandardDeviation = 3 , StandardDeviation = 4 , Logarithm = 5",
"scalingMethod": "1",
"_commnet_layer_type": "E_LAYER_TYPE_DEFAULT(perceptron) = 0, E_LAYER_TYPE_SCALING = 1, E_LAYER_TYPE_CONVOLUTIONAL = 2 , E_LAYER_TYPE_PERCEPTRON = 3 , E_LAYER_TYPE_POOLING = 4 , E_LAYER_TYPE_PROBABILISTIC = 5 , E_LAYER_TYPE_LSTM = 6 , E_LAYER_TYPE_RECURRENT = 7 , E_LAYER_TYPE_UNSCALING = 8 , E_LAYER_TYPE_BOUNDING = 9 ",
"layerTypesList": "[4,1,1,1,0,0,0]",
"layersSizes": "[4,1,1,13,10,6,5]",
"_comment2": "Activation functions explain: Threshold = 1, SymmetricThreshold = 2 ,Logistic = 3 ,HyperbolicTangent = 4 ,Linear = 5,RectifiedLinear = 6 ,ExponentialLinear = 7 ,ScaledExponentialLinear = 8 ,SoftPlus = 9 ,SoftSign = 10 ,HardSigmoid = 11",
"layersActivationFunctions": "[4,1,1,6,6,11,11]",
"_comment4": "LOSS: SUM_SQUARED_ERROR = 1, MSE = 2 /* MSE - Mean Squared Error */, E_LOSS_METHOD_NSE = 3 /* NSE - Normalized Squared Error */, MINKOWSKI_ERROR = 4, WSE = 5 /* WSE - Weighted Squared Error */, CEE = 6 /* CEE - Cross Entropy Error */",
"lossMethod": "2",
"_comment5": "TODO explain learningRate",
"learningRate": "0.01",
"_comment3": "OptimizerExplain: 0- NONE, 1- SGD, 2- MINI_BATCH_SGD, 3- MOMENTUM, 4- NAG, 5- ADAGRAD, 6- ADAM",
"optimizer":"6",
"_comment6": "Federated options: federatedServer = name of fedServerWorker, syncCount = after how many batches to sync/update weights",
"federatedServer": "w2",
"syncCount": "10"
},
{
"name": "w2",
"_comment0": "E_APPROXIMATION = 1, E_CLASSIFICATION = 2, E_FORECASTING = 3 , E_NCODER_DECODER = 4, E_CUSTOMNN = 5, E_AE = 6, E_AEC = 7, E_FEDERATED_CLIENT = 8, E_FEDERATED_SERVER = 9",
"modelType": "9",
"scalingType_comment1": "Non-Scaling = 1 , MinimumMaximum = 2 , MeanStandardDeviation = 3 , StandardDeviation = 4 , Logarithm = 5",
"scalingMethod": "1",
"_commnet_layer_type": "E_LAYER_TYPE_DEFAULT(perceptron) = 0, E_LAYER_TYPE_SCALING = 1, E_LAYER_TYPE_CONVOLUTIONAL = 2 , E_LAYER_TYPE_PERCEPTRON = 3 , E_LAYER_TYPE_POOLING = 4 , E_LAYER_TYPE_PROBABILISTIC = 5 , E_LAYER_TYPE_LSTM = 6 , E_LAYER_TYPE_RECURRENT = 7 , E_LAYER_TYPE_UNSCALING = 8 , E_LAYER_TYPE_BOUNDING = 9 ",
"layerTypesList": "[4,1,1,1,0,0,0]",
"layersSizes": "[4,1,1,13,10,6,5]",
"_comment2": "Activation functions explain: Threshold = 1, SymmetricThreshold = 2 ,Logistic = 3 ,HyperbolicTangent = 4 ,Linear = 5,RectifiedLinear = 6 ,ExponentialLinear = 7 ,ScaledExponentialLinear = 8 ,SoftPlus = 9 ,SoftSign = 10 ,HardSigmoid = 11",
"layersActivationFunctions": "[4,1,1,6,6,11,11]",
"_comment4": "LOSS: SUM_SQUARED_ERROR = 1, MSE = 2 /* MSE - Mean Squared Error */, E_LOSS_METHOD_NSE = 3 /* NSE - Normalized Squared Error */, MINKOWSKI_ERROR = 4, WSE = 5 /* WSE - Weighted Squared Error */, CEE = 6 /* CEE - Cross Entropy Error */",
"lossMethod": "2",
"_comment5": "TODO explain learningRate",
"learningRate": "0.01",
"_comment3": "OptimizerExplain: 0- NONE, 1- SGD, 2- MINI_BATCH_SGD, 3- MOMENTUM, 4- NAG, 5- ADAGRAD, 6- ADAM",
"optimizer":"6",
"_comment6": "Federated options: federatedServer = name of fedServerWorker, syncCount = after how many batches to sync/update weights",
"federatedServer": "w2",
"syncCount": "10"
}
],
"clients": [
{
"name": "c1",
"port": "8081",
"workers": "w1"
},
{
"name": "c2",
"port": "8082",
"workers": "w2"
}
],
"sources": [
{
"name": "s1",
"port": "8091",
"COMMENTS": "method allowed: '1': sends each exapme to all clients listed, '2': round robin between all clients",
"method": "1"
}
],
"routers": [
{
"name": "r1",
"port": "8084"
}
]
}
Loading

0 comments on commit 179fb2e

Please sign in to comment.