-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathSciNet_Decider.py
30 lines (27 loc) · 1.03 KB
/
SciNet_Decider.py
1
2
3
4
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
from .Decider import *
from provisioner.src.utils import *
class SciNetDecider(Decider):
def __init__(self):
super().__init__()
self.model_name = 'SciNet'
self.model_loaded = False
self.window_buffer = []
self.window = None
self.fn_names = [name for name in os.listdir(FN_PATH) if os.path.isdir(FN_PATH+name)]
def load_model(self):
# Assume pretrained model loaded by provisioner
self.feats = len(self.env.hostlist)
self.model = self.env.provisioner.model
self.model_loaded = True
def decision(self, workflowlist):
if not self.model_loaded: self.load_model()
memory = self.env.provisioner.memory
provision_scores = self.env.provisioner.scores
decisions = []; results = []
for CreationID, interval, SLA, application in workflowlist:
inp = one_hot(application, self.fn_names)
decision = self.model.forward_decider(memory, inp, provision_scores)
choice = self.choices[torch.argmax(decision).item()]
tasklist = self.createTasks(CreationID, interval, SLA, application, choice)
results += tasklist
return results