みらいテックラボ

音声・画像認識や機械学習など, 週末プログラマである管理人が興味のある技術の紹介や実際にトライしてみた様子などメモしていく.

深層学習用に低火力PCを組み立てた(5)

人工知能技術戦略会議等主催 第1回AIチャレンジコンテスト[1][2]で入賞賞品としていただいたNVIDIA GTX-1060 Founders Editionを活用しようと, 「低火力コンピューティング」のPCを組み立てた.

あらから約1年, 「低火力コンピューティング」のPCはDeep Learningちょいお試しマシンとして活躍してきた.
現在, マシンのOSはUbuntu 16.04 LTSなのだが, 4月にUbuntu 18.04 LTSがリリースされたので, ディスク整理もかねて, アップデートでなく新規インストールしてみた.
前回ほどトラブらなかったが, 一応手順や設定等をメモしておく.

関連記事:

1. Ubuntu 18.04 LTSのインストール
Ubuntu 16.04をインストールしたときは, OS付属のドライバ群がIntel HD Graphics 630に対応していなくて別途ドライバのインストールが必要だったが, 18.04では対応されており簡単にX Windowが動作した.

2. NVIDIAドライバ /CUDA/cuDNNのインストール[3][4]
Ubuntu 18.04では, リポジトリNVIDIA Driver & CUDAがあるようで, aptコマンドで簡単にインストールできるのだが, この場合CUDA 9.1がインストールされてしまう.
今回インストールしようとしているTensorFlow 1.10は, 以下のバージョンで動作するとのことなので, 各インストーラをダウンロードしインストールしていくことにする.
GPU drivers. CUDA 9.0 requires 384.x or higher.
・CUDA Toolkit 9.0.
・cuDNN SDK (>= 7.2)

2.1 NVIDIAドライバ
ここから, GTX-1060用のLinuxドライバをダウンロードし, インストールする.
前回X Windowのログインループの件があったので, 今回もOpenGL関連をはずすオプションを指定してインストールした.

 $ chmod a+x NVIDIA-Linux-x86_64-390.87.run

 $ sudo apt install dkms

 $ sudo ./NVIDIA-Linux-x86_64-390.87.run --silent --no-opengl-files --no-libglx-indirect --dkms

2.2 CUDA 9.0
ここから, Linux 17.04用のCUDA 9.0をダウンロードし, インストールする.
2018/9/15時点では, Ubuntu 18.04用は準備されてないが, CUDA 9.0の最新版を使用した.

 $ chmod a+x cuda_9.0*
 $ sudo ./cuda_9.0.176_384.81_linux.run --silent --no-opengl-libs --toolkit 
 Error: unsupported compiler: 7.3.0. Use --override to override this check.

エラーとなるので, "--override"を付けて再度実行.
インストールが完了したら, Patch1~4もあてる.

 $ sudo ./cuda_9.0.176_384.81_linux.run --silent --no-opengl-libs --toolkit --override

 $ sudo ./cuda_9.0.176.1_linux.run

 $ sudo ./cuda_9.0.176.2_linux.run

 $ sudo ./cuda_9.0.176.3_linux.run

 $ sudo ./cuda_9.0.176.4_linux.run

.bashrcにパスを追加.

export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"

2.3 cuDNN v7.2
ここから, CUDA 9.0用のcuDNN v7.2をダウンロードし, インストールする.

 $ tar zxvf cudnn-9.0-linux-x64-v7.2.1.38.tgz
 
 $ sudo cp -a cuda/include/* /usr/local/cuda/include
 $ sudo cp -a cuda/lib64/* /usr/local/cuda/lib64
 $ sudo ldconfig

2.4 動作確認
まずは, nvidia-smiコマンドで, GTX-1060が見えているか確認.

 $ nvidia-smi
 Sat Sep 15 11:57:09 2018       
 +-----------------------------------------------------------------------------+
 | NVIDIA-SMI 390.87                 Driver Version: 390.87                    |
 |-------------------------------+----------------------+----------------------+
 | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
 | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
 |===============================+======================+======================|
 |   0  GeForce GTX 106...  Off  | 00000000:01:00.0 Off |                  N/A |
 | 42%   37C    P5     6W / 120W |     73MiB /  6078MiB |      1%      Default |
 +-------------------------------+----------------------+----------------------+
                                                                                
 +-----------------------------------------------------------------------------+
 | Processes:                                                       GPU Memory |
 |  GPU       PID   Type   Process name                             Usage      |
 |=============================================================================|
 |    0      1287      G   /usr/lib/xorg/Xorg                            71MiB |
 +-----------------------------------------------------------------------------+

一応GTX-1060は見えているが, X Window がGTX-1060で動いているようだ.
X Windowは, Intel HD Graphics 630側で動かしたいので, xorg.confの設定が必要そうだ.

設定の前に, TensorFlow 1.10をインストールし, TensorFlowからGPUが見えているか確認しておく.
(TensorFlowのインストールは省略)

 $ python
 Python 3.6.6 |Anaconda, Inc.| (default, Jun 28 2018, 11:14:51)
 [GCC 7.2.0] on linux
 Type "help", "copyright", "credits" or "license" for more information.
 >>> from tensorflow.python.client import device_lib
 >>> device_lib.list_local_devices()
 2018-09-15 12:05:25.516716: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
 2018-09-15 12:05:25.677127: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:897] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
 2018-09-15 12:05:25.677544: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1405] Found device 0 with properties:
 name: GeForce GTX 1060 6GB major: 6 minor: 1 memoryClockRate(GHz): 1.7085
 pciBusID: 0000:01:00.0
 totalMemory: 5.94GiB freeMemory: 5.79GiB
 2018-09-15 12:05:25.677557: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1484] Adding visible gpu devices: 0
 2018-09-15 12:05:27.067888: I tensorflow/core/common_runtime/gpu/gpu_device.cc:965] Device interconnect StreamExecutor with strength 1 edge matrix:
 2018-09-15 12:05:27.067922: I tensorflow/core/common_runtime/gpu/gpu_device.cc:971]      0
 2018-09-15 12:05:27.067930: I tensorflow/core/common_runtime/gpu/gpu_device.cc:984] 0:   N
 2018-09-15 12:05:27.068509: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1097] Created 
 TensorFlow device (/device:GPU:0 with 5566 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1060 6GB, pci bus id: 0000:01:00.0, compute capability: 6.1)
 [name: "/device:CPU:0"
 device_type: "CPU"
 memory_limit: 268435456
 locality {
 }
 incarnation: 295793035274468906
 , name: "/device:GPU:0"
 device_type: "GPU"
 memory_limit: 5836505088
 locality {
   bus_id: 1
   links {
   }
 }
 incarnation: 7450773681115942002
 physical_device_desc: "device: 0, name: GeForce GTX 1060 6GB, pci bus id: 0000:01:00.0, compute capability: 6.1"
 ]
 >>>

TensorFlowからも, GPUがちゃんと見えているようだ.

3. X Windowの設定[4]
先ほど, X WindowがGTX-1060で動作していたので, xorg.confグラフィックカードの設定を行う.

設定の前に, Intel HD Graphics 630のBusIDを調べておく.

 $ lspci | grep VGA
 00:02.0 VGA compatible controller: Intel Corporation HD Graphics 630 (rev 04)
 01:00.0 VGA compatible controller: NVIDIA Corporation GP106 [GeForce GTX 1060 6GB] (rev a1)

[xorg.conf]
Section "ServerLayout"
Identifier "Layout"
Screen 0 "intel"
EndSection

Section "Device"
Identifier "intel"
Driver "intel"
BusID "PCI:0:2:0"
EndSection

Section "Screen"
Identifier "intel"
Device "intel"
EndSection

xorg.confを/etc/X11に配置しrebootすると, 今度は思ったようにX WindowIntel HD Graphics 630で動いているようだ.

 $ nvidia-smi
 Sat Sep 15 12:20:17 2018
 +-----------------------------------------------------------------------------+
 | NVIDIA-SMI 390.87                 Driver Version: 390.87                    |
 |-------------------------------+----------------------+----------------------+
 | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
 | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
 |===============================+======================+======================|
 |   0  GeForce GTX 106...  Off  | 00000000:01:00.0 Off |                  N/A |
 |  0%   36C    P0    25W / 120W |      0MiB /  6078MiB |      0%      Default | 
 +-------------------------------+----------------------+----------------------+

 +-----------------------------------------------------------------------------+
 | Processes:                                                       GPU Memory |
 |  GPU       PID   Type   Process name                             Usage      |
 |=============================================================================|
 |  No running processes found                                                 |
 +-----------------------------------------------------------------------------+

一応, これでDeep Learningお試し環境Ubuntu 18.04 LTSにアップできた.

実際に, Deep Learningのモデル学習がGPUで動作するか確認してみよう....

----
参照URL:
[1] SIGNATE - Data Science Competition
[2] 第1回AIチャレンジコンテスト(料理分類部門)に挑戦してみた!! (3) - みらいテックラボ
[3] GPU カードドライバーのインストール - Tesla GPU サーバー(時間課金)サポートサイト
[4] Ubuntu 16.04にGTX 1080Tiドライバをインストール(外付けGPUを計算のみで使用したい)




Ubuntu はじめる&楽しむ 100%活用ガイド[Ubuntu 18.04LTS 日本語Remix対応]

Ubuntu はじめる&楽しむ 100%活用ガイド[Ubuntu 18.04LTS 日本語Remix対応]


独学プログラマー Python言語の基本から仕事のやり方まで

独学プログラマー Python言語の基本から仕事のやり方まで


Ubuntuスタートアップバイブル

Ubuntuスタートアップバイブル


Ubuntuサーバー徹底入門

Ubuntuサーバー徹底入門