2023-04-19 11:55:13 +02:00
|
|
|
from sacred.observers import MongoObserver
|
|
|
|
from sacred import Experiment
|
|
|
|
import random
|
|
|
|
import time
|
|
|
|
|
|
|
|
ex = Experiment("sacred_scopes", interactive=True)
|
2023-04-19 12:23:05 +02:00
|
|
|
|
|
|
|
ex.observers.append(MongoObserver(url='mongodb://admin:IUM_2021@172.17.0.1:27017', db_name='sacred'))
|
|
|
|
#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.
|
2023-04-19 11:55:13 +02:00
|
|
|
# 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()
|