スクリーンショット_2018-05-19_0

将棋AIで学ぶディープラーニング:1日目

(正確には、一昨日にちらっと読んでショックを受けたので二日目)

第一部と第二部は飛ばした。
AlphaGo については別記事でさらえているし、またディープラーニングの実装に関しては書籍「ゼロから作るdeep learning」である程度把握済みだ。

さて。第三部、実践編、である。

いきなりだが、心が折れそうになった。

メインターゲットは Windows で、さらに nVidia GPU 向けの CUDA/cuDNN が必須、みたいな論調だ。(僕の環境は MacBook Pro。 GPU は Intel オンボードのヘタレなやつだ)

でも挫けてはいられない。
幸い Docker というコンテナ技術の知識も持ち合わせている。

「りょうじとやらが、 macOS、 GPU なしでどこまで行けるか、見てみるとしようぞ」

コンテナイメージ取得

Chainer は、書籍では v3.3.0 を使っている。

DockerHub に Chainer を作っている Preferred Networks 社(余談。日本人の会社だ)公式のコンテナイメージがあった。

docker pull chainer/chainer:v3.3.0-python3

取得したイメージ上で、ひとまず python インタープリターを起動してみる。

docker run --rm -it chainer/chainer:v3.3.0-python3 python3

すると以下のプロンプトが表示される。
docker コマンドのオプションは、ごめん、説明をはしょるよ。

Python 3.4.3 (default, Nov 28 2017, 16:41:13)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

書籍にしたがって import cupy すると(予想どおり)エラーが発生する。
nVidia GPU を搭載している PC で、ホスト PC の GPU を Docker コンテナから利用する方法もある。けれど、これも省略。僕の MacBook では使えないからね。

でも import chainer は成功する。(さすが公式イメージ)

MNIST学習

続いて書籍6章5節、サンプル実行だ。

MNISTは手書き数字を集めたデータセットで、幅と高さそれぞれ28ピクセルのグレースケール画像が7万枚収録されている。

Chainer には、このデータをダウンロードして手書き数字のクセを学習するサンプルがついているようだ。
けれど、先の Docker イメージには同梱されていなかった。

ホストにデータをダウンロードし Docker コンテナから参照して解決する。

curl -LO https://github.com/chainer/chainer/archive/v3.3.0.tar.gz
tar fxz v3.3.0.tar.gz

これで chainer-3.3.0 というデータディレクトリーができる。

このコンテナ内の Chainer は、実行時にファイルシステムルートに /.chainer というファイルを作るようだ。だから、 docker run で chainer を使う際には root で走らせざるを得ない。
ホストファイルシステムを仮想マウントして直接使いたかったけれど、うまくない。ホスト側に root による一時ファイルができるとあれこれ面倒なことになるから。

ということで仮想マウントして、その中の examples をコピーして使うことにする。まずコンテナを起動。

docker run --rm -it -w $PWD -v $PWD:$PWD chainer/chainer:v3.3.0-python3

ここから docker コンテナ内の root ユーザーによる操作。

cp -r chainer-3.3.0/examples ~
cd ~
python3 examples/mnist/train_mnist.py

始まった。

GPU: -1
# unit: 1000
# Minibatch-size: 100
# epoch: 20

Downloading from http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz...

が。

恐ろしいほど「遅かった」。

これは、書籍の最後まで、たどり着けるだろうか……(不安)

この記事が気に入ったらサポートをしてみませんか?