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はあくまでも補助的な役割のように思えます。

"""

2023年3月13日月曜日

LINUX MINT 21をGPU計算機に使用する

LINUX MINTが人気です。


本家UBUNTUと比べてかなり軽く、しかもWINDOWSと似たUIが使いやすいです。

古いマシンでテストしたところ、ディスプレイ表示のために使われるメモリーが三分の一くらいになっていました(300メガ強が100メガ弱に!)。

特に、特定の目的に特化している旧型のGPUを積んだマシンには、適任かもしれません。


ただ、本家UBUNTUをGUIなしモード(CUI)で使えば、軽くなりますので、

sudo systemctl set-default multi-user.target(CUIモードへ)

sudo systemctl set-default graphical.target(GUIモードへ)

それでいいのでないか、と言えば、それまでです。


ただ、WINDOWSと似たUIで使いたい、UBUNTUの紫が嫌、などの特別な理由がある場合は、LINUX MINT、あるいは、その他のLINUXの選択はアリだとおもいます。

別になんでもいいや、と言う方は、本家UBUNTUの一択です。安心感が違いますし、周辺のサポート体制も圧倒的ですので、あえて他のLINUXを使う理由は見当たりません。

2023年3月9日木曜日

AI初心者Q&A

"""

よく受ける質問をまとめておきます。この記事は順次更新します。

"""

Q1:深層学習はGoogle Colabじゃダメですか?

A1:ダメじゃないです。他者との共有が簡単に出来るので、Google Colabですべてが出来れば、再現性という意味では理想的です。が、学習をガンガンやりだす、あるいは遺伝子データや動画データなどの巨大なデータを扱い出すと、無理筋になる状況が出てきますので、その時点が分岐点です。逆に、場合によってはGoogle Colabではローカルよりも大きなメモリー空間を確保できることがあります。これはGoogle Colabのメリットです。教育のプラットホームとしてもたいへん優れています。

"""

Q2:深層学習をローカルサーバーでやるか、クラウドサーバーでやるか?

A2:どちらでもいいです。が、クラウドでやるにしても一つくらいはローカルサーバーはあったほうがいいので、第一選択としてローカルサーバー、それ以上の処理はクラウドサーバーとなるでしょう。また最近ではGUI完備のAIツールもでてきているので、その場合、ローカルサーバーはあったほうが随分操作が楽になります。AWSやGoogleなどのクラウドサーバーは高額ですが、公立の研究者であれば、大学や研究所が共同利用のために用意しているスパコンは格安で使えることがあります。また逆に潤沢な研究資金があるならば、自分でニューラルネットワークをあれこれ触らなくてもノーコードのクラウドサービスもいっぱいあります。

"""

Q3:深層学習はWindowsじゃダメですか?

A3:ダメじゃないです。ただ、深層学習のコードの大半はLinux(多くの場合はUbuntu)で開発されていますので、Windowsで動かないコードが「かなり」あります(経験談)。例えば、DeepLabCutのようなメジャーコードですら一発起動とはいきません。とういわけで、Linuxが第一選択になります。あえてWindowsを第一選択にするとすれば、SONY Neural Network Consoleをメインで使いたいときです。

最近のWindowsはWSL2というバーチャル空間にUbuntuを内挿しており、これは「完全なUbuntu」を謳っておりまり、このWSL2を深層学習に利用する手があります。純粋なLinuxと比べれば、それなりのクセがありますが、Windows側からもファイルにアクセスできますし、Linux側からもWindowsのファイルにアクセスできますのでとても便利です。また、ハードウエアのセッティングはWindowsがやってくれますので超楽ちんです。ゲーミングPCを買ってきたらすぐに深層学習ができます。生粋のUbuntuよりは計算処理スピードの面で劣っておりますし(当社比で半分程度)メモリーもWindowsから恵んでいただく状態なのは大問題ですが、これもそのうち多少は改善されるでしょうし、今後、windowsは選択肢としてはありかもです。ただ私としては非推奨です。

"""

Q4:深層学習はMacじゃダメですか?

A4:ダメです。優れたコードエディターとしては使えますが、Macだけで深層学習をやることはできません。理由はNvidiaのGPUが使えないからです(いまのところ)。NvidiaのGPUで計算しても数十時間の学習はざらにありますので、それが使えない環境は、選択肢から外れます。ただ、どのみちローカルGPUも、SSH接続や、リモートデスクトップで使いますので、手元のマシンは慣れたOSがいいので、手元のインターフェースとしてMacはいい選択でしょう。

"""

Q5:GPUワークステーションは値段が高いのですが、必要でしょうか?

A5:市販のゲーミングPCで十分です。というか、速度だけで言えば、ゲーミングPCのほうが速いです(経験談)。GPUメモリーのエラーチェック機構は深層学習には必要ありません。選ぶ基準はGPUメモリーの大きさを優先させてください。次は電源の大きさ、メインメモリーの大きさ(GPUメモリーの倍くらい欲しい)、熱処理(とても大事。最悪扇風機の出番)、筐体の大きさ(できるだけ大きいほうがいい)、拡張性の高さなどです。

もうひとつ言うと、GPUワークステーションは拡張性は高く、しかも使われているパーツの耐久性は抜群なのですが、メモリーやファンなど、ワークステーション専用のパーツを使っていることが多く、これらのパーツは手に入りにくく、しかも高価なので要注意です。

ゲーミングPCのGPUで対応しきれなくなったらクラウドPCのレンタルという選択が良いと思います。現状のゲーミングPCのGPUメモリーが24Gbが最大(2023年3月現在)ですので、このメモリーを超えるような処理が必須になってきた時、クラウドPCの40Gb、80Gb(あるいはそれ以上のモンスター)の出番となります。

"""

Q6:コードエディターは何がいい?

A6:好きなものをお使いください。ちまたではVS Codeが大人気です。迷ったらこれです。みんなが使っているので安心感が違います。私は使っていません。

===

Q7:

A7:

2023年2月28日火曜日

DeepLabCutとDeepEthogramのインストール

DeepLabCutとDeepEthogramは、動物の行動解析に人気です。

http://www.mackenziemathislab.org/deeplabcut

https://elifesciences.org/articles/63377

DeepLabCutは、座標トラッキング、

DeepEthogramは、行動パターンの分類を定量化するのに役に立ちます。


いずれもpip install で一発導入できますが、互いに異なる環境に依存していますのでanacondaなどの仮想環境にインストールします。また現状(2023年2月)では、cuda12には対応しておりませんので、cuda11.xの環境にしておきます。既にcuda12環境にあるときは、

sudo apt-get -y install cuda-11-7

sudo unlink /usr/local/cuda

sudo ln -s /usr/local/cuda-11.7 /usr/local/cuda

のようにして、cuda11.xに切り替えます。


DeepLabCutは、

https://github.com/DeepLabCut/DeepLabCut

ここを参照し、

conda create --name dlc python=3.8

conda activate dlc

pip install 'deeplabcut[gui,tf]'

でインストール、

python3 -m deeplabcut

で起動です。


DeepEthogramは、

https://github.com/jbohnslav/deepethogram/blob/master/docs/installation.md

ここを参照し、

conda create --name deg python=3.7

conda activate deg

conda install -c conda-forge pyside2==5.13.2

Install pytorch

pip install deepethogram

でインストール、

python3 -m deepethogram

で起動です。




2023年2月17日金曜日

NVIDIAドライバーが認識されなったとき(ディスプレイの解像度が低下)

 例えば、不用意にUBUNTUのアップデートをしてしまい、NVIDIAドライバーが認識されなくなることがあります。そんなときは、あきらめて、再インストールです。

sudo apt autoremove cuda

をしたあとに、通常のNVIDIAドライバーのインストールです。

現状、cudnn for cuda 11.xが最新なので、

cuda 11.8を入れることになります。

「cuda 11.8」で検索です。


Installation Instructions:

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin

sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600

wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-ubuntu2204-11-8-local_11.8.0-520.61.05-1_amd64.deb

sudo dpkg -i cuda-repo-ubuntu2204-11-8-local_11.8.0-520.61.05-1_amd64.deb

sudo cp /var/cuda-repo-ubuntu2204-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/

sudo apt update

sudo apt -y install cuda


keyringsのところは、ターミナルで指定されます。

最後に

sudo rebootです。


2022年7月7日木曜日

UNUNTU22.04LTSのリモートデスクトップ

とにかくよく動くし、Windowsとの相性が抜群。

お勧めです。まるでここにUBUNTUがあるがごとし。

matplotlib.pyplotとpyQt5とopencvに関するエラー

import os, cv2, itertools, csv
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

このような環境中、pltを使ったところで(ubuntu 22.04)

QObject::moveToThread: Current thread (0x561c4d10a240) is not the object's thread (0x561c4d65a110).
Cannot move to target thread (0x561c4d10a240)
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/home/deeptitan/.local/lib/python3.10/site-packages/cv2/qt/plugins" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: xcb, eglfs, linuxfb, minimal, minimalegl, offscreen, vnc.
Aborted (core dumped)

このような珍しいエラー。
どうやらmatplotlib.pyplotが使っているqtとopencvがぶつかっているみたいです。

対応方法は、
$ pip uninstall opencv-python
$ pip install opencv-python-headless
です。

ぶつかっているopencvのheadを無くせばいいわけです。


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

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