Home About
Ubuntu , cuda , deeplearning , fastai

Ubuntu 20.04 server + GTX 1060 で PyTorch + fastai 用機械学習環境の構築覚え書き

Lobe( https://www.lobe.ai/ )の紹介記事を読んでいて、 ここまで画像分類が簡単になっているんだと驚く。 再び画像分類を自分でも試したくなり、取り急ぎ GPUで機械学習できる環境を構築した。 その備忘録です。

前提となる環境

pytorch-linux-pip

バージョンなどは今後もどんどん更新されるので、あくまで現在時点での話。

ポイント:

Ubuntu 20.04 server インストール

インストールは普段通りです。

ただし、 GPU をあらかじめセットした状態でインストール する必要がありました。 一回目のインストールで、GPUを設置しないで行ったあと、 GPUを設置して、起動したところネットワークが認識されなくなりました。 原因が不明で、すぐ解決できなかったので、 GPUを設置した上で、Ubuntu のインストールをやり直したところ、問題なくセットアップできました。

GPU認識確認

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 drivers 無効化

Nouveau ドライバーを無効化する必要があるようです。

以下の説明に沿ってそれを無効にします。

GPUとCUDAのセットアップ

これは、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

cuDNN のインストール

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, fastai インストール

ようやく本題の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 のインストールと利用

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 にアクセスできます。