Skip to content

Documentation for Aggmodelhandler Module

AGGModelHandler

Bases: ModelHandler

Source code in nebula/core/situationalawareness/discovery/modelhandlers/aggmodelhandler.py
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
class AGGModelHandler(ModelHandler):
    def __init__(self):
        self.model = None
        self.rounds = 0
        self.round = 0
        self.epochs = 1
        self.model_list = []
        self.models_lock = Locker(name="model_lock")
        self.params_lock = Locker(name="param_lock")

    def set_config(self, config):
        """
        Args:
            config[0] -> total rounds
            config[1] -> current round
            config[2] -> epochs
        """
        self.params_lock.acquire()
        self.rounds = config[0]
        if config[1] > self.round:
            self.round = config[0]
        self.epochs = config[2]
        self.params_lock.release()

    def accept_model(self, model):
        """
        Save first model receive and collect the rest for pre-processing
        """
        self.models_lock.acquire()
        if self.model is None:
            self.model = model
        else:
            self.model_list.append(model)
        self.models_lock.release()

    def get_model(self, model):
        """
        Returns:
            neccesary data to create trainer after pre-processing
        """
        self.models_lock.acquire()
        self.pre_process_model()
        self.models_lock.release()
        return (self.model, self.rounds, self.round, self.epochs)

    def pre_process_model(self):
        # define pre-processing strategy
        pass

accept_model(model)

Save first model receive and collect the rest for pre-processing

Source code in nebula/core/situationalawareness/discovery/modelhandlers/aggmodelhandler.py
29
30
31
32
33
34
35
36
37
38
def accept_model(self, model):
    """
    Save first model receive and collect the rest for pre-processing
    """
    self.models_lock.acquire()
    if self.model is None:
        self.model = model
    else:
        self.model_list.append(model)
    self.models_lock.release()

get_model(model)

Returns:

Type Description

neccesary data to create trainer after pre-processing

Source code in nebula/core/situationalawareness/discovery/modelhandlers/aggmodelhandler.py
40
41
42
43
44
45
46
47
48
def get_model(self, model):
    """
    Returns:
        neccesary data to create trainer after pre-processing
    """
    self.models_lock.acquire()
    self.pre_process_model()
    self.models_lock.release()
    return (self.model, self.rounds, self.round, self.epochs)

set_config(config)

Source code in nebula/core/situationalawareness/discovery/modelhandlers/aggmodelhandler.py
15
16
17
18
19
20
21
22
23
24
25
26
27
def set_config(self, config):
    """
    Args:
        config[0] -> total rounds
        config[1] -> current round
        config[2] -> epochs
    """
    self.params_lock.acquire()
    self.rounds = config[0]
    if config[1] > self.round:
        self.round = config[0]
    self.epochs = config[2]
    self.params_lock.release()