16
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ryeで構築するPytorch+CUDA環境(uv追記)

Last updated at Posted at 2023-06-22

背景

新年度になって計算用のPCを新調したこともあり、これまでルーズに構築していたPython環境を整備しようと思いました。今後の備忘録にも手順をまとめておきます。

pipenv, pyenv, poetry, venv と様々な管理手法が存在する中で、 昨今話題のRye に注目しました。コアになるPythonをインストールして周辺ツールをインストールしてとやる必要がなく、 Rye をインストールすれば良い、という点が好きです。

環境

OS

  • エディション Windows 11 Pro
  • バージョン 22H2
  • OS ビルド 22621.1848

WSL2環境ではなく、Windows11で進めていきます。

CUDA

  • CUDA: release 11.6, V11.6.55
  • cuDNN: 8.6.0

いつもの手順なので割愛させていただきます。こちら の記事がわかりやすかったです。

Rye

  • rye 0.9.0
  • platform: windows (x86_64)
  • self-python: cpython@3.11
  • symlink support: true

Ryeのインストール

公式の User Guide - Installation を見ながら作業しました。

  1. インストーラのダウンロード
  2. インストーラの実行
  3. 環境変数 Path の追加
    • %USERPROFILE%.rye\shims
    • %USERPROFILE%.rye

RyeによるPythonプロジェクト操作

基本的な操作は公式の User Guide - Basics にまとまっています。

プロジェクトの作成

rye init newproject

newproject というプロジェクトフォルダが作成されます。プロジェクトフォルダの初期状態は下記の通り。

newproject
├── .git
├── .gitignore
├── .python-version
├── README.md
├── pyproject.toml
└── src
    └── newproject
        └── __init__.py

pin コマンドを実行することで、このプロジェクトでターゲットとするPythonバージョンが .python-version ファイルに保存されます。

rye pin <VERSION>

sync コマンドを実行することで、pin コマンドで指定したPythonバージョンに合わせて仮想環境が作成されます。この sync コマンドは、後述するライブラリの追加などを行った際に適宜実行することになります。

rye sync
newproject
├── .git
├── .gitignore
├── .python-version
├── .venv          <-new!!
├── README.md
├── pyproject.toml
└── src
    └── newproject
        └── __init__.py

仮想環境へライブラリを追加

私の環境では Pytorch 1.12.1 を追加します。公式の Previous Pytorch Versions を確認すると

pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu116

を実行すれば良いことがわかります。しかし、これは pip での導入方法になりますので、 Rye で同様の設定を行う必要があります。

add コマンドを実行することで、プロジェクトのライブラリ依存関係を管理するlockファイルがプロジェクトフォルダ内に作成されます。

rye add "torch==1.12.1+cu116"
rye add "torchaudio==0.12.1+cu116"
rye add "torchvision==0.13.1+cu116"
newproject
├── .git
├── .gitignore
├── .python-version
├── .venv
├── README.md
├── requirements.lock     <-New!!
├── requirements-dev.lock <-New!!
├── pyproject.toml
└── src
    └── newproject
        └── __init__.py

上述した 'sync' コマンドは、実行時にこれらのlockファイルを参照して、必要なライブラリを仮想環境へインストールします。今回はその前にwheelを検索するソースを追加する必要があります。

pyproject.toml
[[tool.rye.sources]]
name = "torch"
url = "https://download.pytorch.org/whl/cu116"
type = "index"

プロジェクトフォルダ内に作成された pyproject.toml ファイルに上記を追記します。これにより、sync コマンド実行時に適切にwheelファイルがダウンロードされます。

rye sync

あとは仮想環境の更新を待つだけです。完了後は仮想環境を起動してCUDAが有効になっていることを確認してください。

.venv\Script\activate.bat
python
(.venv)
import torch

print(torch.cuda.is_available())
rye run 

で仮想環境内のPythonを直接実行することも可能です。
2023-06-22_11h53_17.png

追記(2024/08/23)

2月にRyeがAstral管理になりましたが、そのAstralのuvがプロジェクトやPythonインタープリタ自体の管理もできるようになりました(Astral Blog post)。

uv移行後に本記事と同様の環境構築を下記に追記します(参考)。

pyproject.toml
[tool.uv]
extra-index-url = ["https://download.pytorch.org/whl/cu116"]

あとがき

Python本体のバージョン管理やライブラリのバージョン管理は、必要だな~と感じる頃には既存資産が大きく身動きが取りにくくなりがちです。かと言ってやろうとするとデファクト・スタンダードがたくさんあり、結局どれが良いのかと路頭に迷うことになります。個人的には、Ryeだけをインストールすれば始められるという点がシンプルでとても好ましかったです。本記事が皆様の参考になれば幸いです。

参考

16
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?