Drop --live and corresponding dvc.yaml section? #5614
Replies: 9 comments 15 replies
-
I wouldn't say I am for dropping
Yes, I think this should be required in order to not break users script just for sake of convenience. What might make sense is actually override
Yes, I think about that, though that would require some research - first problem I see is our verification of outs existence, which happens before we execute the script. If we were to implement it, we would be editing stage during execution. So I guess the main point here is precedence of |
Beta Was this translation helpful? Give feedback.
-
One more thought on dropping One of the reasons of creating That would require one change on |
Beta Was this translation helpful? Give feedback.
-
Always requiring
But this part seems pretty tricky indeed. But if there's a good non-hacky solution, then 👍 — could maybe also be used to detect checkpoints without requiring the |
Beta Was this translation helpful? Give feedback.
-
I don't really see any way straightforward way of automatically determining that an output should be a WRT live, my current understanding is that currently for
My thoughts (based on that understanding) on how to get rid of the What about adjusting the signaling method so that the live signal file also contains the paths to the dvclive generated metrics? So if dvclive is init'ed with summary: path/to/training_metrics.json
html: path/to/training_metrics.html DVC would then just always monitor for the live signaling when running any stage, as opposed to only monitoring specific stages containing The main problem here would be that Now that I'm thinking about it, I suppose that in theory this might also work for checkpoints, but not as well as it would for dvclive. Since we have full control over dvc and dvclive (and dvclive is python only), we can can make the signal files take any format we want, everything regarding signaling is completely hidden from the user. Whereas for checkpoints we need to support signaling from any arbitrary (non-python) user stages, and requiring a simple "create file, wait for file to be removed" step is much more straightforward than, "generate file containing some specifically formatted list of files that DVC should treat as |
Beta Was this translation helpful? Give feedback.
-
Yep @pmrowla sorry again, that is kind of unrelated to the OP, but I wasn't suggesting to avoid the In the case of Dvcilve that could mean that we don't need the
➕ |
Beta Was this translation helpful? Give feedback.
-
I didn't realize DVC auto-tracks the live logs dirs... If so then it may make sense to keep it in dvc.yaml. Can you confirm @pared? (We may need to update https://dvc.org/doc/dvclive/dvclive-with-dvc accordingly to clarify this.)
May not be needed if
That's not my suggestion but sorry yet again @pmrowla, I shouldn't have complicated this discussion with that. Will think through and move to #5530. Please forget |
Beta Was this translation helpful? Give feedback.
-
Just to be clear, my opinion on
is that we should avoid doing this (retroactively modifying pipeline a stage ( |
Beta Was this translation helpful? Give feedback.
-
I have a few follow-up questions:
|
Beta Was this translation helpful? Give feedback.
-
Not only the directory, but also the values for Going back to the initial suggestion from @jorgeorpinel in iterative/dvclive#60 to drop the arguments to stages:
foo:
live: true I'm still unclear on whether dvc needs the directory location (and whether summary metrics are included) before calling the stage. |
Beta Was this translation helpful? Give feedback.
-
See iterative/dvclive#60 for context. Right now, dvclive integration requires a
live
section indvc.yaml
, anddvclive.init()
is optional in the Python script for the stage. This might be problematic for a few reasons:dvclive.init()
directory may conflict with--live
directory.dvclive.init()
, the script will only run through DVC, not if executed aspython train.py
directly.--live
introduces an option into DVC that is language-specific since dvclive is a Python library.@pared has suggested that it might make sense to reverse the current implementation and instead:
dvclive.init()
even in DVC--live
and the correspondingdvc.yaml
sectiondvclive.init()
is called in a stage@pared Please correct any misinformation or add your thoughts.
Beta Was this translation helpful? Give feedback.
All reactions