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