ラベル ubuntu の投稿を表示しています。 すべての投稿を表示
ラベル ubuntu の投稿を表示しています。 すべての投稿を表示

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年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月】

=25年現在ずいぶん変わりました。ブログの最新記事を参照してください。

https://doraemonkokoro.blogspot.com/2025/12/mint-222-cuda-rtx-a6000-a100rtx3090.html


以下は、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年6月19日金曜日

Ubuntuでログインループの対処法

だいたい下記で治るようです。
https://qiita.com/musaprg/items/58d9dee4ef70e3882a9d
つまりNvidiaのドライバーが変ということ。

症状としてはログイン画面が荒い解像度になっているはず。

しかし、
適切なバージョンをインストールしようとしても、
すでに適切なバージョンだったりします。

わたしの場合、440が必要で、すでに440が入っていた状態です。

そんなときは、
sudo apt install --reinstall nvidia-xxx
です。

GUIログイン画面上で、Ctrl + Alt + F1を押して仮想コンソールに入って、
sudo apt install --reinstall nvidia-440
sudo reboot
で無事に復帰しました。



2020年6月5日金曜日

UbuntuにChainerをInstallする(TitanRTX)cudaとdriver

基本的には下記の記事通りです。
https://doraemonkokoro.blogspot.com/2016/09/ubuntuchainerinstallgtx1080_5.html

しかし今はCUDAとドライバーのコンビネーションが決まっているようで、
上のようにドライバーをインストール、CUDAをインストール、という具合に順々にやると失敗します。

というわけで、CUDAだけを導入します。
以前と違ってドライバーは勝手にインストールされます。

ここへ行きCUDAをインストールします。

ボタンをポチポチ押してこんな感じに選択すると、
Installation Instructions:というテキストがでてきます。
灰色の中のテキストを忠実に実行してください。

sudo reboot
リブートして、nvidia-smiを実行して、
それなりのテーブルがでてきたらOKです。





UBUNTUでのPython2とPython3の共存と切り替えはpyenv

Python2とPython3の切り替えです。
pyenvが便利です。

gitを導入してないときは、
$ sudo apt-get install git
から。
ついでに、
$ git config --global user.name ######
$ git config --global user.email ######
も。

pyenvの導入
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv

pathを通す
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
$ source ~/.bashrc

以下のようなpathを通しているひともいたけど
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile

ターミナルを起動するたびに
$ source ~/.bash_profile
をやることになったので上のほうにした。

ubuntu 16.04LTSには足らないパーツがあったので
$ sudo apt-get install zlib1g-dev
$ sudo apt-get install libssl-dev

そんでもって、
$ pyenv install 3.6.7

$ pyenv versions
で、3.6.7が入っていたらOK。

$ cd
で、python3が必要なフォルダーに移動してから、
$ pyenv local 3.6.7
とすると、カレントディレクトリーだけがpython3になります。
$ pyenv versionsで確認できます。

この状態の3.6.7は、すっからかんの状態ですので、
3.6.7支配下のカレントディレクトリーで
$pip install #####
で必要なパーツを入れていきます。

python3にはデフォルトでpipが入ってます。
$ pip list
で確認。

$sudo pip install #####
は不可です。

ここでsudoをやると、
systemのpython2のpipが動いてしまいます。

これで快適なpython3ができあがり。




2019年7月23日火曜日

読めないJPGファイルを一括変換【便利なプチ基礎知識】

頂いた画像セットがWindowsでは読めるのに
Ubuntuでは読めなかった。
Mac系フォルダーが同梱されているのでMacで作ったものらしい。

Ubuntuで読もうとすると、
Could not load image '34.jpg'.
Error interpreting JPEG image file (Not a JPEG file: starts with 0x89 0x50)
というエラーがでる。

starts with 0x89 0x50は、PNGファイルのようである。
拡張子はJPGであるが中身はPNGファイルと思われる。

そこで拡張子を変換。
しかし、jpg拡張子は普通のrenameコマンドでは変換できない。

rename jpg png *.jpg
とすると
Bareword "jpg" not allowed while "strict subs" in use at (user-supplied code).
となる。

rename .jpg png *.jpg
とすると
syntax error at (user-supplied code), near "."
となる。

こういうときは
rename 's/jpg/png/;' *.jpg
とする。

rename 's/返還前のテキスト/返還後のテキスト/;' 変えたいファイル名
という意味。




2019年3月13日水曜日

UBUNTUのSSDを入れ替えたら起動しなくなった場合の対処方法(デュアルブート時)

WindowsとデュアルブートしているUBUNTUで、
別のUBUNTUが入っているSSDと入れ替えて起動すると
OSの選択画面ではなく
grub>
画面が表示される場合。

<対処法>
Boot-repairというUbuntuのアプリケーションでブートローダーを修復する

1)DVDからトライモードでUbuntuを起動する
2)ppaの追加(proxy環境下でない方が望ましい)
    sudo add-apt-repository ppa:yannubuntu/boot-repair
    sudo apt-get update
3)Boot-repairのインストール
    sudo apt-get install -y boot-repair
    sudo boot-repair

4)Boot-repairが起動したら、”Recommended repair”を選ぶ
5)しばらく待つと、修復成功のメッセージと共にレポートが出力される

6)SSDを入れ替えた初回の起動では、Escでブートメニューを表示し、起動順序を確認する。

boot-repairはかなり細かいブートメニューをつくってくれますが、
もしgrubメニューのカスタマイズが必要なら、
「Grub Customizer でブートローダーをGUI編集、デュアルブートを快適に」
https://thjap.org/linux/ubuntu/5962.html
を利用。

私の場合、「UBUNTU、Windows」のふたつのみにしました。



2019年3月5日火曜日

ゼロから始めるAI実験@応用物理学会(東工大)

ゼロから始めるAI実験(2019年3月11日、東工大)でのリンクまとめ

応用物理学会@東工大でチュートリアルを行いました。内容はOSすら入っていないPCから深層学習環境を作るというチャレンジでした。なかなかハードな時間でしたが、山本研@宇都宮大の皆さんのおかげでなんとか最後までたどり着きました。聴衆の皆様お疲れ様でした。チュートリアルで使ったリンクを以下にまとめておきます。不明な点ありましたら、メールでおねがいします。GMAILアカウントは、eijwatになります。

参照する本ブログ記事

1)Ubuntu16.04LTSにChainerをInstallする(GTX1080 & GTX1080Ti)
2)Windows10とUbuntu14.04.5のデュアルブート(OMEN by HP Desktop 880)
3)UbuntuにChainerをInstallする(GTX1080)

補助テキスト
1)Option Text for "AI experiment starting from scratch" IN JAPANESE

プログラムコードとデータセット
Code and Data)@FIGSHARE

Predictive Coding Deep Neural Network in Chainer (ver.TB8B)
https://doi.org/10.6084/m9.figshare.7801154

Auto_Encoder with Convolutional_LSTM / SONY NEURAL NETWORK CONSOLE
https://doi.org/10.6084/m9.figshare.7679057

Optical flow analysis
https://doi.org/10.6084/m9.figshare.5483716

Test data for prediction
https://doi.org/10.6084/m9.figshare.5483680

Training_data for prediction
https://doi.org/10.6084/m9.figshare.5483668


AI実験応用例
1)研究室のHP
2)論文のHP
3)プレスリリース





2018年12月12日水曜日

Ubuntu16.04LTSにChainerをInstallする(GTX1080 & GTX1080Ti)

Ubuntu14.04LTSのサポート終了も迫ってきておりますので、
Ubuntu16.04LTSでChainerを使えるようにセットアップしました。

sudo do-release-upgrade

というコマンドを打てば、OSのアップグレードは通常問題なく行われます。が、今回はSSDをクリーンにして、そこへUbuntu16.04.5LTSとChainerを導入しました。
**(後日、別のPC2台「1台は1080、もう一台は1080Ti」では、sudo do-release-upgradeを試みました。オプションはすべてデフォルト対応でうまくアップグレードされました。うまくいくかどうかはドライバーのバージョンなどに依存しそうな気もしていますが、do-release-upgradeは超便利なので、とりあえずこっちでやってみて、もしダメならそのとき考えるという方針がいいとおもいます)。

基本的には
UbuntuにChainerをInstallする(GTX1080)
と同じやり方です。

変更点や気になったところをいくつか列挙します。

(1)今回は4)~11)は飛ばしてドライバー導入から始めました。今回のPCはマザーのビデオポートがないので、最初からGTX1080にディスプレイが繋がっています。最近のUbuntuには汎用ドライバーが組み込まれているので、もんだいなく画面は映ります。ただし、GTX1080専用のドライバーではありません。人によっては、この汎用ドライバーを使えなくしてから、GTX1080専用のドライバーを導入しているようです(途中X-Windowが使えなくなるかもです)。今回は邪魔くさいので、汎用ドライバーはキルしていません。

(2)Nvidiaドライバーは、この時点(2018年12月12日)での最新は415でしたので、nvidia-415をいれましたが、CUDA Toolkit(バージョン10)を入れた時点で410にダウングレードされました。ここでnvidia-smiを実行しますと、Driver/Library version mismatchエラーがでます。前回はドライバーバージョンを再び無理無理上げましたが、今回はそのままリブートしました(リブート前に念のため415は手動でも削除)。リブートしてnvidia-smiを実行すると410で動いているのが確認されました。

(3)sudo apt-get install cudaのあと、apt-keyの設定をコマンド上で指示されていたので、指示通りに設定しました。

(4)パスを通した後、apt系、pip系のインストールをしました(可能な限りたくさん)。前回やりませんでしたが、今回はsudo pip install chainerの前に、sudo pip install cupyを手動で行いました(インストールに結構時間がかかります)。

(5)本質的なことではないのですが、この時点でpipはバージョン8です。最新はバージョン18(番号デカい!)ですので、「バージョンアップよろしく」というメッセージがpipをつかうたびにでますが、これは無視しました。再帰的なバージョンアップは好ましくないとおもいます。pipはもともとaptで導入したので、aptでアップグレードしたほうがいいので、apt側の対応を待ちます。

Chainerは、まだ18.04LTSはリコメンドしていませんでの、この状態がいまのところベストかとおもいます。




2018年1月5日金曜日

Windows10とUbuntu14.04.5のデュアルブート(OMEN by HP Desktop 880)

OMEN by HP Desktop 880では、NVIDIA GeForce GTX1080Tiが使えるデスクトップ環境が提供されています。深層学習専用機と比較するとコストパフォーマンスはかなりよいです。OMENと似たようなコンセプトのゲーム機はいろいろありますが、あとはデザインの可否でしょうか。

搭載されている1080Tiは従来の1080と比較して速度はそれほど変わりませんが、メモリーが11Gbまで拡大しています。画面表示と兼用しても、最低でも10Gb以上の領域を深層学習計算用に確保できます(描画用のグラフィックボードを追加すれば11Gbまるまる使えます)。手元のテスト環境としては十二分の能力でしょう。

OMENにはデフォルトでWindows10が付属しています。そこで今回はWindows10とUbuntu14.04のデュアルブート環境を構築します。Windows10を上書きするも一手ですが、ラボにWindows10環境がないのであえて残すことにしました。またSSDの領域を分けて使うとディスク容量に不安がありますので、Ubuntu用のディスクを新たに用意することとしました。元のWindows10は、M.2(エムドットツー)規格のSSDに搭載されています(マザーボードへの直差し)。Windows10のバックアップ領域は別途3.5インチのハードディスクに用意されており、今回は両方とも温存します。

1)新しい2.5インチSSDを用意し、筐体上部に用意されているSATAスロットに差し込みます(2スロットのうち一つを使う)。このSATAスロットは3.5インチ用なので、2.5インチSSDを差し込む際には変換アダプターがあったほうがいいです。変換アダプターがなくても差し込むことは可能ですが、ユラユラして不安定です。筐体上部に用意されているSATAスロット用には、OMENにはネジが8個付属しています。

2)Ubuntu14.04.5LTSのイメージDVDを用意します。末尾のバージョンが5であることが重要で、このバージョン以降がUEFIブートに対応しています。16.04LTSなら何の問題もないでしょう(ただし未試行です)。

3)Windows10の高速ブートをOFFにしてPCを落とします。http://121ware.com/qasearch/1007/app/servlet/relatedqa?QID=018214

4)イメージDVDをセットしてPCを立ち上げ、ESCキーを押し続け、BIOS画面に移行します。まずBIOSにもある高速ブートをOFFにします。さらにセキュアブート関係の項目をすべてOFFにしたうえで、起動順を変更します。DVDを最優先にして起動させます。

5)まずはインストールなしのトライモードで立ち上げてみます。

6)うまく立ち上がったらデスクトップのインストールアイコンをクリックしてインストール開始です。インストール対象はデフォルトではM.2のSSDになっているので、これを新しく差し込んだSSDのドライブに変更します(ここは慎重に!間違うとWindows10環境を失います)。あとは通常通りのインストールです。新しいディスクへのインストールですので、ディスクを完全イレースした上でのインストールを選択します。

7)再起動後、BIOS画面で再度起動順を調整して終わりです。

8)うまくいけば、UBUNTUのブートマネージャーが立ち上がります。

深層学習用の環境を整えるのは以前の記事の通りです。
https://doraemonkokoro.blogspot.jp/2016/09/ubuntuchainerinstallgtx1080_5.html
バージョンがいろいろ変わっていますが基本は一緒です。

Kerasの最新版2.1.Xでは、なぜかGPUが反応してくれなかったので、今回は2.0.8を使用しました。バックグラウンドにはTensorboardを使います。Chainerはバージョン3を使いましたが、問題なく動きました。



追記1(2018年6月11日):
Chainerのバージョンを4に上げました。問題なく作動しています。

追記2(2018年11月21日):
Windows10とUbuntu14.04.5のデュアルブートなんか作ってもWindows10は使わないだろうなーとおもっていましたが、SONYがneural network console(https://dl.sony.com/ja/)という開発環境を提供し始めました。コードを書くことなく、深層学習ネットワークを組み上げることができます。
 クラウドで使うのが基本のようですが(Chromeで動きます)、Windowsのデスクトップオフライン環境でも高速に動作します(WindowsユーザーでGPUを保有しているかたは、デスクトップオフライン環境がお勧め)。似たような試みとしては、IBMのWatson Studioがありますが、こちらはクラウドのみですので、Windowsアプリとして自前のGPUでガンガン動かせるSONYを使うメリットはかなりあるかと思います。
 試しにインストールしてみましたが、まずチュートリアルの動作が快適です。OMENに搭載されているGTX1080Tiもうまく動いています(独自に拡張したオートエンコーダーで目測150倍速)。データセットの扱いが独特ですし、変数が使えなさそうな雰囲気なので大規模なネットワークを組むには不向きかもしれませんが(その場合はテキストタイプのものが用意されているようです)、視覚的に構造が確認できるので、特に教育現場では役に立つことでしょう。
 ちなみデフォルトで搭載されているRandom Structure Searchは便利です。こちらがネットワークの原型だけ与えれば、勝手にいろんな構造を試してくれます(独自に拡張したオートエンコーダーで、はじめ最小二乗法のエラーが0.006だったものが、20時間ほどの探索で0.002まで下がりました。ただしネットワークは巨大化していく傾向にあります)。

追記3(2021年9月30日):
ある日突然まったく動かなくなりました。いくつかのPCが同時におかしくなったので、なにか変なことが起こったみたいです。結果的にはCMOSのクリアとメモリの接点清掃で復活しました。が、まだ不具合が。本体のSSDのWINDOWSのOSは削除、UBUNTU20へ移行してましたが、WINDOWSのバックアップディスクが悪いことをしていたみたいです。これを取り除きました。もうひとつは、元のUBUNTUディスクへのログインがはねられました。これはレガシーブートに変更して対応できました。




2016年9月5日月曜日

UbuntuにChainerをInstallする(GTX1080)

DEEP LEARNINGの計算をする際、NVIDIAのGTX1080の威力は凄いとの噂で、今回ラボに導入することにしました。DEEP LEARNINGだけではなく、メダカの3Dアニメーションのレンダリングにも活躍するはずです。研究費を節約するためごく普通のマザーボード(Intel H97Express)にGTX1080という構成です。電源は850W、SSDは256Gb、メモリーは16Gb確保しました。

インストールに苦労したので、ここに書き留めておきます。ネット上の沢山のサイトを参考にしました。感謝です。参考サイトはあまりにも多く、そして修正箇所多々でしたので引用は控えます。2016年の夏の時点でのインストールです。

準備
0)ディスプレイはGTX1080ではなく、ひとまずマザーボードのポートに差しておく。

OSのインストール
1)Ubuntu14.04LTS(64ビット)をイメージDVDからインストール(16.04LTSは非推奨)。
2)Ubuntuをアップデート。

Chainerが依存するライブラリーをインストール
3)以下はTerminalからのコマンド実行。
4)sudo apt-get install g++
5)sudo apt-get install python2.7
6)sudo apt-get install libhdf5-dev
7)sudo apt-get install python-dev
8)sudo apt-get install python-pip
9)sudo pip install -U setuptools
10)sudo pip install -U cython
11)sudo pip install -U filelock

以下12)~24)は最近は様変わりをしたようである。
最近(2020年春)にTitanRTX追加を導入したときは、
こちら。
<-これをやったら、25)へ進むが、cudnnもバージョンは上がっておりますぞ。

GTX1080のドライバーをインストール
12)リポジトリ登録
13)sudo add-apt-repository ppa:graphics-drivers/ppa
14)sudo apt-get update
15)sudo apt-get install nvidia-370
この時点の最新版が370でした。
sudo apt-cache search 'nvidia-[0-9]+$'
で確かめることができます。
16)おそらく途中で「BIOSのセキュアブートをオフにしますか」という指令がくるのでOKに。
17)sudo reboot
18)ここでマザーのビデオポートは使えなくなるので、ディスプレイをGTX1080に差し直す(使える場合もあります。使えるならマザーのビデオボードを使いましょう。現在本マシンはマザーのビデオボードでディスプレイを表示させていますので、GTX1080のメモリーは全部深層学習に使える状態になりました)。
18)おそらくここで「BIOSのセキュアブートをオフにしますか」という指令がくるのでOKに。次回からは聞かれない。ちなみにセキュアブートのオフ状態はOSをクリーンインストールしても生きた状態が続くので注意。
19)nvidia-smiで確認。テーブルが出てくればOK。GPU番号と稼働状態が確認できる。

CUDAのインストール
20)CUDA Toolkit8.0(RC)をnvidiaのサイトからWEBからダウンロード。ダウンロードするのは.debファイル。NVIDIAにアカウントを登録する必要がある。GTX1080の場合、現状RC版しか選択はない。
21)sudo dpkg -i ###.deb
###.debはダウンロードしたファイルのディレクトリー。Terminalにそのまま投げ込めばOK。
22)sudo apt-get update
23)sudo apt-get install cuda
24)sudo apt-get install nvidia-370(23でダウングレードされてしまうため。そのうちここは必要なくなる?)

もし修正パッチがあった場合は、
sudo dpkg -i ###.deb
でパッチをあてる。

cudnnのインストール
25)NVIDIAからcudnn5.1をダウンロード(Library for Linux)。適当なところに解凍。
26)解凍したフォルダーから所定の場所にファイルをコピー
sudo cp ###/lib* /usr/local/cuda/lib64/
sudo cp ###/cudnn.h /usr/local/cuda/include/
###は所定のディレクトリ-(Terminalにそのまま投げ込めばOK)。行った先のファイルパーミッションは644に変更(sudo chmod 644 ###)。

パスを通す
27)sudo vi ~/.bashrcで以下を一番下に付け加える。エディターviの使い方は各自勉強。
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

リブートしてパスをアクティブにする
28)sudo reboot

パスを書き間違えているとターミナルからのコマンドがまったく通らなくなるので注意。もしすべてのコマンドが通らなくなったら、ターミナルから、
export PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin
を実行してみる。

プロトコールバッファーを導入
29)sudo pip install protobuf

chainerのインストール
30)sudo pip install chainer
CUDAの位置などはchainerが自動で探し出してくれるので指定不要。

テストラン
31)sudo apt-get install git
32)sudo git clone https://github.com/pfnet/chainer.git
33)ホームのchanierフォルダーのパーミッションは丸ごと777に設定。
34)ホームのchainer/example/mnist内のtrain_mnist.pyを実行。
(CPUで計算。train_mnist.pyのとこはディレクトリーを)
python train_mnist.py
(GPUで計算)
python train_mnist.py --gpu=0
GPU番号はコマンドnvidia-smiで確かめることができる。普通は0になっている。
pythonのプログラム実行は、クセのようになっているsudo実行をやらないこと
sudo vi ~/.bashrcで通したパスはログインユーザーにのみ有効。

結果
35)CPU計算すると数分かかる1 epochが、GPU計算すると1秒ほどになりました。train_mnist.pyをデフォルト設定で実行すると(20 epoch)、CPU計算で約2時間、GPU計算で約20秒です。DEEP LEARNINGにはGPU計算が必須なのは間違いありません。今後複数マシンでの分散計算へと時代は移行していくでしょうが、それはまだ試験段階のようです。

後日追記1
2017年2月27日に新たなマシンが来たので再びセットアップ。インストールしていて気になったポイントは以下の通り。
A)15)sudo apt-get install nvidia-370はnvidia-378になっていた。
B)それに伴う変更なのかBIOSのセキュアブートをオフにしますかという指令が来なかった(セキュアブートに対応した?)
C)CUDA Toolkit8.0(RC)はCUDA Toolkit8.0になっていた。にも関わらず、24)のバージョン戻しは相変わらず必要。ひょっとしたらドライバーのインストールが省略できるのかもしれない。
D)python train_mnist.pyの実行でPlotReport関係のエラーが発生。それは以下でリポート済みの現象。
https://github.com/pfnet/chainer/pull/2277
古いtrain_mnist.pyファイルを動かしてみたら問題なく動いた。GPUもちゃんと動いた。

後日追記2
2016年9月にセットアップしたのはIntel H97ExpressのボードにCorei7 6700K/4core 4Ghzに16Gbメモリーという構成だった。メモリーは32Gbに増設はした。2017年2月にセットアップしたのはIntel H99ExpressのボードにCorei7 6800K/6core 3.4Ghzに32Gbメモリーという構成だった。使ってみると2016年版のほうが1.2倍くらい速い。同じGTX1080を積んでいても、古い方のマシンが速いという結果になった。

後日追記3
2017年6月19日に新しいハードディスクにインストール。既存のChainerプログラムを走らせるとCUPY関係のエラーがでた。知らない間にChainerがバージョン2に上がっていたので、たぶんこれが原因ということで、sudo pip install chainer==1.20.0.1で古いCHAINERをインストール。

後日追記4
別用途に買ってあったGTX1070を深層学習用に使えるようにした。既存のChainerプログラムを動かしてみたが十分実用に耐える実力を持っていた。十二分に速かった。

後日追記5
最近、深層学習専用機が売られています。自作PCのと差は、1)一連の深層学習用のフレームワーク(ライブラリーやツール)がプレインストールされているか否か、2)ディスプレイ専用のGPUが別に付属しているか否か、3)価格が高いか安いか、の3点だとおもいます。2)に関しては、ほんの若干計算のリソースに影響を与えるものと思いますが、大勢に影響なしだと思われますし、なんでしたら安価なグラフィックボード追加するのも一手です。1)のプレインストールは確かにありがたいですが、セットアップは数時間ですし、必要のないツールが入っていても無駄ですし、3)との兼ね合いかと思います。

後日追記6
Windows10とUbuntu14.04のデュアルブート(OMEN by HP Desktop 880)




後日追記7
ということは渡辺英治君は、2016年ころに深層学習に手を出したということでした(2025年12月時点での感想)。このころLLMが出てくるのはまだ想像してなかったなー。




UBUNTU 24.04 & MINT 22.2 & CUDA & RTX-A6000 (A100、RTX3090、RTX5090他もおなじ)をGPU計算機としてセットアップする

「いま」の定義:2025年12月 以前GPUのセットアップ(CUDA)について書いたのが、2023年1月だったので、 https://doraemonkokoro.blogspot.com/2021/09/ubuntu-20041lts-cuda-rtx-a6000.html 3...