DirectMLを使うとPyTorchでRadeon GPUが使えるという話を耳にしたので試してみました。 以下のサイトを参考に、Windows11 + Radeon GPU + WSL2 + pyenv +PoetryでPyTorchの環境を作成しました。 Anacondaはcondaとpipが混ざるのが嫌で普段使わないので、 公式には記載がないpyenv + poetryを試しました。ニッチな環境すぎるので自分のメモ程度に残します。 learn.microsoft.com
WSLの準備
WSLを事前に最新版にしてストアからUbuntuをインストールし、セットアップを完了します。
$ wsl --update
Pyenv
Pyenvは以下のページを参考にインストールします。 haruka0000.hatenablog.com
今回はPython 3.9で環境を作るので3.9.16をインストールします。
$ pyenv install 3.9.16
作業フォルダに移動し、pyenvのvirtualenvで環境を作り、有効化します。
$ pyenv virtualenv 3.9.16 test $ pyenv local test # Poetry
Poetryはpipでインストールします。
$ pip install --upgrade pip && pip install poetry
torch_directml
torch_directmlをpoetry経由でインストールします。以下のようなpyproject.toml
ファイルを作成します。
[tool.poetry.dependencies]
には公式(conda版)でインストールしていたパッケージを記載しています。
torchはCUDAを使わないのでCPUの方でいいらしく、[[tool.poetry.source]]
にCPU版のソースを指定しています。
CUDAも使いたい場合は普通のtorchを入れたらいいみたいです。
# pyproject.toml [tool.poetry] name = "Project Name" version = "0.1" description = "プロジェクトの説明" authors = ["自分の名前"] [tool.poetry.dependencies] python = ">=3.9,<3.10" torch = {version = "2.0.0", source = "torch_cpu"} torch-directml = "^0.2.0.dev230426" opencv-python = "^4.8.0.74" wget = "^3.2" tqdm = "^4.65.0" pyyaml = "^6.0" tensorboard = "^2.13.0" matplotlib = "^3.7.2" pandas = "^2.0.3" [[tool.poetry.source]] name = "torch_cpu" url = "https://download.pytorch.org/whl/cpu" priority = "explicit" [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api"
以下のコマンドでtomlファイルに従ってパッケージをインストールします。
$ poetry install
GPUの確認
最後にGPUが読み込まれているかを確認します。
以下のファイルをtest.py
等の名前で作成してください。
# test.py import torch import torch_directml for n in range(torch_directml.device_count()): device = torch_directml.device(n) print(device, torch_directml.device_name(n))
$ python test.py 認識されたGPUの名前と製品名が表示されます。 privateuseone:0 AMD Radeon RX 6700S privateuseone:1 AMD Radeon(TM) Graphics
以上で終わりです。 なかなかスムーズに環境構築はできましたが、実際に学習や推論はしていないのでどの程度使えるかはわからないです。 今度、時間があれば試してみたいと思います。