#はじめに#
こんにちは。五十嵐と申します。
qnoteに入社してもう2回目のアドベントカレンダー。。。
時間が過ぎるのは早いですね。。。(入社したての頃はqnoteで一番年下だったのに🥺 笑)
そんな事はさておき、今回は全く勉強したことの無い「機械学習」に興味を持ったので
qnoteの猫社員たちの画像をTensorFlowを使って学習させ、お題の写真を元にどの猫社員の確率が一番高いのか、PCさんは猫社員の顔をしっかり認識しているのか。
そんな検証をしてみたいと思いました。
#準備#
Dockerを使って環境構築をしようと思ったので、
まず、TensorFlowの公式ページを参考にしながらやっていくことにしました。
Docker を使用すると、ホストマシンに必要なのは NVIDIA® GPU ドライバだけになるので、Linux で TensorFlow の GPU サポートを有効にする際の最も簡単な方法となります(NVIDIA® CUDA® ツールキットのインストールは不要です)。
「ほうほう。NVIDIA GPU ドライバというのが必要なのか。」
そう思い調べてみました。すると、
Mojave向けのWeb Driverが提供されていません。
こんな記事や
NVIDIA、macOSをサポートした最後のCUDA Toolkiをv10.2リリース。次期アップデートでmacOSは非サポートに。 [AAPL Ch.]
ということが話題となりました。AppleのハードウェアにNVIDIA GPUが搭載されなくなってからもOSへの対応を続けてきたNVIDIAですけど、Mojaveでそのドライバがインストールできなくなり、それはCatalinaでも同様という状態が続き、ついにサポートする意欲を失ったといったところでしょうか。
こんな記事ばかり出てくるんです。(泣)
「諦めるな。きっと何か方法がある。」
そう自分に言い聞かせ、ここからまた調査を進めることにしました。
#とりあえず結論#
MacにDockerを入れて、TensorFlowのコンテナを立てる場合、
GPUのサポートを受ける事は出来ないとの事。(悔しい。。。)
原因は、既にnvidiaはAppleに対してのサポートを終了していたからです。
機械学習初心者は(少なくとも僕は)、まさかnvidiaがAppleのサポートを終了している事なんて知らなかったし、
サポートを終了した理由も簡単に言えば**「仲が悪いから」**という理由らしい、、、(勘弁してくれよ笑)
#今回の事例#
Dockerを使った場合、
ホストOS(macOS)上でDockerが動きます。
nvidiaドライバーはLinuxディストリビューションなどであればサポートされているので、
ホストOSがLinux系であればすんなり使えるハズ。
僕は最初「コンテナ内のOSイメージがUbuntuとかだったらいけるんじゃないの?」と思っていましたが、
調べていると、
ホストOSにはNVIDIAドライバとnvidia-container-toolkitのパッケージをインストールし、CUDA、cuDNN、TensorflowはDockerコンテナに構築します。
という記事を見つけました。
僕の環境のホストOSはmacOSです。。。
そしてさらに調査し、この表を見つけた時に「詰んだ」と思いました。
僕の使っているMacは、MacBook Pro (Retina, 13-inch, Late 2013)でしたので、
そもそもNVIDIAのGPUが搭載されてないですね笑笑
#唯一の可能性#
調べていて動く可能性があるものとしては、
・High Sierraまでダウングレードさせる方法。 (nvidiaにサポートされているグレードまで)
・デュアルブートでUbuntuをホストOSにする方法。
・仮想環境を使わずにマシンに直接的にTensorFlow,Keras,PlaidMLをインストールする方法。(OSのグレードはCatalinaを使用)
上記の方法があるらしいが、アドベントカレンダー投稿までのタイムリミットが近づいてきていたので試せていない。
#とりあえず結果オーライ#
今回、しっかり環境構築で詰んでしまったわけですが学ぶ事はたくさんありました。
もともとOS周りの知識にはあまり自信がなく、苦手意識がありましたが、
調べているうちに少しずつ理解し、色々な知識を得る事ができました。
まだまだ調べ尽くさないと理解できなかったり、壁にぶつかりながらかもしれませんが
その度に少しでも教養を増やしていければいいなと思っています。
今回の一件を通じて「地道にググれば色んな知識つくな」と改めて気付いたので、この調子で学習を加速させていきたいと思います。
#最後に#
まだまだ分からない事も多く、まとまらない内容になってしまっていると思うので、
「ここ違うよ」とか「こうしたほうがいいんじゃない?」などのコメントを頂けたらとてもありがたいです。
また、「こうしたらmacでもDockerとGPU使って画像認識できるのでは?」などの情報も募集しておりますので
コメントください。(qnote社員の方は直接お願いします笑)
もし記事がちょっとでも参考になった方や「へえ〜そうなんか〜」と思っていただけた方は
LGTMよろしくお願いします!👍
#参考にさせていただいた記事#
インストールガイド-NVIDIA Cloud Native Technologies ドキュメント
NVIDIA GPU搭載MacBook ProにUbuntu 18.04を入れてCUDA/cuDNN/Tensorflow機械学習環境を構築 | 竹のしんのテック日記
NVIDIAがMacから完全撤退 - 日々適当
TensorFlow | Docker
※参考にしたサイトが多すぎるので一部抜粋させていただいています。