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

2019-7-19-data_ml_engineering

 2019-7-19-data_ml_engineering

F03c50dfb2b681b59f0e3d49f49b80fc?s=128

yudeayase

July 19, 2019
Tweet

Transcript

  1. Google Cloud ML Engine に浸かってみる @yudeayase

  2. 真の題名

  3. フルマネージドで 楽したい! @yudeayase

  4. 機械学習予測側のお話

  5. 予測サーバーの運用を 楽にしようと思いました

  6. 何を作っていたのか? - 機械学習を使った広告効果の予測用API - 予測用のパラメーターをインプットとして予測値を返す - なるべくわかりやすいインターフェース - リクエストが数字の羅列とかしんどいよね

  7. Our System 作っていた機械学習API Flask on GKE 予測モデル on ML Engine

    Clients サービスのバックエンド or フロントエンドなど…
  8. Our System 作っていた機械学習API Flask on GKE 予測モデル on ML Engine

    Clients サービスのバックエンド or フロントエンドなど… 前処理 & 予測値整形
  9. Our System 作っていた機械学習API Flask on GKE 予測モデル on ML Engine

    Clients サービスのバックエンド or フロントエンドなど… 予測を実際に行うAPI
  10. What is ML Engine? モデルの学習からそれを用いた予測サーバーを1サービスで構築可能

  11. What is ML Engine? - モデルの学習からデプロイまで可能 - デプロイしたモデルですぐにオンライン予測可能 - モデルが重い場合がバッチ予測もできる

  12. ん?

  13. What is ML Engine? - モデルの学習からデプロイまで可能 - デプロイしたモデルですぐにオンライン予測可能 - モデルが重い場合がバッチ予測もできる

  14. None
  15. フルマネージドサーバーレス環境

  16. Our System 作っていた機械学習API Flask on GKE 予測モデル on ML Engine

    Clients サービスのバックエンド or フロントエンドなど… こいつの面倒は みないといけない!
  17. 前処理という業〜カルマ〜 { “年齢”: 34, “性別”: 男, “媒体”: “Twitter”, “画像”: base64...

    ... } { “年齢”: [0, 0, 1, 0, 0, 0, 0], “性別”: [1, 0], “媒体”: [1, 0 ,0, 0], “画像”: [[255.0, 255.0, ...]] ... } モデルへ
  18. 前処理という業〜カルマ〜 モデルへ この変換をFlaskアプリケーションが担う { “年齢”: 34, “性別”: 男, “媒体”: “Twitter”,

    “画像”: base64... ... } { “年齢”: [0, 0, 1, 0, 0, 0, 0], “性別”: [1, 0], “媒体”: [1, 0 ,0, 0], “画像”: [[255.0, 255.0, ...]] ... }
  19. 前処理という業〜カルマ〜 モデルへ この変換をFlaskアプリケーションが担う ほとんどこのために1アプリケーション構築している { “年齢”: 34, “性別”: 男, “媒体”:

    “Twitter”, “画像”: base64... ... } { “年齢”: [0, 0, 1, 0, 0, 0, 0], “性別”: [1, 0], “媒体”: [1, 0 ,0, 0], “画像”: [[255.0, 255.0, ...]] ... }
  20. Our System 作っていた機械学習API Flask on GKE 予測モデル on ML Engine

    Clients サービスのバックエンド or フロントエンドなど… こいつの世話分、 損してない?
  21. せっかくのマネージドサービスを 使い倒してなくない?

  22. どうすればいいのか?

  23. 前処理を含めて「モデル」をつくる 前処理 予測モデル

  24. 前処理を含めて「モデル」をつくる 前処理 予測モデル

  25. 実際できるの?

  26. カテゴリ値の”翻訳” { “年齢”: 34, “性別”: 男, “媒体”: “Twitter”, ... }

    { “年齢”: [0, 0, 1, 0, 0, 0, 0], “性別”: [1, 0], “媒体”: [1, 0 ,0, 0], ... } 人間の読めるものから、モデルの読めるものへの変換 One-hot or Multi-hot encoding
  27. Feature columns

  28. くわしくは https://www.tensorflow.org/guide/feature_columns

  29. 画像の”翻訳” { “画像”: base64... ... } { “画像”: [[255.0, 255.0,

    ...]] ... } JSONで画像情報の実態を送る場合base64でエンコードを送ることがある デコード & 数値化が必須
  30. モデルのserving input

  31. モデルのserving input 学習済みモデル serving input - 画像のデコード - 画像の数値化 -

    正規化 固めてML Engineに乗せられるモデルを出力
  32. All in one model 学習済みモデル 数値input エンコーディングinput 画像input

  33. Our System フルマネージド機械学習API Flask on GKE 予測モデル on ML Engine

    Clients サービスのバックエンド or フロントエンドなど…
  34. Our System フルマネージド機械学習API 予測モデル on ML Engine Clients サービスのバックエンド or

    フロントエンドなど…
  35. 世話をするモジュールが減った!

  36. Happy!

  37. 本当にハッピーなのか? - モデルにくっつける演算はTensorFlowにベタベタ - ML Engineに依存ベタベタ - AWS SageMakerもある -

    GCPに依存しまくってていいのかの判断 - TensorFlow2.0 - 朗報はKerasでもfeature columnsが使える - Serving inputは確実に変更が必要
  38. Thank you !