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を実行することができました。

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

関連記事

Windows7とUbuntu14.04のデュアルブート

Windows7の入っているノートPCにUbuntu14.04 LTSをマルチブートできるようにした

記事を読む

NVIDIA DIGITSをSupervisorを使って自動起動する

はじめに 先日Ubuntu14.04にDIGITS 5をGPUなしPCにインストールしたという記事

記事を読む

お名前.comのでサブドメインを取得してロリポップで使う方法

タイトルどおりなのですがお名前.comで取得した独自ドメインからサブドメインを取得し、ロリポップで使

記事を読む

【2017年度】GeForce 1080 Ti搭載BTOパソコン比較

はじめに 最近ディープラーニング用にGPUのないPCにDIGITSをインストールしたのですがやはり

記事を読む

RLoginでポート番号の指定

RLoginを使ってさくらVPSに接続していましたが、最近PCを新しくしたので新しく接続の設定をしな

記事を読む

さくらとロリポップのcronについての比較

私は今さくらのレンタルサーバーとロリポップのレンタルサーバーを両方試してみているのですがそのcron

記事を読む

さくらサーバーにフォルダをアップロードする方法

さくらサーバーにフォルダをアップロードする…という機能は無いみたいで個別にFTPソフトを使う必要があ

記事を読む

Redmine3.2をUbuntu14.04にインストールして躓いた所についてメモ

はじめに Ubuntu14.04 ServerにRedmine3.2をインストールしました。基本的

記事を読む

【PHP・MySQL】Fatal error: Class ‘mysqli’ not found

Fatal error: Class 'mysqli' not found このエラーはmys

記事を読む

格安プラン限定レンタルサーバー機能比較表(2016年)

はじめに  最近新しい共用サーバーをレンタルしようと思い調査およびその性能比較を実施しました。比較

記事を読む

【Laravel5】既存のDBからデータを取得して表示する

はじめに 今まで作ったWebサイトをLaravel5で見れるようにし

【C++/OpenCV】cv::Matの画像にインパルスノイズを付加する

OpenCVで画像にノイズを付け足したいと思って調べたところ、Pyth

Intel Corei7-7700TでHTC Viveの動作確認

はじめに HTC ViveというVRヘッドセットで遊んでみたのでその

【Python】フォルダ内のカッコ付き数字ファイルを一括でリネームするスクリプト

はじめに タイトルどおりなのですが、指定フォルダ内のファイルのファイ

OpenCV3.1のTracking APIでトラッキングを試す

はじめに 先日OpenCV3.1をopencv_contrib付きで

パソコンを複数台使う際便利なツール

はじめに 先日、機械学習用にGPUを積んだBTOパソコンを購入しまし

OpenCV3.1をopencv_contrib付きでVisual Studio2013でビルドしてインストールする

はじめに OpenCV3.1でトラッキングがしたいと思いインストーラ

→もっと見る

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