メルペイ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階を全面貸し切っての開催でした。
Computer History Museumは観光で行っても面白いのでおすすめです。
概要
肝心の内容の話をしましょう。セッションは全て動画が公開されているので、詳細を知りたい場合はそちらを見て頂くのが良いかと思います。
ここでは(独断と偏見による)重要度が高そうな話題をいくつか紹介します。
多言語対応
TensorFlow.jsとSwift対応の発表がありました。Swiftの方はまだ発表のみですが、4月中にリリースされるそうです。
TensorFlow.jsの方は現時点でバッチリ使える状態で、当日もでもアプリが動作する様子を見ることができました。
エイプリルフールネタ*2のGboard物理手書きバージョンにも、このTensorFlow.jsが使われています。
TensorFlow Hub
TensorFlow Hubは(個人的に)待望の、学習済みモデルを共有するための仕組みです。
以下のように書くだけで、学習済みモデルのダウンロードから計算グラフの構築までを簡単に実装できます。
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には対応していませんが、そちらも近々リリースされるそうです。
興味がある方はこちらに僕が発表した資料があるので読んでみてください。
また、parameter server方式の分散学習についてはTensorFlow white paperを読んでみるのがおすすめです。
Eager Execution
Chainerなどで採用されているdefine-by-run方式で書くための仕組みです。
速度面で通常のTensorFlow (graph mode) と比べてそれほど遅くならないというベンチマーク結果や、graph modeと互換性のある書き方についての話が聞けました。
eager modeを使うことで柔軟なネットワークを書きやすくなるのはもちろん、デバッグのしやすさについてもかなり強く主張していたのが印象的でした。
デバッグの話だとeager modeとは関係ありませんが、TensorFlowのデバッガをTensorBoardのpluginとして組み込んでGUI上でデバッグできるようになったという話も面白かったのでおすすめです。
TFX
機械学習をプロダクトに投入する上で、学習のアルゴリズムの実装以外にも重要な要素がたくさんあります。
もちろんGoogleの社内ではそのための仕組みがしっかり出来上がっていて、今回はそのうちの
にあたる部分が公開されました。
TFXに関して詳しく知りたい方は元論文や@hurutoriyaさんが作ってくれたスライドなどを参照してみてください。
ニューラルネットの構造決定
Learning Transferable Architectures for Scalable Image Recognitionという方策勾配法でニューラルネットの構造を自動決定する論文が少し前に話題になりました。
さらに、この論文では小さいデータセットで作ったニューラルネットの「良いパーツ」が他のタスクにも使い回せるというところを売りにしています。
Googleは職人芸的な知識を持つ人がいなくてもニューラルネットを使いこなせるという世界を目指しており、こういった研究に非常に力を入れているという話が聞けました。
Cloud Auto ML Visionでも既にこの技術が実用レベルで使われているそうです*3。
Recapイベント
現地でTensorFlow DevSummit 2018に参加したGoogle Developer Expertsの面々が各地方に飛んでいって話すrecapイベントを開催しています。
まだ申し込みが間に合う地域に住んでいる方は、ぜひ参加してみてください。
We’re Hiring
メルカリ / メルペイ では、Machine Learning / SysML*4のエンジニアを募集しています。
興味がある方はぜひ応募してみてください!