チラシ裏日記上等!!新館

Webアプリケーションエンジニアの雑記帳。映画とかアニメとかの記事も書きます。

機械学習事始め

年始のやりたいことに描きましたが、機械学習の勉強をはじめています。

www.chirashiura.com

教科書として手始めに「はじめての深層学習プログラミング」をじっくり読みながらとりあえず写経からはじめています。

機械学習とは?深層学習とは?みたいな状態でやりはじめています。教師あり学習とかSVMとかは大学生の時に名前だけ触れたことがあるという感じです。Pythonもほとんどやったことないし、数式もからっきしなのでLv.0ぐらいからはじめているのではたしてどこまでやれるかって感じですが、とりあえず細かいところはおいておいて利用できる段階まで持って行くのがゴールかなと思っています。出来れば画像分類機をつくるところまでしっかりやりたい。

下環境構築とか感想とか。

機械学習環境構築

環境構築は本に書いてあったとおりにやるのが良いのですが、何となくubuntuは1.6.10、Pythonは3系列で進めました。画像を扱うためにOpenCVを使うのですが、OpenCVをインストールするのすっごく面倒だったので、以下のQiitaの記事を参考にしてanacondaを利用したインストール方法でOpenCVを導入しました。

qiita.com

OpenCVを、

$ conda install -c https://conda.binstar.org/jjhelmus opencv

でインストールします。Qiitaの記事にも書いてありますが、簡単すぎてキレそうになります(OpenCVのインストールで1日使ったので)。

あとは本に書いてあるとおりにUbuntuをいったんCUIで起動するようにしてCUDAをインストールします。ここで気をつけるのが、本に書いてあるようにgrubの設定を変えてCUI環境で起動できると思ったらそうでないので、

$ sudo systemctl set-default multi-user.target 

CUI環境でログインできるようにします。

Ubuntu日本語フォーラム / CUIでの起動、ログインについて

www.atmarkit.co.jp

CUIでログインできるようになったらnouveauを無効化してCUDAのインストールを行います。

qiita.com

このときDriverは入ったのですが、toolkitが入りませんでした。どうやらubuntu 1.6.10ではgccが6系列になっているらしく、それだとうまくビルドできないようでした。ubuntu1.6.4だとgccは5系列のようなので、素直にubuntu1.6.04を入れておけば良かったことにここで気づきます(CUDAのダウンロードの時の選択しに1.6.04はあったけど1.6.10はなかった)。

そのときの回避方法ですが sudo sh するときに --override オプションをすることでインストールは出来るようです。

今のところちゃんとCUDAを使うところまで出来ていませんが、これを行った影響が出るかも知れないので素直にubuntuは1.6.04にしておいたほうがいいと思います。

インストールできているか確認するには

$ nvidia-smi 

GPUの情報が出てきたらインストールできているということになります。

全てのインストールが終わってpythonで利用できるか確認するには以下のコマンドを打って問題が起きなければ大丈夫です。

$ python -c "import cupy"

これで本の写経をして動作をみることが可能です。

感想

結構環境構築まで大変でしたが、なんとか出来ました。いろいろまだ写経している段階ですが、実行結果を見るのは結構楽しいです。ただ環境がおんぼろPCなので画像の学習の所はかなり時間がかかりました。多分学習するのに15分ぐらいかかったと思います。Core2Quad + GTX 550 ti では流行力不足の模様。ここは一つPCの買い換えの時が来たのかも知れません。

良さそうなのがドスパラBTOなのですが、お値段なんと20万円。

www.dospara.co.jp

かなりキツいですが正直これぐらいないとまともな早さで学習できないのも事実です(ひょっとするとこれでも足りないかも知れない・・・)。そう考えるとと今自作でグラフィックが綺麗なPCゲームを遊んでいるヘビーゲーマー達(Battle Field とかやってる人達)はひょっとすると最高の環境をもうすでに持っているのかも知れません。機械学習分野はゲーマーが切り開いていくのかも知れませんね。

とりあえずドスパラのPCを買うかどうかはいろいろ考えてみようと思います。それにしてもお金さえ出せば高度なことが自分のような木っ端エンジニアにもひらけていると思うと胸が熱いですね。引きつづき勉強していきたいところです。