今回は深層学習(Deep Learning)のプラットフォーム/ライブラリの中でもスタンダードとなっているTensorFlowをブラウザで動かせる「TensorFlow.js」をGPUで処理する話です。
https://www.tensorflow.org/js/
ネット上で見られる多くのTensorFlow利用事例はPython版のTensorFlowです。自分のパソコンやサーバー上に仮想Python環境を作ってコードを書いて実行します。しかし、Python自体に馴染みのない人々がPythonを新たに学習してコードを書くのは億劫だったり、仮想環境というネイティブ環境との二重管理が煩わしかったり、全ての人にとってとっつきやすいものではないでしょう。
私が、特に学習環境としてオススメしているのがブラウザがあれば別段の準備もせずに簡単にTensorFlowを動かせる「TensorFlow.js」です。テキストエディタでHTMLファイルを作り、そのヘッダーにライブラリをインポートする1行を書けば、そのボディー部分にJavaScriptでコードを書ける。
1. TensorFlow.jsの良いとこ&悪いとこ
良いとこ
- ブラウザがあればすぐ使える(Google Chrome推奨)
- JavaScritpとHTMLの知識があれば使える
悪いとこ
- Python版よりもアップデートが遅く、最新の適用(例:GANsをしたい)に工数がかる
- TFJS-VISのような可視化ツールはあるものの視覚的モニタリングが弱い
2. TensorFlow.jsとGPU
TensorFlow.jsではGPUを使えないと思われているふしがあるのだが、実際にはできる。使っているパソコンにNvidia GPUが稼働しており、ブラウザの設定でWebGL経由でGPUを使えるようハードウェア・アクセラレーションが有効になっていれば使える。
Python版のTensorFlowでGPUを使いたい時はTensorFlow-gpuというGPUを使う用のTensorFlowをインストールしなくてはいけないが、JavaScript版のTensorFlow.jsではそのような区分はありません。TensorFlow.jsが自動的に有効なプロセッサを選択します。なお、GPUを使えるが、敢えてCPUを使いたい場合に明示的にそう指定します。
ブラウザでTensorFlow.jsを走らせていない時(GPU使用率:2%)
ブラウザでTensorFlow.jsを走らせている時(GPU使用率:53%)
上記のようにブラウザでのニューラルネットワークの学習によってGPUが稼働しているのがわかります。しかし、気になるのは、Python仮想環境でGPUを使うと「Cuda」の稼働率が上がるのに対して、ブラウザで実行させた時は「3D」の稼働率が上がる。これは、ブラウザからGPUを使う際にはCudaを使用せず、「ブラウザ > WebGL > GPU」という経路でGPUに接続して利用しているということ。
Deep Learningの学習を始めるにはお金は要りません。まずは今あるパソコンにChromeを入れてCPUで回してみてください。デワデワ。