2019-7-19-data_ml_engineering
by
yudeayase
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Google Cloud ML Engine に浸かってみる @yudeayase
Slide 2
Slide 2 text
真の題名
Slide 3
Slide 3 text
フルマネージドで 楽したい! @yudeayase
Slide 4
Slide 4 text
機械学習予測側のお話
Slide 5
Slide 5 text
予測サーバーの運用を 楽にしようと思いました
Slide 6
Slide 6 text
何を作っていたのか? - 機械学習を使った広告効果の予測用API - 予測用のパラメーターをインプットとして予測値を返す - なるべくわかりやすいインターフェース - リクエストが数字の羅列とかしんどいよね
Slide 7
Slide 7 text
Our System 作っていた機械学習API Flask on GKE 予測モデル on ML Engine Clients サービスのバックエンド or フロントエンドなど…
Slide 8
Slide 8 text
Our System 作っていた機械学習API Flask on GKE 予測モデル on ML Engine Clients サービスのバックエンド or フロントエンドなど… 前処理 & 予測値整形
Slide 9
Slide 9 text
Our System 作っていた機械学習API Flask on GKE 予測モデル on ML Engine Clients サービスのバックエンド or フロントエンドなど… 予測を実際に行うAPI
Slide 10
Slide 10 text
What is ML Engine? モデルの学習からそれを用いた予測サーバーを1サービスで構築可能
Slide 11
Slide 11 text
What is ML Engine? - モデルの学習からデプロイまで可能 - デプロイしたモデルですぐにオンライン予測可能 - モデルが重い場合がバッチ予測もできる
Slide 12
Slide 12 text
ん?
Slide 13
Slide 13 text
What is ML Engine? - モデルの学習からデプロイまで可能 - デプロイしたモデルですぐにオンライン予測可能 - モデルが重い場合がバッチ予測もできる
Slide 14
Slide 14 text
No content
Slide 15
Slide 15 text
フルマネージドサーバーレス環境
Slide 16
Slide 16 text
Our System 作っていた機械学習API Flask on GKE 予測モデル on ML Engine Clients サービスのバックエンド or フロントエンドなど… こいつの面倒は みないといけない!
Slide 17
Slide 17 text
前処理という業〜カルマ〜 { “年齢”: 34, “性別”: 男, “媒体”: “Twitter”, “画像”: base64... ... } { “年齢”: [0, 0, 1, 0, 0, 0, 0], “性別”: [1, 0], “媒体”: [1, 0 ,0, 0], “画像”: [[255.0, 255.0, ...]] ... } モデルへ
Slide 18
Slide 18 text
前処理という業〜カルマ〜 モデルへ この変換をFlaskアプリケーションが担う { “年齢”: 34, “性別”: 男, “媒体”: “Twitter”, “画像”: base64... ... } { “年齢”: [0, 0, 1, 0, 0, 0, 0], “性別”: [1, 0], “媒体”: [1, 0 ,0, 0], “画像”: [[255.0, 255.0, ...]] ... }
Slide 19
Slide 19 text
前処理という業〜カルマ〜 モデルへ この変換をFlaskアプリケーションが担う ほとんどこのために1アプリケーション構築している { “年齢”: 34, “性別”: 男, “媒体”: “Twitter”, “画像”: base64... ... } { “年齢”: [0, 0, 1, 0, 0, 0, 0], “性別”: [1, 0], “媒体”: [1, 0 ,0, 0], “画像”: [[255.0, 255.0, ...]] ... }
Slide 20
Slide 20 text
Our System 作っていた機械学習API Flask on GKE 予測モデル on ML Engine Clients サービスのバックエンド or フロントエンドなど… こいつの世話分、 損してない?
Slide 21
Slide 21 text
せっかくのマネージドサービスを 使い倒してなくない?
Slide 22
Slide 22 text
どうすればいいのか?
Slide 23
Slide 23 text
前処理を含めて「モデル」をつくる 前処理 予測モデル
Slide 24
Slide 24 text
前処理を含めて「モデル」をつくる 前処理 予測モデル
Slide 25
Slide 25 text
実際できるの?
Slide 26
Slide 26 text
カテゴリ値の”翻訳” { “年齢”: 34, “性別”: 男, “媒体”: “Twitter”, ... } { “年齢”: [0, 0, 1, 0, 0, 0, 0], “性別”: [1, 0], “媒体”: [1, 0 ,0, 0], ... } 人間の読めるものから、モデルの読めるものへの変換 One-hot or Multi-hot encoding
Slide 27
Slide 27 text
Feature columns
Slide 28
Slide 28 text
くわしくは https://www.tensorflow.org/guide/feature_columns
Slide 29
Slide 29 text
画像の”翻訳” { “画像”: base64... ... } { “画像”: [[255.0, 255.0, ...]] ... } JSONで画像情報の実態を送る場合base64でエンコードを送ることがある デコード & 数値化が必須
Slide 30
Slide 30 text
モデルのserving input
Slide 31
Slide 31 text
モデルのserving input 学習済みモデル serving input - 画像のデコード - 画像の数値化 - 正規化 固めてML Engineに乗せられるモデルを出力
Slide 32
Slide 32 text
All in one model 学習済みモデル 数値input エンコーディングinput 画像input
Slide 33
Slide 33 text
Our System フルマネージド機械学習API Flask on GKE 予測モデル on ML Engine Clients サービスのバックエンド or フロントエンドなど…
Slide 34
Slide 34 text
Our System フルマネージド機械学習API 予測モデル on ML Engine Clients サービスのバックエンド or フロントエンドなど…
Slide 35
Slide 35 text
世話をするモジュールが減った!
Slide 36
Slide 36 text
Happy!
Slide 37
Slide 37 text
本当にハッピーなのか? - モデルにくっつける演算はTensorFlowにベタベタ - ML Engineに依存ベタベタ - AWS SageMakerもある - GCPに依存しまくってていいのかの判断 - TensorFlow2.0 - 朗報はKerasでもfeature columnsが使える - Serving inputは確実に変更が必要
Slide 38
Slide 38 text
Thank you !