Platinum Data Blog by BrainPad

株式会社ブレインパッドのデータ活用に関する取り組みや製品・サービス開発の裏側、社員の日常などをご紹介します。

TensorFlow World 2019(米・サンタクララ)参加レポート

10月28日から31日にかけて、アメリカ・サンタクララで開催された「TensorFlow World 2019」の様子を、現地から速報します。

f:id:bp-writer:20191101064844j:plain

こんにちは。 CDTO の太田です。10月28日から31日にかけて開催されたTensorFlow World 2019に参加してきたので、その様子を報告します。

開催概要

TensorFlow World は、 Oreilly社主催の TensorFlow に関するイベントです。これまで TensorFlow のイベントと言えばTensorFlow Dev Summitがありましたが、こちらは完全に開発者のためのものでしたが、今回開催された TensorFlow World は、より多くの方をターゲットとしたイベントです。

開催場所はサンタクララ、開催期間は 10月28日 - 10月31日 の4日間で、前半2日間はチュートリアルとハンズオントレーニング、後半の2日間がトークセッションを中心とした内容になっています。

また、前半のチュートリアル・ハンズオンと並行してContributor Summit というイベントも開催されました。こちらは TensorFlow のコントリビューター向けのイベントで、ターゲットが絞られている分、内容もとても濃いものでした。

後半2日間のセッションの内容は Youtube で公開されており、 本記事の執筆時点ではまだ一部しか公開されていませんが、 こちらの再生リスト から視聴できるようになると思います。

Keynotes

キーノートは10月30日と31日の2回あり、TensorFlow関連の色々なアップデートについて共有がありました。

  1. TensorFlow Enterprise
    これは「企業向けの機能を強化していきますよ」という宣言で、特定の機能のことではないようです。TensorFlow 1.x 系最後となる 1.15 のサポートを3年間続けること、 GCPとの連携を強化し、GCS上のファイルへのアクセスを高速化することなどが含まれているようです。仕事で TensorFlow を使っている身としては、絶対に必要なように思えます。

  2. TensorBoard.dev
    TensorBoardは、TensorFlowに付属するネットワークやデータの可視化ツールですが、それのホステッドなサービスです。コマンド一発でログをアップロードでき、可視化結果を簡単に共有することができます。URLがわかるのと内容が見られてしまうので、企業内ではなかなか使いづらいと思いますが、大学の研究などで実験結果を共有したい場合には便利な機能だろうと思います。

  3. Mobile BERT
    TensorFlow Lite 用に軽量化された BERT が追加されました。BERT はGoogle が 2018年に発表した言語モデルで、様々なタスクで State of the art を達成して話題になりましたが、Mobile BERT はそれのモバイル版です。エッジサイドで動くので、リアルタイムなインタラクションが必要なアプリ等に利用できそうです。ただ、スライドを見る限りでは、モデルが小さくなったと言っても 50M 〜 100M くらいありそうなので、用途は限定されそうです。

  4. TensorFlow Lite まわりのアップデート
    Mobile BERT を始めとするいくつかの学習済モデルの追加に加え、 TensorFlow Lite 自身にも様々な更新がありました。Converter が新しくなり、 いくつかの言語バインディングが追加され、SDKが使いやすくなり、チュートリアルが充実しました。 また、この一年でかなりの高速化が進められ、Google I/O の時と比較して、条件によっては数倍の速度が見込めるようになっているようです。

  5. AutoML の TensorFlow.js サポート
    TensorFlow.js は、JavaScript で動く TensorFlow ライブラリです。TensorFlow.js を使うと、通常の TensorFlow を使って訓練したモデルをブラウザ上で動かしたりできます。ブラウザ上で動くことで、面倒な環境設定やデバイス依存のコーディングが不要になる点、色々なサーバーにデータを送るわけではないのでプライバシーの問題も発生しない点など、いろいろなメリットがあります。AutoML Vision で学習したモデルを TensorFlow.js で使えるようになるようです。個人的には Firebase からお手軽に使えるようになると嬉しいです。

ハンズオン

初日僕は Contributor Summit に参加していたのですが、2日目の途中からは NVIDIA のハンズオンに参加してみました。

Accelerate Training, Inference, and ML Applications on GPUs

如何に GPU を使いこなして高速化するか、という点にフォーカスを当てた、 NVIDIA のハンズオントレーニングです。以下に挙げる内容についての解説があった後で、各自に1台ずつ割り当てられた EC2 の GPU ノードで実験してみるというものでした。

  1. Automatic Mixed Precision Training
    精度を落とさずに、FP32からFP16への変換などを自動でやってくれる超絶便利な機能です。比較的新しめの GPU が必要なので環境は限られてしまいますが、コードへの変更も最小限で済むので、速度が求められるような状況であればとりあえず試してみるのが良いと思います。

  2. DALI: Fast Data Pipelines for Deep Learning
    DALI は、データの前処理や後処理をパイプラインとして記述して、可能な箇所については GPU を利用したりして高速化を図ってくれるものです。スライドをみた限りでは、現時点では劇的に速くなるというよりは、ちょっと速くなった、という程度のように見えました。今後に期待といったところでしょうか。

  3. Distributed Training with Horovod
    データ数が多いと、複数ノードにまたがった分散学習をさせたいことが結構あります。 Horovod は Uber が開発した分散学習フレームワークで、とても簡単に使うことができます。スーパーコンピューター上で分散学習を行うハッカソンの TA 役をやることが多いのですが、そこでも Horovod を使っています。 本セッションでは Horovod の単純な使い方だけでなく、チューニングの方法にも触れていたので勉強になりました。ちなみに Horovod は TensorFlow に限らず PyTorch など他のライブラリでも使えます。

  4. Accelerating Inference using TensorRT
    TensorRT は訓練済のモデルを最適化するライブラリです。 TensorRT を用いると、グラフの最適化や量子化などのテクニックを使って、モデルの軽量化や推論の高速化を実現できます。ハンズオンでは Kerasモデルを Saved Model に変換した後で TensorRT を使って変換しました。 使い勝手は TensorFlow Lite に非常に似ており、使いやすいものでした。

  5. NVIDIA Deep Learning Profiler
    業務で深層学習を使っていると、時々プロファイラをとってボトルネックを調べたいことがあると思います。NVIDIA Deep Learning Profiler(DLProf)は NVIDIA が開発したプロファイラで、 TensorBoard を使って可視化します。

モデルの高速化の話は、大事だとわかっていながらこれまでちゃんと勉強したことがなく、ハッカソンでもプロファイラを使いこなしているNVIDIAの方を見て「かっこいいな〜」なんて思いつつ見ていました。ハンズオンの内容自体はJupyter Notebookをポチポチやる感じでしたが、解説がとてもわかりやすく、とてもためになりました。

今度NVIDIAの方を捕まえて、絶対日本でやってもらおう。

トークセッション

トークセッションにも面白いものがたくさんありましたので、いくつか紹介しようと思います。動画はこちらから視聴できるようになると思います。

Advanced model deployments with TensorFlow Serving

TensorFlow Serving の機能について、Flask ではだめなのか、なぜ TensorFlow Serving が良いのか、どのように使うのかについて解説してくれました。

Reliable, high-scale TensorFlow inference pipelines at Twitter

Twitter で機械学習基盤を担当する Cortex チームの方の発表です。Twitter は TensorFlow を導入する前から機械学習を使っていますが、既存の機械学習基盤は、推論については Java/Scala ベースだし、モジュール間の連携は Thrift を使っており、Python と gRPC が基本の TensorFlow を如何にうまいこと、信頼性を保ちつつ基盤に載せたかについて解説してくれました。なかなか現場感のある良い話だったと思います。

Build more inclusive TensorFlow pipelines with fairness indicators

機械学習における公平性(Fairness)とは、データの偏りなどに起因して、機械学習モデルが差別的な結果を返してしてしまうような現象を指します。機械学習を現実問題に応用する上で非常に大きな課題であり、去年あたりから議論が活発化してきたように思います。 この発表では、公平性についての解説と、Google 社内で利用しているFairness Indicators というツールを紹介してくれました。

個人的に思ったこと

最後に、今回 TensorFlow World に参加して個人的に思ったこと、感じたことをまとめておこうと思います。多文に個人的見解が含まれていることをご了承ください。

  1. Google は TensorFlow を本当の意味でのオープンソースにしようとしている

    普通、オープンソースプロジェクトといえば、ソースコードに自由にアクセスできることだけではなく、オープンに開発をすることも意味していると思います。では、TensorFlow 1.x はどうだったかというと、確かにソースコードは公開されていますが、開発する機能や仕様、スケジュールは Google 内部で決まることが多く、オープンソースとしては少し中途半端な状態だったと思います。Androidも似たような状況かもしれません。

    一方 TensorFlow 2.x の開発はどのように進んでいるかというと、まず TensorFlow のコアの部分から多くの機能を切り出して、それぞれを SIG(Special Interest Group) と呼ばれるチームが主体的に開発する形になっています。すべての SIG には Googler 以外の、外部の方が入っており、開発する機能や仕様は、 GitHub 上で RFC を出してオープンに決めています。 また、開発だけでなくてドキュメンテーションも、コミュニティ主体のオープンな体制に変わっています。

    開発の体制をオープンにすると当然コントロールが難しくなると思いますが、それを押してでも、TensorFlowをオープンソースにするんだ、という意思を今回のイベントで感じました。TensorFlow 2.0 は最近人気の(少なくとも勢いは TensorFlow 以上の)ライブラリ PyTorch と比較されることが多いですが、1.x から 2.0 への変更で一番大きいのは機能面ではなく、開発方法が全く変わったことだったんだな、というのが率直な感想です。

  2. TensorFlow はライブラリからエコシステムへ

    今回のイベントで印象的だった事柄の1つが「TensorFlow Ecosystem」という言葉がよく使われていたことです。深層学習を実業務で実際に活用する企業が増え、単なる機械学習のライブラリではなく、TensorFlow Extended や TensorFlow Lite と言った、その周囲の重要性が高まってきていることの現れかと思います。TensorFlow を単なるライブラリではなくエコシステムと捉えれば、ユーザーは自分のやりたいことに合わせて、必要な機能・モジュールだけを取捨選択して利用すればよくなるはずです。個人的には PyTorch とかも選べるようになるといいなぁと思います。

  3. 人と人をつなぐことを強く意識したイベントだった

    f:id:bp-writer:20191101074751j:plain バッジにつけるためのリボン

    今回のイベントで印象的だった事柄のもう1つは、色々なところに参加者同士をつなぐ工夫がされていたことでした。例えば入り口には、参加者の属性(データサイエンティスト、エンジニア、CxO などなど)が書かれたリボンが並べてあり、各自バッジ(ネームカードのこと)に貼り付けられるようになっています。このリボンのおかげで、初対面同士の自己紹介が幾分スムーズになります。また、朝のキーノートの前には Speed Networking と呼ばれる時間が取られており、そこでは、希望者がズラッっとならんで喋りたい人同士でしゃべることができます。食事も、Topic Tables と言って、テーブルごとに興味のあるテーマが決められていて、興味の似ている人が集まれるようにしてあります。また、Contributor Summit も、各 SIG の方と議論しやすいような雰囲気作りがされていました。

    もちろん、全員が全員コミュニケーション好きなわけではないので、全て参加するかどうかは任意ですが、ここまで意識的に「参加者同士をつなげよう」としているイベントは珍しいのではないかと思います。

f:id:bp-writer:20191101074858j:plain Topic Table の様子

宣伝

宣伝の1つめ。 僕はTensorFlow UserGroup Tokyo (TFUG Tokyo)のオーガナイザもしています。TFUG Tokyoでは、今回の TensorFlow World を振り返るイベント、「TensorFlow World Extended Tokyo, 2019」 を開催する予定です。日本で TensorFlow を担当している Developer Advocate の Khahn さんにも公演していただく予定ですので、お時間のある方はぜひご参加ください。会場は渋谷ストリームの新Googleオフィスです。

tfug-tokyo.connpass.com

宣伝の2つめ。TFUGでは、TensorFlowのドキュメントを翻訳しながら機械学習・TensorFlowを勉強する Doc Translation という取り組みをしています。 みんなで一緒に翻訳するイベントを開催したり、 Slack(未登録の方はこちら)の #docs_translation というチャンネルでディスカッションしたりしているので、興味のある方は、ぜひご参加ください。

tfug-tokyo.connpass.com

宣伝の3つめ。ブレインパッドでは、エンジニアや分析官を積極的に採用しています。こちらもよろしくおねがいします! www.brainpad.co.jp