Mercari Engineering Blog

We're the software engineers behind Mercari. Check out our blog to see the tech that powers our marketplace.

TensorFlow DevSummit 2018参加報告

メルペイSolution Team所属の@shuhei_fujiwaraです。 3月30日にMountain Viewで開催されたTensorFlow DevSummit 2018に参加してきました。

TensorFlow DevSummitとは

年に一度Googleが主催するTensorFlowのTech Conferenceです。 元々TensorFlowの最新情報はGoogle Cloud NextやGoogle I/Oなどのイベントで発表されることが多かったのですが、去年からTensorFlow DevSummitというTensorFlow専門のイベントが始まりました*1

今年はComputer History Museumの2階を全面貸し切っての開催でした。

f:id:shuheif:20180411124048p:plain

Computer History Museumは観光で行っても面白いのでおすすめです。

概要

肝心の内容の話をしましょう。セッションは全て動画が公開されているので、詳細を知りたい場合はそちらを見て頂くのが良いかと思います。 ここでは(独断と偏見による)重要度が高そうな話題をいくつか紹介します。

多言語対応

TensorFlow.jsとSwift対応の発表がありました。Swiftの方はまだ発表のみですが、4月中にリリースされるそうです。 TensorFlow.jsの方は現時点でバッチリ使える状態で、当日もでもアプリが動作する様子を見ることができました。

www.youtube.com

エイプリルフールネタ*2Gboard物理手書きバージョンにも、このTensorFlow.jsが使われています。

TensorFlow Hub

TensorFlow Hubは(個人的に)待望の、学習済みモデルを共有するための仕組みです。

www.youtube.com

以下のように書くだけで、学習済みモデルのダウンロードから計算グラフの構築までを簡単に実装できます。

import tensorflow as tf
import tensorflow_hub as hub

module = hub.Module("https://tfhub.dev/google/imagenet/nasnet_large/feature_vector/1")

features = module(my_images)
logits = tf.layers.dense(features, NUM_CLASSES)
probabilities = tf.nn.softmax(logits)

KerasのApplicationsに近い感じです。 既にGoogleが多くのmoduleを公開しているので、転移学習などの用途にすぐにでも使える状態です。 もちろん、自分でTensorFlow Hubで読み込める形式のmoduleを作成することもできます。

分散学習

今までTensorFlowでは分散学習をparameter serverを使う方式で実装することが推奨されていました。 ですが、今回はall-reduceという別の方針での実装が新たに追加されました。 まだsingle-node / multi-GPUの環境のみでmulti-nodeには対応していませんが、そちらも近々リリースされるそうです。

www.youtube.com

興味がある方はこちらに僕が発表した資料があるので読んでみてください。

また、parameter server方式の分散学習についてはTensorFlow white paperを読んでみるのがおすすめです。

Eager Execution

Chainerなどで採用されているdefine-by-run方式で書くための仕組みです。

www.youtube.com

速度面で通常のTensorFlow (graph mode) と比べてそれほど遅くならないというベンチマーク結果や、graph modeと互換性のある書き方についての話が聞けました。 eager modeを使うことで柔軟なネットワークを書きやすくなるのはもちろん、デバッグのしやすさについてもかなり強く主張していたのが印象的でした。

デバッグの話だとeager modeとは関係ありませんが、TensorFlowのデバッガをTensorBoardのpluginとして組み込んでGUI上でデバッグできるようになったという話も面白かったのでおすすめです。

www.youtube.com

TFX

機械学習をプロダクトに投入する上で、学習のアルゴリズムの実装以外にも重要な要素がたくさんあります。 もちろんGoogleの社内ではそのための仕組みがしっかり出来上がっていて、今回はそのうちの

にあたる部分が公開されました。

www.youtube.com

TFXに関して詳しく知りたい方は元論文@hurutoriyaさんが作ってくれたスライドなどを参照してみてください。

ニューラルネットの構造決定

Learning Transferable Architectures for Scalable Image Recognitionという方策勾配法でニューラルネットの構造を自動決定する論文が少し前に話題になりました。 さらに、この論文では小さいデータセットで作ったニューラルネットの「良いパーツ」が他のタスクにも使い回せるというところを売りにしています。

Googleは職人芸的な知識を持つ人がいなくてもニューラルネットを使いこなせるという世界を目指しており、こういった研究に非常に力を入れているという話が聞けました。

www.youtube.com

Cloud Auto ML Visionでも既にこの技術が実用レベルで使われているそうです*3

Recapイベント

現地でTensorFlow DevSummit 2018に参加したGoogle Developer Expertsの面々が各地方に飛んでいって話すrecapイベントを開催しています。 まだ申し込みが間に合う地域に住んでいる方は、ぜひ参加してみてください。

We're Hiring

メルカリ / メルペイ では、Machine Learning / SysML*4のエンジニアを募集しています。

興味がある方はぜひ応募してみてください!

*1:今でも一部の情報はNextやI/Oで新しく発表されることがあります

*2:きっちり実装されていて一体何が嘘だったのか謎ですが

*3:詳しい仕組みはまだ秘密だそうです

*4:最近は機械学習の基盤などを総称してSysMLと呼ぶことが多いようです:

http://www.sysml.cc/