#実行環境
ubuntu 20.04.1 LTS (日本語Ubuntu最新版)
Condaは使わない。
確実性を重視。
バージョン管理はpyenv
機体要件
CPU Ryzen7 5800X
GPU RTX3070
詳しくは
https://qiita.com/YU_GENE/items/09d7ffa85ad8e37dc063
#インストールするものを考える
TensorFlowのGPU環境を作るのは大変らしい。
Python,cuDNN,CUDAのバージョンが違うと動かない可能性があるからだ。
まず、Tensorflowのページに行って、ubuntuのTensorFlowのGPUバージョンの動作確認がされている最新版を確認しにいく。
2020/11/27現在、Ubuntu版TensorFlowは上のものが一番確実らしい。
#Pythonのバージョンを自在に操る
ubuntuインストール段階でのpythonのバージョンは3.8系だったが、pythonバージョンは3.7までが確認済みのようだから、pyenvというものを使って、自由自在にpythonのバージョンを管理できるようにする。
##pyenvのインストール
$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv
$ brew install pyenv
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
Ubuntuの場合、以下のコードを実行しないとpythonをインストールしてこれないので注意
$sudo apt-get install -y build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev python-openssl git
$sudo apt install libedit-d
##pythonの設定
今回は3.7系まで保証されているということなので、python3.7.9を入れる。
インストールできるもののリストは
$pyenv install --list | less
で確認できる。
$pyenv install 3.7.9
$pyenv versions
$pyenv shell 3.7.9
でインストール完了。試しにpythonを起動すると、きっとpython3.7.9が起動するはず。
インストール、確認、起動設定の順である。これでバージョン問題に悩まされることは一生ない。
アツいぜ。
#python仮想環境の構築
PC環境を破壊しないために、venvというものを使って仮想環境を作る。
ここでいう仮想環境とはVirtualBoxとかがPC自体の仮想環境だとすれば、Python言語だけの仮想環境みたいなものである。今回はtfという適当なディレクトリ下に仮想環境設定をする。pyenvでpythonを3.7.1にした状態で
$mkdir tf
$cd tf
$python -m venv .venv
これで設定は完了。仮想環境に入るにはこの状態で、
$source ~/tf/.venv/bin/activate
これで仮想環境に入れる。
左側に.venvと出れば成功。このコードは適当にエイリアスに保存しておくと楽。
#NVIDIAドライバのインストール
ちゃちゃっとインストール
他の方も記事にされているので、詳細は省略。
デフォルトグラフィックドライバを停止して、オートインストールするだけ!(やり方は下リンク)
https://qiita.com/sho8e69/items/66c1662c49ac89a024be
sudo ubuntu-drivers autoinstall

nvidia-smiを実行するとRTX3070の文字が。美しい。
#CUDAのインストール
さて、CUDAの確認済みバージョンは10.1だったな。
CUDA10.1はaptからそのまま入手できる。簡単。最新版が欲しかったらnvidiaのサイトに行くべきだが、今回は丁度10.1が欲しかったのでそのまま以下を実行。
$sudo apt install nvidia-cuda-toolkit
#TensorFlowのインストール
さて、TensorFlowの確認済みバージョンはTensorFlow2.1.0だったな。
仮想環境に入っている状態で、(pipは更新しといてね)
(.venv)$pip install tensorflow==2.1.0
で仮想環境のみにtensorflow2.1.0が入る。
pip listコマンドで入っているのが確認できる。
いいねぇ。
#cuDNNのインストール
CUDAと名前似てるけど、一応別物。
めんどいけど、以下で会員登録して
https://developer.nvidia.com/rdp/cudnn-archive
「CUDA10.1に対応したCuDNN7.6系」を探そう。
cuDNN Runtime Library for Ubuntu18.04 (Deb)
cuDNN Developer Library for Ubuntu18.04 (Deb)
をダウンロードして、
それぞれdpkg iコマンドで展開するだけ。簡単。
sudo dpkg -i libcudnn7_7.6.5.32-1+cuda10.1_amd64.deb
sudo dpkg -i libcudnn7-dev_7.6.5.32-1+cuda10.1_amd64.deb
#できたかな?
pythonで以下を実行してみよう。
from tensorflow.python.client import device_lib
device_lib.list_local_devices()

GPUの文言がちらほら。
一番下にはRTX3070の文字があるので正常にできたっぽい。
#まとめ
これで機械学習のために自作PCしたとか自慢できるね。
決して流行りのオンラインゲームがしたかったとかじゃないよ。
ほんとにね。(嘘)