xxx.pptx
を
xxx.pptx.zip
と名前をかえる。
あとはダブルクリックでpptxファイルの中身が見える。
目的の動画ファイルはmediaフォルダー内にある。
めっちゃ便利。
パソコンやソフトや人工知能(おもに深層学習)などの備忘録
神経科学者と学ぶ深層学習超入門を羊土社から出版いたしました。
本書は、基生研で働く生命系研究者である渡辺の目線から執筆した深層学習の入門書です。
数式やプログラムに慣れない方に配慮しつつ、文章では伝えきれない部分には、手描きイラストを多数掲載し、理解しやすさを心がけました。
Origin of the ease of association of color names: Comparison between humans and AI
https://doi.org/10.1177/20416695221131832
この実験にはひとつ大きな課題があり、対象をGPT-3にしていたので、日々変化をし続けるGPT-3のせいで再現性がとりにくい実験になっていました。しかし、Llamaというローカル環境でもきびきび動くLLMが出現したことで非常に実験がやりやすくなりました。
LlamaはWindowsでもMacでも動くようですが、ここではUbuntuで動かしてみました。
1)GPUが動くような環境を用意(以下のURL参照)。ここでは70Bという最も重いモデルを動かしますので、40Gb程度のGPUメモリーが必要になります。もっと軽いモデルもあります。
https://doraemonkokoro.blogspot.com/2021/09/ubuntu-20041lts-cuda-rtx-a6000.html
2)ollamaをインストール(llamaを動かす環境のようなもの)
$ curl -fsSL https://ollama.com/install.sh | sh
いろいろ検討した結果、
「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をテストしたWindowsPCは結局のところすぐにUBUNTU22.04に書き換えてしまったからです。メモリをWindowsにとられるのは我慢するとしても、計算速度の遅さが致命的です。。。あとMSの都合でハードの制限がかかったりするのも気になります。やはりWSL2はあくまでも補助的な役割のように思えます。よくよく考えると何でわざわざWindowsからUbuntuを使う必要があるのか不思議です。
"""
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を使う理由は見当たりません。
"""
よく受ける質問をまとめておきます。この記事は順次更新します。
"""
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:
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
で起動です。
例えば、不用意に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です。
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)
xxx.pptx を xxx.pptx.zip と名前をかえる。 あとはダブルクリックでpptxファイルの中身が見える。 目的の動画ファイルはmediaフォルダー内にある。 めっちゃ便利。