とりあえずDockerをインストールしてrunできる所まで来たのでいよいよDeep learning環境を構築していこうと思う。
やることとしてはまずCentOS7にnvidiaのドライバを入れる。
これは基本以前にやったとおりでいい。
k-kuro.hatenadiary.jp
[kkuro@E5800-T110f-E ~]$ su パスワード: [root@E5800-T110f-E kkuro]# yum -y install kernel-devel-$(uname -r) kernel-header-$(uname -r) gcc make 読み込んだプラグイン:fastestmirror, langpacks Loading mirror speeds from cached hostfile epel/x86_64/metalink | 3.8 kB 00:00 * base: mirrors.cat.net * epel: ftp.jaist.ac.jp * extras: mirrors.cat.net * updates: mirrors.cat.net CityFan | 3.0 kB 00:00 base | 3.6 kB 00:00 docker-ce-stable | 3.5 kB 00:00 epel | 4.7 kB 00:00 extras | 2.9 kB 00:00 updates | 2.9 kB 00:00 (1/2): epel/x86_64/updateinfo | 1.0 MB 00:00 (2/2): epel/x86_64/primary_db | 6.9 MB 00:00 パッケージ kernel-header-3.10.0-1160.31.1.el7.x86_64 は利用できません。 パッケージ gcc-4.8.5-44.el7.x86_64 はインストール済みか最新バージョンです パッケージ 1:make-3.82-24.el7.x86_64 はインストール済みか最新バージョンです 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> パッケージ kernel-devel.x86_64 0:3.10.0-1160.31.1.el7 を インストール --> 依存性解決を終了しました。 依存性を解決しました ================================================================================ Package アーキテクチャー バージョン リポジトリー 容量 ================================================================================ インストール中: kernel-devel x86_64 3.10.0-1160.31.1.el7 updates 18 M トランザクションの要約 ================================================================================ インストール 1 パッケージ 総ダウンロード容量: 18 M インストール容量: 38 M Downloading packages: No Presto metadata available for updates kernel-devel-3.10.0-1160.31.1.el7.x86_64.rpm | 18 MB 00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction インストール中 : kernel-devel-3.10.0-1160.31.1.el7.x86_64 1/1 検証中 : kernel-devel-3.10.0-1160.31.1.el7.x86_64 1/1 インストール: kernel-devel.x86_64 0:3.10.0-1160.31.1.el7 完了しました! [root@E5800-T110f-E kkuro]# lspci | grep VGA 01:00.0 VGA compatible controller: NVIDIA Corporation GK208B [GeForce GT 710] (rev a1) 39:00.0 VGA compatible controller: Matrox Electronics Systems Ltd. MGA G200e [Pilot] ServerEngines (SEP1) (rev 02) [root@E5800-T110f-E kkuro]# wget http://jp.download.nvidia.com/XFree86/Linux-x86_64/460.84/NVIDIA-Linux-x86_64-460.84.run --2021-07-11 18:22:23-- http://jp.download.nvidia.com/XFree86/Linux-x86_64/460.84/NVIDIA-Linux-x86_64-460.84.run jp.download.nvidia.com (jp.download.nvidia.com) をDNSに問いあわせています... 2606:2800:247:2063:46e:21d:825:102e, 192.229.232.112 jp.download.nvidia.com (jp.download.nvidia.com)|2606:2800:247:2063:46e:21d:825:102e|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 177840337 (170M) [application/octet-stream] `NVIDIA-Linux-x86_64-460.84.run' に保存中 100%[======================================>] 177,840,337 31.2MB/s 時間 6.3s 2021-07-11 18:22:30 (26.9 MB/s) - `NVIDIA-Linux-x86_64-460.84.run' へ保存完了 [177840337/177840337] [root@E5800-T110f-E kkuro]# bash NVIDIA-Linux-x86_64-460.84.run Verifying archive integrity... OK Uncompressing NVIDIA Accelerated Graphics Driver for Linux-x86_64 460.84........................................................................................
こんな感じ。
[kkuro@E5800-T110f-E ~]$ sudo nvidia-smi [sudo] kkuro のパスワード: Sun Jul 11 18:25:13 2021 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 460.84 Driver Version: 460.84 CUDA Version: 11.2 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 GeForce GT 710 Off | 00000000:01:00.0 N/A | N/A | | 50% 57C P0 N/A / N/A | 0MiB / 980MiB | N/A Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+
さて、ここからは
Installation Guide — NVIDIA Cloud Native Technologies documentation
こちらのnvidiaの中の人の解説に従ってインストールを進めていく。
[kkuro@E5800-T110f-E ~]$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \ > && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo [libnvidia-container] name=libnvidia-container baseurl=https://nvidia.github.io/libnvidia-container/stable/centos7/$basearch repo_gpgcheck=1 gpgcheck=0 enabled=1 gpgkey=https://nvidia.github.io/libnvidia-container/gpgkey sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt [libnvidia-container-experimental] name=libnvidia-container-experimental baseurl=https://nvidia.github.io/libnvidia-container/experimental/centos7/$basearch repo_gpgcheck=1 gpgcheck=0 enabled=0 gpgkey=https://nvidia.github.io/libnvidia-container/gpgkey sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt [nvidia-container-runtime] name=nvidia-container-runtime baseurl=https://nvidia.github.io/nvidia-container-runtime/stable/centos7/$basearch repo_gpgcheck=1 gpgcheck=0 enabled=1 gpgkey=https://nvidia.github.io/nvidia-container-runtime/gpgkey sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt [nvidia-container-runtime-experimental] name=nvidia-container-runtime-experimental baseurl=https://nvidia.github.io/nvidia-container-runtime/experimental/centos7/$basearch repo_gpgcheck=1 gpgcheck=0 enabled=0 gpgkey=https://nvidia.github.io/nvidia-container-runtime/gpgkey sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt [nvidia-docker] name=nvidia-docker baseurl=https://nvidia.github.io/nvidia-docker/centos7/$basearch repo_gpgcheck=1 gpgcheck=0 enabled=1 gpgkey=https://nvidia.github.io/nvidia-docker/gpgkey sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt [kkuro@E5800-T110f-E ~]$ sudo yum clean expire-cache 読み込んだプラグイン:fastestmirror, langpacks リポジトリーを清掃しています: CityFan base docker-ce-stable epel extras ...: libnvidia-container nvidia-container-runtime nvidia-docker updates 9 個の metadata ファイルを削除しました [kkuro@E5800-T110f-E ~]$ sudo yum install -y nvidia-docker2 読み込んだプラグイン:fastestmirror, langpacks Loading mirror speeds from cached hostfile epel/x86_64/metalink | 3.8 kB 00:00 * base: mirrors.cat.net * epel: ftp.jaist.ac.jp * extras: mirrors.cat.net * updates: mirrors.cat.net CityFan | 3.0 kB 00:00 base | 3.6 kB 00:00 docker-ce-stable | 3.5 kB 00:00 extras | 2.9 kB 00:00 libnvidia-container/x86_64/signature | 833 B 00:00 https://nvidia.github.io/libnvidia-container/gpgkey から鍵を取得中です。 Importing GPG key 0xF796ECB0: Userid : "NVIDIA CORPORATION (Open Source Projects) <cudatools@nvidia.com>" Fingerprint: c95b 321b 61e8 8c18 09c4 f759 ddca e044 f796 ecb0 From : https://nvidia.github.io/libnvidia-container/gpgkey libnvidia-container/x86_64/signature | 2.1 kB 00:00 !!! nvidia-container-runtime/x86_64/signature | 833 B 00:00 https://nvidia.github.io/nvidia-container-runtime/gpgkey から鍵を取得中です。 Importing GPG key 0xF796ECB0: Userid : "NVIDIA CORPORATION (Open Source Projects) <cudatools@nvidia.com>" Fingerprint: c95b 321b 61e8 8c18 09c4 f759 ddca e044 f796 ecb0 From : https://nvidia.github.io/nvidia-container-runtime/gpgkey nvidia-container-runtime/x86_64/signature | 2.1 kB 00:00 !!! nvidia-docker/x86_64/signature | 833 B 00:00 https://nvidia.github.io/nvidia-docker/gpgkey から鍵を取得中です。 Importing GPG key 0xF796ECB0: Userid : "NVIDIA CORPORATION (Open Source Projects) <cudatools@nvidia.com>" Fingerprint: c95b 321b 61e8 8c18 09c4 f759 ddca e044 f796 ecb0 From : https://nvidia.github.io/nvidia-docker/gpgkey nvidia-docker/x86_64/signature | 2.1 kB 00:00 !!! updates | 2.9 kB 00:00 (1/3): libnvidia-container/x86_64/primary | 17 kB 00:00 (2/3): nvidia-docker/x86_64/primary | 8.0 kB 00:00 (3/3): nvidia-container-runtime/x86_64/primary | 11 kB 00:00 libnvidia-container 105/105 nvidia-container-runtime 71/71 nvidia-docker 54/54 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> パッケージ nvidia-docker2.noarch 0:2.6.0-1 を インストール --> 依存性の処理をしています: nvidia-container-runtime >= 3.5.0 のパッケージ: nvidia-docker2-2.6.0-1.noarch --> トランザクションの確認を実行しています。 ---> パッケージ nvidia-container-runtime.x86_64 0:3.5.0-1 を インストール --> 依存性の処理をしています: nvidia-container-toolkit < 2.0.0 のパッケージ: nvidia-container-runtime-3.5.0-1.x86_64 --> 依存性の処理をしています: nvidia-container-toolkit >= 1.5.0 のパッケージ: nvidia-container-runtime-3.5.0-1.x86_64 --> トランザクションの確認を実行しています。 ---> パッケージ nvidia-container-toolkit.x86_64 0:1.5.1-2 を インストール --> 依存性の処理をしています: libnvidia-container-tools < 2.0.0 のパッケージ: nvidia-container-toolkit-1.5.1-2.x86_64 --> 依存性の処理をしています: libnvidia-container-tools >= 1.4.0 のパッケージ: nvidia-container-toolkit-1.5.1-2.x86_64 --> トランザクションの確認を実行しています。 ---> パッケージ libnvidia-container-tools.x86_64 0:1.4.0-1 を インストール --> 依存性の処理をしています: libnvidia-container1(x86-64) >= 1.4.0-1 のパッケージ: libnvidia-container-tools-1.4.0-1.x86_64 --> 依存性の処理をしています: libnvidia-container.so.1(NVC_1.0)(64bit) のパッケージ: libnvidia-container-tools-1.4.0-1.x86_64 --> 依存性の処理をしています: libnvidia-container.so.1()(64bit) のパッケージ: libnvidia-container-tools-1.4.0-1.x86_64 --> トランザクションの確認を実行しています。 ---> パッケージ libnvidia-container1.x86_64 0:1.4.0-1 を インストール --> 依存性解決を終了しました。 依存性を解決しました ================================================================================ Package アーキテクチャー バージョン リポジトリー 容量 ================================================================================ インストール中: nvidia-docker2 noarch 2.6.0-1 nvidia-docker 9.0 k 依存性関連でのインストールをします: libnvidia-container-tools x86_64 1.4.0-1 libnvidia-container 43 k libnvidia-container1 x86_64 1.4.0-1 libnvidia-container 87 k nvidia-container-runtime x86_64 3.5.0-1 nvidia-container-runtime 827 k nvidia-container-toolkit x86_64 1.5.1-2 nvidia-container-runtime 764 k トランザクションの要約 ================================================================================ インストール 1 パッケージ (+4 個の依存関係のパッケージ) 総ダウンロード容量: 1.7 M インストール容量: 4.6 M Downloading packages: (1/5): libnvidia-container-tools-1.4.0-1.x86_64.rpm | 43 kB 00:00 (2/5): nvidia-docker2-2.6.0-1.noarch.rpm | 9.0 kB 00:00 (3/5): libnvidia-container1-1.4.0-1.x86_64.rpm | 87 kB 00:00 (4/5): nvidia-container-toolkit-1.5.1-2.x86_64.rpm | 764 kB 00:00 (5/5): nvidia-container-runtime-3.5.0-1.x86_64.rpm | 827 kB 00:05 -------------------------------------------------------------------------------- 合計 288 kB/s | 1.7 MB 00:06 Running transaction check Running transaction test Transaction test succeeded Running transaction インストール中 : libnvidia-container1-1.4.0-1.x86_64 1/5 インストール中 : libnvidia-container-tools-1.4.0-1.x86_64 2/5 インストール中 : nvidia-container-toolkit-1.5.1-2.x86_64 3/5 インストール中 : nvidia-container-runtime-3.5.0-1.x86_64 4/5 インストール中 : nvidia-docker2-2.6.0-1.noarch 5/5 検証中 : nvidia-container-toolkit-1.5.1-2.x86_64 1/5 検証中 : nvidia-container-runtime-3.5.0-1.x86_64 2/5 検証中 : nvidia-docker2-2.6.0-1.noarch 3/5 検証中 : libnvidia-container1-1.4.0-1.x86_64 4/5 検証中 : libnvidia-container-tools-1.4.0-1.x86_64 5/5 インストール: nvidia-docker2.noarch 0:2.6.0-1 依存性関連をインストールしました: libnvidia-container-tools.x86_64 0:1.4.0-1 libnvidia-container1.x86_64 0:1.4.0-1 nvidia-container-runtime.x86_64 0:3.5.0-1 nvidia-container-toolkit.x86_64 0:1.5.1-2 完了しました! [kkuro@E5800-T110f-E ~]$ sudo systemctl restart docker [kkuro@E5800-T110f-E ~]$ sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi Unable to find image 'nvidia/cuda:11.0-base' locally 11.0-base: Pulling from nvidia/cuda 54ee1f796a1e: Pull complete f7bfea53ad12: Pull complete 46d371e02073: Pull complete b66c17bbf772: Pull complete 3642f1a6dfb3: Pull complete e5ce55b8b4b9: Pull complete 155bc0332b0a: Pull complete Digest: sha256:774ca3d612de15213102c2dbbba55df44dc5cf9870ca2be6c6e9c627fa63d67a Status: Downloaded newer image for nvidia/cuda:11.0-base +-----------------------------------------------------------------------------+ | NVIDIA-SMI 460.84 Driver Version: 460.84 CUDA Version: 11.2 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 GeForce GT 710 Off | 00000000:01:00.0 N/A | N/A | | 50% 57C P0 N/A / N/A | 0MiB / 980MiB | N/A Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+
よしよしちゃんと動くじゃないか。
tensorflowのdockerも試してみよう。
[kkuro@E5800-T110f-E ~]$ docker run --gpus all -it --rm --name tensorflow-gpu -p 8888:8888 tensorflow/tensorflow:latest-gpu-py3-jupyter Unable to find image 'tensorflow/tensorflow:latest-gpu-py3-jupyter' locally latest-gpu-py3-jupyter: Pulling from tensorflow/tensorflow 7ddbc47eeb70: Pulling fs layer c1bbdc448b72: Pulling fs layer 8c3b70e39044: Pulling fs layer 45d437916d57: Pulling fs layer d8f1569ddae6: Pulling fs layer 85386706b020: Pulling fs layer ee9b457b77d0: Pulling fs layer bebfcc1316f7: Pulling fs layer 644140fd95a9: Pull complete d6c0f989e873: Pull complete 7a8e64f26211: Pull complete c33b03e4dd22: Pull complete bca93af797c1: Pull complete 47f6c197be35: Pull complete e5da48aa9554: Pull complete ca68d98a90c4: Pull complete 2059de27f7c8: Pull complete 55d02aea1458: Pull complete 32162ecb0c59: Pull complete 47520dc72e8e: Pull complete 3dafed94e1f2: Pull complete dc228e76e4f0: Pull complete 2c6922dc5a5f: Pull complete a960e6d108fd: Pull complete 6818a780ae00: Pull complete 06dfbeeed7ba: Pull complete 5890e026a0a0: Pull complete eeddfe30f3d2: Pull complete 187170305445: Pull complete 2e20a8960c42: Pull complete 9f1bf726c909: Pull complete Digest: sha256:901b827b19d14aa0dd79ebbd45f410ee9dbfa209f6a4db71041b5b8ae144fea5 Status: Downloaded newer image for tensorflow/tensorflow:latest-gpu-py3-jupyter ________ _______________ ___ __/__________________________________ ____/__ /________ __ __ / _ _ \_ __ \_ ___/ __ \_ ___/_ /_ __ /_ __ \_ | /| / / _ / / __/ / / /(__ )/ /_/ / / _ __/ _ / / /_/ /_ |/ |/ / /_/ \___//_/ /_//____/ \____//_/ /_/ /_/ \____/____/|__/ WARNING: You are running this container as root, which can cause new files in mounted volumes to be created as the root user on your host machine. To avoid this, run the container by specifying your user's userid: $ docker run -u $(id -u):$(id -g) args... [I 09:46:31.559 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret jupyter_http_over_ws extension initialized. Listening on /http_over_websocket [I 09:46:31.739 NotebookApp] Serving notebooks from local directory: /tf [I 09:46:31.739 NotebookApp] The Jupyter Notebook is running at: [I 09:46:31.739 NotebookApp] http://dea93aef777e:8888/?token=95c9c68d822e8403e3a886e916eaf1ba3c7981e5cbb5f789 [I 09:46:31.739 NotebookApp] or http://127.0.0.1:8888/?token=95c9c68d822e8403e3a886e916eaf1ba3c7981e5cbb5f789 [I 09:46:31.739 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). [C 09:46:31.743 NotebookApp] To access the notebook, open this file in a browser: file:///root/.local/share/jupyter/runtime/nbserver-1-open.html Or copy and paste one of these URLs: http://dea93aef777e:8888/?token=95c9c68d822e8403e3a886e916eaf1ba3c7981e5cbb5f789 or http://127.0.0.1:8888/?token=95c9c68d822e8403e3a886e916eaf1ba3c7981e5cbb5f789
ちゃんと起動するし、webブラウザでもJupyter notebookが起動し、コマンドも走るよ。
ちなみにホスト名からも分かる通りHaswell世代のポンコツサーバ(2000円でゲット)にGT710などという最底辺グラボなんで、実際のところヤクタタズなんだが。