🌟

Poetry1.5.1からGPU版のPytorchのインストールが簡単になりました

2023/07/03に公開

結論

GPU版PytorchのようなPyPIに存在しないパッケージにおいて、Poetry1.5.1からインストールがより簡単になりました🎉
例えば自分の環境では下記の2行でインストールできます。

poetry source add torch_cu118 --priority=explicit https://download.pytorch.org/whl/cu118
poetry add torch torchvision torchaudio --source torch_cu118

具体的には下記の手順できます。

  1. 公式サイトから、インストールコマンドをコピーする。

https://pytorch.org/get-started/locally/

  1. --priority=explicitオプション をつけて、先程のindex-urlをpoetry source add コマンドで登録する。
# torch_cu118という命名は変更可能
poetry source add torch_cu118 --priority=explicit https://download.pytorch.org/whl/cu118

  1. 先程のsourceを指定して、poetry add でインストールする。
poetry add torch torchvision torchaudio --source torch_cu118

...
Resolving dependencies... (556.8s)

Package operations: 6 installs, 1 update, 0 removals

  • Installing cmake (3.26.4)
  • Installing lit (16.0.6)
  • Installing triton (2.0.0)
  • Updating torch (2.0.1 -> 2.0.1+cu118)
  • Installing pillow (10.0.0)
  • Installing torchaudio (2.0.2+cu118)
  • Installing torchvision (0.15.2+cu118)

このとき、Poetryは指定したsource(torch_cu118)を探しに行って、環境に沿ったwheelファイルを見つけて、インストールしてくれます。

補足

Poetry 1.5系から、poetry source addコマンドに--priority=explicitオプションを追加されました。このオプションを使うと、poetry add --source hogeのように明示的に指定した場合のみ、追加したソースを検索します。

ちなみに、poetry source addは1.2系から存在しています。
https://python-poetry.org/docs/repositories/#package-sources

しかし、1.5系以前は--priority=explicitオプションがなく、PyPIにあるライブラリをインストールする際も、追加したソースを含めて検索する選択肢しか提供されていませんでした。この仕様により、インストール時間が非常に長引いたり、ログが汚染されてしまうという、耐え難い挙動の変化が起きてしまうのです。

したがって、source addコマンドを使って、Pytorchをインストールするという選択肢はPoetry1.5系から実用的になったといえます。

1.5系以前では、環境に合わせたwheelのURLを見つけて指定し、それをインストールするのが最も実用的な方法でした。

[tool.poetry.dependencies]
python = "^3.10"
numpy = "^1.23.2"
torch = { url = "https://download.pytorch.org/whl/cu116/torch-1.12.1%2Bcu116-cp310-cp310-win_amd64.whl"}
torchaudio = { url = "https://download.pytorch.org/whl/cu116/torchaudio-0.12.1%2Bcu116-cp310-cp310-win_amd64.whl"}
torchvision = { url = "https://download.pytorch.org/whl/cu116/torchvision-0.13.1%2Bcu116-cp310-cp310-win_amd64.whl"}

ちなみに記事のタイトルで1.5.1以降と指定しているのは、1.5.0にはクリティカルなバグが存在するためです。

まとめ

Poetry1.5.1からPytorchのインストールが簡単になりました。 未検証ですが、cudfなど他のPyPIからインストールすることができないGPUライブラリにも応用することができると思います。

Poetryは最近頻繁にアップデートをしていて、その度に高速化されたり、ロバストなパッケージのインストールが可能になっているので、リリースノートを読みつつ新しいバージョンを使っていきたいと思いました。
https://python-poetry.org/history/

ちなみに、PyPIとかPoetryとかwheelなど Pythonのパッケージングと配布の前提知識について、幅広く知りたい場合、下記の記事がおすすめです。😎

https://zenn.dev/zerebom/articles/60d5ad4b18c901

参考

https://zenn.dev/yag_ays/articles/a6c84622f558ee

https://no-maddojp.hatenablog.com/entry/2023/05/18/192736

https://github.com/python-poetry/poetry/issues/6409

Discussion