2023年5月12日金曜日

WindowsのWSL2は深層学習にガッツリ使える??

いろいろ検討した結果、

「WindowsのWSL2は深層学習に使える」

と、結論しましたので、ここに記録。

が、諸事情によりタイトルは??を付けました。

諸事情は最後に。


まず、

Windows及びNvidia driverはとことんアップデートする。

その後、

https://chigusa-web.com/blog/wsl2-win11/

のようなサイトを参考にWSL2をインストール。

Windowsは、10でも11でもいい。

proでもhomeでもOKだけど、proが無難。

Windows Terminalも導入(デフォルトよりも見やすいし拡張性もある)。

https://apps.microsoft.com/store/detail/windows-terminal/9N0DX20HK701


Windows Terminalの新規タブでUbuntuを選び、

$ nvidia-smi

を走らせてGPUを確認。

(ここは驚き。なにもしてないのにGPUがつかえる!)

つまり、どういうことかというと、

Windowsで導入されている、nvidia driverが、

そのままubuntuにも反映される。

Windowsでnvidia driverをupdateすると、

Ubuntuの再起動後、自動的にubuntuにも反映される。

このUbuntuはWindowsの支配下にあることを忘れてはいけない。

cudaのバージョンを上げてはいけないときは、要注意ポイント。


anacondaをubuntuに導入。

https://www.salesanalytics.co.jp/datascience/datascience141/

とても簡単。


新しいconda環境をつくり、

conda create -n ##

自分のアプリをセットアップ。

Ubuntuでは出なかったようなエラーがいくつかでるかもしれないが、

たいていpathだったり、ちょっと足りないライブラリーだったりなので、

エラーを検索しつつ、黙々と対処。


Windowsのファイルを送り込むときは、

エクスプローラのアドレスバーに「\\wsl$」と入力する。

WSL2がバーチャルマシンであることを目視できる。

ここからhomeにアクセスできる。


UbuntuのGUIアプリは、Windowsのアプリのように動きます。

(これも驚き!)下記の最後のほう。

https://chigusa-web.com/blog/wsl2-win11/


GPUを使った深層学習の計算処理スピードは、純UBUNTUの半分くらい(同じマシンでOSを入れ替えて比較)。この速度をどう考えるか。もう一点。当たり前と言えば当たり前だが、メモリー管理はWindowsがやっているので搭載メモリーの一部だけがUbuntuに割り当てられる。せいぜい半分くらいか。シングルユーザーで使っている分には問題はないとは思うが、これをどう考えるか。

Windowsだからといって、何から何までお世話をしてくれるわけではないし、速度やメモリーに制限はあるにしても、何かと便利なバーチャルubuntu。これからはWindowsが第一選択肢にしてもいいかもしれません。

"""

上記の方法では、まだ全然完全ではないです。WSL2のところはまあいいとして、Ubuntuではなく、Windowsで深層学習をしようとすると、やはりちゃんとcuda+cuDNNをwindowsに、ちゃんと導入しないといけないです。WSL2側にもちゃんとcuda+cuDNNを導入したほうがいいでしょう。「ちゃんと」の前に動いてしまっているのでややこしい。Ubuntuの場合、人がマシンを制御するのですが、Windowsの場合、Windowsがマシンを制御しているのです。そこに横入り的にドライバーをいれるわけですが、Windowsには向いていない作業となります。その意味において、WSL2に限定して深層学習をやるのがいいのかもしれません。その範囲で使う分には、何も問題は起こらないので安心です。要はOSの使い分けです。

"""

"""

なぜタイトルに??がついているかというと、WSL2をテストしたWindowsはすぐにUBUNTU22.04に書き換えてしまったからです。メモリをWindowsにとられるのは我慢するとしても、計算速度の遅さが致命的です。。。あとMSの都合でハード制限がかかったりするのも気になります。WSL2はあくまでも補助的な役割のように思えます。

"""

WindowsのWSL2は深層学習にガッツリ使える??

いろいろ検討した結果、 「WindowsのWSL2は深層学習に使える」 と、結論しましたので、ここに記録。 が、諸事情によりタイトルは??を付けました。 諸事情は最後に。 まず、 Windows及びNvidia driverはとことんアップデートする。 その後、 https://...