PyTorchでGPU情報を確認(使用可能か、デバイス数など)
機械学習時にGPUを認識してくれなくて、とっても困っている人向けの記事
↓
CUDAはNvideiaのグラボ(g-force)用ドライバ
うちはAMDなので使えない
AMDのGPUでディープラーニングのフレームワークの動作を検証
AMD GPUでの機械学習の環境構築について

pytorchは詰んだ
・・・
Miniconda3という仮想環境を構築する

Miniconda3 py38_4.12.0 (64 ビット) のセットアップ
- DX の高度なインストール オプション ANACONDA Anaconda と Windows の統合方法をカスタマイズします
高度なオプション
□Miniconda3 を PATH 環境変数に追加する 推奨されません。代わりに、Windows の [スタート] メニューで Miniconda3 を開き、[Anaconda (64 ビット)] を選択します。この add to PATH" オプションにより、以前にインストールされたソフトウェアよりも前に Anaconda が検出されますが、Anaconda をアンインストールして再インストールする必要がある問題が発生する可能性があります。
□Miniconda3 をデフォルトの Python 3.8 として登録する これにより、Python Tools for Visual Studio PyCharm、Wing IDE、PyDev、MSI バイナリ パッケージなどの他のプログラムが、Anaconda をシステム上のプライマリ Python 3.8 として自動的に検出できるようになります。

Python 3.8 (64 ビット) のバージョンは既に C:\Users\***\anaconda3 にあります。Anaconda をシステム Python として登録する場合は、最初にこの Python を登録解除することをお勧めします。これでよいことがわかっている場合は、[OK] をクリックします。それ以外の場合は、[キャンセル] をクリックして続行します。
注: Anaconda 1.3 以前にはアンインストールがありませんでした。古い Anaconda をアップグレードする場合は、ディレクトリを手動で削除してください。
注: Anaconda 1.3 以前にはアンインストールがありませんでした。古い Anaconda をアップグレードする場合は、ディレクトリを手動で削除してください。
・・・
オハヨウゴザイマス(3:30)
minicondaのpythonを3.7にしてインストール

RadeonでTensorFlowを使える!tensorflow-directmlがすごいというお話
「tensorflow-directmlは普通にTensorFlow(1.15)としてインポートできる」
ようだ
(base) C:\Users\****>conda activate directml
(directml) C:\Users\****>conda list
# packages in environment at C:\Users\****\miniconda3\envs\directml:
#
# Name Version Build Channel
absl-py 1.2.0 pypi_0 pypi
astor 0.8.1 pypi_0 pypi
ca-certificates 2022.07.19 haa95532_0
certifi 2022.9.14 py37haa95532_0
gast 0.2.2 pypi_0 pypi
google-pasta 0.2.0 pypi_0 pypi
grpcio 1.49.1 pypi_0 pypi
h5py 2.10.0 pypi_0 pypi
importlib-metadata 4.12.0 pypi_0 pypi
keras-applications 1.0.8 pypi_0 pypi
keras-preprocessing 1.1.2 pypi_0 pypi
markdown 3.4.1 pypi_0 pypi
markupsafe 2.1.1 pypi_0 pypi
numpy 1.18.5 pypi_0 pypi
openssl 1.1.1q h2bbff1b_0
opt-einsum 3.3.0 pypi_0 pypi
pip 22.1.2 py37haa95532_0
protobuf 4.21.6 pypi_0 pypi
python 3.7.13 h6244533_0
setuptools 63.4.1 py37haa95532_0
six 1.16.0 pypi_0 pypi
sqlite 3.39.2 h2bbff1b_0
tensorboard 1.15.0 pypi_0 pypi
tensorflow-directml 1.15.7 pypi_0 pypi
tensorflow-estimator 1.15.1 pypi_0 pypi
termcolor 2.0.1 pypi_0 pypi
typing-extensions 4.3.0 pypi_0 pypi
vc 14.2 h21ff451_1
vs2015_runtime 14.27.29016 h5e58377_2
werkzeug 2.2.2 pypi_0 pypi
wheel 0.37.1 pyhd3eb1b0_0
wincertstore 0.2 py37haa95532_2
wrapt 1.14.1 pypi_0 pypi
zipp 3.8.1 pypi_0 pypi
# packages in environment at C:\Users\****\miniconda3\envs\directml:
#
# Name Version Build Channel
absl-py 1.2.0 pypi_0 pypi
astor 0.8.1 pypi_0 pypi
ca-certificates 2022.07.19 haa95532_0
certifi 2022.9.14 py37haa95532_0
gast 0.2.2 pypi_0 pypi
google-pasta 0.2.0 pypi_0 pypi
grpcio 1.49.1 pypi_0 pypi
h5py 2.10.0 pypi_0 pypi
importlib-metadata 4.12.0 pypi_0 pypi
keras-applications 1.0.8 pypi_0 pypi
keras-preprocessing 1.1.2 pypi_0 pypi
markdown 3.4.1 pypi_0 pypi
markupsafe 2.1.1 pypi_0 pypi
numpy 1.18.5 pypi_0 pypi
openssl 1.1.1q h2bbff1b_0
opt-einsum 3.3.0 pypi_0 pypi
pip 22.1.2 py37haa95532_0
protobuf 4.21.6 pypi_0 pypi
python 3.7.13 h6244533_0
setuptools 63.4.1 py37haa95532_0
six 1.16.0 pypi_0 pypi
sqlite 3.39.2 h2bbff1b_0
tensorboard 1.15.0 pypi_0 pypi
tensorflow-directml 1.15.7 pypi_0 pypi
tensorflow-estimator 1.15.1 pypi_0 pypi
termcolor 2.0.1 pypi_0 pypi
typing-extensions 4.3.0 pypi_0 pypi
vc 14.2 h21ff451_1
vs2015_runtime 14.27.29016 h5e58377_2
werkzeug 2.2.2 pypi_0 pypi
wheel 0.37.1 pyhd3eb1b0_0
wincertstore 0.2 py37haa95532_2
wrapt 1.14.1 pypi_0 pypi
zipp 3.8.1 pypi_0 pypi
(directml) C:\Users\****>python
Python 3.7.13 (default, Mar 28 2022, 08:03:21) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow.compat.v1 as tf
Python 3.7.13 (default, Mar 28 2022, 08:03:21) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow.compat.v1 as tf
(中略)
TypeError: Descriptors cannot not be created directly.
If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
この呼び出しが _pb2.py ファイルからのものである場合、生成されたコードは古くなっているため、protoc >= 3.19.0 で再生成する必要があります。 If you cannot immediately regenerate your protos, some other possible workarounds are: プロトをすぐに再生成できない場合は、次の回避策が考えられます。 1. Downgrade the protobuf package to 3.20.x or lower. 1. protobuf パッケージを 3.20.x 以下にダウングレードします。 2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).
2. PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python を設定します (ただし、これは純粋な Python 解析を使用するため、はるかに遅くなります)。
More information: https://developers.google.com/protocol-buffers/docs/news/2022-05-06#python-updates
何言ってんだコイツは
起きた直後にもうネムイ
オヤスミナサイ
-----------------------
オハヨウ
(protobufのダウングレード方法)
(directml) C:\Users\****>pip install -U protobuf~=3.20.0
(directml) C:\Users\****>python
Python 3.7.13 (default, Mar 28 2022, 08:03:21) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow.compat.v1 as tf
>>> tf.enable_eager_execution(tf.ConfigProto(log_device_placement=True))
>>> print(tf.add([1.0, 2.0], [3.0, 4.0]))
2022-09-28 04:38:39.136720: I tensorflow/stream_executor/platform/default/dso_loader.cc:97] Successfully opened dynamic library C:\Users\****\miniconda3\envs\directml\lib\site-packages\tensorflow_core\python/directml.0de2b4431c6572ee74152a7ee0cd3fb1534e4a95.dll
2022-09-28 04:38:39.138409: I tensorflow/stream_executor/platform/default/dso_loader.cc:97] Successfully opened dynamic library dxgi.dll
2022-09-28 04:38:39.160429: I tensorflow/stream_executor/platform/default/dso_loader.cc:97] Successfully opened dynamic library d3d12.dll
2022-09-28 04:38:39.867782: I tensorflow/core/common_runtime/dml/dml_device_cache.cc:250] DirectML device enumeration: found 1 compatible adapters.
2022-09-28 04:38:39.974681: I tensorflow/core/common_runtime/dml/dml_device_cache.cc:186] DirectML: creating device on adapter 0 (AMD Radeon HD 8570)
2022-09-28 04:38:40.249408: I tensorflow/stream_executor/platform/default/dso_loader.cc:97] Successfully opened dynamic library Kernel32.dll
2022-09-28 04:38:40.389360: I tensorflow/core/common_runtime/eager/execute.cc:571] Executing op Add in device /job:localhost/replica:0/task:0/device:DML:0
tf.Tensor([0. 0.], shape=(2,), dtype=float32)
>>> 2022-09-28 04:39:10.603705: E tensorflow/core/common_runtime/dml/dml_command_list.cc:236] The DirectML device has encountered an unrecoverable error
Python 3.7.13 (default, Mar 28 2022, 08:03:21) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow.compat.v1 as tf
>>> tf.enable_eager_execution(tf.ConfigProto(log_device_placement=True))
>>> print(tf.add([1.0, 2.0], [3.0, 4.0]))
2022-09-28 04:38:39.136720: I tensorflow/stream_executor/platform/default/dso_loader.cc:97] Successfully opened dynamic library C:\Users\****\miniconda3\envs\directml\lib\site-packages\tensorflow_core\python/directml.0de2b4431c6572ee74152a7ee0cd3fb1534e4a95.dll
2022-09-28 04:38:39.138409: I tensorflow/stream_executor/platform/default/dso_loader.cc:97] Successfully opened dynamic library dxgi.dll
2022-09-28 04:38:39.160429: I tensorflow/stream_executor/platform/default/dso_loader.cc:97] Successfully opened dynamic library d3d12.dll
2022-09-28 04:38:39.867782: I tensorflow/core/common_runtime/dml/dml_device_cache.cc:250] DirectML device enumeration: found 1 compatible adapters.
2022-09-28 04:38:39.974681: I tensorflow/core/common_runtime/dml/dml_device_cache.cc:186] DirectML: creating device on adapter 0 (AMD Radeon HD 8570)
2022-09-28 04:38:40.249408: I tensorflow/stream_executor/platform/default/dso_loader.cc:97] Successfully opened dynamic library Kernel32.dll
2022-09-28 04:38:40.389360: I tensorflow/core/common_runtime/eager/execute.cc:571] Executing op Add in device /job:localhost/replica:0/task:0/device:DML:0
tf.Tensor([0. 0.], shape=(2,), dtype=float32)
>>> 2022-09-28 04:39:10.603705: E tensorflow/core/common_runtime/dml/dml_command_list.cc:236] The DirectML device has encountered an unrecoverable error
DirectML デバイスで回復不能なエラーが発生しました
(DXGI_ERROR_DEVICE_HUNG). This is most often caused by a timeout occurring on the GPU. Please visit https://aka.ms/tfdmltimeout for more information and troubleshooting steps.
(DXGI_ERROR_DEVICE_HUNG)。これは、ほとんどの場合、GPU で発生するタイムアウトが原因です。詳細とトラブルシューティングの手順については、https://aka.ms/tfdmltimeout にアクセスしてください。
2022-09-28 04:39:10.603883: F tensorflow/core/common_runtime/dml/dml_command_list.cc:236] HRESULT failed with 0x887a0006: dml_device_->GetDeviceRemovedReason()
GPUがクラッシュした
PCポンコツすぎる
オヤスミナサイ
・・・
タダイマ
ドライバ更新してみる

(base) PS C:\Users\****> conda activate directml
(directml) PS C:\Users\****> python
Python 3.7.13 (default, Mar 28 2022, 08:03:21) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow.compat.v1 as tf
>>> tf.enable_eager_execution(tf.ConfigProto(log_device_placement=True))
>>> print(tf.add([1.0, 2.0], [3.0, 4.0]))
2022-09-28 22:16:34.283464: I tensorflow/stream_executor/platform/default/dso_loader.cc:97] Successfully opened dynamic library C:\Users\****\miniconda3\envs\directml\lib\site-packages\tensorflow_core\python/directml.0de2b4431c6572ee74152a7ee0cd3fb1534e4a95.dll
2022-09-28 22:16:34.284512: I tensorflow/stream_executor/platform/default/dso_loader.cc:97] Successfully opened dynamic library dxgi.dll
2022-09-28 22:16:34.288090: I tensorflow/stream_executor/platform/default/dso_loader.cc:97] Successfully opened dynamic library d3d12.dll
2022-09-28 22:16:35.299317: I tensorflow/core/common_runtime/dml/dml_device_cache.cc:250] DirectML device enumeration: found 1 compatible adapters.
2022-09-28 22:16:35.300916: I tensorflow/core/common_runtime/dml/dml_device_cache.cc:186] DirectML: creating device on adapter 0 (AMD Radeon R7 200 Series)
2022-09-28 22:16:35.659662: I tensorflow/stream_executor/platform/default/dso_loader.cc:97] Successfully opened dynamic library Kernel32.dll
2022-09-28 22:16:35.665839: I tensorflow/core/common_runtime/eager/execute.cc:571] Executing op Add in device /job:localhost/replica:0/task:0/device:DML:0
tf.Tensor([4. 6.], shape=(2,), dtype=float32)
>>>
出来たぜ
(directml) PS C:\Users\****> python
Python 3.7.13 (default, Mar 28 2022, 08:03:21) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow.compat.v1 as tf
>>> tf.enable_eager_execution(tf.ConfigProto(log_device_placement=True))
>>> print(tf.add([1.0, 2.0], [3.0, 4.0]))
2022-09-28 22:16:34.283464: I tensorflow/stream_executor/platform/default/dso_loader.cc:97] Successfully opened dynamic library C:\Users\****\miniconda3\envs\directml\lib\site-packages\tensorflow_core\python/directml.0de2b4431c6572ee74152a7ee0cd3fb1534e4a95.dll
2022-09-28 22:16:34.284512: I tensorflow/stream_executor/platform/default/dso_loader.cc:97] Successfully opened dynamic library dxgi.dll
2022-09-28 22:16:34.288090: I tensorflow/stream_executor/platform/default/dso_loader.cc:97] Successfully opened dynamic library d3d12.dll
2022-09-28 22:16:35.299317: I tensorflow/core/common_runtime/dml/dml_device_cache.cc:250] DirectML device enumeration: found 1 compatible adapters.
2022-09-28 22:16:35.300916: I tensorflow/core/common_runtime/dml/dml_device_cache.cc:186] DirectML: creating device on adapter 0 (AMD Radeon R7 200 Series)
2022-09-28 22:16:35.659662: I tensorflow/stream_executor/platform/default/dso_loader.cc:97] Successfully opened dynamic library Kernel32.dll
2022-09-28 22:16:35.665839: I tensorflow/core/common_runtime/eager/execute.cc:571] Executing op Add in device /job:localhost/replica:0/task:0/device:DML:0
tf.Tensor([4. 6.], shape=(2,), dtype=float32)
>>>
出来たぜ