確率論的プログラミングはまだ若い分野ですので,計算環境の構築方法が成熟していません.チュートリアルではpymc3やpystanを利用しますが,それらの開発者は基本的にUbuntuにAnaconda Pythonを利用してるので,まともに動作する環境はどうしてもUbuntu + Anacondaが中心になってしまいます.以下に構築前の注意を列挙します.
- Windowsで確率論的プログラミングを行うことは,pymc3のtheanoのGPUの問題,pystanのプロセス制限の問題等,制約が多すぎて困難な道となります.Windowsを利用する場合,VMWare, VirtualBox, Vagrant等の仮想環境またはDocker等のコンテナ技術を利用してLinuxを用意するほうが精神衛生上望ましいと考えています.
- Python環境の構築はAnacondaディストリビューションを前提とします.素のPythonから確率論的プログラミングの環境を構築することは,数々の罠に嵌まる可能性が否定できませんので推奨できません.
- もしも,チュートリアル当日までに環境を構築できなくても問題ありません.チュートリアルはJupyter Notebookで行いますので,Docker Imageを用意
するか,JupyterHub等によりWebブラウザからチュートリアルマテリアルにアクセスし実行できるようにします. - 皆様には大変申し訳ございませんが,JupyterHubが技術的理由により用意できませんでした.お詫びを申しあげます.代わりに以下のnbviewerで代替させていただきます.
http://nbviewer.ipython.org/github/bakfoo/pyconjp/tree/master/
それぞれのOS環境にて,C/C++のビルドができるところまで完了している,というのがチュートリアル環境を構築するための大前提です.たとえばUbuntuでは,
apt-get install build-essential
が完了している,ということです.OSX環境であればXcodeとコマンドラインツールがインストール済みで,コマンドラインでgccが動作するということです.
以下のサイトからダウンロードしてAnaconda Pythonをインストールしてください.Python3.4を使います.
https://www.continuum.io/downloads
すでにAnaconda環境がある場合は,以下のようにpython環境を新しくすれば,既存の環境を壊すことなくチュートリアルの環境が構築できます.
conda create -n pycon python=3.4
source activate pycon
conda install anaconda
以下の手順でpipを利用してpymc3を構築します.ポイントはtheano, pymc3ともに最新版のリポジトリのものを利用しないとバグのために動作しない,ということです.インストール時にc/c++のビルドを行います.公式インストール手順:https://pymc-devs.github.io/pymc3/getting_started/
pip install --upgrade --no-deps git+git://github.com/Theano/Theano.git
pip install --process-dependency-links git+https://github.com/pymc-devs/pymc3
pip install pasty
pip install seaborn
次に以下の手順でpipを利用してpystanを構築します.インストール時にc/c++のビルドを行います.公式インストール手順:https://pystan.readthedocs.org/en/latest/getting_started.html
pip install pystan
以上でチュートリアル環境の構築は終了です.
注意: 下記にある三番目のdocker runの"[LOCAL DIR]”の部分はご自分のディレクトリを指定ください.
docker-machine create --driver virtualbox --virtualbox-memory 3081 dev
eval "$(docker-machine env dev)"
docker run -t -i -v [LOCAL DIR]:/notebook -p 8888:8888 yutakashino/pyconjp:v1.2 /bin/bash
root@d3c2644d9fb3:/notebook# git clone https://github.com/bakfoo/pyconjp.git
root@d3c2644d9fb3:/notebook# ipython notebook --ip=* --port=8888
- ipは"docker-machine ip dev"により調べる
- portは8888
http://192.168.99.101:8888/tree/pyconjp
- インターネットに繋がるPC
- 教材となるJupyter Notebookをダウンロード,またはDocker ImageをDocker Hubからpull,
さらには今回の講習で利用するJupyterHubサーバーまたは以下のnbviewerにアクセスします.
http://nbviewer.ipython.org/github/bakfoo/pyconjp/tree/master/
- 教材,および捕捉資料はプロジェクタで投影します.
- Jupyter Notebookのコードを一つ一つ実行させながら,確率論的プログラミングを理解していきます.
- 質問は随時受け付けますが,時間内に答えることが難しい質問は後に回してまとめて回答します.
- ベイズ推定の基本身につけたいと思っているエンジニア
- 確率論的プログラミングが気になっている全ての人
- Python / NumPy / SciPy を使ったプログラミングを何度か自分の力で書き上げた方,またはそれに必要な知識を持った方
- 大学初年度程度の数学(線形代数,確率論,統計学)の知識があると理解がスムーズになります.