Chainer/Mac

提供: fukudat
移動: 案内検索

目次

Python環境のInstall

Mac OS Xに入っている python は 2.7系なので,pyenv をインストールして 3.x系も自由に切り替えて使えるようにする.[1]を参考にする.

HomebrewをInstall

すでに入っていると良いのだが,入っていなかったら Homebrew をインストールする.

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

pyenvをInstall

pyenv とか virtualenv とか pyenv-virtualenv とか似たものがいくつもある[2]ようだが,どれでも構わない.ここでは pyenv を使うことにする.

$ brew install pyenv

以下のスクリプトを .bash_profile か .bashrc に追加して,環境を整える.

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/shims:$PATH"
eval "$(pyenv init -)"

pyenvでPython3をInstall

pyenv で利用可能なPythonのバージョンを列挙してみる.

$ pyenv install --list
  2.1.3
  2.2.3
  ...
  2.7.13
  2.7.14
  3.0.1
  3.1
  ...
  3.6.2
  3.6.3
  3.7.0a1
  3.7-dev
  ...

この内,3.x系の安定最新版 (2017/12時点で3.6.3) をInstallしてみる.

$ pyenv install 3.6.3

成功すればよし.もしzlibに関するエラーが出るようだったらxcodeが古いので,次のコマンドでxcodeをアップデートする.

$ xcode-select --install

その後もう一度 pyenv install しても,今度は OpenSSL に関するエラーで失敗する. そこで[3]を参考にして,以下のようにInstallする.

$ CFLAGS="-I$(brew --prefix openssl)/include" LDFLAGS="-L$(brew --prefix openssl)/lib" pyenv install 3.6.3

これで成功した.もしまだエラーが出るようだったら... 自力で解決する.

ついでに,2.7系の最新版もインストールしておくと良いかもしれない.

pyenvによる実行環境の指定

Installされているバージョンの確認.

$ pyenv versions
* system (set by /Users/fukudat/.pyenv/version)
  2.7.14
  3.6.3

システム全体 (global) の python を 3.6.3 に指定.

$ pyenv global 3.6.3

関連パッケージのインストール

$ pip install numpy                                   # vectorizeに必ず必要
$ pip install matplotlib                             # グラフの描画に使う
$ pip install mysql-connector-python    # MySQLからデータを読む場合

matplotlibの問題修正

matplotlib を使うと次のエラーが出る.

RuntimeError: Python is not installed as a framework. The
Mac OS X backend will not be able to function correctly if Python
is not installed as a framework. See the Python documentation for
more information on installing Python as a framework on Mac OS X.
Please either reinstall Python as a framework, or try one of the other 
backends.

問題の原因等は[4]を参照.~/.matplotlib/matplotlibrc ファイルを新規作成して,以下の内容を記述する.

backend : TkAgg

graphvizのInstall

Chainerが出力するネットワーク構造のグラフを可視化するために,graphviz パッケージを使う.

$ brew install brew install graphviz

使い方は, ここ を参照せよ.

ChainerのInstall

pip (pyenv付属のパッケージ管理ツール)を使ってInstall

$ pip install chainer

Chainerのソースも参照したいというなら,gitでclone

$ mkdir src
$ cd src
$ git clone https://github.com/pfnet/chainer.git

src/chainer のソースが展開される.

Warningへの対処

このまま Chainer を使うと,毎回次のような Warning message が出力される.

/.../.../site-packages/chainer/_environment_check.py:38: UserWarning: Accelerate has been detected as a NumPy backend library.
vecLib, which is a part of Accelerate, is known not to work correctly with Chainer.
We recommend using other BLAS libraries such as OpenBLAS.
For details of the issue, please see
https://docs.chainer.org/en/stable/tips.html#mnist-example-does-not-converge-in-cpu-mode-on-mac-os-x.

Also note that Chainer does not officially support Mac OS X.
Please use it at your own risk.

  ''')  # NOQA

そこに書かれている通り,バックエンドの numpy を OpenBLAS library を使ったものに変えれば良いようだ.

まず,OpenBLASをInstallする.

$ brew tap homebrew/science
Updateing Homebrew...
...
$ brew install openblas
Warning: openblas 0.2.20 is already installed

どうやら既にインストールされていた.

次に,既存の pip で管理されている numpy を削除する.

$ pip uninstall numpy -y
Uninstalling numpy-1.13.3:
  Successfully uninstalled numpy-1.13.3

numpy のソースをゲットして,OpenBLAS を使うようにビルドする.

$ git clone https://github.com/numpy/numpy
$ cd numpy
$ git checkout refs/tags/v1.13.3
$ cp site.cfg.example site.cfg

ここで,(上で site.cfg.example からコピーしてきた) site.cfg を編集して,OpenBLAS に関する行 (128行目付近) のコメントを外し,自分の環境に合わせて編集する.

[openblas]
libraries = openblas
library_dirs = /usr/local/opt/openblas/lib
include_dirs = /usr/local/opt/openblas/include
runtime_library_dirs = /usr/local/opt/openblas/lib

brew でインストールした OpenBLAS は /usr/local/opt/openblas の下にあるはず(確かめて,違ったら正しい path に変えてください).

設定のチェック

$ python setup.py config

エラーが出なければ OK

最後にビルドしてインストール

$ python setup.py build
$ python setup.py install

これで Chainer の Warning message は出なくなるはず.

参考文献・脚注

  1. pyenvを使ってMacにPythonの環境を構築する
  2. pyenvとvirtualenvとpyenv-virtualenv
  3. HighSierraにしてpyenvからpython入れようとしたら失敗した
  4. Python 3.3でmatplitlibとpylabを使おうとしたら RuntimeError: Python is not installed as a frameworkというエラーが発生したときの解決方法
個人用ツール
名前空間

変種
操作
案内
ツールボックス