Just so I understand,
scheduler executes main every 60sec
main spins X sub-processes
Each subprocess needs to report scalars ?
logger.report_scalar("loss", "train", iteration=0, value=100)
logger.report_scalar("loss", "test", iteration=0, value=200)
i mean all 100 experiments in one project
Just call the Task.init before you create the subprocess, that's it 🙂 they will all automatically log to the same Task. You can also call the Task.init again from within the subprocess task, it will not create a new experiment but use the main process experiment.
then my combined function create a sub task using Task.create(task_name=exp_name)
yes But i want two graphs with title as train loss and test loss and they should be under main category "loss"
then if there are 100 experiments how it will create 100 tasks?
Are you using tensorboard or do you want to log directly to trains ?
my scheduler will be running every 60 seconds and calling main function
Create one experiment (I guess in the scheduler)
task = Task.init('test', 'one big experiment')
Then make sure the the scheduler creates the "main" process as subprocess, basically the default behavior)
Then the sub process can call Task.init and it will get the scheduler Task (i.e. it will not create a new task). Just make sure they all call Task init with the same task name and the same project name.
It will not create another 100 tasks, they will all use the main Task. Think of it as they "inherit" it from the main process. If the main process never created a task (i.e. no call to Tasl.init) then they will create their own tasks (i.e. each one will create its own task and you will end up with 100 tasks)
so , it will create a task when i will run it first time
You can do:task = Task.get_task(task_id='uuid_of_experiment')
task.get_logger().report_scalar(...)
Now the only question is who will create the initial Task, so that the others can report to it. Do you have like a "master" process ?
@<1523701205467926528:profile|AgitatedDove14> I want to log directly to trains using logger.report_scalar
Can my request be made as new feature so that we can tag same type of graphs under one main tag
@<1523720500038078464:profile|MotionlessSeagull22> you cannot have two graphs with the same title, the left side panel presents graph titles. That means that you cannot have a title=loss series=train & title=loss series=test on two diff graphs, they will always be displayed on the same graph.
That said, when comparing experiments, all graph pairs (i.e. title+series) will be displayed as a single graph, where the diff series are the experiments.
then if there are 10 experiments then I have to call Task.create() for those 10 experiments
I will share my script u can see it what I am doing
Hi @<1523701205467926528:profile|AgitatedDove14> , I wanted to ask you something. Is it possible that we can talk over voice somewhere so that I can explain my problem better?
and under that there will be three graphs with title as train test and loss
now after 1st iteration is completed then after 5 minutes my script runs automatically and then again it logs into trains server
If you one each "main" process as a single experiment, just don't call Task.init in the scheduler
So you want these two on two different graphs ?
And you want all of them to log into the same experiment ? or do you want an experiment per 60sec (i.e. like the scheduler)
logger.report_scalar(title="loss", series="train", iteration=0, value=100)
logger.report_scalar(title="loss", series="test", iteration=0, value=200)
so, like if validation loss appears then there will be three sub-tags under one main tag loss