---
# System prepended metadata

title: Google Developers ML Summit Tokyo

---

Google Developers ML Summit Tokyo
=================================

2019.07.11

# Opening

- Grow with Google: 2022年までに1,000万人を対象に

# Keynote

- ICML2019基調講演と同じような内容
- Waymo: 8,000,000+ MILES AND COUNTINGS
- 白内障の診断: 
    - モデル: Inception V4
    - 説明可能性: Saluency Map using Integrated Gradient
- TF Community in Japan
    - TFUG
    - <> Experts
    - ML Study Jams
- AutoML
    - Current: Solution = ML expertise + data + comutation
    - Google turn this into: Soluton = data + computation
    - EfficientNet でドヤ顔
    - Object DetectionでもAutoMLはつよい（NAS-FPN
    - 自然言語でも強い（Evolved Transformer
- What do we want?
    - Large model, but sparsely activated
    - Single model to solve many tasks
    - Dynamically learn and grow pathways
    - Model architecture adaptation
- Thoughtful use of AI in society
    - https://ai.google/principle
    - https://blog.google/technology/ai/responsible-a-principles
    - ML Fairness

# Machine Learning Overview
- MLKit(Out of the Box)
    - Vision, NLP, Custom Models
    - Latest features: 
        - On-device translation API (including Japanese)
            - Androidのみ？
        - Object detection and tracking API
            - Lifull: 物件のリアルタイム認識で使っている
    - g.co/mlkit  
- GCP
    - Sight, Language, Conversation
    - AutoML (Vision, Video, NLP, Translation, Tables)
    - Recursion phormoceuticols reduce training time from 24 hours to 15 minute on TPU pods
    - TPU Pods is now available beta.
    - g.co/cloud/ai 
- TensorFlow
    - Tensorflowのダウンロード地域、ロシアがほとんどなかったの面白い
    - 公式ドキュメントはOSSで翻訳
    - ML Study Jams trained 1,800 developers in Japan, community driven event.
    - Tensorflow 2.0
        - More Intuitive APIs
        - Less code
            - Kerasを使うのが今や当たり前
        - Portability
            - TensorFlow Extended, Lite, JS
            -　Airflow Runtime https://airflow.apache.org/
            - TF Lite: モバイル端末向け（音声認識、ビデオセグメンテーション、エッジ検出など、めっちゃ早い
    - TF Rankingなんてのがあるのか
    - Colab & tensorflow, TensorFlow Hub(学習済みモデルが大量にある)

# Machine Learning overview with TensorFlow, Laurence Moroney, Developer Advocate

- スライドは後日アップロード予定
- Kerasのソースコードサンプル
    - https://github.com/lmoroney/io19/blob/master/Zero%20to%20Hero/Rock-Paper-Scissors.ipynb
- TensorFlow.js
    -  推論コードをPythonから変換可能
    -  再学習 with 転移学習ができる
    -  学習もできる
    -  いろんな環境で動く（Browser, Mobile, Server, Desktop, ...)
    -  Kerasライクにモデルを記述できる
- Web Server for Chrome 
    - https://chrome.google.com/webstore/detail/web-server-for-chrome/ofhbbkphhbklhfoeikjpcbhemlocgigb
- JSでWebカメラ使って教師データをあつめるデモ、すごい
    - 学習一瞬で終わる
    - https://github.com/lmoroney/dlaicourse/tree/master/JavaScript%20Course/Week%204/webcam-transfer-learning

# What's new in TensorFlow 2.0 / Best Practice

- https://colab.research.google.com/github/random-forests/applied-dl/blob/master/examples/9-deep-dream-minimal.ipynb
- https://colab.research.google.com/github/random-forests/applied-dl/blob/master/examples/8-seq2seq.ipynb
- https://www.tensorflow.org/beta/tutorials/text/nmt_with_attention
    - 翻訳における中間表現(意味空間)を理解するデモ
- https://www.tensorflow.org/beta/tutorials/text/image_captioning
    - Image -> CNN -> Vector -> RNN -> Sentense 
- TensorFlow 2.0
    - tf.keras as the recommended high-level API
    - Eager execution by default
    - low-level API へアクセスする口もちゃんとある
    - TF loves Keras
    - scikit-learnライクなAPIになったんだな（Keras）
    - Low-levelでもPytorchライクにコード書ける
    - https://medium.com/tensorflow/what-are-symbolic-and-imperative-apis-in-tensorflow-2-0-dfccecb01021
    - Kerasとtf.kerasは微妙に違う（KerasはTF実装、Kerasは参考実装）
    - CuPyみたいなことをTFでもできるようになった
- Distributed learning
    - `strategy = tf.distribute.MirroredStrategy()` で、`strategy` のスコープ内で分散できる 
- Learning
    - tensorflow.org/beta
    - tensorflow.org/beta/tutorials/genrerative/pix2pix
- Compativility
    - Colab: GPU,TPUのプロファイリング見れる機能あるのか
- Migrating
    - tf.compat.v1 or tf_upgrade_v command
- http://tf2up.ml
- Hands-on Machine Learning with Scikit-Learn, Keras and Tensorflow2.0
    - https://www.oreilly.com/library/view/hands-on-machine-learning/9781492032632/
    - https://github.com/ageron/handson-ml2

# Tensorflow Lite

- Library to drive machine learning model on devices
    - Low latency, close knit interactions, network connectivity, pricacy sensitive, ...
- Challenges
    - Little compute power, limited memory, cosumes less battery
- Pretrained models
    - https://www.tensorflow.org/lite/models 
- MLKit
    - wrapper of TensorFlow Lite 
- Conversion
    - `tf.lite.TFLiteConverter.from_keras_model(model or saved_model_dir).convert()
- Methods
    - Levarage hardware accelarator
        - MobileNet V1
            - CPU -> GPU(x5.5) -> DSP(x13.8) -> EdgeTPU(x42)
    - User mobile optimized architecture
        - モバイルにはモバイル向きのを使う。
        - 必要に応じてNASを使ってもよい
    - quantization
    - pruning
        - Cut weight with zero

# Tensorflow Extended

- https://www.slideshare.net/FlinkForward/flink-forward-san-francisco-2019-tensorflow-extended-an-endtoend-machine-learning-platform-for-tensorflow-robert-crowe

# TensorFlow Input Pipeline and Distribution Strategy
- ココらへんの話 https://www.tensorflow.org/guide/performance/datasets

- Why input pipeline?
    - ハードウェア依存で動かなかったり、前処理が必要だったりするかもしれない（分散することもある）
- Pipeline
    - Extract:
        - read data from memory/storage
        - parse file format
    - Transform
        - text vectorization
        - image transformations
        - video temporal sampling
        - shuffling, batching...
    - Load
        - transfer data to the accelarator
- 前処理とかしっかり考えないと分散するときにIdle状態のワーカができてしまう
    - データセットを細切れに取得して複数のワーカに撒けばあっという間に終わる
    - dataset.prefetch(batch_size=X)
    - dataset.interleave(TFRecordDataset, num_parallel_cells)
    - tf.data.experimental.AUTOTUNE
- 分散学習の話
    - データ分散https://www.tensorflow.org/api_docs/python/tf/distribute/MirroredStrategy
        - TPUとGPUで使うStrategyが違う
    - モデル分散 https://www.tensorflow.org/api_docs/python/tf/distribute/experimental/ParameterServerStrategy
- Custom models
    - モデルの生成はスコープの中で行う必要がある

# Google AutoML Tables

- Neural Architecture Search もしているらしい
- Googleのモデルカタログから自動選択
- メタ学習機能が入っている
- 数千万レコードのデータを突っ込むとデータ投入に30分くらいかかるらしい
- Train:Valid:Holdout=8:1:1がデフォルト
- 1000万行以下のデータな4~8時間くらいでOK
- EarlyStopping=ONなら、時間より前に終わることはある
- SUSYデータ: 4時間くらいで学習終わった
- Feature Importanceの仕様は謎
- テストデータはシャッフルされる
- GNU Seguros事例
- AutoML NLP
- 青空文庫でデモ
- AutoML Tablesでもテキスト分類できる
- AutoML Tables 10クラス分類までしかできない
- 分かち書きはしてくれないので自分でやること