2024年5月2日木曜日

Llama3をUbuntuで動かしてみる


わたしたちのラボでは、GPT-3などLLMを使った心理実験を試みています。以下の実験では色の連想をAIとヒトを比較し、その起源を探っています。

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


3)llama3を起動
$ ollama run llama3:70b

これだけです。軽いモデルが欲しい場合はllama3:70bをllama3:8bとしてください。あとはプロンプトがでてきますので、チャットすることができます。コードを書けば自動でプロンプトのやり取りをすることも可能です。日本語は苦手なので、基本英語での使用になります。

4)llama3の終了
/byeとプロンプトを入れると終了です。

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をテストしたWindowsPCは結局のところすぐにUBUNTU22.04に書き換えてしまったからです。メモリをWindowsにとられるのは我慢するとしても、計算速度の遅さが致命的です。。。あとMSの都合でハードの制限がかかったりするのも気になります。やはりWSL2はあくまでも補助的な役割のように思えます。よくよく考えると何でわざわざWindowsからUbuntuを使う必要があるのか不思議です。

"""

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を無くせばいいわけです。


2021年9月15日水曜日

UBUNTU 20.041lts 22.04lts & CUDA & RTX-A6000 (A100、OMEN RTX3090もおなじ)

【「いま」の定義:2023年1月】


以下は、OMENのRTX3090(注:45Lではないやつ=45Lはすこし厄介です)をセットアップしていますが、どのような機種でも基本は同じです(RTX-A6000 やA100など)。UBUNTUは、20.041ltsか22.04ltsの2択ですが、安全をみれば練りに練られた20.041lts。Windowsとのリモートデスクトップ環境をとるなら22.04lts。私の場合はデスクトップのクラゲが好きなので22.04ltsの一択。


【BIOS設定】

BIOSで、セキュアブートはオフにしたほうが無難。インテルのソフトセキュリティも。これをしないとNvidia系のドライバーが認識されなかったり、ネットワークが勝手に切られたりする。されない場合もときにある。結論としては、どちらでもいいか。


【SSD】

OMEN RTX3090の場合、データディスクのHDDを抜いて替わりにSSDを刺し、このSSDにUBUNTUをインストール。WINがいらないという人はM.2にインストール。いままでの経験上、WINを残しても使ったことはなく、なくしてしまったほうがいいかも。

以下は、PredNet in PyTorchとPredNet in Chainerを動かすまでの手順。Prednet以外のAIを使う場合も途中まで同じ。

注)以前はsudo pip3 installでやっていましたが、今はpip3 installで実行しています。pipは階層的にはaptの下と考えれば、そのほうがよさそう。あと、22.04ltsでは、若干異なることろもあり。


CDもしくはUSB(USBでのインストールを強く推奨)でUBUNTUをインストールしたあと、以下のコマンドを順次入力していく。


(まずは)

$ sudo apt update

$ sudo apt upgrade


(ここは個人的な趣味)

$ sudo apt install geany


(ここから本番)

$ sudo apt install python3-pip

$ pip3 install -U setuptools

$ pip3 install -U cython

$ pip3 install -U filelock


https://developer.nvidia.com/cuda-toolkit

あるいはcuda 11.xを利用する場合は、cuda 11.xで検索(いま、cudnnは12がないので、11.xを推奨。また多くのAIコードは12に対応していないので、そういう意味でも11.xを推奨)。


LINUX、x86_64、UBUNTU、22.04、deb(local)と選ぶと下記のような指令。

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

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

$ wget https://developer.download.nvidia.com/compute/cuda/11.4.2/local_installers/cuda-repo-ubuntu2004-11-4-local_11.4.2-470.57.02-1_amd64.deb

$ sudo dpkg -i cuda-repo-ubuntu2004-11-4-local_11.4.2-470.57.02-1_amd64.deb

$ sudo apt-key add /var/cuda-repo-ubuntu2004-11-4-local/7fa2af80.pub

$ sudo apt-get update

$ sudo apt-get -y install cuda


https://developer.nvidia.com/rdp/form/cudnn-download-survey

ログインして以下をダウンロード

DL: cuDNN Library for Linux (x86_64)


展開してフォルダー名がcudaとし、

cd ###

カレントをフォルダーのあるところへ

$ sudo cp -P cuda/lib/* /usr/local/cuda/lib64/

$ sudo cp cuda/include/* /usr/local/cuda/include/

$ sudo chmod 644 /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*


$ sudo vi ~/.bashrc

vi editor「o」で以下を一番下に付け加える。copy & paste。

====

export CUDA_ROOT=/usr/local/cuda

export PATH=$PATH:/usr/local/cuda/bin

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64:

export CPATH=$CPATH:/usr/local/cuda/include

export CUDA_INC_DIR=/usr/local/cuda/bin:$CUDA_INC_DIR

====

「esc」して「:wq」でeditorを抜ける。


$ sudo reboot


$ nvidia-smi

でGPUが認識されているかどうかを確認。

以上で、GPUのセットアップはおわり。


次にPredNet in PyTorch。

興味のない方はここで終わり。


$ sudo apt install git

$ pip3 install opencv-python

$ pip3 install opencv-contrib-python

$ pip3 install tensorflow

$ pip3 install librosa

$ pip3 install matplotlib


$ pip3 install torch==1.8.0+cu111 torchvision==0.9.0+cu111 torchaudio==0.8.0 -f https://download.pytorch.org/whl/torch_stable.html


いまは、以下。時期によっては適宜修正。

$ pip3 install torch==1.13.1+cu117 torchvision==0.14.1+cu117 torchaudio==0.13.1 -f https://download.pytorch.org/whl/torch_stable.html


$ pip3 show torch

Name: torch

Version: 1.8.0+cu111

Summary: Tensors and Dynamic neural networks in Python with strong GPU acceleration

Home-page: https://pytorch.org/

Author: PyTorch Team

Author-email: packages@pytorch.org

License: BSD-3

Location: /usr/local/lib/python3.8/dist-packages

Requires: numpy, typing-extensions

Required-by: torchvision, torchaudio


pip3 install torchviz

pip3 install janome

pip3 install tqdm


cd #

$ git clone https://github.com/NIBB-Neurophysiology-Lab/pytorch_prednet

OR

$ git clone https://github.com/eijwat/prednet_in_pytorch


cd #

$ git remote -v

origin https://github.com/NIBB-Neurophysiology-Lab/pytorch_prednet(fetch)

origin https://github.com/NIBB-Neurophysiology-Lab/pytorch_prednet(push)


cd #

$ git pull https://github.com/NIBB-Neurophysiology-Lab/pytorch_prednet


以下のコマンドでテストラン
$ python3 main.py -s '160,120'


次にPredNet in Chainer。

cd #
git clone https://github.com/NIBB-Neurophysiology-Lab/pcdnn_s11
OR
https://github.com/eijwat/prednet_in_chainer_py3

cd #
git remote -v

origin https://github.com/NIBB-Neurophysiology-Lab/pcdnn_s11 (fetch)
origin https://github.com/NIBB-Neurophysiology-Lab/pcdnn_s11 (push)

$ pip3 install cupy-cuda114

Collecting cupy-cuda114
  Downloading cupy_cuda114-9.5.0-cp38-cp38-manylinux1_x86_64.whl (80.0 MB)
     |████████████████████████████████| 80.0 MB 6.8 MB/s 
Requirement already satisfied: numpy<1.24,>=1.17 in /usr/local/lib/python3.8/dist-packages (from cupy-cuda114) (1.19.5)
Collecting fastrlock>=0.5
  Downloading fastrlock-0.6-cp38-cp38-manylinux1_x86_64.whl (42 kB)
     |████████████████████████████████| 42 kB 279 kB/s 
Installing collected packages: fastrlock, cupy-cuda114
Successfully installed cupy-cuda114-9.5.0 fastrlock-0.6

$ pip3 install chainer

Successfully installed chainer-7.8.0

$ nvcc -V

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Sun_Aug_15_21:14:11_PDT_2021
Cuda compilation tools, release 11.4, V11.4.120
Build cuda_11.4.r11.4/compiler.30300941_0

以下でテストラン
python3 PredNet/main.py -i data/train_list.txt
python3 PredNet/main.py -i data/train_list.txt -g 0



2020年11月30日月曜日

WINDOWS10が一瞬だけ暗転する問題について

DELLのPRECISION(ノート)を20h2に更新した途端に、

WINDOWS10が一瞬だけ暗転するようになった。

「windows10 暗転 一瞬」で検索するといろいろ対応策はでてきますが、

私のところの場合の解決策は、

BIOS画面で、VIDEOの項目ー>オプティマックスー>OFF

で解決しました。

このPCのBIOSに組み込まれたNVIDIAのオプティマックスは、WINDOIWS7用なので、そもそもWINDOWS10には対応していません。なぜか、20h2までは機能していたのが、それが顕在化したということでしょう。

古いグラボを積んでいるPCで起こる現象とおもわれます。

一応、WINDOWS10対応のNVIDIA純正のドライバーも手動でダウンロードしてインストールしておきました。



Llama3をUbuntuで動かしてみる

わたしたちのラボでは、GPT-3などLLMを使った心理実験を試みています。以下の実験では色の連想をAIとヒトを比較し、その起源を探っています。 Origin of the ease of association of color names: Comparison between...