WSL2にnvidia-dockerを入れてベンチマークしてみた

October 24, 2021

数か月前に4Kテレビを購入したのをきっかけに、RTX3070を搭載したゲーミングマシンを購入しました。Windows11にアップデートするとWSL2のUbuntuでGPUが使えるようになったので、nvidiaのDockerランタイムを使ってどの程度のパフォーマンスが出るのか調べてみました。ベンチマークに使用したのは、以前の記事で使用したソースと同じで、比較のためほかにも3種類の環境で測ってます 。結果は以下の通り。

GPU CPU OSまたはDockerイメージ Python cuda TensorFlow time/1Epoc(秒) 備考
nvidia GeForce GTX 970 Intel Corei7 6700 Ubuntu20.04 3.9 11.5 2.6 5 数年前に購入したゲーミングPC
nvidia GeForce RTX 3070 Ryzen7 3700X Windows11 3.8 11.6 2.6 2 今年購入したゲーミングPC
nvidia GeForce RTX 3070 Ryzen7 3700X nvcr.io/nvidia/tensorflow:21.09-tf2-py3 3.8 11.6 2.6 7 上のPCにWindows11+WSL2+Ubuntu20.04+Docker CE+Nvidia-Dockerをいれた
Tesla K80 不明 Ubuntu18.04 3.7 11.2 2.6 7 Google Colaboratory

上から3つ目が今回WSL2のubuntuの上のdockerで動かした結果になります。2つ目と3つ目は同じPCで測定しているのですが、直接WindowsにインストールしたPythonで実行したときに比べて3倍以上遅くなってしまいました。環境構築方法がまずかったのか、あるいはWindows11が出たばかりでチューニングがされていないのか、それともやっぱりWSL2は遅いのか。原因はまだわかっていませんが、ずっと期待して待っていただけに残念です。

予想に反して健闘したのは、以前に購入したゲーミングPC(GTX970)です。Windows10からUbuntu20.04に変更したのですが、そのためか1秒だけ速くなりました。一方、Google Colaboratoryは前回測定時は4秒だったのに今回は7秒まで落ち込んでしまいました。割り当てられるGPUはその時によって違うらしいので、そのためかもしれませんが、こんなに違うものなのですね。ちなみに、今回ベンチマークに使用したノートブックはこちらです。