前回はVega8(512 SP)&DirectMLとRX5700XT(2560 SP)& PlaidMLで実行してみたので、性能差がよくわからなかったので、 RX5700XT(2560 SP)の環境にDirectMLを入れてみようと思います。
すでにPlaidMLが動くようにセットアップされているので、それを壊さないようにこちらは仮想環境でセットアップします。といっても事前にactivate.batを実行するぐらいで、インストールのコマンドは前回と全く一緒です。
python -m venv .venv ./.venv\Scripts\activate.bat (.venv) pip install tensorflow-directml==1.15.5 (.venv) pip install keras==2.3.1 (.venv) pip install matplotlib opencv-python matplotlib pydot
RX5700XT(2560 SP)& PlaidML で1.54Secのモデルをそのまま実行してみると、 RX5700XT(2560 SP)& DirectML は0.42Secでした。
Vega8との比較の時点で速い気配がありましたが、実際に同一環境で比較するとはっきりわかりますね。3倍以上速いです。
TF.v2なのでコードが違うのでなんとも言えませんが、モデル的にはほぼ同じコードをGP106-100(ほぼGTX1060)でTensorFlow-GPUの環境で動かしたときに0.9sec程度でした。
RX5700XTが9.7 TFLOPS、GP106-100が4.3TFLOPSなので性能差を考えると0.42Secと0.9Secは順当な気がしますね。GPUの性能をDirectMLで上手に引き出せているように思えます。