MacBook Pro 13インチ(2018)でディープラーニングの下準備(plaidmlのインストール)

MacBook Pro 13インチ(2018)でディープラーニングの下準備(plaidmlのインストール)

先日、Macbook Pro13インチを購入してやっと届きました。スペックも上がったことですし、外付けGPUなども盛り上がりつつあるので、MacでDeep learningができるというPlaidMLを早速入れてみたいと思います。ちなみに、pythonは3.6以上を想定しています。仮想環境のコマンドが若干異なるので。

仮想環境の作成

環境を汚さないように仮想環境を構築します。今回はplaidtestというフォルダにpythonの仮想環境を構築します。

$ mkdir plaidtest
$ python -m venv plaidtest

実行してフォルダ内にファイルができていることを確認します。

仮想環境のアクティブ化

作成した仮想環境をアクティブにします。

$ source ./plaidtest/bin/activate

下記のように先頭に(仮想環境フォルダ名)が出力されればOKです。

(plaidtest) $ 

plaidmlをインストール

最初にGPUが適用可能かを確認します。

(plaidtest) $ brew install clinfo
(plaidtest) $ clinfo | grep 'Number of platforms'
Number of platforms                               1

Number of platformsが1であればOKです。なので、そのまま続けられます。
0の場合は別途ドライバーのインストールが必要になります。

Plaidmlはpip経由でインストール可能なので、以下のコマンドを実行します。

(plaidtest) $ pip install -U plaidml-keras

pip list などで無事にパッケージがインスールされているか確認してください。

plaidmlのセットアップ

plaidml-setupを実行して、質問に答える形でplaidmlの設定を作成します。


(plaidtest) $ plaidml-setup
(中略)
Enable experimental device support? (y,n)[n]:y

(中略)

Multiple devices detected (You can override by setting PLAIDML_DEVICE_IDS).
Please choose a default device:

   1 : llvm_cpu.0
   2 : opencl_cpu.0
   3 : opencl_intel_intel(r)_iris(tm)_plus_graphics_655.0
   4 : metal_intel(r)_iris(tm)_plus_graphics_655.0

Default device? (1,2,3,4)[1]:4

(中略)

Enable telemetry reporting? (y,n)[y]:y
※ 少しでもお手伝いをするためにyを選んでます。嫌ならnで。

(中略)

Save settings to /Users/hogehoge/.plaidml? (y,n)[y]:y

実際に動作確認をしてみるために、plaidbenchをpip経由でインストールします。

$ (plaidtest) $ pip install plaidbench

さて、やっと準備が整ったのでサンプルを使って実際に動かしてみます。

(plaidtest) $ plaidbench keras mobilenet
Running 1024 examples with mobilenet, batch size 1
INFO:plaidml:Opening device "metal_intel(r)_iris(tm)_plus_graphics_655.0"
could not broadcast input array from shape (3,2048) into shape (6144)
Set --print-stacktraces to see the entire traceback

ありゃりゃ。なんか動かないですね。。。
Google先生に聞いてみるとnumpyが原因みたいなので、numpyのバージョンを1.15から1.14系にダウングレードします。

(plaidtest) $ pip install numpy==1.14.5

もう一度テストしてみます。

(plaidtest) $ plaidbench keras mobilenet
Running 1024 examples with mobilenet, batch size 1 INFO:plaidml:Opening device "metalintel(r)iris(tm)plusgraphics655.0" Model loaded. Compiling network... Warming up ... Main timing Example finished, elapsed: 0.490588903427124 (compile), 27.536715984344482 (execution), 0.02689132420346141 (execution per example) Correctness: PASS, maxerror: 1.4205225852492731e-05, maxabserror: 1.3262033462524414e-06, fail_ratio: 0.0

無事に動きました。

jupyterの設定

仮想環境もjupyterから扱えるほうが良いので、仮想環境のカーネルを設定しておきます。

(plaidtest) $ pip install ipykernel
(plaidtest) $ ipython kernel install --user --name=plaidtest

juypterから指定した名前(plaidtest)がカーネルに登録されていたら完成です。

まとめ

途中、numpyのバージョンによる不具合がありましたが、とても簡単にインストールできました。不具合自体は大した問題ではないようなので早めに修正されるんじゃないでしょうか。ともあれ、MacでGPUを使ってディープラーニングという光明が現実味を帯びてきたします。NVIDIAの外付けGPUを認識させる記事も出てきましたし。今後が楽しみです♪

Pythonカテゴリの最新記事