pytorch
e9c64168 - Import packaging.version in torch_version, if available (#71902)

Commit
2 years ago
Import packaging.version in torch_version, if available (#71902) Summary: Resolves https://github.com/pytorch/pytorch/issues/71280 We used to use `from pkg_resources import packaging`. To recap, this has three potential problems: 1) `pkg_resources` is a really slow import 2) We have an undeclared runtime dependency on `setuptools` 3) We're relying on `pkg_resources`'s secret vendored copy of `packaging`. This is obviously not part of the public API of `pkg_resources`. In https://github.com/pytorch/pytorch/issues/71345 this was made a lazy import, which is great! It means we don't run into these problems as long as users don't use `torch.__version__`. This change additionally helps further address problems 1 and 3, by directly importing `packaging`, if present, and only falling back to the vendored copy in `pkg_resources`. Benchmark for speed difference in a virtual environment with a couple hundred packages installed: ``` λ hyperfine -w 2 'python -c "from pkg_resources import packaging"' 'python -c "import packaging.version"' Benchmark 1: python -c "from pkg_resources import packaging" Time (mean ± σ): 706.7 ms ± 77.1 ms [User: 266.5 ms, System: 156.8 ms] Range (min … max): 627.9 ms … 853.2 ms 10 runs Benchmark 2: python -c "import packaging.version" Time (mean ± σ): 53.8 ms ± 8.5 ms [User: 34.8 ms, System: 14.4 ms] Range (min … max): 46.3 ms … 72.3 ms 53 runs 'python -c "import packaging.version"' ran 13.14 ± 2.52 times faster than 'python -c "from pkg_resources import packaging"' ``` Pull Request resolved: https://github.com/pytorch/pytorch/pull/71902 Reviewed By: mikaylagawarecki Differential Revision: D34343145 Pulled By: malfet fbshipit-source-id: a6bd7ecf0cbb6b5c20ab18a22576aa2df9eb3324 (cherry picked from commit 0a249044c8f83ecbc81b6d1e7a16541b82b74243)
Author
hauntsaninja
Committer
Parents
Loading