PyTorchの環境を構築する(Mac mini + eGPU)

動作環境

Mac mini (late 2012) High Sierra

NVIDIA GTX 1080 Breakaway Box 

Cuda/Cuda Toolkit 9.0インストール

Cudaドライバをインストール
318.10.10.10.20.109

Cuda Toolkit 9.0をインストール
※この時Cudaドライバはインストールしない。
https://developer.nvidia.com/cuda-90-download-archive


<参考>eGPU Support
https://egpu.io/forums/mac-setup/wip-nvidia-egpu-support-for-high-sierra/

 

Minicondaのインストール


https://conda.io/miniconda.html
bash ./Miniconda3-latest-MacOSX-x86_64.sh

<参考>
https://qiita.com/komeda-shinji/items/470c8ca3b2273be1f825
デフォルトパスにminicondaをインストール。

 

conda,pipでPytorchで必要となるものをインストール
/Users/<usename>/miniconda3/bin/conda create -n pyt python=3.6

source /Users/<usename>/miniconda3/bin/activate pyt

conda install pandas jupyter matplotlib

pip install flask smart_getenv gunicorn

conda install -c anaconda cython

export CMAKE_PREFIX_PATH=/Users/<usename>/PyTorch

conda install numpy pyyaml mkl mkl-include setuptools cmake cffi typing

git clone --recursive https://github.com/pytorch/pytorch
cd pytorch

pip install torchvision   ※condaではインストールに失敗したのでpipでインストール

※pipは既にインストールしていたので、インストールについては省略します。

 

<参考>

PyTorchで学ぶニューラルネットワークと深層学習

https://www.amazon.co.jp/PyTorchで学ぶニューラルネットワークと深層学習-杜-世橋-ebook/dp/B078WK5CPK/ref=sr_1_1?ie=UTF8&qid=1526645225&sr=8-1&keywords=pytorch

 

Pytorchのインストール

 

PytorchはMacNVIDIAGPUを使う場合は、ソースからインストールする必要あり。
MACOSX_DEPLOYMENT_TARGET=10.13 CC=clang CXX=clang++ python setup.py install

 

Cudaサンプル(deviceQuery)の実行

Cudaサンプルフォルダへ移動
cd 1_Utilities
cd deviceQuery
./deviceQuery

Result=Passとなっていれば、Cudaを認識している。

※サンプルを実行する際に以下が必要
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer

 

Jupyter notebookを起動する


jupyter notebook --port=8888 --ip=“localhost” --notebook-dir=$HOME/notebooks

以下のスクリプトを実行し、

import numpy as np
import torch

t = torch.cuda.is_available()
print(t)

 Trueとなっていれば、Cudaが利用可能。

Cudaを利用できることを確認。

 

ハマったところ


・PytorchはMacでCudaを使いたかったらソースからインストールする必要あり。
・複数のToolKitをインストールしたため、Cudaドライバーとバージョンが不一致。Pytorchのビルドにも影響。
・Cudaドライバが使えるClangのバージョンが決まっているため、最新のClangが使えない。


Pytorchのビルド自体に時間がかかったこともあり、計3時間×3日程度かかった。

サンプルでMNISTを動作させて、正常に動作していることを確認。長かった・・・。