GPUマシン環境整備4 〜 Ubuntu20.04へ移行(再インストール)
また再インストールしそうな気がするのでメモ。
Ubuntu20.04インストール
- Homepage | Ubuntu Japanese Teamの日本語Remixを利用
- インストールしてまずは、
sudo apt update -y && sudo apt upgrade -y
する。
RTCローカルタイム設定
# RTCをローカルタイムとして扱うように設定 $ timedatectl set-local-rtc 1
シャットダウン時「Stopping Job 〜」で90秒待たされる件
長いので30秒未変更する。
$ sudo vi /etc/systemd/system.conf #DefaultTimeoutStopSec=90s DefaultTimeoutStopSec=30s
ALT+TABがWindow切り替えになった。
以前(18.04)はApp切替だったがWindow切替にかわったようです。
GDriveのマウント
ubuntu標準(設定→オンラインアカウント→google)が使えるようになった。
(以前は遅くて使えなかった・・・)
TimeShift でバックアップ設定
MacのTimeMachineのようなことができるらしい
https://teejeetech.in/2019/08/11/timeshift-v19-08/
- インストール
sudo add-apt-repository -y ppa:teejee2008/timeshift sudo apt update -y sudo apt install -y timeshift
- 設定
基本的にWizardに従う。ホームディレクトリはデフォルトではバックアップされないので以下を行う。
git初期設定
いつも再インストールした後でやり方忘れて調べるるのでメモ。
- インストール
sudo apt install -y git
- ユーザ名とメアドとエディッタ
git config --global user.name "John Doe" git config --global user.email johndoe@example.com git config --global core.editor vi
git config --global credential.helper store
- 設定の確認
git config --list git config --global user.name
関連するファイル
~/.gitconfig
~/.git-credentials
CUDA
Ubuntu20.04だと最初からCUDA10.2が入っていたのでこれをそのまま使用。 (ありがたい)
Anaconda
フリー版の、Individual Edition (amd64, python3.8) をインストール (また、エディッションの名前が変わってる。)
pytorch
現時点でのStable(1.6.0) を入れる。
#仮想環境を作ってpytorchインストール (base) $ conda create -y --name pytorch python=3.8 jupyter (base) $ conda activate pytorch (pytorch) $ conda install -y pytorch torchvision cudatoolkit=10.2 -c pytorch #仮想環境をjupyterのカーネルに登録 (pytorch) $ ipython kernel install --user --name=pytorch --display-name=pytorch (pytorch) $ conda deactivate
ー以上ー
イメージ・セグメンテーション
Image segmentationで参考になったリンク。
Preferred Networksの動画(Saitohさん)
わかりやすい。
Negative Mindの人のブログ
FCN (Fully Convolutional Network):ディープラーニングによるSemantic Segmentation手法 | NegativeMindException
ブログとても参考になる。
TensorFlow 2.0のチュートリアル
Image segmentation | TensorFlow Core
- tf.Kerasのサンプルコードがある。Unetの形。
- Encoder部分はKerasの学習済みMobileNetから転移学習してる
- このサンプルはMobileNetだけど他のKeras学習済みモデルを使う時も参考になる
SegNet
SegNet本家(Caffe)
SegNet GitHub - alexgkendall/caffe-segnet: Implementation of SegNet: A Deep Convolutional Encoder-Decoder Architecture for Semantic Pixel-Wise Labelling
SegNetのPyTouch実装
GitHub - delta-onera/segnet_pytorch: SegNet implemetation using PyTorch
色々なセグメンテーションのPyTouch実装
GitHub - meetshah1995/pytorch-semseg: Semantic Segmentation Architectures Implemented in PyTorch
Windows10 ライセンス認証情報の表示/編集
slmgr.vbs (ライセンスマネージャ)の起動
slmgr.vbsを実行する。オプションなしだとヘルプが表示される。
> rem 通常は以下でGUI表示される。 > slmgr.vbs > rem 上記でダメな場合(拡張子関連付けがされていない場合) > wscript c:\Windows\System32\slmgr.vbs > rem CUIで結果を表示したい時 > cscript c:\Windows\System32\slmgr.vbs
※以降は便宜上CUIにて説明。
ライセンス情報表示(/dlv)
> rem 以下で現在のライセンス情報表示(表示内容は*でマスク) > cscript c:\Windows\System32\slmgr.vbs /dlv Microsoft (R) Windows Script Host Version 5.812 Copyright (C) Microsoft Corporation. All rights reserved. ソフトウェア ライセンス サービス バージョン: 10.0.18362.356 名前: Windows(R), Professional edition 説明: Windows(R) Operating System, RETAIL channel ライセンス認証 ID: ********-****-****-****-************ アプリケーション ID: *******-****-****-****-*********** 拡張 PID: *****-*****-000-000000-00-****-*****.0000-****** プロダクト キー チャネル: Retail インストール ID: 36**750****505****0*0*21*19****755***590**8932****842***04* 使用ライセンス URL: https://activation-v2.sls.microsoft.com/SLActivateProduct/SLActivateProduct.asmx?configextension=Retail 検証 URL: https://validation-v2.sls.microsoft.com/SLWGA/slwga.asmx プロダクト キーの一部: 3V66T ライセンスの状態: ライセンスされています 残りの Windows 猶予期限リセット可能回数: 1001 残りの SKU 猶予期限リセット可能回数: 1001 信頼された時間: 2019/09/19 11:37:14 > rem 以下のように all をつけると、全種類のライセンス情報を表示 > cscript c:\Windows\System32\slmgr.vbs /dlv all ~~ずらずら-と表示される。~~ ~~ Pro とか Education とか Workstation とか ~~ ~~ VOLUMEライセンス とか OEM とか Retail とか ~~
新たにライセンスを認証する
~そのうち追記する予定~
認証済みのライセンスを削除する
~そのうち追記する予定~
ー以上ー
GPUマシン環境整備3 〜 外出先MacBook ⇨VPN ⇨自宅GPUマシン使用
目的
外出先から自宅GPUマシンを使えるようにする。 ※VPNは別途設定済み。
SSHのサーバとtmuxを入れる
sudo apt install -y openssh-server sudo apt install -y tmux
クライアント側(Mac)で古い鍵を削除
sshdを再インストールするとssh-keygenでキーが再生成されるので、前のキーが登録されているクライアントから接続すると
「鍵が変わってるよ」旨のエラーがでる。以下のようにknown_hosts
からホストのキーを削除することで対処。
(本当は鍵を取っておいて再利用するべきなのでしょうが・・・)
ssh-keygen -R example.com
ホームディレクトリを共有(samba)にする
ubuntu標準のネットワーク共有フォルダを設定。
- Nautilusでプロパティ→ローカルネットワーウ共有 で設定。(ゲストはなし)
- samba用パスワード設定
$ sudo smbpasswd -a hogeuser
VSCodeでRemoteDevelopemntを使う
Visual Studio Code Insiders + Remote Development Extensionを入れると、あたかもローカルと同じようにリモートを操作できるようになる。 とても便利。
〜クライアント側の作業です〜
現時点でRemoteDevelopmentするにはは、vscodeの通常版ではなく、Insiders版が必要なようです。
Download Visual Studio Code Insiders からDLして入れます。vscode(insiders版。以下vscode)を立ち上げ Remote Development Extension Pack」をインストール
(このPackに、Remote-SSH / Remote-Containers / Remote-WSL 等が含まれる)- 左下端のアイコン→Remote-SSH: Connect to Host.. を選択。
SSHサーバを指定してログイン名+パスワード等を入れて接続。 - 成功すると別Windowが開き、リモートの操作ができるようになります。以下のようなかんじ。
リモートファイルがexploerに表示され、リモートデバックが行える。
jupyterをリモートアクセスできるようにする
デフォルトだと、ローカルからしかアクセスできないようなので変更する。 バインドを、127.0.0.1→0.0.0.0にする
$ ipython In [1]: from notebook.auth import passwd In [2]: passwd() Enter password: [パスワードを入力] Verify password: [パスワードを再度入力] Out[2]: 'sha1: [ハッシュ化されたパスワード]'
- ~/.jupyter/jupyter_notebook_config.py を編集。
存在しない場合は、$ jupyter notebook --generate-config
で生成。 以下の設定を追加。
c.NotebookApp.ip = '*' c.NotebookApp.open_browser = False c.NotebookApp.port = 8888 c.NotebookApp.password = u'sha1:XXXXXXX' # 先ほどのハッシュ値
結論
上記、ssh + tmux + samba + vscode(remote development) + jupyter で快適。
リモートデスクトップも試しましたが、反応速度等がきになり使ってません。
番外編(リモートデスクトップ関係)
リモートデスクトップ系もいくつか試してみましたが使ってません。上記結論通りです。 以下は、試したことのメモ。
VNC(Vino)
画面共有を有効にする アクティビティ→設定→共有→画面共有を「アクティブ」にする
VNCの 暗号化通信を無効にする。Mac標準のクライアントでは、暗号化未対応のため「互換性のないバージョン〜」というエラーになる。また暗号化無しの方が反応速度良い。
$ gsettings set org.gnome.Vino require-encryption false
※若しくは ubuntuソフトウェアから「Dconf Editor」をインストールしてGUIから操作。
MacのVNCクライアントは、Nulana - Remotix for Macが体感的に早いが$50とお高い。Download VNC Viewer for macOS | VNC® ConnectはフリーだがMac標準クライアントより機能は充実、体感速度は変わらない。
XRDP
上記vncが体感速度がイマイチなのでRDPを使ってみる。
#インストール $ sudo apt-get -y install xrdp #new_cursorsの無効化 sudo sed -e 's/^new_cursors=true/new_cursors=false/g' \ -i /etc/xrdp/xrdp.ini #xrdpサービスの再起動 sudo systemctl restart xrdp #xsessionファイルの作成 D=/usr/share/ubuntu:/usr/local/share:/usr/share:/var/lib/snapd/desktop cat <<EOF > ~/.xsessionrc export GNOME_SHELL_SESSION_MODE=ubuntu export XDG_CURRENT_DESKTOP=ubuntu:GNOME export XDG_DATA_DIRS=${D} export XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg EOF #Authentication Requiredダイアログの回避 cat <<EOF | \ sudo tee /etc/polkit-1/localauthority/50-local.d/xrdp-color-manager.pkla [Netowrkmanager] Identity=unix-user:* Action=org.freedesktop.color-manager.create-device ResultAny=no ResultInactive=no ResultActive=yes EOF sudo systemctl restart polkit
※Mac側クライアントは、「Microsoft Remote Desktop 10」を使用。
GoogleChromeリモートデスクトップ
最後に、google のリモートデスクトップも試してみる。
- ubuntu側
Chromeでhttps://remotedesktop.google.com/ にアクセスして、googleアカウントでログイン。 「このデバイス」の「リモートアクセスの設定」の画面に従ってセットアップする。 - Mac側
同様にChromeでhttps://remotedesktop.google.com/ にアクセスしてログイン。
リモートのデバイスにubuntu側で設定したデバイス名がでてくるのでクリックして接続。
※リモートデスクトップ系では、googleが一番反応速度、機能面で使いやすかったです。
ー以上ー
GPUマシン環境整備2 〜 cuda / pytorch / tensorflow / chainer / jupyter を使えるようにする
目的
Cuda
公式CUDA Toolkit 10.2 Download | NVIDIA Developer
をみると、cuda10からnvidiaのリポジトリからインストールできるようになったのでこれを使う。 以下の説明の通りにインストールで得に問題なし。以前のnouveauの苦労はない。すばらしい。
https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1804&target_type=debnetwork
# CUDAインストール $ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin $ sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600 $ sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub $ sudo add-apt-repository "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /" $ sudo apt-get -y update $ sudo apt-get -y install cuda #再起動 $ reboot #動作確認 $ nvidia-smi
Anaconda
公式からインストーラダウンロードしてインストール。
https://www.anaconda.com/
$ wget https://repo.anaconda.com/archive/Anaconda3-2019.07-Linux-x86_64.sh $ sh Anaconda3-2019.07-Linux-x86_64.sh
Pytorchの仮想環境構築
(base) $ conda create -y --name pytorch python=3.7 jupyter (base) $ conda activate pytorch (pytorch) $ conda install -y pytorch torchvision cudatoolkit=10.0 -c pytorch (pytorch) $ conda deactivate
Tensorflow-gpuの仮想環境構築
(base) $ conda create -y --name tf-gpu python=3.7 jupyter (base) $ conda activate tf-gpu (tf-gpu) $ conda install -y tensorflow-gpu keras (tf-gpu) $ conda deactivate
Chainerの仮想環境構築
(base) $ conda create -y --name chainer python=3.7 jupyter (base) $ conda activate chainer (chainer) $ conda install -y chainer (chainer) $ pip install chainerui (chainer) $ conda deactivate
Jupyterにカーネルを追加
jupyterで仮想環境のカーネルを追加して切り替えられるようにする。
#pytorchのカーネル追加 (base) $ conda activate pytorch (pytorch) $ ipython kernel install --user --name=pytorch --display-name=pytorch (pytorch) $ conda deactivate #tensorflow-gpuのカーネル追加 (base) $ conda activate tf-gpu (tf-gpu) $ ipython kernel install --user --name=tf-gpu --display-name=tf-gpu (tf-gpu) $ conda deactivate #chainerのカーネル追加 (base) $ conda activate tf-chainer (chainer) $ ipython kernel install --user --name=chainer --display-name=chainer (chainer) $ conda deactivate #カーネルの一覧を表示 (base) $ ipython kernelspec list Available kernels: chainer /home/ma/.local/share/jupyter/kernels/chainer pytorch /home/ma/.local/share/jupyter/kernels/pytorch tf-gpu /home/ma/.local/share/jupyter/kernels/tf-gpu python3 /home/ma/anaconda3/share/jupyter/kernels/python3
コマンドのメモ
jupyterのカーネル
#一覧 $ ipython kernelspec list #追加(カレントの環境が追加される) $ conda activate test $ ipython kernel install --user --name=test --display-name=test #削除 $ ipython kernelspec uninstall test
conda 仮想環境
#一覧 $ conda env list $ conda info -e #作成 $ conda create --name test python=3.7 jupyter #削除 $ conda remove --name test --all
ー以上ー
GPUマシン環境整備1 〜 Ubuntu18.04へ移行(再インストール)
また再インストールしそうな気がするのでメモ。
Ubuntu18.04インストール
- Homepage | Ubuntu Japanese Teamの日本語Remixを利用
- 全てデフォルト値(標準構成)でインストール
- まずは、
sudo apt update -y && sudo apt upgrade -y
する。
grub設定変更
- 起動時にコンソールログがズラズラでるようにする(quiet splashをやめる) 。見た目がアレだけど問題発生時に備えておく。
- grubのメニューがでるようにする(GRUB_TIMEOUT_STYLEを変更)
- nomodesetは今回はなくて大丈夫だった。
- タイムアウトも短めに変更(10秒→5秒)
#バックアップ $ sudo cp /etc/default/grub /etc/default/grub.bak #編集 $ sudo vi /etc/default/grub #変更差分 $ diff -u /etc/default/grub.bak /etc/default/grub GRUB_DEFAULT=0 -GRUB_TIMEOUT_STYLE=hidden +GRUB_TIMEOUT_STYLE=menu - GRUB_TIMEOUT=10 + GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` -GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" +GRUB_CMDLINE_LINUX_DEFAULT="" GRUB_CMDLINE_LINUX="" #grupのブートローダー本体のアップデート $ sudo update-grub #再起動 $ sudo reboot
RTCローカルタイム設定
# RTCをローカルタイムとして扱うように設定 $ timedatectl set-local-rtc 1
シャットダウン時「Stopping Job 〜」で90秒待たされる件
長いので30秒未変更する。
$ sudo vi /etc/systemd/system.conf #DefaultTimeoutStopSec=90s DefaultTimeoutStopSec=30s
Win+Tabで「アプリ内Window切替」に変更する
Macのように、Alt+Tabでアプリ切替、Win+Tabでアプリ内Window切替 にする。
※PCの場合は、Optionキーがないので変わりにWinキーを割り当てる。
※Linux系では、WinキーはSuperキーとして扱われる。
- Dconf Editerを起動。アプリケーション→Dconf Editer 。 または、
$ dconf-editor
org/gnome/desktop/wm/keybindings に移動
switch-applications から Super-Tab削除。
['<Super>Tab', '<Alt>Tab'] から
['<Alt>Tab']
に変更。switch-applications-backword から Shift-Super-Tab削除。
['<Super>Tab', '<Shift><Alt>Tab'] から
[<Shift>'<Alt>Tab']
に変更。switch-group にSuper-Tab割当。
['<Super>Above_Tab', '<Alt>Above_Tab']
から
['<Super>Tab', '<Alt>Above_Tab']
に変更。- switch-group-backword に にShift-Super-Tab割当。
['<Shift><Super>Above_Tab', '<Shift><Alt>Above_Tab']
から
['<Shift><Super>Tab', '<Shift><Alt>Above_Tab']
に変更。
gdriveのマウント
ubuntu標準(設定→オンラインアカウント→googleのファイル)は何故か遅すぎて使えないので、
GitHub - astrada/google-drive-ocamlfuse: FUSE filesystem over Google Driveを使う。
- インストール
sudo add-apt-repository -y ppa:alessandro-strada/ppa sudo apt-get update -y sudo apt-get install -y google-drive-ocamlfuse
- 以下のようにマウントポイントを引数にする。途中でブラウザによるoauthが入る。
mkdir ~/gdrive google-drive-ocamlfuse ~/gdrive
TimeShift でバックアップ設定
MacのTimeMachineのようなことができるらしい
https://teejeetech.in/2019/08/11/timeshift-v19-08/
- インストール
sudo add-apt-repository -y ppa:teejee2008/timeshift sudo apt update -y sudo apt install -y timeshift
- 設定
基本的にWizardに従う。ホームディレクトリはデフォルトではバックアップされないので以下を行う。
git初期設定
いつも再インストールした後でやり方忘れて調べるるのでメモ。
- インストール
sudo apt install -y git
- ユーザ名とメアドとエディッタ
git config --global user.name "John Doe" git config --global user.email johndoe@example.com git config --global core.editor vi
git config --global credential.helper store
- 設定の確認
git config --list git config --global user.name
関連するファイル
~/.gitconfig
~/.git-credentials
ー以上ー
機械学習系で為になった記事
ブックマーク代わりです。随時更新します。
Autoencoder
- Building Autoencoders in Keras (kerasのブログ記事)
- Kerasで学ぶAutoencoder (elixのブログ記事)