概要
前回、RyzenなWindows10環境にanaconda3使ってTensorflow(GPU)+Keras環境ならびにOpenCV3.2を導入したのですが…今度は強化学習(というかDQN)お試し環境作りますよーというわけで作業をしました。
はじめに、オチを言うと結局Ubuntu16.04LTSのデュアルブート環境を作って入れました。
ですが、そこまでに至った経路と躓いたポイントを晒しておこうかと思います。
1.とりあえずpipはダメ
まずはダメ元でWindowsネイティブのanaconda環境で、
pip install gym
しましたが、「お前に食わすwheelは無い」とのことでした。
公式のgithubにも
We currently support Linux and OS X running Python 2.7 or 3.5. Some users on OSX + Python3 may need to run
との記述があるのでまぁ仕方なし。そうね、Linuxね。
2.Bash on Ubuntu on Windowsもダメ
正確にはダメではなくて、とりあえずpython3.5.2入れて、pipでtensorflow-gpu1.0.1, keras1.2を入れて
pip install gym
まで成功。
「よし、動かすか」と走らせたらGPUのところでエラー。まぁそりゃ、WindosネイティブのCUDAは使ってくれないですよね。
ということで気を取り直して調べましたが、なんかGPU使えないらしい。
機械学習でGPU使えないのは辛いので、ここでWindowsでの作業を断念。
3.仕方ないのでUbuntuを入れる
生Ubuntuなら大丈夫ということで、こちら(「俺とプログラミング」様)を参考にデュアルブート環境を構築。
SSDも大分安価になったので、気軽にデュアルブート構成選択できるのは良い時代。
しかも、最近のUbuntuってデスクトップ起動時にWindows側のパーティション全部mountしてくれるみたいで、Windows側で作ったデータのコピーとか楽ちんでした。
1点詰まったところとしては、**「64GBのUSB3.0のメモリでインストールしようとしたらブートしなかった」**です。
多分32GB以上はダメなのかな(一応FAT32でフォーマットはしました)。ということで、手持ちの16GBのUSB2.0のメモリでUbuntu16.04LTSのisoを焼いて無事インストール。
4.Ubuntu上での作業
いろいろ見てるとpyenvとanacondaを入れてる方が多いようですが、anacondaだけで行けんかな?ということで、今回はanaconda3の最新版を入れたあとに
conda install python=3.5.2
で先祖帰りさせてから、pipでtensorflow-gpu1.0.1とkeras1.2を入れました。
ちなみに、condaはsudoからやってますが普通にやると環境変数が引き継がれないので注意です(参考「sudo時に環境変数PATHが引き継がれない時の対策」)。
今回は横着でフルパスでconda指定しました。
OpenAI Gymを入れるところは機械学習のライブラリを片っ端からpipで入れまくる(Ubuntu)を参考にしました。
gym
とgym[atari]
だけで良いかな?と思いもしましたがせっかくなので、gym[all]
で全部入れました。
そして、spyderから公式参考にインベーダーでも動かそうかなとしたら、GLIBCXX_3.4.20 not found
で怒られたので、
conda install libgcc
で、事なきを得る。ソースからコンパイルじゃなくてちょっと助かった。
5.まとめ
今回の作業で感じたことは
- OpenSource環境はLinux入れたほうが楽できる
- ドライバとかもあまり心配ない
- デュアルブート環境思ったより使える
- Ubuntuあたりは情報も多い
- 逆にWindowsで動かない時の対策情報が少ない
ということで、「Linux経験無いから…」という方も、結構簡単に導入できるのでそれに時間を割いた方が結果としてトータルで楽できそうなので是非。私も12.04以来の久しぶりでした。
最終的なエンドユーザー要件でWindows上での構築が必要な場合もありますが、それはそれで機械学習いじる上では普段使いはUbuntuの方が作業楽そうだなと思いました。