電子趣味の部屋

電子系のガジェットやアプリ開発等の趣味の話題を書いてます

RyzenのWindows環境へのTensorflowセットアップ方法 (NVIDIA以外のGPU環境へのセットアップ)

NVIDIA以外のGPU環境へTensorflowセットアップ方法を簡単に書きます。
実際にRyzen 9 4900HとRyzen 7 6800Hの環境へ内蔵GPUを使用できるようにセットアップした手順です。

Tensorflow2でGPUを使用する場合はCUDAを使用できるNVIDIAしか対応してませんが、
tensorflow-directml-pluginを使用すると、DirectX12に対応するGPUで機械学習を高速化できるMicrosoftのDirectMLを使用することができます。

今回はWindowsの使用しているユーザのみの範囲で他のユーザやWindows自体の環境に影響がない方法でセットアップしました。

作業の前提

手順の表記で<ユーザ>とある部分はWindowsのユーザ名です。
(Microsoftアカウントでログインしてる場合はユーザ名の一部の場合もあります。)

作業はWindows PowerShellで行います。

セットアップ手順

PythonインストールまでWindows用パッケージマネージャのscoopを使用します。
scoopはインストールしたパッケージはユーザフォルダ(C:\Users\<ユーザ>)の下のscoopファルダにインストールされるので、他のユーザに影響を与えることなく環境を作ることができます。

scoopインストール
Set-ExecutionPolicy RemoteSigned -scope CurrentUser 
invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh') 
gitインストール
scoop install git
Pythonインストール

現時点でtensorflow-directml-pluginの対応してるバージョンがPython3.7までなので、バージョンを指定してインストールします。

scoop bucket add versions
scoop install python37
virtualenv

Tensorflow用に仮想環境を作りたいため、virtualenvをインストールします。

pip install virtualenv
Tensorflow用に仮想環境作成

ユーザフォルダの下にフォルダ"pythonenv"を作り、この中にPythonの仮想環境を作ることにします。
Tensorflow用仮想環境は".\pythonenv\ts_dml"に作ることとします。

cd ~
virtualenv -p "C:\Users\<ユーザ>\scoop\apps\python37\3.7.9\python.exe" .\pythonenv\ts_dml

3.7.9の部分はバージョン番号のため、現在インストールされているpythonのバージョンに合わせてください。

Tensorflow用仮想環境開始
.\pythonenv\ts_dml\Scripts\activate
Tensorflowインストール
pip install tensorflow-cpu
tensorflow-directml-pluginインストール
pip install tensorflow-directml-plugin
インストール確認

Pythonを起動

python

下の2行のコードを実行、「device_type: "GPU"」の項目があることを確認

from tensorflow.python.client import device_lib
device_lib.list_local_devices()

以下、実行例(抜粋)

[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 14551679353227654613
xla_global_id: -1
, name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 8205292468
locality {
  bus_id: 1
}
incarnation: 4805927211384585618
physical_device_desc: "device: 0, name: DML, pci bus id: <undefined>"
xla_global_id: -1
]
仮想環境終了

仮想環境から抜けるときは下のコマンドを実行します。

deactivate