小ネタ: fast.aiのフレームワークを自分のWindows PC上で動かしてみた


# はじめに

:triangular_flag_on_post: 先々変わるかもしれませんので、2018/6月時点の情報です

各所で絶賛されている[fast.ai](http://www.fast.ai/)の[ディープラーニング・コース](http://course.fast.ai/)の視聴を始めました。当該コースは2018年に刷新されまして、[コース中で使用する教材やfastaiのフレームワーク](https://github.com/fastai/fastai)も**PyTorchベースのものに変わっています。** 教材のJupyter Notebookをそのまま動かすには正直、GPUが無いとつらいので私もコース中で推奨された[Paperspace](https://www.paperspace.com/)を使いましたが、自分の普段使いのノートPC(GPUなし)でも動かしたいな～と思って、やったら動いたので設定方法をメモしておきます。

- Thinkpad X230 (当然ながらGPUなし)
- Windows 7 (& 10でも確認)
- minicondaでPythonだけ使えるようにしておいた

程度の普通のPCです

# 設定方法
要は下記のfast.aiのforumの情報を参考に、一箇所だけ変更したら動きました。
[Howto: installation on Windows](http://forums.fast.ai/t/howto-installation-on-windows/10439)

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/694af18d-0c3d-c782-7a01-de22e607dbb9.png)

基本的にJeremy大先生の上記指示のとおりに操作すればいいのですが、上記はGPUがあることが前提なので①GPUが無い②Windowsであることの差分だけ変更します。


①のコメントはGPU無いので無視していいです
②Github上のリソースではGPUなし環境用にenvironment-cpu.ymlが提供されていますが、Windowsではそのままでは動きません。
以下のように-pytorch<0.4 の行を -pytorch-cpu<0.4に書き変えて保存します

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/e4e774da-5b34-ed2f-e8d4-54d8fbbab02f.png)

あとはreadmeに従い

`conda env update -f environment-cpu.yml`します

ご参考) 以下は[PyTorchのHP](https://pytorch.org/)ですが、WindowsでGPUなしなら**pytorch-cpu**を使ってね、ということなので、そう設定しただけです。
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/021a500a-d3fc-0203-db09-8e3e7cb1712d.png) 

この変更を漏らしてもインストールは進みますが、最終的にNotebook実行時に以下のようなエラーになりました。

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/ffecc54a-c4ea-22f8-1584-91ecb026ac06.png)

③はリソース一式がlinux環境を前提にリンクを貼っているので、それをWindows環境で貼りなおす作業です。書いてある通りに実施すればオーケーです。

<details><summary>いちおう私のWindows10環境での実行ログを下記に抜粋して掲載します
</summary><div>
:triangular_flag_on_post: Windows10ではコマンド環境は特権ユーザーで実行してください。(③のシンボリック・リンクの作成に必要です）

```text
Microsoft Windows [Version 10.0.15063]
(c) 2017 Microsoft Corporation. All rights reserved.

C:\>python -V
Python 3.6.5 :: Anaconda, Inc.

C:\>conda -V
conda 4.5.1


c:\>git clone https://github.com/fastai/fastai.git
Cloning into 'fastai'...
remote: Counting objects: 5239, done.
remote: Total 5239 (delta 0), reused 0 (delta 0), pack-reused 5238R
Receiving objects: 100% (5239/5239), 191.36 MiB | 359.00 KiB/s, done.
Resolving deltas: 100% (3306/3306), done.
Checking out files: 100% (239/239), done.

c:\>cd fastai

c:\fastai>dir
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は B86F-D378 です

 c:\fastai のディレクトリ

2018/05/25  15:29    <DIR>          .
2018/05/25  15:29    <DIR>          ..
2018/05/25  15:29             1,485 .gitignore
2018/05/25  15:29             1,770 .travis.yml
2018/05/25  15:29             3,293 CODE-OF-CONDUCT.md
2018/05/25  15:29    <DIR>          courses
2018/05/25  15:29    <DIR>          docs
2018/05/25  15:29             1,308 environment-cpu.yml
2018/05/25  15:29             1,323 environment.yml
2018/05/25  15:29    <DIR>          fastai
2018/05/25  15:29             9,204 LICENSE
2018/05/25  15:29                34 MANIFEST
2018/05/25  15:29               134 MANIFEST.in
2018/05/25  15:29                38 pytest.ini
2018/05/25  15:29             3,523 README.md
2018/05/25  15:29             1,105 requirements.txt
2018/05/25  15:29                42 setup.cfg
2018/05/25  15:29             1,591 setup.py
2018/05/25  15:29    <DIR>          tests
2018/05/25  15:29    <DIR>          tutorials
              13 個のファイル              24,850 バイト
               7 個のディレクトリ  93,059,665,920 バイトの空き領域

c:\fastai>

========================================
コメント：environment-cpu.ymlの変更を行いました
========================================

c:\fastai>conda env update -f environment-cpu.yml
Solving environment: done


==> WARNING: A newer version of conda exists. <==
  current version: 4.5.1
  latest version: 4.5.4

Please update conda by running

    $ conda update -n base conda



Downloading and Extracting Packages
vs2015_runtime 14.0.25420##################################################################
#################################### | 100%
==＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝
途中省略
==＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝
python 3.6.5################################################################################################################### | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: /
|
/ Enabling: jupyter_nbextensions_con
- Writing config:'C':\Users\aa051466\AppData\Local\conda\conda\envs\fastai-cpu\etc\jupyter
    - Validating...
      jupyter_nbextensions_configurator 0.4.0 ok
Enabling notebook nbextension nbextensions_configurator/config_menu/main...
Enabling tree nbextension nbextensions_configurator/tree_tab/main...

==＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝
途中省略
==＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝
Successfully installed MechanicalSoup-0.8.0 PrettyTable-0.7.2 beautifulsoup4-4.6.0 chardet-3.0.4 cliff-2.8.1 cmd2-0.8.5 configparser-3.5.0 cssselect-1.0.3 feather-format-0.4.0 graphviz-0.8.3 idna-2.6 isoweek-1.3.3 kaggle-cli-0.12.13 lxml-4.0.0 mizani-0.4.6 opencv-python-3.4.1.15 palettable-3.1.1 pandas-summary-0.0.41 pbr-4.0.3 plotnine-0.3.0 progressbar2-3.34.3 pyarrow-0.9.0 pyperclip-1.6.1 python-utils-2.3.0 requests-2.18.4 scikit-learn-0.19.1 sklearn-pandas-1.6.0 stevedore-1.28.0 torchtext-0.2.3 torchvision-0.2.1 urllib3-1.22
#
# To activate this environment, use:
# > activate fastai-cpu
#
# To deactivate an active environment, use:
# > deactivate
#
# * for power-users using bash, you must source
#


c:\fastai>activate fastai-cpu

(fastai-cpu) c:\fastai>jupyter nbextension enable --py widgetsnbextension --sys-prefix
Enabling notebook extension jupyter-js-widgets/extension...
      - Validating: ok

(fastai-cpu) c:\fastai>cd courses\dl1

(fastai-cpu) c:\fastai\courses\dl1>type fastai
../../fastai
(fastai-cpu) c:\fastai\courses\dl1>del fastai

(fastai-cpu) c:\fastai\courses\dl1>mklink /d fastai ..\..\fastai
fastai <<===>> ..\..\fastai のシンボリック リンクが作成されました

(fastai-cpu) c:\fastai\courses\dl1>cd ../..

(fastai-cpu) c:\fastai>

```
</div></details>


# その他
上記でWindowsPCでもfastaiの教材やNotebookが動くようになりますが

1). Lesson1で画像判定に使う[dogscats.zip](http://files.fast.ai/data/)は犬と猫のトレーニング用画像が各11,500件ずつあり、これをそのままPCでトレーニングするとえらく時間がかかりますしメモリも喰います。そこで、各1000件位に減らしたら10分くらいで終わるようになりました。もちろん「動けばいい」ってものではありませんが、1000件でもそれなりのaccuracyになるようでしたので、「PCで軽く試すだけなら、減らしたらいいかも」とお伝えしておきます。

2). 以下を見るとディープラーニングだけではなく**マシンラーニングのコースもEarly Accessとして視聴できます**。こちらなどはGPUなしのPCでも十分に動くんじゃないかと思います。(少なくともLesson1のRandom ForestのNotebookは動きました)

[Another treat! Early access to Intro To Machine Learning videos](http://forums.fast.ai/t/another-treat-early-access-to-intro-to-machine-learning-videos/6826)
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/2cd45fe6-0aba-a2e0-e43a-67778475b09f.png)

3). ネットを見るとfast.aiのコースの講義ノートを色々な方が公開されていますが、（英語ですが) Medium上で[Hiromi Suenaga](https://medium.com/@hiromi_suenaga)さんが公開してくれている一連の講義ノートが詳しくてお勧めです。(各回２時間の講義を延々視聴していると頭の中が混乱してくるので、講義ノートが役立ちます)

- Deep LearingのLesson1のノートは[こちら](https://medium.com/@hiromi_suenaga/deep-learning-2-part-1-lesson-1-602f73869197)

良いノートをありがとうございます。勉強になってます！:clap: >Hiromi Suenagaさん

以上です