Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TensorFlow on Android

TensorFlow on Android

DevFest Tokyo 2016 にて発表したスライドです。
http://gdg-tokyo.connpass.com/event/38927/

Arata Furukawa

October 09, 2016
Tweet

More Decks by Arata Furukawa

Other Decks in Technology

Transcript

  1. TensorFlow on Android
    日本Androidの会・東海大学1年
    古川新

    View full-size slide

  2. 古川 新
    Arata Furukawa
    http://ornew.net/
    東海大学 理学部1年生
    MaruLabo管理者
    日本Androidの会 運営委員
    日本Androidの会 学生部
    © Arata Furukawa

    View full-size slide

  3. DeepLearning

    View full-size slide

  4. AlexNet
    © TensorFlow Tutorial “Image Recognition” https://www.tensorflow.org/versions/r0.11/tutorials/image_recognition/index.html

    View full-size slide

  5. Google
    DeepDream
    © Alexander Mordvintsev
    https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/tutorials/deepdream/deepdream.ipynb

    View full-size slide

  6. Facebook
    DeepFace
    © Yaniv TaigmanMing YangMarc'Aurelio RanzatoLior Wolf /「DeepFace: Closing the Gap to Human-Level Performance in Face Verification」

    View full-size slide

  7. Androidアプリで
    使いたい!
    The Android robot is reproduced or modified from work created and shared by Google and used according to terms described in the Creative Commons 3.0
    Attribution License.

    View full-size slide

  8. 学習と利用の非対称性

    View full-size slide

  9. 学習の演算コスト
    膨大な回数の反復学習が必要
    専用のハードウェアなど
    かなりの計算資源を使っても
    莫大な時間がかかる
    (上写真)
    「AlphaGo の試合に用いられた Googleの
    ディープラーニング専用サーバ」
    Google Cloud Platform Japan Blogより引用
    (右写真)
    「Facebook’s open-sourcing of AI hardware is the start of the
    deep-learning revolution」より引用

    View full-size slide

  10. 人工知能は、
    筋肉と同じ

    View full-size slide

  11. 筋肉を鍛えるには、たくさんの時間とお金が必要です
    何回も何回もトレーニングして、
    少しずつ筋肉は強くなります

    View full-size slide

  12. 一方で、筋肉を使って動くのは簡単
    時間もお金もかかりません

    View full-size slide

  13. 利用の演算コスト
    反復実行も、誤差評価も、逆伝搬もしない
    →桁違いにコストは少ない

    View full-size slide

  14. 現実的な演算コスト
    学習 > 利用

    View full-size slide

  15. 学習済みモデルを利用するだけなら
    モバイルで動きます

    View full-size slide

  16. データフローグラフ型
    汎用数値演算ライブラリ
    TensorFlow
    抽象的でスケーラビリティかつポータビリティな、
    非同期並列に実行可能な数値演算の仕組みを
    実現するライブラリ。

    View full-size slide

  17. TensorFlow Graph
    あらゆる演算は、
    データフローを向きとした
    有向グラフで表現されます。
    y = 2x
    x mul y
    2

    View full-size slide

  18. Deep Neural Networks
    ディープニューラルネットワーク(DNN)は
    Tensor(スカラ・ベクトル等)に対する
    巨大な演算として表現されます。
    DNNはTensorFlowグラフとして
    表現することができます。
    つまり、TensorFlowでDeepLearningができます。

    View full-size slide

  19. TensorFlowを使った
    リバーシAI
    Androidアプリ
    ABC 2016 Autumnで公開予定!

    View full-size slide

  20. Android Firebase
    プレイデータを自動送信
    AIが定期的に自動更新される
    TensorFlow

    View full-size slide

  21. Firebase
    Realtime Database
    Run
    TensorFlow
    Data Server
    C++ Java
    Protocol
    Buffers
    JNI
    Reversi
    お寿司リバーシの構成:Androidアプリ側
    HTTPS
    Android App

    View full-size slide

  22. Javaとの連携
    TensorFlowはJavaをサポートしていないため
    Android Native Development Kit (NDK)か
    Java Native Interface (JNI)を使うことになります。
    お寿司では、JNIを使っています。

    View full-size slide

  23. TensorFlowのビルド・実行
    Android向けにTensorFlowバイナリをBazelで
    クロスコンパイルします。
    ドキュメントは一切ないので、 Issueで情報を集めて試行錯誤するか、中の人に聞くかです。
    作った動的ライブラリをJavaでロードし、
    ネイティブコードを実行します。

    View full-size slide

  24. Serialize
    TensorFlow Graphは
    Protocol Buffers形式で
    シリアライズできます。
    y = 2x
    x mul y
    2
    graph.pb

    View full-size slide

  25. 関数としてのTensorFlow Graph
    TensoFlow Graphは、演算の集合を、
    データフローを向きとするグラフで表現したものですので、入
    力と出力があります。
    よって、グラフそのものを関数と考えても差し支え
    ありません。

    View full-size slide

  26. 画像データ
    ???
    文字データ
    5041
    Function?
    F(x) -> y
    TensorFlow
    Graph

    View full-size slide

  27. Black Box
    関数として考えたならば、入力と出力の形状さえ
    一致していれば、このグラフの処理がなんであろう
    と関係ありません。
    グラフを差し替えたとしても、形状が一致すれば
    ユーザコードをアップデートする必要はありませ
    ん。

    View full-size slide

  28. True Portability!
    グラフファイルを差し替えるだけで処理をすり替え
    られるため、お寿司AIの更新はグラフファイルを
    サーバからダウンロードするだけであり、可搬性が
    非常に高いです。

    View full-size slide

  29. 新しいアプリ開発の形?
    ニューラルネットワークは処理能力に乏しい
    モバイルプラットフォームでも利用できます。
    Deep Learningは、モデルさえあれば一般的な
    アプリに組み込むことが可能な段階にあります。

    View full-size slide

  30. 「DeepLearningはお金のある大企業や大学のやること」
    今やそんなことはありません。
    既にユーザレベルは個人にまで広がっており、
    一般のモバイルアプリケーションに組み込むことも
    可能なレベルに技術は達しています。

    View full-size slide

  31. DeepLearningを使うことで、
    今までにない機能をモバイルアプリケーションに
    組み込むことができるかもしれません。
    新しいユーザエクスペリエンスが誕生し、
    ITの新しい市場となるかもしれません。
    その可能性をDeepLearningは十分に秘めていて、
    その先駆者となる可能性はまだ私達にもあるのです。

    View full-size slide

  32. DeepLearningを学びたい
    学生のための仮想研究室

    View full-size slide

  33. 登録はマルラボ公式サイトから!
    https://marulabo.net/
    マルラボの取り組み
    DeepLearningを使った研究に
    必要なマシンがない!
    勉強したいが、なにを学べば
    いいかわからない!
    最先端の研究者・技術者と
    交流したい!
    MaruLaboが
    学生に
    無償で提供します!

    View full-size slide

  34. DeepLearningに特化した
    超火力マシンが2台!
    ① NVIDIA Tesla M40 4枚挿し
     ASKさん、NVIDIAさんからの寄贈品です
    ② GeForce GTX TITAN X 4枚挿し
     さくらインターネットさんからの寄贈品です

    View full-size slide

  35. 孫泰蔵さんからも
    寄贈予定!
    近日中に、孫泰蔵さんからも
    同等以上の性能のマシンを寄贈して
    いただけることになっています!
    このように、MaruLaboは多くの
    企業や個人の方々にご支援いただき
    運営しております!

    View full-size slide

  36. 多くのフレームワークが
    セットアップ済み!
    TensorFlow、Caffe、Torch、CNTKなど、
    多くのフレームワークをセットアップしてあります。
    セットアップのための技術や知識が要らないため、
    DeepLearningへの敷居がグッと下がります。
    特にTensorFlowはGPU性能を最大限に引き出すために、
    私がCUDA 8.0とcuDNN 5.1用にソースコードから
    カスタムビルドしてあります。

    View full-size slide

  37. 登録はマルラボ公式サイトから!
    https://marulabo.net/
    オンライン勉強会も予定中!
    初心者の学生向けに、MaruLaboメンバ限定でオ
    ンライン勉強会を開催予定です!

    View full-size slide

  38. マシンの寄贈のお願い
    どんなに優秀であっても、今の日本の学生には
    DeepLearningの開発・学習のための環境がありません。
    未来を担う学生の育成・研究のため、
    ぜひご協力をお願いします。
    お問い合わせは、公式サイトからお願いします。
    https://marulabo.net/

    View full-size slide

  39. ご清聴ありがとうございました
    facebookやってます
    何かあればこちらまで
    古川新
    https://www.facebook.com/old.r.new

    View full-size slide