DeepLearning CUDA - eiichiromomma/CVMLAB GitHub Wiki
DeepLearning) CUDA
(CUDA環境の構築
Ubuntu 20.04 環境
- GeForce RTX 3070
Ubuntu インストールから
諸々新しいハードに対応できてない。 EtherもダメらしいのでUSB3.1(Type C)のEtherを取り敢えず使う。
インストールメディア起動時に grub画面でeを押してずらずらと並んでいる命令からquiet splash を消して
nomodeset modprobe.blacklist=nouveau
に書き換えF10を押してインストールに進む。
インストールの際,"Install third-party software for graphics and Wi-Fi hardware and additional media formats"にチェックを入れる。 インストールし終えて再起動したら
sudo apt update; sudo apt upgrade -y; sudo apt install build-essential -y
で再起動。
CUDA
素直に入る。
CUDA Toolkitので"Download Now"を選び,Linux→x86_64→Ubuntu→20.04→dev(network) を選ぶと"Base Installer"が出てくるのでそれに従ってコピペ。 その後で
sudo apt install cuda-drivers libcudnn8-dev libcusolver10 mesa-utils -y
sudo systemctl restart gdm
CUDA11にも関わらず,libcusolver10を入れるのはTensorflowの問題で,何故かそっちが参照されるため。(cuda無関係に /usr/lib/x86_64-linux-gnu/libcusolver.so.10 に置かれる)
gdmが再起動した後で
nvidia-smi
でGPUが認識されてるか確認する。
ここらでUbuntuを再起動。(しなくてもいい)
Tensorflow-GPU の確認
sudo apt install python3-pip ipython3 -y
sudo pip3 install tensorflow-gpu keras
で入るが,
export TF_FORCE_GPU_ALLOW_GROWTH=true
を実行しておかないとcudnnでエラーを吐いて死ぬ。(.bashrcとかに書いておく)
その後Keras Code examplesからMNISTあたりをコピペして試してみる。デバイスがmodel構築時にエラーが出てないかを確認する(エラーが出るとCPUに切り替わる)。
RTL8125
sudo apt install dkms chromium-browser -y
でdkmsとchromiumを入れておく。 RealtekからRTL8125のドライバソースをダウンロードする。ちなみにchromiumを入れるのはFirefoxだとRealtekのサイトのCaptchaが表示されないから。 配布ページはChromiumで開く。 で,展開した後に
cd path_to_sources
sudo sh ./autorun.sh
でインストールされる。
Docker のインストール
公式のガイド に従う。
sudo apt-get update
sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
NVIDIAの指示 に従ってnvidia-docker2も入れる
Docker+GPU環境
CUDAとOpenGLが有効なcudaglコンテナがオススメだがUbuntu18.xなのでlibcusolverの作業も必要。 ※dockerhubをチェックして最新のバージョンに合わせること
- コンテナ名: cu11-u18-gl
- イメージ: cudagl:11.2.1-devel-ubuntu18.04
- 共有フォルダ: $HOME/dockermount
- GPU: 全部使う設定
- ポート素通し: 8888, 6006
xhost +
sudo docker pull nvidia/cudagl:11.2.1-devel-ubuntu18.04
sudo docker run --privileged=true --name cu11-u18-gl -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v $HOME/dockermount:/mnt --gpus all -it -p 8888:8888 -p 6006:6006 nvidia/cudagl:11.2.1-devel-ubuntu18.04
でコンテナに入り
apt update; apt install libcudnn8-dev mesa-utils cuda-cusolver-10-2 -y
cd /usr/local/cuda-11.2/targets/x86_64-linux/lib
ln -s /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcusolver.so.10.3.0.89 libcusolver.so.10
export TF_FORCE_GPU_ALLOW_GROWTH=true
で設定完了。exportは.bashrcにでも書いておくと良い。
glxgears
でギアが回るウィンドウが開けばOpenGLでのXの転送も成功。
pythonのバージョンが古いのでAnacondaを入れる。
cd
apt install wget -y
wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh
sh Anaconda3-2020.11-Linux-x86_64.sh
source ~/.bashrc
でbase環境が出来るので,あとは普通に仮想環境を作るなりして
pip install tensorflow-gpu keras
のように進めれば良い。
Ubuntu 18.04 環境
Ubuntu 20.xだとlibcusolver10をaptで入れると普通に参照される場所に入るのでldconfigすれば直ぐ動くが,18.xはlibcusolver10というパッケージは無いので
sudo apt install cuda-cusolver-10-2
で/usr/local/cuda-10.x以下に入るのでCUDA11の方にシンボリックリンクを張る。(バージョンはある物に合わせる)
ln -s /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcusolver.so.10.3.0.89 libcusolver.so.10
あと
export TF_FORCE_GPU_ALLOW_GROWTH=true
も必要。
Ubuntu 16.04 環境 (古い)
- Ubuntu 16.04 LTS 64bit
- nVidia Geforce 1080
環境構築
Ubuntuを入れる。nvidiaのドライバを入れるまではオンボードVGAがあるならそっちを使っていた方がトラブル対処しやすい。
sudo apt install aptitude
sudo aptitude update
sudo aptitude upgrade
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install linux-headers-$(uname -r)
sudo apt-get install nvidia-367
sudo aptitude install ssh
sudo aptitude install mesa-common-dev
sudo aptitude install freeglut3-dev
ツール関係のインストール
sudo aptitude install chromium-browser
sudo aptitude install gnome-tweak-tool
sudo aptitude install ntpdate
gnome-tweak-tool
sudo aptitude install git python-pip vim fcitx-skk
LANG=C xdg-user-dirs-gtk-update
CUDAのインストール。ファイルはnVidiaから拾ってくる(Ubuntuのdebファイル)
sudo dpkg -i cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64.deb
sudo aptitude update
sudo aptitude install cuda
nouveauの無効化
cd /etc/modprobe.d/
sudo vim blacklist-nouveau.conf
で中身を
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
とする。
sudo vim blacklist-kms.conf
で中身を
options nouveau modeset=0
とする。
sudo update-initramfs -u
cuDnnの入手とインストール。CUDA同様にnVidiaから拾ってくる(要ログイン)
tar xvzf cudnn-8.0-linux-x64-v5.1.tgz
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
環境変数の設定
vim ~/.bashrc
で最後に
export PATH=/usr/local/nvidia/bin:/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64
を追加する。
CUDAのサンプルをビルドして動作確認
cp -r /usr/local/cuda/samples ./
cd samples/
make -j8
cd bin/x86_64/linux/release/
./deviceQuery