今やるなら「Ubuntu Server 19.04 disco をGPU深層学習計算サーバーにするための最小限の設定」を見たほうがいいと思います
GPUと関係ない作業
- インストーラーではopensshサーバー以外を入れない。現時点では英語でインストールしないとインストーラーがうまく動かないらしい。スワップパーティションとホームパーティションを独立させておけば別バージョンのUbuntuなどでそれらを再利用出来る。alternative installer (debian installer)で最初にF6を押すとエキスパートモードを選ぶことができる。またそこでブートコマンドラインの
ubuntu-server.seedをubuntu-server-minimal.seedに変えればインストールされるパッケージをより少なくできる。 - 追加パッケージを入れる
-
intel-microcodeまたはamd-microcode build-essential-
language-pack-ja-baseでja_JP.UTF-8ロケールが入り、一部のメッセージの日本語版も入る。システムのデフォルト言語は英語のまま -
mdns(ドメイン名が.localで終わるもの) を使いたい場合はavahi-daemonをインストールする -
exim4-daemon-lightなどのメール配送ソフトを使いたい場合は入れておく -
/etc/aliasesを書き換えてnewaliasesを実行する -
pam-auth-updateを実行して必要なモジュールを入れる(例えばログイン時のホームディレクトリ作成など) -
/etc/update-motd.d/に必要なメッセージを置く。詳細はman update-motd -
smartmontoolsをインストールし/etc/update-motd.d/のスクリプトにif ! smartctl -l xselftest,selftest -l xerror,error -T conservative -q silent /dev/sda; then echo "smartctlが異常なので大至急管理者を読んで下さい"; fiを追加する。/etc/smartd.confを適切に設定する、例えば/dev/sda -a -o on -S on -s (S/../.././02|L/../../6/03) -m rootなど -
acpiをインストールし、/etc/update-motd.d/のスクリプトにacpi -tを追加する -
/lib/systemd/set-cpufreqを書き換えて/sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preferenceを好きなモードに設定する -
emacs25(必要なら) -
nis(必要なら),/etc/nsswitch.conf,/etc/yp.confの設定をする。わからなければmanを見る。nisを入れてNISクライアントとして用いるときはunscdもインストールしないとログイン時に25秒固まるようになる。 -
systemd-run --userを使うならdbus-user-sessionを入れる必要がある。
-
crontab -u root -eで実行すること
- renice -n 19 -p `pgrep '^python3|^caffe'` (ディープラーニングのプロセスの優先度を下げる)
-
systemctl --state=running list-unitsを実行して不要なパッケージ見つけて、削除する。例えばapt-get --purge remove open-iscsi lvm2 lxcfs snapdそのあとにapt-get --purge autoremoveする -
/etc/fstabについてネットワーク経由でアクセスするNFSやCIFSにはfstabのオプションとして_netdevを付ける。起動時にマウントしない場合はnoautoを付け、一般ユーザーのマウントを許可するときはuserを付ける。マウント出来なくても問題なく起動出来るマウントポイントにはnofailを付ける。マウントにタイムアウトを設定したいときはx-systemd.mount-timeout=何秒を付ける。
GPUそのものを使うための作業
add-apt-repository ppa:graphics-drivers/ppaapt-get updateapt-get install ubuntu-drivers-common-
ubuntu-drivers devicesを実行してインストールドライバ候補が妥当ならubuntu-drivers autoinstallでインストールする。余計なものをなるべく入れたくない場合はapt-get --no-install-recommends installを用いる -
nvidia-smi --ecc-config=1を用いてGPUメモリー誤り訂正機能を有効にする(QuadoroとTeslaのみ)
深層学習フレームワークのインストール
Python関係共通
apt-get install jupyter-notebook python3-pip python3-ipywidgets python3-setuptools python3-wheel; pip3 install -U setuptools wheel
CUDAバージョンについて
Ubuntu 18.04に付属するCUDAは9.1であり、caffe-cuda, python3-theano, python3-pycudaなどがそのCUDA 9.1に依存している。一方tensorflow-gpuやTensorRTはCUDA9.0を推奨していているし、最近のNVIDIAのレポジトリを見るとCUDA9.0とCUDA9.2に対するバイナリだけ置いてあってCUDA9.1は棄てられるように見える。NVIDIA TensorRTは2018年5月末の時点ではCUDA9.0でしか使えない。
Caffe
-
apt-get install caffe-cudaこれで依存関係によりCUDA9.1の一部もインストールされる
Tensorflow 1.8
Ubuntuレポジトリに標準で入っているCUDAは9.1でtensorflow 1.8バイナリが期待するバージョンではない。そこで、CUDA 9.0の共有ライブラリ(.soを含むファイル)だけ抜き出してインストールすることにする
-
wget https://developer.nvidia.com/compute/cuda/9.0/Prod/local_installers/cuda-repo-ubuntu1704-9-0-local_9.0.176-1_amd64-debでCUDA 9.0の.debファイルをNVIDIAから持ってくる -
dpkg -X 上でダウンロードしたファイル /tmpとして/tmpに.debファイルを展開する - /tmpに展開されたファイルから
.soを含むファイルをすべて/usr/lib/x86_64-linux-gnuにmvする。シンボリックリンクをシンボリックリンクとして移動するように注意する。それ以外のファイルは無視する。 - CuDNNやNCCLをインストールするために
https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/から関連する.debファイルを持ってきて、上記の手順で必要な.soを含むファイルだけを/usr/lib/x86_64-linux-gnuにmvする。 -
ldconfigを実行する pip3 install -U matplotlib tensorflow-gpu; apt-get install libgomp1
Chainer
- 上記のtensorflowのための共有ライブラリの用意を行う
pip3 install cupy-cuda90 chainer
Keras 2.1.6以降
apt-get install graphviz libgts-bin python3-pil python3-h5pypip3 install -U pydot graphviz keras