Apache Sparkの模範市民Yahooはかつて、CaffeによるディープラーニングモデルのスケーラビリティをSparkの並列処理で高めるフレームワーク、CaffeOnSparkを開発した。そしてそのYahooが今回は、TensorFlowOnSparkと呼ばれるプロジェクトをオープンソースで公開した。今度のそれは、SparkとTensorFlowを組み合わせることによって、大規模なクラスターで動くディープラーニングモデルを作るデベロッパーにとってTensorFlowフレームワークを、より魅力的にするものだ〔==TensorFlowのスケーラビリティを高める〕。
ビッグデータ時代の人気者になったApache Sparkは、効率の高い並列処理を可能にするオープンソースのフレームワークだ。Hadoopのようなシステムを追う形で出てきたSparkは、たとえばNetflixのような企業における大量のユーザーデータの処理を支え、リコメンデーションのスケールアップを可能にしている。
GoogleのTensorFlowやCaffeのような機械学習のフレームワークの登場によって、機械学習の専門知識のない者でもディープラーニングのモデルを作れるようになった。抽象度の高いライブラリがオープンソースで存在するからデベロッパーは、車輪を再発明する苦労から解放されて、いきなりモデルそのものを作ることができる。
ビッグデータの処理を高効率なクラスタリング並列処理で支えるSparkは、機械学習、中でもディープラーニングが必要とする膨大な量の、そして高速であることを要する、データ処理にも向いている。Yahooは自社で利用するためにCaffeOnSparkを作ったが、Caffe用のツールは機械学習のコミュニティのごく一部にとってしか恩恵がない。それに対して、人気がすごく高いフレームワークがTensorFlowだ(下図)。そこでYahooは、ディープラーニングのための大量高速データ処理をSparkにやらせるその処理枠組みを、TensorFlowに移植し、コミュニティの尊敬をかちとることを目指した。
YahooはTensorFlowとSparkのあいだに橋をかけるために、既存のツールSparkNetやTensorFrameを参考にしたが、最終的には一から自分で作る方が良い、と結論した。その結果デベロッパーは、自分の既存のTensorFlowプログラムを比較的簡単に、TensorFlowOnSparkを使うよう改造できる。
ディープラーニングのフレームワークは、デベロッパーたちが特定の“部族”に凝り固まる傾向がある。たとえばJavaで書かれたSkymindのDeeplearning4jは、最初からSparkを統合しているオープンソースのフレームワークだが、このライブラリの人気は6位と低い。そして他方には、複数種類のGPUにまたがるスケーラビリティを誇るMXNetがある。その特長がAmazonの関心をとらえ、AWSの努力によりMxNetはApacheのインキュベータに加入した。
TensorFlowOnSparkはオープンソースだが、Yahoo自身による改良努力は今後も続く。入手は、YahooのGitHubから可能だ。