ビッグデータ処理のオープンソースソフトウエア(OSS)である「Apache Spark」のディープラーニング(深層学習)対応が進んでいる。Sparkの主要開発企業である米Databricksや米Intel、米Microsoft、米Verizon傘下の米Oath(旧Yahoo!)などが、Sparkの深層学習対応に熱心だ。
分散処理ソフトのSparkは、2014年ごろには機械学習の大規模化に欠かせない存在だと認識されていた。しかしその後の深層学習の台頭によって存在感が薄れていた。深層学習の高速化にはGPU(Graphics Processing Unit)が向いていることが分かり、米Googleが公開した「TensorFlow」などGPUに対応した深層学習フレームワークが人気を集めるようになったためだ。
ところがここに来て、Sparkを深層学習に対応させる動きが活発化している(表)。2017年6月6~7日に米サンフランシスコで開催したカンファレンス「Spark Summit 2017」では、Databricksが深層学習をSparkのアプリケーションに組み込むライブラリ「Deep Learning Pipelines」をOSSとして公開したほか、IntelやMicrosoft、Oath(旧Yahoo!)などが自社の取り組みをアピールした。
名称 | 開発元 | 概要 |
---|---|---|
BigDL | 米Intel | Spark用の深層学習ライブラリ。推論だけでなく、Sparkクラスターを使った分散学習にも対応する |
Data Learning Pipelines | 米Databricks | 学習済みの深層学習モデルをSparkクラスター上に展開する、ハイパーパラメータのチューニングを分散処理するなどの機能を提供する |
MMLSpark* | 米Microsoft | Microsoftの深層学習フレームワーク「Microsoft Cognitive Toolkit(CNTK)」 などで学習済みの深層学習モデルをSparkクラスター上に展開する機能などを提供する |
TensorFlowOnSpark | Oath(旧Yahoo!) | 米Googleの深層学習フレームワーク「TensorFlow」をSparkのワーカーノードで実行する。分散学習にも対応する |
SQLクエリーで深層学習
DatabricksがOSSとして公開したDeep Learning Pipelinesは、Sparkの「バージョン1.2」から搭載された「ML Pipelines」を拡張し、深層学習に対応させたものになる。ML Pipelinesは、Sparkにおけるデータ処理の仕組みである「DataFrame」や「Spark SQL」を使って機械学習を実行するAPI(アプリケーション・プログラミング・インタフェース)を提供するものだ。
例えばML Pipelinesを利用することで、開発者はSQLクエリーを使って機械学習の処理をSparkアプリケーションに組み込めるようになった。Deep Learning Pipelinesは、ML Pipelinesと同じことを深層学習でも実現する。開発者はSparkアプリケーションに深層学習を組み込む際に、DataFrameやSQLクエリーを利用できるようになる。
Sparkのオリジナル開発者の一人で、現在はDatabricksのCTO(最高技術責任者)を務めるMatei Zaharia氏はSpark Summitの基調講演で「現在の深層学習は、大規模分散処理の分野で15年前に『MapReduce』が登場したころと同じ状況にある。MapReduceは強力だったがとても使いづらかった。それと同じように今の深層学習も扱いづらい。MapReduceの難しさをSparkが取り除いたように、深層学習の難しさをSparkが取り除く」と語った(写真1)。
アプリケーション開発者はDeep Learning PipelinesのAPIを利用することによって、「画像認識に使用する画像をロードする」「学習(トレーニング)済みの深層学習モデルをSparkアプリケーションに組み込む」「転移学習(Transfer Learning)を実行する」「ハイパーパラメーターのチューニングを分散処理する」などができるようになる。
Deep Learning Pipelinesの主眼は、深層学習の学習処理をSparkで実行することよりも、他の深層学習フレームワークで学習済みのモデルを取り込み、推論処理をSparkで実行することにある。Deep Learning Pipelinesは、TensorFlowや「Keras」で開発したモデルの組み込みに対応している。
様々なSparkアプリケーションに深層学習を取り込むのが狙い
DatabricksのZaharia氏は、推論処理をSparkで実行するメリットについて、「Sparkが備える様々な機能と深層学習を連携できることや、既存のSparkアプリケーションに深層学習を組み込めること」だと説明する。