Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

remove dvc lib requirement #397

Closed
dberenbaum opened this issue Dec 10, 2022 · 21 comments · Fixed by #413
Closed

remove dvc lib requirement #397

dberenbaum opened this issue Dec 10, 2022 · 21 comments · Fixed by #413
Labels
A: dvc DVC integration discussion requires active participation to reach a conclusion

Comments

@dberenbaum
Copy link
Contributor

  • it should be done w/o DVC api. I don't like that we keep depending on it. It's really heavy, it's a very strong assumption that it's installed this way ...

Originally posted by @shcheklein in #381 (comment)

Dvclive now depends on the dvc api for a few things like:

  • saving experiments -- can we call the cli?
  • checking for dvc repro execution -- is there another way to detect this?
  • anything else?
@daavoo
Copy link
Contributor

daavoo commented Dec 10, 2022

Mixed feelings. I am ok with adopting short-term solutions like using the CLI and reimplementing logic, but:

it's a very strong assumption that it's installed this way

Not saying this is not True, but I think we should use the existing analytics for loyal users and check the numbers.

It's really heavy

I agree it's heavy. Not a good excuse but in the Python data science context (DVCLive scope), perhaps is it not that worrying.

saving experiments -- can we call the cli?
checking for dvc repro execution -- is there another way to detect this?

My main concern here is that the quick alternatives like using CLI and/or reimplementing existing logic (like we do with make_checkpoint) have more than a few downsides.

If we consider this really critical, we could consider what are the critical parts that can be decoupled from the rest of the DVC repo and create a separate, lightweight package.

For some things is trickier, like exp save, although as we discussed in the P.R. I do believe most (all?) of the operations DVCLive really cares about could be done with scmrepo only.

anything else?

Studio Live metrics, currently.

@daavoo daavoo added A: dvc DVC integration discussion requires active participation to reach a conclusion labels Dec 10, 2022
@shcheklein
Copy link
Member

I would not use Python ecosystem as an example though. It's broken, it's heavy, it's painful. We should be trying to avoid this if possible.

If we consider this really critical, we could consider what are the critical parts that can be decoupled from the rest of the DVC repo and create a separate, lightweight package.

that's what we already do I think in some other places. Especially if this is true: DVCLive really cares about could be done with scmrepo only.. It would make much more sense to me.

@daavoo
Copy link
Contributor

daavoo commented Dec 15, 2022

On my machine and a fresh .venv with only pip install dvc, these are the sizes of the dependencies:

 14M	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/pygit2
 12M	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/networkx
 10M	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/pip
9,1M	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/cryptography
7,5M	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/pygments
3,4M	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/setuptools
3,4M	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/dulwich
3,2M	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/dvc
3,0M	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/future
3,0M	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/celery
3,0M	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/asyncssh
2,6M	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/pytz
2,1M	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/aiohttp
1,9M	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/rich
1,6M	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/psutil
1,5M	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/kombu
1,1M	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/pycparser
1,0M	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/fsspec
828K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/urllib3
724K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/pyparsing
684K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/cffi
672K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/omegaconf
672K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/click
668K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/billiard
492K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/idna
476K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/wcwidth
472K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/tqdm
428K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/gitdb
404K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/requests
380K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/commonmark
372K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/amqp
352K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/scmrepo
348K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/diskcache
328K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/tomlkit
300K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/certifi
276K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/packaging
268K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/funcy
248K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/grandalf
236K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/yarl
232K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/dvclive
200K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/voluptuous
196K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/pathspec
176K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/tabulate
160K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/colorama
156K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/multidict
144K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/smmap
116K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/frozenlist
116K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/dictdiffer
112K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/distro
 92K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/dpath
 88K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/shtab
 76K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/filelock
 56K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/vine
 56K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/shortuuid
 52K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/attrs
 16K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/nanotime
 12K	/Users/daviddelaiglesiacastro/Desktop/test-dvc-deps/.venv/lib/python3.9/site-packages/aiosignal

If we are willing to invest efforts, it might be more beneficial to optimize how dependencies are handled in DVC (make optional imports here and there + configure install requirements) than to invest time in decoupling / extracting common code.

@shcheklein
Copy link
Member

If we are willing to invest efforts, it might be more beneficial to optimize how dependencies are handled in DVC (make optional imports here and there + configure install requirements)

Any specific ideas about this?

Asking because I can't think about a good solution from the top of my head. The only thing that comes to my mind is to make dvc[dvclive] that would not even install DVC as a CLI (so that you could keep using global CLI), but would install only very basic requirements that are needed for DVCLive. What that would be?

@daavoo
Copy link
Contributor

daavoo commented Dec 15, 2022

Any specific ideas about this?

Asking because I can't think about a good solution from the top of my head. The only thing that comes to my mind is to make dvc[dvclive] that would not even install DVC as a CLI (so that you could keep using global CLI), but would install only very basic requirements that are needed for DVCLive. What that would be?

Something like that but not so dvclive specific.
I was thinking something like dvc[api] (IMO make_experiment makes sense as part of the public Python API) and only include the minimum required for using the public Python API .

All the UI/CLI and queue stuff would be not needed and those appear to be the heaviest dependencies

@shcheklein
Copy link
Member

dvc[api] can become too wide open (Repo API, etc).

may be dvc[experiments]?

@dberenbaum
Copy link
Contributor Author

Is a thin version of dvc something that's worth spending time on at the moment? Many of the heaviest deps are scm-related, so they are needed anyway, and I don't really want to limit what parts of dvc can be used by dvclive if it's not necessary.

It's useful to be able to install dvclive without dvc, but as an optional dependency dvclive[dvc], I think it makes sense if you want to use dvc features like saving experiments or making checkpoints. Let's say dvclive writes out images or model files that should be tracked by dvc. scmrepo won't be enough to track these files. Including it as an optional dependency (and removing the "fake" dvclive dependency from dvc) would also help maintain version compatibility between them since the new dvclive features are only compatible with the latest dvc versions.

To reiterate some points that I think we all already know: It's common for other helper libraries like this to depend on their "parent" library (lightning, keras, etc.), and dvclive already depends on these much heavier ML frameworks. This pattern is so common that I think trying to go against it will only confuse most Python/DS users. Also, looking at our event data, only about 5% come from binary installs. I'm not sure the global cli approach is that common among DS, because many DS are used to the conda or other python packaging system and terrified to change versions of a package that is working for their current model setup.

@shcheklein
Copy link
Member

because many DS are used to the conda or other python packaging system and terrified to change versions of a package that is working for their current model setup.

Exactly, thats why isolating (e.g. install CLI globally) would be an easier way for users to deal with this. DVC opens the whole "can of worms" with all its dependencies- there will a lot of case when some wheel is missing, some conflict between tqdm that DVC needs and being used by my code, etc, etc. It's a very large surface of additional conflicts and pain.

It's common for other helper libraries like this to depend on their "parent" library (lightning, keras, etc.)

Hmm. I'm not sure this is true tbh. Loggers come as part of the main frameworks mostly? And don't require any additional dependencies? Especially of the DVC size, especially the one that installs and overrides potentially CLI. Unless I'm missing something.

@dberenbaum
Copy link
Contributor Author

@shcheklein I don't want to dispute your legitimate concerns, which we can keep discussing, but I want to acknowledge the reality of the pydata community, which encompasses most of our users.

For tf, they started to bundle keras with tf2, but keras still has tf as a dependency and uses it as a lib. For torch, it doesn't come with any high-level framework, and the high-level frameworks for it (lightning, fast.ai) depend on it and use it as lib (they even have cli). Those deps lists include things like pandas, numpy, scipy, sklearn, etc. that are all way heavier than dvc (same with mlflow).

My take: DVC is still changing frequently, so I would be wary to have a global install that could break my projects with updates or leave me with an old version forever. I think most DS would rather deal with dependency hell than risk a version change breaking the reproducibility of their project, so they install the latest version of dvc inside their venv at the start of each project and never touch it again (which the lack of binary installs seems to support). I'm not saying it's a good engineering practice, but this is what users do.

@shcheklein
Copy link
Member

I thought that most of them were including loggers out of the box, like this https://docs.wandb.ai/guides/integrations/lightning :

from pytorch_lightning.loggers import WandbLogger
from pytorch_lightning import Trainer

but from what I see wandb is quite lightweight anyways: https://github.com/wandb/wandb/blob/main/requirements.txt (no heavy DS/ML deps)

For MLFlow there is https://pypi.org/project/mlflow-skinny/ . But I agree, that if people have to install it as a regular full mlfow with all extras - that's problematic as well. I doubt ppl are happy about this.

(btw, I don't think that keras, tf, pytorch, etc - are good examples in this case. They are main frameworks, it's expected that they are heavy, might depend on each other, etc - it's natural. I would try to analyze callbacks, loggers in this case. If it becomes painful to install an extra logger that becomes painful and people might not have enough motivation)

@skshetry
Copy link
Member

@shcheklein, any specific concerns regarding dvc's dependency? I know dvc[all] is pretty heavy, but plain pip install dvc is relatively lightweight. Users of dvclive usually will have even heavier dependencies.

@shcheklein
Copy link
Member

@skshetry a few concerns:

  1. pip install dvc will be overriding the global CLI install while not providing the necessary remotes support. Thus it will be breaking users setup / workflow. Means we have to depend on dvc[all] for this to not break existing setups.
  2. If we setup it before hand (like we do with devcontainers) we have to setup it with all to make it more or less general, otherwise it breaks the point, we would have to have a separate "transition" state that will be manual, involved, etc.
  3. If we install dvc into users space with pip before everything else (again, devcontainers experience) it's a path into conflicts with the existing requirements that people have. It's one thing when people prepared everything gradually, and maintain their file (even it's painful), another is when we want to smoothly transition them into the ecosystem.
  4. I'm not sure DVC is that small and lightweight even w/o clouds support. What is the complete recursive list of deps?

@skshetry
Copy link
Member

Recursive list of deps (click to expand)
$ pipdeptree -p dvc -e dvc-http         
Warning!! Cyclic dependencies found:
* dvc-http => dvc => dvc-http
* dvc => dvc-http => dvc
------------------------------------------------------------------------
dvc==2.33.3.dev137+g198daec42
  - appdirs [required: >=1.4.3, installed: 1.4.4]
  - colorama [required: >=0.3.9, installed: 0.4.6]
  - configobj [required: >=5.0.6, installed: 5.0.6]
    - six [required: Any, installed: 1.16.0]
  - distro [required: >=1.3.0, installed: 1.8.0]
  - dpath [required: >=2.0.2,<3, installed: 2.0.8]
  - dvc-data [required: ==0.28.4, installed: 0.28.4]
    - attrs [required: >=21.3.0, installed: 21.4.0]
    - dictdiffer [required: >=0.8.1, installed: 0.9.0]
    - diskcache [required: >=5.2.1, installed: 5.4.0]
    - dvc-objects [required: ==0.14.0, installed: 0.14.0]
      - fsspec [required: >=2022.10.0, installed: 2022.11.0]
      - funcy [required: >=1.14, installed: 1.17]
      - shortuuid [required: >=0.5.0, installed: 1.0.11]
      - tqdm [required: >=4.63.1,<5, installed: 4.64.1]
      - typing-extensions [required: >=3.7.4, installed: 4.4.0]
    - funcy [required: >=1.14, installed: 1.17]
    - nanotime [required: >=0.5.2, installed: 0.5.2]
    - pygtrie [required: >=2.3.2, installed: 2.5.0]
    - shortuuid [required: >=0.5.0, installed: 1.0.11]
  - dvc-render [required: ==0.0.15, installed: 0.0.15]
  - dvc-task [required: ==0.1.8, installed: 0.1.8]
    - celery [required: >=5.2.0,<6, installed: 5.2.7]
      - billiard [required: >=3.6.4.0,<4.0, installed: 3.6.4.0]
      - click [required: >=8.0.3,<9.0, installed: 8.1.3]
      - click-didyoumean [required: >=0.0.3, installed: 0.3.0]
        - click [required: >=7, installed: 8.1.3]
      - click-plugins [required: >=1.1.1, installed: 1.1.1]
        - click [required: >=4.0, installed: 8.1.3]
      - click-repl [required: >=0.2.0, installed: 0.2.0]
        - click [required: Any, installed: 8.1.3]
        - prompt-toolkit [required: Any, installed: 3.0.33]
          - wcwidth [required: Any, installed: 0.2.5]
        - six [required: Any, installed: 1.16.0]
      - kombu [required: >=5.2.3,<6.0, installed: 5.2.4]
        - amqp [required: >=5.0.9,<6.0.0, installed: 5.1.1]
          - vine [required: >=5.0.0, installed: 5.0.0]
        - vine [required: Any, installed: 5.0.0]
      - pytz [required: >=2021.3, installed: 2022.6]
      - vine [required: >=5.0.0,<6.0, installed: 5.0.0]
    - funcy [required: >=1.17, installed: 1.17]
    - kombu [required: >=5.2.0,<6, installed: 5.2.4]
      - amqp [required: >=5.0.9,<6.0.0, installed: 5.1.1]
        - vine [required: >=5.0.0, installed: 5.0.0]
      - vine [required: Any, installed: 5.0.0]
    - shortuuid [required: >=1.0.8, installed: 1.0.11]
  - dvclive [required: >=1.2.2, installed: 1.2.2]
    - dvc-render [required: >=0.0.12, installed: 0.0.15]
    - ruamel.yaml [required: >=0.17.11, installed: 0.17.21]
  - flatten-dict [required: >=0.4.1,<1, installed: 0.4.2]
    - six [required: >=1.12,<2.0, installed: 1.16.0]
  - flufl.lock [required: >=5, installed: 7.1.1]
    - atpublic [required: >=2.3, installed: 3.1.1]
    - psutil [required: >=5.9.0, installed: 5.9.4]
  - funcy [required: >=1.14, installed: 1.17]
  - grandalf [required: ==0.6, installed: 0.6]
    - future [required: Any, installed: 0.18.2]
    - pyparsing [required: Any, installed: 3.0.9]
  - hydra-core [required: >=1.1.0, installed: 1.3.0]
    - antlr4-python3-runtime [required: ==4.9.*, installed: 4.9.3]
    - omegaconf [required: ~=2.2, installed: 2.2.3]
      - antlr4-python3-runtime [required: ==4.9.*, installed: 4.9.3]
      - PyYAML [required: >=5.1.0, installed: 5.4.1]
    - packaging [required: Any, installed: 21.3]
      - pyparsing [required: >=2.0.2,!=3.0.5, installed: 3.0.9]
  - iterative-telemetry [required: ==0.0.6, installed: 0.0.6]
    - appdirs [required: Any, installed: 1.4.4]
    - distro [required: Any, installed: 1.8.0]
    - filelock [required: Any, installed: 3.8.2]
    - requests [required: Any, installed: 2.28.1]
      - certifi [required: >=2017.4.17, installed: 2022.9.24]
      - charset-normalizer [required: >=2,<3, installed: 2.1.1]
      - idna [required: >=2.5,<4, installed: 3.4]
      - urllib3 [required: >=1.21.1,<1.27, installed: 1.26.13]
  - networkx [required: >=2.5, installed: 2.8.8]
  - packaging [required: >=19.0, installed: 21.3]
    - pyparsing [required: >=2.0.2,!=3.0.5, installed: 3.0.9]
  - pathspec [required: >=0.9.0,<0.10.0, installed: 0.9.0]
  - psutil [required: >=5.8.0, installed: 5.9.4]
  - pydot [required: >=1.2.4, installed: 1.4.2]
    - pyparsing [required: >=2.1.4, installed: 3.0.9]
  - pygtrie [required: >=2.3.2, installed: 2.5.0]
  - pyparsing [required: >=2.4.7, installed: 3.0.9]
  - requests [required: >=2.22.0, installed: 2.28.1]
    - certifi [required: >=2017.4.17, installed: 2022.9.24]
    - charset-normalizer [required: >=2,<3, installed: 2.1.1]
    - idna [required: >=2.5,<4, installed: 3.4]
    - urllib3 [required: >=1.21.1,<1.27, installed: 1.26.13]
  - rich [required: >=10.13.0, installed: 12.6.0]
    - commonmark [required: >=0.9.0,<0.10.0, installed: 0.9.1]
    - pygments [required: >=2.6.0,<3.0.0, installed: 2.13.0]
  - ruamel.yaml [required: >=0.17.11, installed: 0.17.21]
  - scmrepo [required: ==0.1.4, installed: 0.1.4]
    - asyncssh [required: >=2.7.1,<3, installed: 2.12.0]
      - cryptography [required: >=3.1, installed: 38.0.3]
        - cffi [required: >=1.12, installed: 1.15.1]
          - pycparser [required: Any, installed: 2.21]
      - typing-extensions [required: >=3.6, installed: 4.4.0]
    - dulwich [required: >=0.20.46, installed: 0.20.50]
      - urllib3 [required: >=1.25, installed: 1.26.13]
    - fsspec [required: >=2021.7.0, installed: 2022.11.0]
    - funcy [required: >=1.14, installed: 1.17]
    - gitpython [required: >3, installed: 3.1.29]
      - gitdb [required: >=4.0.1,<5, installed: 4.0.10]
        - smmap [required: >=3.0.1,<6, installed: 5.0.0]
    - pathspec [required: >=0.9.0,<0.10.0, installed: 0.9.0]
    - pygit2 [required: >=1.10.0, installed: 1.11.1]
      - cffi [required: >=1.9.1, installed: 1.15.1]
        - pycparser [required: Any, installed: 2.21]
    - pygtrie [required: >=2.3.2, installed: 2.5.0]
  - shortuuid [required: >=0.5.0, installed: 1.0.11]
  - shtab [required: >=1.3.4,<2, installed: 1.5.8]
  - tabulate [required: >=0.8.7, installed: 0.9.0]
  - tomlkit [required: >=0.11.1, installed: 0.11.6]
  - tqdm [required: >=4.63.1,<5, installed: 4.64.1]
  - typing-extensions [required: >=3.7.4, installed: 4.4.0]
  - voluptuous [required: >=0.11.7, installed: 0.13.1]
  - zc.lockfile [required: >=1.2.1, installed: 2.0]
    - setuptools [required: Any, installed: 65.5.0]

$ pipdeptree -p dvc-http -e dvc                                                           
Warning!! Cyclic dependencies found:
* dvc-http => dvc => dvc-http
* dvc => dvc-http => dvc
------------------------------------------------------------------------
dvc-http==2.27.2
  - aiohttp-retry [required: >=2.5.0, installed: 2.8.3]
    - aiohttp [required: Any, installed: 3.8.3]
      - aiosignal [required: >=1.1.2, installed: 1.3.1]
        - frozenlist [required: >=1.1.0, installed: 1.3.3]
      - async-timeout [required: >=4.0.0a3,<5.0, installed: 4.0.2]
      - attrs [required: >=17.3.0, installed: 21.4.0]
      - charset-normalizer [required: >=2.0,<3.0, installed: 2.1.1]
      - frozenlist [required: >=1.1.1, installed: 1.3.3]
      - multidict [required: >=4.5,<7.0, installed: 6.0.2]
      - yarl [required: >=1.0,<2.0, installed: 1.8.1]
        - idna [required: >=2.0, installed: 3.4]
        - multidict [required: >=4.0, installed: 6.0.2]
  - fsspec [required: Any, installed: 2022.11.0]
Flattened list of dependencies (83 in total)
aiohttp==3.8.3
aiohttp-retry==2.8.3
aiosignal==1.3.1
amqp==5.1.1
antlr4-python3-runtime==4.9.3
appdirs==1.4.4
asyncssh==2.12.0
async-timeout==4.0.2
atpublic==3.1.1
attrs==21.4.0
billiard==3.6.4.0
celery==5.2.7
certifi==2022.9.24
cffi==1.15.1
charset-normalizer==2.1.1
click==8.1.3
click-didyoumean==0.3.0
click-plugins==1.1.1
click-repl==0.2.0
colorama==0.4.6
commonmark==0.9.1
configobj==5.0.6
cryptography==38.0.3
dictdiffer==0.9.0
diskcache==5.4.0
distro==1.8.0
dpath==2.0.8
dulwich==0.20.50
dvc-data==0.28.4
dvc-http==2.27.2
dvclive==1.2.2
dvc-objects==0.14.0
dvc-render==0.0.15
dvc-task==0.1.8
filelock==3.8.2
flatten-dict==0.4.2
flufl.lock==7.1.1
frozenlist==1.3.3
fsspec==2022.11.0
funcy==1.17
future==0.18.2
gitdb==4.0.10
GitPython==3.1.29
grandalf==0.6
hydra-core==1.3.0
idna==3.4
iterative-telemetry==0.0.6
kombu==5.2.4
multidict==6.0.2
nanotime==0.5.2
networkx==2.8.8
omegaconf==2.2.3
packaging==21.3
pathspec==0.9.0
prompt-toolkit==3.0.33
psutil==5.9.4
pycparser==2.21
pydot==1.4.2
pygit2==1.11.1
Pygments==2.13.0
pygtrie==2.5.0
pyparsing==3.0.9
pytz==2022.6
PyYAML==5.4.1
requests==2.28.1
rich==12.6.0
ruamel.yaml==0.17.21
scmrepo==0.1.4
setuptools==65.5.0
shortuuid==1.0.11
shtab==1.5.8
six==1.16.0
smmap==5.0.0
tabulate==0.9.0
tomlkit==0.11.6
tqdm==4.64.1
typing_extensions==4.4.0
urllib3==1.26.13
vine==5.0.0
voluptuous==0.13.1
wcwidth==0.2.5
yarl==1.8.1
zc.lockfile==2.0

@dberenbaum
Copy link
Contributor Author

@daavoo Was this the issue you meant to close? I don't follow how it's fixed by #413.

@daavoo daavoo reopened this Dec 27, 2022
@daavoo
Copy link
Contributor

daavoo commented Dec 27, 2022

@daavoo Was this the issue you meant to close? I don't follow how it's fixed by #413.

Didn't notice that GitHub considered the issue linked because of the pending to resolve #413 phrase

@dberenbaum
Copy link
Contributor Author

I think this is a good goal that we should see if we can work towards.

In the short term, looking at issue like iterative/studio-support#73, I would suggest that we are better off making DVC a dependency of DVCLive (and removing DVCLive from DVC) until we are able to stop calling DVC as a lib. At least things will be more explicit, and if DVCLive is installed, DVC will also be installed as a lib and reduce the chances of things breaking.

daavoo added a commit that referenced this issue Feb 27, 2023
Workaround #397 for live experiments with `dvc exp run`.

Allows to send live experiment updates when running inside `dvc exp run` and DVC is not available as a Python library.
@daavoo
Copy link
Contributor

daavoo commented Mar 2, 2023

In the short term, looking at issue like iterative/studio-support#73, I would suggest that we are better off making DVC a dependency of DVCLive (and removing DVCLive from DVC) until we are able to stop calling DVC as a lib. At least things will be more explicit, and if DVCLive is installed, DVC will also be installed as a lib and reduce the chances of things breaking.

Opened #481 , doing the opposite to the issue title 😅 but I think it is the best to do for now.

@shcheklein
Copy link
Member

We need to double check if we need to change VS Code or Studio now to install DVCLive explicitly. Also demo projects.

@dberenbaum
Copy link
Contributor Author

I thought that most of them were including loggers out of the box, like this https://docs.wandb.ai/guides/integrations/lightning :

from pytorch_lightning.loggers import WandbLogger
from pytorch_lightning import Trainer

Since we are discussing it, we should put DVCLive callbacks into the ML frameworks, and it shouldn't be dependent on this issue (none of the logger libs are installed as deps).

@dberenbaum
Copy link
Contributor Author

Also demo projects.

Both example-get-started and example-get-started include dvclive explicitly already in their requirements.

daavoo added a commit that referenced this issue Mar 7, 2023
* studio: Don't skip data event if `_inside_dvc_exp`.

Workaround #397 for live experiments with `dvc exp run`.

Allows to send live experiment updates when running inside `dvc exp run` and DVC is not available as a Python library.

* deps: Require `dvc>2.45.1`

Closes #473
@daavoo
Copy link
Contributor

daavoo commented Sep 4, 2023

Closing in favor of iterative/dvc#9709

@daavoo daavoo closed this as not planned Won't fix, can't repro, duplicate, stale Sep 4, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A: dvc DVC integration discussion requires active participation to reach a conclusion
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants