Lobe( https://www.lobe.ai/ )の紹介記事を読んでいて、 ここまで画像分類が簡単になっているんだと驚く。 再び画像分類を自分でも試したくなり、取り急ぎ GPUで機械学習できる環境を構築した。 その備忘録です。
バージョンなどは今後もどんどん更新されるので、あくまで現在時点での話。
ポイント:
インストールは普段通りです。
ただし、 GPU をあらかじめセットした状態でインストール する必要がありました。 一回目のインストールで、GPUを設置しないで行ったあと、 GPUを設置して、起動したところネットワークが認識されなくなりました。 原因が不明で、すぐ解決できなかったので、 GPUを設置した上で、Ubuntu のインストールをやり直したところ、問題なくセットアップできました。
Ubuntu Serverインストール後、GPUが認識されているか確認します。
lspci コマンドで該当 GPU が標準出力されていればよい。
$ lspci | grep -i nvidia
01:00.0 VGA compatible controller: NVIDIA Corporation GP106 [GeForce GTX 1060 6GB] (rev a1)
なお、対応GPUリスト for CUDAはこちら https://developer.nvidia.com/cuda-gpus です。
Nouveau ドライバーを無効化する必要があるようです。
以下の説明に沿ってそれを無効にします。
これは、https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#ubuntu-installation に説明があります。
なんやかんやして sudo apt install cuda すればいいのですが、 これでは(現時点では)最新の 11.5 がインストールされてしまい不都合です。 なぜなら PyTorch が CUDA 11.3 にしか(現時点では)対応していないから。
そこで、sudo apt install cuda-11-3 として、11.3 を入れます。 また、sudo apt install nvidia-gds を実行するように(そのURLには)説明があるのですが、 入れると CUDA 11.5 用の nvidia GDS が入るようで、よくわからないので、今のところ GDS は入れていません 。
まとめると現時点では以下でセットアップできた。
Ubuntu のバージョン確認:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.3 LTS
Release: 20.04
Codename: focal
GCC インストール:
$ sudo apt install gcc
CUDA インストール:
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
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /"
sudo apt-get update
sudo apt-get install cuda-11-3
ここで一回マシンを再起動。
その後、~/.bashrc に CUDA へのパスの追加。
export PATH=/usr/local/cuda-11.3/bin${PATH:+:${PATH}}
作動確認:
$ cd /usr/local/cuda-11.3/extras/demo_suite
$ ./bandwidthTest
CUDAを使って、DNN(NVIDIA CUDA Deep Neural Network)を実行するためのライブラリをインストールする必要がある。 これは、Nvidia の会員登録する必要があります。 メンバーになった上で、cuDNNのダウンロードします。
CUDA 11.3 用の cuDNNを上記URLから入手します。
cudnn-11.3-linux-x64-v8.2.1.32.tgz などのファイルを入手したら展開して以下のような感じで配置。
sudo cp cuda/include/cudnn.h /usr/local/cuda-11.3/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-11.3/lib64/
sudo chmod a+r /usr/local/cuda-11.3/include/cudnn.h
sudo chmod a+r /usr/local/cuda-11.3/lib64/libcudnn*
ようやく本題のPyTorchインストールです。
pip3 と nvidia-ml-py3:
$ sudo apt install python3-pip
$ pip3 install nvidia-ml-py3
https://pytorch.org/get-started/locally/ にいき、 自分の環境にあったインストールコマンドを入手。
$ pip3 install torch==1.10.0+cu113 ...省略
fastai も入れましょう。
$ pip3 install fastai
Jupyter Notebook なくてもテキストファイルに python のスクリプトを書いて実行すればいいだけなんですが。 しかし、fastai を使う場合は、Jupyter があるとやはり便利です。
インストール:
$ pip3 install jupyter
プロジェクトディレクトリを作成してそこで実行:
$ mkdir myproject
$ cd myproject
$ jupyter notebook
これだけです。 これで Jupyter のウェブサーバが起動するので、ブラウザでアクセスすれよい。 ですが、Jupyter をインストールしたのが Ubuntu Server 上なので、この同じマシンでは (今のところ)Firefoxなどのブラウザ起動できません。
いつも使っている クライアントマシン (Ubuntu Desktop や Chromebook の Linux) から、SSH して この Jupyter Notebook を使うには以下のように ポートフォワーディングオプション付きで実行すればよい。
$ ssh -L 8888:localhost:8888 foo@my-ubuntu-server-ip-address
これでログインした上で、jupyter notebook すれば、ログイン元のマシン(Ubuntu Desktop とか Chromebook Linux )上の ブラウザから 起動したその jupyter notebook にアクセスできます。