from sacred.observers import MongoObserver from sacred import Experiment import random import time ex = Experiment("sacred_scopes", interactive=True) ex.observers.append(MongoObserver(url='mongodb://mongo_user:mongo_password@localhost:27017', db_name='sacred')) # Tutaj podajemy dane uwierzytelniające i nazwę bazy skonfigurowane w pliku .env podczas uruchamiania bazy. # W przypadku instancji na Jenkinsie url będzie wyglądał następująco: mongodb://mongo_user:mongo_password_IUM_2021@localhost:27017 @ex.config def my_config(): recipient = "Świecie" greeting = "Witaj" @ex.capture def prepare_message(recipient, greeting): return "{0} {1}!".format(greeting, recipient) @ex.main def my_main(recipient, greeting, _run): print(prepare_message()) ## Nie musimy przekazywać wartości counter = 0 while counter < 20: counter+=1 value = counter ms_to_wait = random.randint(5, 5000) time.sleep(ms_to_wait/1000) noise = 1.0 + 0.1 * (random.randint(0, 10) - 5) # This will add an entry for training.loss metric in every second iteration. # The resulting sequence of steps for training.loss will be 0, 2, 4, ... if counter % 2 == 0: _run.log_scalar("training.loss", value * 1.5 * noise, counter) # Implicit step counter (0, 1, 2, 3, ...) # incremented with each call for training.accuracy: _run.log_scalar("training.accuracy", value * 2 * noise) ex.run()