7 ms·
Using uv with PyTorch
- minimaxir 2y agoSo uv caused a bit of an issue with me installing PyTorch over the weekend. When installed with brew on my MacBook, uv currently has PyTorch 3.13 as a dependency, which is fine. But PyTorch does not currently have a stable wheel that's compatable with Python 3.13! This resulted in very confusing errors. (Solution was to point to the Nightly index) That's technically PyTorch's fault, but it's indicitave why a specific page on installing PyTorch is necessary, and it's good to know the documentation specifically calls it out.
- 0cf8612b2e1e 2y agoI have run into multiple package problems with 3.13 with a non obvious root cause error message. Thankfully, uv makes it trivial to switch out to 3.12
- zanie 2y agoI work on our error messages, feel free to open an issue and we'll do our best to make it clearer
- emmanueloga_ 2y agoHey there, I experienced a hairy error message recently too while trying to install aider-chat from pypi with Python 3.13 and Pixi (but I was told the error was coming from UV). "Solution": `pixi add python=3.12`, then `pixi add --pypi aider-chat` succeeds without issues. A message like "aider-chat seems to be incompatible with python=3.13, try downgrading to python-3.12" would be great, assuming this is really the case. I can create an issue if it helps, but really quick here's the error I was getting and some talk on discord about it: https://pastebin.com/UVkFstJH https://pastebin.com/UVkFstJH https://discord.com/channels/1082332781146800168/1295723793100181555 https://discord.com/channels/1082332781146800168/12957237931...
- zanie 2y agoThanks! There's definitely room for improvement there. I'll see what we can do — in general it's a bit of an arcane task to extract clear suggestions from the resolver's error tree.
- emmanueloga_ 2y agoSounds good, thank you!
- the_mitsuhiko 2y agoFun fact: that's called out in the doc you're commenting :)
- gdiamos 2y agouv significantly speeds up my pytorch in docker builds # Setup virtual env ENV VIRTUAL_ENV=/app/.venv ENV PATH="$VIRTUAL_ENV/bin:$PATH" RUN python3 -m venv $VIRTUAL_ENV RUN . $VIRTUAL_ENV/bin/activate # install using uv RUN pip install uv RUN uv pip install torch==${TORCH_VERSION} --index-url https://download.pytorch.org/whl/cpu The index-url makes it really convenient.
- orf 2y agoUse —copy-from to make it even faster, and use a cache mount https://docs.astral.sh/uv/guides/integration/docker/#installing-uv https://docs.astral.sh/uv/guides/integration/docker/#install...
- odie5533 2y agoAlso use pyproject.toml to specify dependencies, not manually installing stuff with uv pip
- samtheprogram 2y agoSpeeds up installation, or speeds up PyTorch in general?
- gleenn 2y agoAlmost certainly only the install. Uv is basically a pip tool substitute with a few other bells and whistles too but shouldn't affect run time whatsoever.
- ttyprintk 2y agoApparently, uv respects a key in project.toml: [[tool.uv.index]] name = "pytorch-cu124" url = "https://download.pytorch.org/whl/cu124" explicit = true
- gdiamos 2y agoNice, I wonder if there is a way to make it conditional, e.g. to pick a different key for a cpu vs cuda build.
- thundergolfer 2y agoKind of an aside as this doc is about the complexities of installing particular PyTorch versions, but will say that uv is way faster at installing PyTorch than pip. We run internal benchmarks of our custom container image builder and in the 'install torch' benchmark the p50 time saved when using `uv` is 25 seconds! (71.4s vs. 43.74s) --- Aside 2: Seems there's a missing "involves" in this sentence: "As such, installing PyTorch typically often configuring a project to use the PyTorch index."
- cik 2y agoJoining your aside to tout the benefits of uv. We use uv combined with a simple proxy I wrote, to cache python dependencies, and then install them in parallel. UV also makes it simple to regenerate a requirements file and know who requires the dependencies, which in turn makes it easy to manage the ecosystem, analyze packages, and determine if we can reduce our footprint. Between that latter feature, the proxy, the parallelization we've reduced build times across ~100 engineers by a solid 10 minutes. There are other things we do as well, but uv is a must have nowadays.
- freetonik 2y agoIs your caching proxy open source?
- cik 2y agoIt's just nginx. Here's a link to something someone did. It's close enough to be honest, unless you have our specialized needs. https://github.com/hauntsaninja/nginx_pypi_cache https://github.com/hauntsaninja/nginx_pypi_cache
- campbel 2y agoworking on switching over a lot of our python usage to UV, seeing similar speedups in builds and local environments
- mrbonner 2y agoDoes uv support global Python install now? I need something like Mise for this.
- shlomo_z 2y agouv python install 3.xx
- imjonse 2y agoThat is not global. From the uv getting started docs: "When Python is installed by uv, it will not be available globally (i.e. via the python command). Support for this feature is planned for a future release. In the meantime, use uv run or create and activate a virtual environment to use python directly." So yes, one needs mise/asdf/pyenv or similar for global installs for now.
- JimDabell 2y agoYou could always just `alias python="uv run python"`
- cbenz 2y agoYes via the "--system" option of the different commands. Or via the global "python-preference" option set to "only-system". Cf https://docs.astral.sh/uv/concepts/python-versions/#adjusting-python-version-preferences https://docs.astral.sh/uv/concepts/python-versions/#adjustin... and https://docs.astral.sh/uv/reference/settings/#python-preference https://docs.astral.sh/uv/reference/settings/#python-prefere...
- zanie 2y agoWe're working on this! You can try it out with `uv python install --preview`. The work can be tracked in https://github.com/astral-sh/uv/issues/6265 https://github.com/astral-sh/uv/issues/6265
- paradite 2y agoI was just getting used to pipenv and pyenv combo. Is this worth switching to?
- cbenz 2y agoAbsolutely. It changed my Python developer life \o/
- baggiponte 2y agoAbsolutely. No second thoughts.
- jpalomaki 2y agoI've been using a combination of pyenv, venv and Poetry in the past. Now I have switched to uv with new projects. No problems so far. I definitely recommend giving it a go.
- silvester23 2y agoI would also say absolutely. We've been using pipenv for ~6 years and have managed to build a pretty good workflow around it. But uv is just _so much faster_. So we've started moving everything over to uv and I don't think we'll ever look back. Migrating is not super hard, we wrote a small script that moves all the information from a Pipfile to a pyproject.toml and it works like a charm.
- fernandotakai 2y agoyes, 100%. it's not only faster, but it makes sense.
- kolja005 2y agoI recently watched a talk by the author of uv that was surprisingly fascinating [1]. He goes into a few of the more notable hacks that they had to come up with to make it as fast as it is. The most interesting thing for me was that package resolution in python given constraints defined (eg. in requirements.txt) maps to a boolean satisfiability problem which is NP-complete. So uv uses a custom SAT solver to do this. I totally under-appreciated how much goes into this software and I'm bummed I have to use Poetry at work after having watched this talk. [1] https://www.youtube.com/watch?v=gSKTfG1GXYQ https://www.youtube.com/watch?v=gSKTfG1GXYQ edit: NP-complete not NP-hard
- wenc 2y agoI haven’t used Conda since 2021 but recall it had a SAT solver that was very slow especially on degenerate cases. How does uv’s sat solver compare?
- sa1 2y agoThere are such cases in uv as well, and I’ve hit them quite often when I didn’t specify lower bounds (especially for boto3).
- montebicyclelo 2y agoConda has a faster solver, as of 2022 https://www.anaconda.com/blog/a-faster-conda-for-a-growing-community https://www.anaconda.com/blog/a-faster-conda-for-a-growing-c...
- thundergolfer 2y agoIn our internal benchmarks miniconda is about as fast as uv at installing torch.
- breuleux 2y agoI was trying to figure out how to set up a pyproject with uv that could support cuda, rocm and other device types this morning, and next thing I knew, there was a new release adding pretty much exactly what I needed. The pace of development on uv is really impressive.
- Mxbonn 2y agoNow that PyTorch is also ending their anaconda package distribution, I think a lot of ml/ds people should give uv a shot.
- nickysielicki 2y agoI had no idea this was happening. This comment just made my week. Thank God.
- pcwelder 2y agoI just want to thank people behind uv. The tool is just amazing for development, packaging and running packages. And it's blazing fast!
- antman 2y agoDoes anyone succeed in packaging a uv pytorch env to a pyinstaller exe or similar? I am having a hard time but I assume it can be automated
- alex_suzuki 2y agoIn a nutshell, what do I gain from switching to uv from my current workflow, which is: 1) create a venv (`python3.xx -m venv venv`) 2) install packages from a requirements.txt into that venv? One limitation I know of are the inability to detect stale packages. Apart from „blazing fast“, which I‘m not convinced it really matters to me as I rarely touch the dependencies, what are the main reasons why uv is gaining traction?
- alex_suzuki 2y agoPS: one thing I like about my current workflow is no extra tools needed, base python install is all that‘s required.
- JimDabell 2y agoIt’s similar with uv. You have exactly one dependency on the host system – it’s just uv instead of Python. uv will then obtain the correct version of Python for your project. And uv is easier to install than Python – it’s literally just one binary.
- alex_suzuki 2y agoInteresting, thanks for pointing that out. Will give it a try.
- reubenmorais 2y agoYou get correct version resolution (checking compatibility across the entire tree of deps-of-deps, including against different Python versions) and a lock file which represents a global state of the entire tree and gives you reproducibility of a working setup.
- gugagore 2y agoDoes pip-compile do the same? Or what's the difference?
- chocolight 2y agoI've read that Torch was dropping their Conda support, but won't everybody just move to Mamba which is a drop-in replacement of Conda? Conda (and Mamba) allows to avoid duplicating packages on the disk between environments (not just the downloaded archives, but the resulting expanded files too). How does uv compare in this regard?
- deleted 2y ago[deleted]