2080Ti持っていて、とりあえずDLやりたいっていう方へ


Ubuntu 18.04 + Cuda 10 + Cudnn 7 + tensorflow 1.13.1 + pytorch

たまたまRTX2080Tiサーバーを何台か立ち上げることになったので、その環境整備周りについて殴り書きしておく。
また、直でインストールしたら、どハマりして、半日ぐらい無駄にしたので、そんなことせずにできる人のためのdocker編も書いておく。

前提として、Tensorflow / Pytorch / Cuda10 がインストールされた前提のUbuntu18.04の環境を作り上げる。

まず大前提の話からしよう

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.67 Driver Version: 418.67 CUDA Version: 10.1 |
|-------------------------------+----------------------+----------------------+

こいつあるやん、このcuda versionみたいなのは実はあてになるものではないっていうのがキモ
ここにも書かれているけど、CUDA Version: 10.1こいつは今のドライバーで一番インストールできる「「可能」」なものであって、全然今インストールされているものを反映してない。から、気にしない。
https://stackoverflow.com/questions/53422407/different-cuda-versions-shown-by-nvcc-and-nvidia-smi

むしろ、重要なのはnvcc であったり、
/usr/local/cuda/version.txtに書かれているものである。これ重要。

直でインストールする編

こちらの記事を参考にして、基本的にこのページの最後にある成功編で色々やった。

echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/extras/CUPTI/lib64' >> ~./bashrc

NVIDIA Cuda 10.0 を入れる。そうじゃないと、RTX様が怒る。

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo apt-get update
wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
sudo apt install ./nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
sudo apt-get update 

NVIDIA ドライバーをCLIから入れる
いっぱいドライバーに失敗すると、autoinstallとか.run以外信じない主義になっていくが、これは本当に安心。
418でうまくいかなかったら、 ubuntu-drivers devicesでオススメされているものをチェックするべき
今回は418でいく
sudo apt-get install --no-install-recommends nvidia-driver-410

入れたら、それで起動するかを確かめる、
reboot

GPUドライバーとcuda 確認する
$ nvidia-smi

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.67       Driver Version: 418.67       CUDA Version: 10     |
|-------------------------------+----------------------+----------------------+

喜ぶ。

次にCudnn 7 を入れる。そうじゃないと、tensorflow-gpuが怒る。devもちゃんとインストールする。

sudo apt-get install --no-install-recommends \
    cuda-10-0 \
    libcudnn7=7.4.1.5-1+cuda10.0  \
    libcudnn7-dev=7.4.1.5-1+cuda10.0

入れたら、それで起動するかを確かめる、
reboot

GPUドライバーとcuda 確認する
$ nvidia-smi

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.67       Driver Version: 418.67       CUDA Version: 10.1    |
|-------------------------------+----------------------+----------------------+

喜ぶ。

Docker編

以下が使ってるdockerfile

Nvidia Docker前提で、

立ち上げコマンドとして、Dockerfile作成して下のdockerfileをコピペして、
docker build ./
からの
docker run -it --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=1,2,3 {docker-image-id} /bin/bashとかで操作できる

FROM nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04
LABEL maintainer="kkshmz"

ENV LANG=C.UTF-8 LC_ALL=C.UTF-8

RUN apt-get update --fix-missing && \
    apt-get install -y --no-install-recommends wget bzip2 ca-certificates libglib2.0-0 libxext6 libsm6 libxrender1 git mercurial subversion unzip libjpeg-dev libpng-dev build-essential && \
    apt-get -y autoremove && apt-get -y autoclean

RUN rm -rf /var/cache/apt

#install anaconda and install pytorch
RUN wget --quiet https://repo.anaconda.com/archive/Anaconda3-2019.07-Linux-x86_64.sh -O ~/anaconda.sh && \
    /bin/bash ~/anaconda.sh -b -p /opt/conda && \
    rm ~/anaconda.sh && \
    ln -s /opt/conda/etc/profile.d/conda.sh /etc/profile.d/conda.sh && \
    echo ". /opt/conda/etc/profile.d/conda.sh" >> ~/.bashrc && \
    echo "conda activate base" >> ~/.bashrc && \
    /opt/conda/bin/conda install -y python=$PYTHON_VERSION numpy pyyaml scipy ipython mkl mkl-include ninja cython typing && \
    /opt/conda/bin/conda install -y pytorch torchvision cudatoolkit=10.0 -c pytorch && \
    find /opt/conda/ -follow -type f -name '*.a' -delete && \
    find /opt/conda/ -follow -type f -name '*.js.map' -delete && \
    /opt/conda/bin/conda clean -ya
#set conda env 
ENV PATH /opt/conda/bin:$PATH
#set command default
CMD [ "/bin/bash" ]

#install tensorflow
RUN pip install tensorflow-gpu==1.13.1

tensorflow 系のをdockerで整備しようと思うと、こういうエラーが出てくるけど、
include/cudnn.h:14:30: fatal error: cuda_runtime.h: No such file or directory
これらは公式docs にも書かれているように、参照しているdocker file の起点を
FROM nvidia/cuda:10.0-cudnn7-runtime-ubuntu18.04からFROM nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04 に変えることによって解消できる。