Deep Learning - Hardware - Software

TensorFlow-GPUを使う環境作り(1/2)

 今回は意外とまとめて言及されていない「自分環境用にTensorFlow-GPUをセットアップする上で出来ないこと」の話です。

 「デスクトップパソコンもあるし、グラボも買ったし、いっちょTensorFlow-GPU(TF-GPU)でも入れて自宅でGPUコンピューティングするか!」となったとき、悩ましい問題があります。それは「どんな環境でTF-GPUを使うか」です。よくある「それでけません!」や「それやめたほうがいい」なケースを、時間と工数を割いた後で判明して落ち込まないように書いておきます。

1.「MacではTF-GPUは使えません」

 Mac内蔵のGPUを使用したり、MacにeGPUでグラボを外付けしてTensorFlow-GPUを動かせたら普段の日常的環境の範疇なのでどんなに素晴らしいかと思いますが、現時点ではMacでTensorFlow-GPUは使えないのです。以前は使える「TensorFlow-GPU for Mac」があったのですが、なくなってしましました。。。

2.「WindowsでPython使うのはストレス」

 Deep Learningの技術者で集まった時に見回すと一目瞭然ですが、95%以上はMacユーザーです。稀な例としては、fast.aiのエバンジェリストさんがMicrosoft Surface、東大の名誉教授の先生が日本のメーカーのWindowsマシンを使っておられましたが、それ以外のみなさんはMacbookでした。我々は普段はMacでコードを書きます。

 また、ニューラルネットワークの学習という高負荷作業をさせるのはUbuntuを中心とするLinuxマシンです。MacはカーネルがFreeBSD由来であり、UbuntuはLinuxなので、互いに共通した知識で扱え、書いたコードが一方では動くが他方で動かないという違和感はないのです。しかしながら、Windows上でPythonコードを動かすストレスと言ったら私は耐えられません。2019年になった現在にMS-DOSコマンドを打つ情けなさと言ったら。PythonモジュールをインポートしようとすればPathが通ってないだのなんだのと。MacやLinuxで書いたコードがそのまま動かないことばかりです。

 ちなみに、WindowsにAnaconda/Minicondaをインストールして仮想環境を用意したとしても、コマンドはMS-DOSコマンドになるので使いずらさは何も変わりません。

3.「Windowsで動くVirtualboxマシンはGPUを認識しません」

 これは読んで字のごとく、Anacondaという仮想Python環境からはGPUを認識するのに対して、VirtualboxからはGPUを認識しません。

4.「WindowsでWSLを走らせてUbuntu入れてもGPUを認識しませんでした(泣)」

 上記ではMicrosoftではないベンダーが提供する仮想化ツールを使ってWindows上にUbuntuマシンを作ったわけですが、Microsoftが提供するツールにWSL(Windows Subsystem for Linux)を入れて、Microsoft Storeで提供されるUbuntuを入れた場合はどうでしょう?Windowsの上ではなく中でUbuntuが動くようにすればGPUを認識するのではないでしょうか?

 世の中には「それで動いたよ」と言っている人がいるのですが、私はうまく行きませんでした。インストールしたUbuntuはCUI状態なので、X Window SystemをインストールしてGUIにし、そこに更にAnacondaを入れて(過剰な増築のような雰囲気ですが)TensorFlow-GPUをと狙ったのですが、Ubuntu自体がGPUをハードウェアとしてPCIスロットに刺さっていることを理解してくれなかった。

 ちなみに、雑談ですが、「X-Window System(エックス・ウィンドウ・システム)」を単に「エックス・ウィンドウ」と呼ぶ人がいますが、正しくは「エックス」または「エックス・ウィンドウ・システム」であって、「エックス・ウィンドウ」で切ってしまうと、他の例で言うと「マルちゃん・赤いきつね」を「マルちゃん・赤い」と呼ぶのと同じです。


 このような状況を鑑みると、結局は1台のデスクトップPCに2台のHDDを付け、一方はWindowsで他方はUbuntuという物理的住み分けのデュアルブートが妥当な落とし所という見解で生きております。みなさんも私のような無駄の集大成にならないよううまく見切りをつけながら前に進みましょう!

Subscribe
Notify of
guest
4 Comments
Oldest
Newest
Inline Feedbacks
View all comments
h.arima
h.arima
3 years ago

初めまして。
> 結局は1台のデスクトップPCに2台のHDDを付け、一方はWindowsで他方はUbuntuという物理的住み分けのデュアルブートが妥当な落とし所
ですよね。
サブノートですがWindows10とUbuntu18.03のデュアルブートにしていたものが、WindowUpdateによりUbuntuのパーティションを潰されたという経験があります。
管轄外のパーティションに触るという、Microsoftの思い上がりに辟易しております。

Hiro
Hiro
3 years ago

[MacはカーネルがFreeBSD由来であり] これは間違いです。
kernel はNextからのMACH(カーネギーメロン大)micro kernelです、それ以外はのlibraryなどはNetbsd/FreeBSDから多くを取り入れています。