MNISTをDIGITS 5のCPUのみで試す(GPUなし)

公開日: : 最終更新日:2017/05/06 Ubuntu, サーバー, ディープラーニング

スポンサーリンク

はじめに

DIGITSを使えばGUI操作で簡単にディープラーニングができると聞いて自分も使ってみようと思ったのですが思いのほかインストールがうまくいかず手間取ってしまったのでその時のメモを残しておきます。

環境

OS:Ubuntu 14.04 LTS
GPU:なし
DIGITSバージョン:5

今回はGPUのないPCでやりました。実施したのは下記3点です。

・Caffeインストール
・CUDA Toolkitインストール
・DIGITSインストール

主な注意点は下記のとおりです。

・Caffeインストール
 CPU_ONLYでビルド

・CUDA Toolkitインストール
 CUDAそのものは不要(というか入れると動かない?)

・DIGITSインストール
 ソースからビルド

こうでなければ動かないというわけではないと思いますが、今回これでMNISTサンプルを動かすことはできたので参考になれば幸いです。

Caffeインストール

基本的には公式のサイトを参考にしながらビルドすれば問題ありません。一般的なCaffeではなくDIGITS用のCaffeなるものがあり、それでないとうまく動かないことがあるそうなので注意してください。私は下記サイトを参考にしつつビルドしました。

環境変数

bashrcにCAFFE_ROOTとPythonのパスの記述を追加。「vim ~/.bashrc」で開いて下記記述を末尾に追加しました。

export CAFFE_ROOT=~/caffe
export PYTHONPATH=~/caffe/python/:$PYTHONPATH

ビルド

公式のGitからクローンしてきてビルドします。途中でMakefileを編集します。

$ git clone https://github.com/NVIDIA/caffe.git $CAFFE_ROOT
$ cd caffe
$ vim Makefile.config 
$ make all -j4
$ make test -j4 #エラー出る?
$ make pycaffe

makeの前にMakefile.configを編集してください。
今回はCPUのみで実行したいためCPU_ONLYをコメントアウトしてください。たぶんこれで十分と思いますが一応「USE_CUDNN := 1」をコメントしてGPUを使わせないようにします。

CPU_ONLY := 1

また、上記構成でimreadなどのopencv系のエラーが出るかもしれないのでその時はMakefileにライブラリの記述を追加してみてください。これらが認識されていないためエラーが起こる場合があります。

LIBRARIES += glog gflags protobuf leveldb snappy \
lmdb boost_system hdf5_hl hdf5 m \
opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs

あと、g++のバージョンによってビルドできるできないがあるみたいなのでMakefileを適宜変更し、そのバージョンのg++をインストールしてください。

# CUSTOM_CXX := g++
CUSTOM_CXX := g++-4.6
CXX := /usr/bin/g++-4.6

CUDA Toolkitインストール

今回はGPUなしでCPUのみで動かすのでCUDAは不要ですが、Toolkitの方は必要なようなのでそちらのみインストールします。

$ cd $CAFFE_ROOT
$ wget http://developer.download.nvidia.com/compute/cuda/6_5/rel/installers/cuda_6.5.14_linux_64.run
$ chmod u+x cuda_6.5.14_linux_64.run
$ ./cuda_6.5.14_linux_64.run
Do you accept the previously read EULA? (accept/decline/quit): accept
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 340.29? ((y)es/(n)o/(q)uit): n 
Install the CUDA 6.5 Toolkit? ((y)es/(n)o/(q)uit): y 
Enter Toolkit Location [ default is /usr/local/cuda-6.5 ]: /usr/local/cuda-6.5 is not writable. 
Do you wish to run the installation with 'sudo'? ((y)es/(n)o): y 
Do you want to install a symbolic link at /usr/local/cuda? ((y)es/(n)o/(q)uit): y 
Install the CUDA 6.5 Samples? ((y)es/(n)o/(q)uit): n 
Installing the CUDA Toolkit in /usr/local/cuda-6.5 ...

今回は下記サイトを参考にしながらそれと同じ6.5をインストールしました。最初にNVIDIAのドライバーを入れるか?みたいな項目がありますがそこは「n」にして入れないようにしてください。

(参考)ドライバの削除

ドライバのインストールを間違えてしまったらNVIDIA、CUDAを削除します。特に問題なければここはする必要ありません。あくまでリトライ用です。

確認用

dpkg -l | grep nvidia
dpkg -l | grep cuda

削除用

sudo apt-get --purge remove nvidia-*
sudo apt-get --purge remove cuda-*

DIGITSインストール

環境変数

DIGITS_ROOTを追加します。「vim ~/.bashrc」で開いて下記記述を末尾に追加しました。

export DIGITS_ROOT=~/digits

インストール

注意点としては公式ページ(下記「Ubuntu Installation」)で推奨している「sudo apt-get install digits」でインストールするとどうやら一緒にCUDAも入ってきてしまうようなので、CPUのみで実施する今回はそれでインストールしないようにします。

ただ、バージョンによって恐らく挙動は変わってくると思います。5以降の今後のものに関してはどうなるかわかりませんので公式の案内を必ずチェックしてください。

公式でもうまくいかない場合を想定してビルドから始める版の案内が出ています。その「Building DIGITS」の方を参考にしながら今回はインストールします。

$ git clone https://github.com/NVIDIA/DIGITS.git $DIGITS_ROOT
$  ~/digits
$ pip install -r requirements.txt
$ ./digits-devserver

途中のpipでrequirement.txtで不足項目があれば対処します。pipを駆使してインストールします。最後問題なければ「./digits-devserver」をすると下記の記述が出たのちにブラウザからDIGITSのページが見れるようになります。

___ ___ ___ ___ _____ ___
| \_ _/ __|_ _|_ _/ __|
| |) | | (_ || | | | \__ \
|___/___\___|___| |_| |___/ 5.1-dev

端末の5000ポート(例:localhost:5000)にアクセスすれば画面が出てきます。ファイアウォールのポートの設定などに注意してください。この場合ですと5000番のポートを開放していないと表示できません。


↑このような画面が出てきます。


↑入れたもののバージョン情報です

Error: Unable to connect to DIGITS」という画面が出てきたら何かしらのパスが通っていないと思うのでその辺から検証してみてください。

MNISTで検証

下記公式ページを参考にしつつMNISTを実行してみます。

まずはデータセットを作成します。「DataSets」タブの右上にある「Images」から「Classification」を選択します。

途中ログイン画面が出てくると思いますが、適当な名前を入力すればOKです。

画像サイズ等に注意しながらMNISTのパスを指定します。学習用データとテスト用データは分けたいので下記のように「Separate test images folder」にチェックを入れてテストデータのパスを指定します。

名前を「MNIST」とでもしてCreateボタンを押すとデータ生成が始まります。ちょっと時間がかかるので待ちます。

終わったら次はModelを作成します。左上の「DIGITS」ボタンを押してトップページに戻ったら先ほどと同様に「Classification」を選択します。

すると下記画面が出てくるので先ほど作った「MNIST」を選択。また、ネットワークは「LeNet」にします。

「Create」ボタンを押すと学習が始まります。

精度は良くないですがとりあえず動いているので良しとします。

もしここで「ERROR: Check failed: error == cudaSuccess (35 vs. 0) CUDA driver version is insufficient for CUDA runtime version」というようなエラーが出て処理が止まってしまったらCUDA関係でミスっています。私はこれを何度も出してしまい何度も何度もインストールしなおしました。CPUのみの場合は今回の手順を踏めばたぶん大丈夫と思います。

自動起動について

Supervisorを使って自動起動する方法を書きました。

まとめ

DIGITS5をGPUなしのPCにインストールしてMNISTを実行することができました。

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

関連記事

WordPressサイトのSSL対応(HTTPS化)手順のまとめ【さくらサーバー】

先週頃にこのサイトをSSL対応しましたのでその流れについてまとめておき

【Google Charts】動的にグラフを更新する方法

はじめに Webサイト上でグラフを描こうと思った場合、いくつかのJa

体重変化量計算シミュレータ【ダイエット/肥満】

ツール本体 入力 カロリー入力 1日の余剰摂取/消費カロリー

おサイフケータイ対応ストレージ32GBのSIMフリースマホまとめ【2017年秋版】

はじめに SIMフリーの格安スマホのおサイフケータイ機能付きのもので

リクルート期間限定ポイントの有効な使い道

はじめに  先日クレジットカードの見直し活動の一環でポイント還元率の

初心者がお金を貯めるための節約・財テク手法まとめ【ポイント還元・投資・税金対策】

はじめに  最近なるべく節約しようと思い、お金周りに関して色々調べて

動画講座を効率的にキャプチャして復習する方法

はじめに  最近、動画媒体の講座などをたまに視聴しています。独学だと

→もっと見る

  • Author : ががんぼ
    プログラミングやWeb関係で気付いたことについてメモしていく予定。だいたいが備忘録ですが、自分でサンプルを作って動かしてみたりしています。
PAGE TOP ↑