诗歌和 PyTorch

kai*_*kai 15 python python-poetry

我最近发现诗歌可以帮助解决我们小组的所有不同依赖问题。在一个项目中,我们也使用PyTorch,我想知道是否有人可以帮助我并指出如何将其添加到诗歌中的方向。我们正在研究无法访问 CUDA GPU(用于简单的道路推理/测试)的机器和我们可以访问 CUDA CPU 的工作站。现在我很想用诗歌来确保每个开发者都在诗歌的帮助下使用相同的版本,但这可能吗?

似乎没有明显的方法来决定安装哪个 PyTorch 版本。我想过将不同的安装说明添加为额外的依赖项,但我找不到获得等效设置的选项,例如:

pip3 install torch==1.3.1+cpu torchvision==0.4.2+cpu -f https://download.pytorch.org/whl/torch_stable.html

我可以设置不同在线轮子的总路径,例如: https://download.pytorch.org/whl/torch_stable.html/cpu/torch-1.3.1%2Bcpu-cp36-cp36m-win_amd64.whl

但我宁愿不直接在 git 中使用它们......我在诗歌中看到的最接近的选项是手动下载它们然后使用file = X命令。

我将不胜感激任何帮助。:)

tsv*_*kas 40

从诗歌 1.2 开始,你可以这样做:

poetry source add -p explicit pytorch https://download.pytorch.org/whl/cpu
poetry add --source pytorch torch torchvision
Run Code Online (Sandbox Code Playgroud)

它将从指定的索引 url 安装。

(这也适用于https://download.pytorch.org/whl/cu118

  • 这是撰写本文时最合适的答案:它完全结合了 PyTorch 当前的官方 index-url,用于仅 CPU 安装,并且除了诗歌本身之外不需要任何工具。谢谢! (2认同)

Kik*_*ohs 17

在这个问题上花了几个小时后,我找到了一个“解决方案”,将 Poetry 和 pip 结合起来用于 PyTorch。您不需要直接指定轮子 URL,从而保持跨平台。

我正在使用Poe The Poet,这是一个很好的 Poetry 任务运行程序,允许运行任何任意命令。

[tool.poetry.dev-dependencies]
poethepoet = "^0.10.0"

[tool.poe.tasks]
force-cuda11 = "python -m pip install torch==1.8.0+cu111 torchvision==0.9.0+cu111 -f https://download.pytorch.org/whl/torch_stable.html"
Run Code Online (Sandbox Code Playgroud)

你可以运行:

poetry install
Run Code Online (Sandbox Code Playgroud)

进而:

poe force-cuda11  # relies on pip and use PyTorch wheels repo
Run Code Online (Sandbox Code Playgroud)


Ant*_*iez 13

Poetry github 中此问题的更新解决方案:

poetry add torch --platform linux --python "^3.7"
Run Code Online (Sandbox Code Playgroud)

  • 如何指定cuda版本?我假设该命令将默认为 cpu. (3认同)

Dat*_*ion 11

到 2021 年底,利用标记和多重约束应该会起作用。

\n
$ poetry --version\nPoetry version 1.1.11\n
Run Code Online (Sandbox Code Playgroud)\n
# pyproject.toml\n[tool.poetry.dependencies]\npython = "~3.9"\ntorch = [\n  {url = "https://download.pytorch.org/whl/cpu/torch-1.10.0%2Bcpu-cp39-cp39-linux_x86_64.whl", markers = "sys_platform == \'linux\'"},\n  {url = "https://download.pytorch.org/whl/cpu/torch-1.10.0%2Bcpu-cp39-cp39-win_amd64.whl", markers = "sys_platform == \'win32\'", }\n]\nnumpy = "^1.21.4"\n\n[build-system]\nrequires = ["poetry-core>=1.0.0"]\nbuild-backend = "poetry.core.masonry.api"\n
Run Code Online (Sandbox Code Playgroud)\n
$ poetry install\nThe currently activated Python version 3.8.12 is not supported by the project (~3.9).\nTrying to find and use a compatible version. \nUsing python3.9 (3.9.9)\nCreating virtualenv machine-learning in /home/redqueen/machine_learning/.venv\nUpdating dependencies\nResolving dependencies... (36.0s)\n\nWriting lock file\n\nPackage operations: 3 installs, 0 updates, 0 removals\n\n  \xe2\x80\xa2 Installing typing-extensions (4.0.1)\n  \xe2\x80\xa2 Installing numpy (1.21.4)\n  \xe2\x80\xa2 Installing torch (1.10.0+cpu https://download.pytorch.org/whl/cpu/torch-1.10.0%2Bcpu-cp39-cp39-linux_x86_64.whl)\n
Run Code Online (Sandbox Code Playgroud)\n

注意:必须列出 Numpy。否则您将收到导入错误。

\n

没有numpy:

\n
$ python\nPython 3.9.9 (main, Nov 23 2021, 00:34:08) \n[GCC 9.3.0] on linux\nType "help", "copyright", "credits" or "license" for more information.\n>>> import torch\n/home/redqueen/machine_learning/.venv/lib/python3.9/site-packages/torch/package/_directory_reader.py:17: UserWarning: Failed to initialize NumPy: No module named \'numpy\' (Triggered internally at  ../torch/csrc/utils/tensor_numpy.cpp:68.)\n  _dtype_to_storage = {data_type(0).dtype: data_type for data_type in _storages}\n>>> quit()\n
Run Code Online (Sandbox Code Playgroud)\n

使用numpy:

\n
$ python\nPython 3.9.9 (main, Nov 23 2021, 00:34:08) \n[GCC 9.3.0] on linux\nType "help", "copyright", "credits" or "license" for more information.\n>>> import torch\n>>> torch.cuda.is_available()\nFalse\n>>> quit()\n
Run Code Online (Sandbox Code Playgroud)\n

参考:

\n

https://python-poetry.org/docs/dependency-specation/#python-restricted-dependencies

\n

免责声明

\n

我没有 Windows(或 Mac)来测试这个。

\n

  • 当我使用这种方法时,每次我运行“poetry lock”时,Poetry 仍会从此网址下载 torch。据您所知,有什么办法可以避免这种情况吗? (2认同)

Gil*_*ilZ 9

目前,Poetry 没有-f选项(有一个open issueopen PR),因此您无法使用pip说明。您可以.whl直接安装文件:

poetry add https://download.pytorch.org/whl/torch_stable.html/cpu/torch-1.3.1%2Bcpu-cp36-cp36m-win_amd64.whl
Run Code Online (Sandbox Code Playgroud)

或将依赖项直接添加到您的.toml文件中:

[tool.poetry.dependencies]
torch = { url = "https://download.pytorch.org/whl/torch_stable.html/cpu/torch-1.3.1%2Bcpu-cp36-cp36m-win_amd64.whl" }
Run Code Online (Sandbox Code Playgroud)

  • 这不是一个令人满意的答案,因为这没有给出任何问题的解决方案:根据平台,指向正确的轮子。 (11认同)
  • 注意:如果您有依赖于 pytorch 的依赖项,这将不起作用,因为诗歌无法解析依赖项版本(https://github.com/python-poetry/poetry/issues/4231#issue-931746833) (2认同)

ben*_*nyl 5

我正在维护一个名为relaxed-poetry的分叉,它是一个非常年轻的分叉,但它通过以下配置支持您想要的内容:


# pyproject.toml

[tool.poetry.dependencies]
python = "^3.8"
torch = { version = "=1.90+cu111", source = "pytorch" }

[[tool.poetry.source]]
name = "pytorch"
url = "https://download.pytorch.org/whl/cu111/"
secondary = true

Run Code Online (Sandbox Code Playgroud)

喜欢的话可以勾选一下,可以和诗并列安装。