Chainer ハンズオン ～事前準備編～ [Tech-Circle#11]

"本記事は Tech-Circle#11 Chainer ハンズオン 参加にあたり、事前準備内容をまとめた記事です。

 [odashi_t](http://qiita.com/odashi_t "odashi_t")さんの[ChainerとRNNと機械翻訳](http://qiita.com/odashi_t/items/a1be7c4964fbea6a116e)を基にしたハンズオンです。

<strong><font size="10" color="#ff0000">Chainerの導入は1.4系にしてください。1.5系から仕様が変わったため、今回のハンズオンでは動作できない可能性があります。下記の手順にそっていただければ、Chainerはバージョンを固定しているので問題ありません。</font></strong>

ハンズオン用のリポジトリ
https://github.com/SnowMasaya/Chainer_Machine_Translation_ipython_notebook.git


## <i class="fa fa-cube" style="font-size:1em;"></i> 参加者はTech-Circle開催当日までに以下をおねがいします。 （所要時間目安: 20～30分 Advanceな内容を除く）

ここにリンクを設定

* <A HREF=#①Git のインストール [必須]>① Git のインストール [必須]</A>
* <A HREF=#② Python環境の構築 [必須]>② Python環境の構築 [必須]</A>
* <A HREF=#③ Chainerのインストール [必須]>③ Chainerのインストール [必須]</A>
* <A HREF=#④ 実行環境確認>④ 実行環境確認</A>


###<A NAME=①Git のインストール [必須] /> ①Git のインストール [必須]

以下の記事を参考にGitをインストールしてください。
用意したリファレンスアプリをコマンドベースでCloneなどするために利用します。

 [Git - Gitのインストール](https://git-scm.com/book/ja/v1/%E4%BD%BF%E3%81%84%E5%A7%8B%E3%82%81%E3%82%8B-Git%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB "Git - Gitのインストール")

```
git clone https://github.com/SnowMasaya/Chainer_Machine_Translation_ipython_notebook.git
```

###<A NAME=② Python環境の構築 [必須] /> ② Python環境の構築 [必須]

brew install
http://qiita.com/is0me/items/475fdbc4d770534f9ef1

Pyenvインストール

https://github.com/yyuu/pyenv

Virtualenvインストール

https://virtualenv.pypa.io/en/latest/installation.html

先ほどgit cloneしたフォルダに移動し下記コマンドを実行

```
pyenv install 3.4.1
pyenv rehash
pyenv local 3.4.1
virtualenv my_env
source my_env/bin/activate
```

Pythonのバージョン確認

```
python -V
```


pythonのバージョンが2のままで変わらない場合

```
virtualenv -p ~/.pyenv/versions/3.4.1/bin/python3.4 my_env
```

もしくは下記リンクを参考にしてpyenv + Virtualenvを導入する

http://qiita.com/maosanhioro/items/47a52f96fefba7126f9b

または直接virtualenvをインストールする

```
pip install https://github.com/pypa/virtualenv/tarball/develop
```

###<A NAME=③ Chainerのインストール [必須] /> ③ Chainerのインストール 

下記コマンドでvirtualenv上のpythonを有効化する

```
source my_env/bin/activate
```

下記コマンドを実行するとchainer及び必要なライブラリがインストールされます。
<strong><font size="10" color="#ff0000">Chainerを既にインストールしている方はこの手法でローカルにインストールしたChainerを使用できるようにしてください。1.5系から仕様が変わったため、注意が必要です。</font></strong>

```
pip install -r requirement.txt
```

###<A NAME=④ 実行環境確認 /> ④ 実行環境確認

今回必要なライブラリがインストールされているかを確認します。
下記コマンドでipythonを立ち上げます。

```
ipython
```

ipythonシェルを実行した状態で下記のコマンドを順に入力し、ライブラリをインポートできるかを確認します。

ipython入力画面例：

![Screen Shot 2015-09-24 at 13.12.34.png](https://qiita-image-store.s3.amazonaws.com/0/10496/078abeca-b170-e5b2-902c-caa54eb40446.png)


```
from util.functions import trace

from util.chainer_cpu_wrapper import wrapper

from EncoderDecoderModel import EncoderDecoderModel
```

最後に下記コマンドでipython notebookが立ち上がることを確認します。

```
ipython notebook
```

ブラウザ上に立ち上がったipython notebookページの下記ファイルをクリックして下記のようなページが出れば準備完了です。

```
machine_translation.ipynb
```
![Screen Shot 2015-09-14 at 8.07.10.jpg](https://qiita-image-store.s3.amazonaws.com/0/10496/25445fea-7f67-452e-3cc4-0eac29ad1f50.jpeg)

#Advanced内容

<strong><font size="10" color="#ff0000">Advancedな内容も行いたい人は事前準備は必須です。ハンズオン時間には終わりません。</strong>

##必要なライブラリのインストール

boostのインストール

```
wget http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.zip
```

*注意

Macで`wget`をインストールしていない方は下記で予めインストールしておいて下さい。

```
brew install wget 
```

##Boostインストール

ダウンロードしたBoostのフォルダに移動して、下記のコマンドを実行

```
./bootstrap.sh
```

下記のコマンドを実行するとbuildが始まりますが、<strong><font size="10" color="#ff0000">時間が非常にかかります。直前に準備している方は諦めましょう。</strong>

```
sudo ./b2 install -j4 –prefix=インストールしたいフォルダ
```

##翻訳評価用ツール

git clone で翻訳結果を評価できるライブラリをダウンロードしてください。

```
git clone https://github.com/odashi/mteval.git
```

下記のライブラリが入っていればインストール可能です。Boostだけ時間がかかるので別に記述しました。


```
    GCC 4.7 or later
    Boost 1.49 or later
    autotools
```

###Mac にGCCをインストールする場合

http://qiita.com/ShinichiOkayama/items/962e55ac7f8920a5f007

###Mac にautotoolsをインストールする場合

http://www.4web8.com/9363.html


###Linuxにautotoolsをインストールする場合

`autotools`の導入の前に`m4`を導入する必要あり
ただしバージョンが`1.4.16`以降でないとダメ

http://tetsuyai.hatenablog.com/entry/20110216/1297939037

autoreconfが導入されていない場合は下記でインストール

```
yum install autoconf
yum install automake
yum install libtool
```

###下記のコマンドで翻訳の評価用ツールのインストール可能

```
$ cd /path/to/mteval
$ autoreconf -i
$ ./configure
$ make
$ (sudo) make install
```

#補足　トラブルシューティング

Mac でPyenvインストール時にはまった場合

http://dackdive.hateblo.jp/entry/2014/08/16/222546

MacでPyenv インストールで`error: failed to download readline`が出た時

``
bash brew install readline; brew link readline; pyenv install 3.4.1
```

MacでPyenv インストールで`ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?`が出た時

https://github.com/yyuu/pyenv/wiki/Common-build-problems

MacでPyenv インストールで`zipimport.ZipImportError: can't decompress data; zlib not available`が出た時

```
xcode-select --install
```

```
CFLAGS="-I$(brew --prefix openssl)/include" LDFLAGS="-L$(brew --prefix openssl)/lib" CFLAGS="-I$(xcrun --show-sdk-path)/usr/include"   pyenv install -v 3.4.1
```

ipython で下記のエラーが出たとき

`IPython Notebook error: Unsupported JSON nbformat`

http://codeyarns.com/2015/07/01/ipython-notebook-error-unsupported-json-nbformat/



m4 install時に下記のエラーが出た場合

```
./stdio.h:478:1: error: 'gets' undeclared here (not in a function)
 _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
```

対応方法
http://linuxtips.wiki.fc2.com/wiki/Mindmap

`autotools`のインストール時に下記のようなエラーがでた場合、

Can't locate Data/Dumper.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at 

下記をインストールすれば良い

```
yum install perl-Data-Dumper
```


[memo]Fedora19にMySQL-5.6.14-1をインストールする

http://d.hatena.ne.jp/bravewood/20131022