Ubuntu 20.04 初期設定

コマンド:
・ctrl + alt + t: ターミナルを開く
・ctrl + shift + v: ペースト

言語とキーボードの設定:
右上のSettings → Segions & Languageに行き、
・Languageを日本語に
・Formatsを日本に

Input Sourcesから、

・日本語(Mozc)
・Japanease

の2つを選び、

・English

を消す。

マウス速度:
右上の Settings → Mouse & Trackpad に行く。
スピードを変える。

USBメモリを認識させる(マウント):
USBメモリをさす前とさした後で

ls /dev/sd*

を実行する。比較により差分を見ると、USBメモリの位置がわかる。差分が複数ある場合は、後ろに数字がついているものを優先する。その後、

mount -t vfat XXX[USBメモリの位置] /media

を実行する(XXXはUSBメモリの場所で、/dev/sdc1など)。その後、

cd /media

をして、USBメモリの中身があればok

wifi受信機の認識:
最初はおそらく、デスクトップの右上にwifiマークがない。無線LANを使えるようにする必要あり。このため、RTL8812auドライバを入れる必要がある。
まずは、

・TP-Link Archer T2U Nano AC600

を購入し、ubuntuにさす(他の受信機でもいいかもしれない)。

続いて、RTL8812auドライバをgitからクローンすることになるが、インターンネットに繋がっていないので入手できない。このため、インターネットがつないであるパソコンを使って、gitからドライバ(rtl8812au.git)をクローンする。つまり、

git clone https://github.com/aircrack-ng/rtl8812au.git

を実行する。これを適当なUSBメモリに入れて、ubuntu側にいれる(USBが認識しない場合は、上を参照)。
続いて、

sudo make dkms_install
・make: Makefileに書かれている内容で、ソースファイルをコンパイルする。
・make install: makeによりコンパイルされたアプリをインストールする。
・dkms_install: いまいちよくわからないがこれでうまく行く。

を実行する。その後、

・再起動

する。右上の下矢印ボタンを押して、wifiの表示が出現していれば成功。

スクリーンモードにならないようにする:
Settings → Power → Blank Screen を Never に

aptのアップデート:

apt update
apt upgrade

NGならsudo権限をつける。再起動も忘れずに。
何か出たら「パッケージメンテナのバージョンを〜」を選択。

pyenvのインストール:
前準備をする。

sudo apt install -y libffi-dev libssl-dev zlib1g-dev liblzma-dev tk-dev
sudo apt install -y libbz2-dev libreadline-dev libsqlite3-dev libopencv-dev build-essential git

その後、gitからpyenvをcloneする。

git clone https://github.com/pyenv/pyenv.git ~/.pyenv

~に.pyenvディレクトリがあれば成功。隠しファイルなので、ls -a などで見るように。

次に、.bashrcに以下を書き込む。

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

.bashrcを反映させる。

source ~/.bashrc

pyenvが動けばok。

pyenv -v

pythonのインストール:
元々のパソコンの環境を再現したい場合、バージョンをチェックしておく。

pyenv versions

入れたいバージョンがあるかみておく。

pyenv install --list

インストールする(3.8.9の場合)。

pyenv install 3.8.9

使うバージョンを決定する。3.8.9にチェックがあればok。

pyenv global 3.8.9
pyenv versions

pythonが本当に3.8.9になっているかチェック。

python --version
pip3 --version

CUDA:
HPCで購入したところ、最初から入ってた。以下で反応があればok。

nvidia-smi

cuDNN:

cat /usr/local/cuda/version.json

あるいは、

nvcc -V

でCUDAバージョンチェックする。自分の場合は、11.4系だった。
その後、

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

に行き、CUDAのバージョンと対応するcuDNNを選択し、

cuDNN Runtime Library for Ubuntu_x.x x86_64 (Deb)

から、ダウンロードすればok。OSもきちんと合わせること。
これにより、.debファイルがダウンロードできるので、以下のコマンドでインストールする。

dpkg -i libcudnn_xxxx_amd64.deb

人によってファイル名が違うので注意すること。最後のパスを通す。

echo 'export export PATH="/usr/local/cuda/bin:$PATH"' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"' >> ~/.bashrc

importファイルのインストール:
環境を再現したいimportファイルのバージョンをチェックしておく。例えば、

pip3 show numpy

など。その後、バージョンを合わせてインストールする。バージョンがどうでもよければ、指定はなくても良い。

pip3 install numpy==1.21.4
pip3 install scikit-learn==1.0.1
pip3 install matplotlib==3.5.0
pip3 install opencv-python==4.5.4.58
pip3 install tensorflow-gpu==2.7.0

これだけだと、CPUで学習された。調べ中。
CUDAのバージョンと、tensorflowのバージョンがかみ合っていない?

GPU認識チェック:
以下を実行し、CPUとGPUが出ればok。CPUしかでなければ、認識に失敗している。

from tensorflow.python.client import device_lib
device_lib.list_local_devices()

失敗対応 → 上のコードを実行すると、cpuのみしか出ず、「libcudnn.so.8 がない」という警告が出た。この場合は、cuDNNのインストールができていないらしい。

GPUを認識できているならば、あとはmnistなどを動かせばok。