手持ちの MacBook でも GPU 使った Deep Learning がやりたい。
MacBook Pro (13-inch, 2017) の GPU は
"Intel Iris Plus Graphics 640 1536 MB"、
無印 MacBook (12-inch, 2017) のは
"Intel HD Graphics 615 1536 MB"。
どちらも NVIDIA ではないで CUDA とかダメ。
でも PlaimdML を使えば大丈夫とのことでやってみたら無事動きました。
以下、Python の環境づくりからスタートして、PlaimdML で GPU 設定して、 Keras でのベンチマークまでの流れ。
to "~/.zshrc":
参考:
to "~/.zshrc":
参考:
"plaidml-setup" で CPU, GPU を切り替える (MacBook Pro)。
ベンチマーク実行。
結果のまとめ (MacBook Pro):
GPUはCPUよりも6倍はやい。
結果のまとめ (無印MacBook):
GPUはCPUよりも5〜6倍はやい。
ベンチマーク以外のタスクだとどうなのか気になるところだけど、まあそのうちに。
参考:
MacBook Pro (13-inch, 2017) の GPU は
"Intel Iris Plus Graphics 640 1536 MB"、
無印 MacBook (12-inch, 2017) のは
"Intel HD Graphics 615 1536 MB"。
どちらも NVIDIA ではないで CUDA とかダメ。
でも PlaimdML を使えば大丈夫とのことでやってみたら無事動きました。
以下、Python の環境づくりからスタートして、PlaimdML で GPU 設定して、 Keras でのベンチマークまでの流れ。
pyenv
% brew install pyenv
to "~/.zshrc":
export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)"
参考:
Anaconda
pyenv install -l | grep anaconda pyenv install anaconda3-[最新バージョン] pyenv global anaconda3-[最新バージョン]
to "~/.zshrc":
export PATH="~/.pyenv/versions/anaconda3-[最新バージョン]/bin:$PATH"
conda create -n plaimd-test conda activate plaimd-test conda init zsh
参考:
PlaimdML インストール
% pip install plaidml-keras plaidbench
"plaidml-setup" で CPU, GPU を切り替える (MacBook Pro)。
% plaidml-setup PlaidML Setup (0.7.0) Thanks for using PlaidML! [...] Default Config Devices: llvm_cpu.0 : CPU (via LLVM) metal_intel(r)_iris(tm)_plus_graphics_640.0 : Intel(R) Iris(TM) Plus Graphics 640 (Metal) Experimental Config Devices: llvm_cpu.0 : CPU (via LLVM) opencl_intel_iris(tm)_plus_graphics_640.0 : Intel Inc. Intel(R) Iris(TM) Plus Graphics 640 (OpenCL) metal_intel(r)_iris(tm)_plus_graphics_640.0 : Intel(R) Iris(TM) Plus Graphics 640 (Metal) Using experimental devices can cause poor performance, crashes, and other nastiness. 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_intel_iris(tm)_plus_graphics_640.0 3 : metal_intel(r)_iris(tm)_plus_graphics_640.0 Default device? (1,2,3)[1]:
PlaimdML ベンチマーク
ベンチマーク実行。
% plaidbench keras mobilenet
結果のまとめ (MacBook Pro):
Inference Latency | |
---|---|
GPU (metal_intel(r)_iris(tm)_plus_graphics_640.0) | 20.49 ms |
CPU (llvm_cpu.0) | 120.75ms |
[Exprimental] GPU (opencl_intel_iris(tm)_plus_graphics_640.0) | 19.63 ms |
GPUはCPUよりも6倍はやい。
結果のまとめ (無印MacBook):
Inference Latency | |
---|---|
GPU (metal_intel(r)_hd_graphics_615.0) | 30.02 ms |
CPU (llvm_cpu.0) | 167.97 ms |
[Exprimental] GPU (opencl_intel_hd_graphics_615.0) | 30.78 ms |
GPUはCPUよりも5〜6倍はやい。
ベンチマーク以外のタスクだとどうなのか気になるところだけど、まあそのうちに。
参考:
- Using PlaidML for deep learning on a Macbook Pro GPU
- PlaidMLを使ってMacでDeep Learning:導入編 - STELLALOG
- Macでも高速に機械学習できるかもしれないPlaidMLを試してみた - Qiita
import plaidml.keras plaidml.keras.install_backend()