• このエントリーをはてなブックマークに追加

スポンサードリンク

はじめに

NVIDIAのGPUつきのパソコンを購入したので、セットアップメモです。

xgboostをGPUで動かすところを最終目標とします。

環境

  • Ubuntu 16.04 LTS
  • CUDA 9.1
  • cuDNN 7.0.5
  • Python 3.6
  • Anaconda 3.5
  • xgboost

NVIDIA GPU環境に必要なツール

なにしろGPUを購入してみたものの、無知なもので、まずはどういう仕組みで動かせるのか調べることにした。NVIDIA GPUを動かすためには以下の2つが必要らしい。

  • NVIDIA CUDA Toolkit ・・・ NVIDIA ドライバーと開発環境
  • cuDNN・・・ディープ・ニューラル・ネットワーク(DNN)ライブラリ

いきなりDockerという手もあるが

いろいろ調べると、サクッとまるっとこれらをインストールする簡単な方法があった。それが、Dockerだ。

nvidia-dockerという Dockerのラッパーツールがある。これを利用すると、以下の引用図のようなアーキテクチャでコンテナを動作させることができる。

dockerをつかうことのいいところは、ディープラーニング用ライブラリごとに環境を用意できるところ。たとえば、Tensorflow, keras, pytorchの3つを使いたい場合、各ツールでサポートしているcuda/cudnnが違うと使えない。dockerを使えば、それぞれのライブラリごとに環境を用意できるのだ。

ただ、途中までインストールをしかけたのだが、dockerに関する知識が乏しく、時間もなかったので、今回は見送った。いつかnvidia-dockerを使いこなす。

NVIDIA CUDA Toolkitのインストール

とりあえず最新が最適化されていて高速だろうという理由から、最新版の9.1をインスールする。Tensorflow1.4は8でないと動かないらしい。以下のリンクにインストール手順がある。

  • CUDA Toolkit Archive | NVIDIA Developer
    • Linux
    • x86_64
    • Ubuntu
    • 16.04
    • deb(network)
      wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.1.85-1_amd64.deb
      sudo dpkg -i cuda-repo-ubuntu1604_9.1.85-1_amd64.deb
      sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub`
      sudo apt-get update
      `sudo apt-get install cuda
      

.bashrcを編集してパスを通す。

export PATH=/usr/local/cuda-9.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda

PCを再起動する。再起動後、インストールできたかバージョンを確認する。

$ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module  384.90  Tue Sep 19 19:17:35 PDT 2017
GCC version:  gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5)

$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Nov__3_21:07:56_CDT_2017
Cuda compilation tools, release 9.1, V9.1.85

NVIDIA cuDNN のインストール

次に cuDNNをインストールする。

cuDNNはNVIDIA で アカウントを作成しないとDownloadできない。wgetもできない。不便。

アンケートに回答後、以下の3つをダウンロードして、サーバにscpで転送。

  • cuDNN v7.0.5 Runtime Library for Ubuntu16.04 (Deb)
  • cuDNN v7.0.5 Developer Library for Ubuntu16.04 (Deb)
  • cuDNN v7.0.5 Code Samples and User Guide for Ubuntu16.04 (Deb)

sudo dpkg -iでインストール。インストールできたかテストしてみる。

$ cp -r /usr/src/cudnn_samples_v7/ ~/tmp/cudnn_samples_v7/
$ cd ~/repo/cudnn_samples_v7/mnistCUDNN
$ make clean && make
$ ./mnistCUDNN
Test passed!

Anaconda環境の導入

データサイエンスのためのよくばりセット、Anacondaを入れる。これを入れればデータ解析のための大抵のツールが手に入る。最新版を落としてきてインストール。

$ wget https://repo.continuum.io/archive/Anaconda3-5.0.1-Linux-x86_64.sh
$ ./Anaconda3-5.0.1-Linux-x86_64.sh

kaggle用の環境をつくる。

$ conda create -n kaggle
$ source activate kaggle

GPU対応 xgboost

GPU対応のxgboostを動かすには、ソースからビルドする。

$ git clone --recursive https://github.com/dmlc/xgboost
$ cd xgboost
$ mkdir build
$ cd build
$ cmake .. -DUSE_CUDA=ON
$ make -j

Pythonモジュールをインストール

$ cd python-package; sudo python setup.py install

GPU版 xgboost めちゃくちゃハヤイ!!