japantaxiにおける sagemaker+αによる 機械学習アプリケー … · 2020-06-09 ·...
TRANSCRIPT
1Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
JapanTaxiにおけるSageMaker+αによる機械学習アプリケーションの本番運用
2019/7/18JapanTaxi
次世代モビリティ事業部渡部徹太郎
第6回 Amazon SageMaker事例祭り
2Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
2Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
自己紹介
ID : fetaro
名前:渡部 徹太郎
研究:東京工業大学でデータベースと情報検索の研究(@日本データベース学会)
前職:
-大手SIer: オンライントレードシステム基盤
-大手SIer: オープンソース技術部隊 (MongoDB等)
-リクルートテクノロジーズ: ビッグデータ分析基盤 (EMR, Hortonworks, BigQuery, Oracle Exadata)
現職:
- JapanTaxi: データエンジニア
好きなAWSのサービス :
- Lambda
日本AWSユーザ会(JAWS)ビッグデータ支部
3Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
3Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
データエンジニアです
データサイエンティスト
ビジネス
データエンジニア
機械学習をビジネスで成功させるために必要な3つの人種
4Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
4Proprietary and Confidential ©2019 JapanTaxi, Inc. All Rights Reserved
700万DL超 日本No1タクシーアプリ『JapanTaxi』アプリマップ上で指定したピン位置にタクシーを手配。全国47都道府県で約7万台と、全国のタクシー車両1/3がアプリで呼べる。Google Mapsや音声AIなど様々な注文チャネル、決済、経費精算に対応。*App Annie調べ タクシー配車/ライドシェアアプリ内における、日本国内累計ダウンロード数/月間平均アクティブユーザー数(iOS/Google Play合算値)調査期間:2017年10月1日〜2018年9月30日*Apple と Apple ロゴは米国および他の国で登録された Apple Inc. の商標です。App Store は Apple Inc.のサービスマークです。Android、Google Play、Google Playロゴは、Google LLC の商標です。
外部注文チャネル 地図・経路検索
Google Maps iphone map
経費精算
Concur MoneyForward
タクシー配車アプリ『JapanTaxi』
海外
KakaoT TaxiGomy route
iphone siri Alexa/echo spot mydaiz LINE clova
Yahoo!乗換案内
外部注文チャネル 音声AI
NAVITIME
5Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
5Proprietary and Confidential ©2019 JapanTaxi, Inc. All Rights Reserved
タクシー配車アプリ『JapanTaxi』
今いる場所 行きたい場所 呼ぶ
6Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
6Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
ビジネス課題と機械学習による解決
機械学習アプリケーションの運用
まとめ
アジェンダ
7Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights ReservedProprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
ビジネス課題と機械学習による解決
8Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
8Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
課題:注文キャンセルによる乗車機会の損失
キャンセル注文
車を探す 配車決定を通知
受諾 乗車機会の損失
ユーザー
タクシー会社配車システム
ドライバー
キャンセル通知
迎車開始
9Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
9Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
原因:到着時間の期待値のギャップ
5分くらいで来るかな?
それなら他の交通手段を
使おうキャンセル注文
車を探す 配車決定を通知
受諾 乗車機会の損失
ユーザー
タクシー会社配車システム
ドライバー
キャンセル通知
迎車開始
10分かかります
10Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
10Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
解決策:期待値調整をするために到着予想時間を表示
5分くらいで来るかな?
注文しない
ユーザー
タクシー会社配車システム
ドライバー
注文前到着時間
予想システム
10分かかるなら他を探そう
乗車機会の損失
解決!!
10分かかります
11Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
11Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
解決手段:ディープラーニングにより注文前到着時間を予測する
候補1
目的地
• ポイント:注文する前なので、お迎え場所に向かうタクシーは確定していない
お迎え場所
候補2
候補3
候補4
12Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
12Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
実装:Attention機構を使った注文前お迎え時間予測モデル
配車候補の車両の特徴量• 出発地の緯度経度• お迎え場所緯度経度• 出発時の方向・速度• お迎え場所への方向・直線距離• 直線距離が近い順番
車両以外の環境の特徴量• 日、曜日、時間• 祝日、休日
Attention機構
• 機械翻訳や画像認識などで使われるネットワーク構造
• 入力に応じて注目するべき特徴量に大きな重みが付与される
• 実際に配車される車両の重みが大きくなることを期待
到着時間
13Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
13Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
結果:ABテストの結果
注文率の低下は抑止できた
狙い通り注文キャンセル率は低下
14Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights ReservedProprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
機械学習アプリケーションの運用
15Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
15Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
データ収集
前処理・モデル推定
モデルの精度評価
モデルサービング
運用で行うこと
16Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
16Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
データ収集
データウェアハウス
生データ
アプリDB
アプリシステム
バッチデータ収集(torocco)
ストリームデータ収集
(Lambda)
タクシーのGPS等
DWHデータ
SQL
KinesisDataStream
事業システム
ジョブ実行基盤(マネージドAirflow)
アプリデータ
= embulk サービス
毎日実行毎日
実行
リアルタイム
バッチ
バッチ
リアルタイム
17Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
17Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
データウェアハウス S3
前処理・モデル推定
DWHデータ
ML用データマート
学習データJSON
モデル生成ジョブ
SageMaker
学習データ生成
(Python)
ワークフロー管理(Jenkins)
SQL
ソースコード(GitHub)
モデル生成プログラム
学習データ生成
プログラム
エンジニアサイエンティスト
データ加工SQL
S3
SageMakerモデル
ジョブ実行基盤(マネージドAirflow)
毎日実行
エンハンスのときに実行
定期実行
手動実行
18Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
18Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
SageMakerモデルとは
o SageMaker上のオブジェクト
o S3のディレクトリに対応している
o S3のディレクトリには「前処理スクリプト」と「推定済みモデル」が含まれる
前処理スクリプト
o Pythonのコード
o データウェアハウスから生成したJSONから特徴量抽出して、モデルへの入力(Numpyの配列)に変換する
o 特徴量抽出の例
• 例:「日付」→「曜日の数値」
• 例:「タクシーの位置」→「注文場所からの距離」
推定済みモデル
o Tensorflowの生成物
前処理・モデル推定
SageMaker
SageMakerモデルオブジェクト
S3
SageMakerモデル用ディレクトリ
推定済みモデル
前処理スクリプト
SageMakerモデルとは
19Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
19Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
バージョン管理
o ソースコード
• GitHubを利用
• JapanTaxiの開発フローがGitHubメインであるため、CodeCommitは利用せず
o 学習データファイル
• 自前でバージョン管理
• 学習データを生成したソースコードのgitコミット番号をデータ名に付与
o モデル
• SageMakerのモデルのバージョン管理を利用
• モデル名にGitHubのコミットハッシュを付与
前処理・モデル推定
20Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
20Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
ジョブ管理
o 日次自動実行
• 処理量が大きく毎日少しづつ行う必要のある処理
• 実施する処理: ML用データマート生成
• マネージドAirflowの利用
• JapanTaxiの分析基盤の標準ジョブ実行基盤であり、他のデータ収集ジョブと一緒にまとめて管理
o 手動実行
• モデルをエンハンスする時に実行
• 実施する処理:学習データの作成、モデル推定ジョブの実行、精度評価の実行
• Jenkinsの利用
• 採用理由
• 実行毎にパラメータを変えて実行できる
• 15分以上の長時間処理ができる(Lambdaではダメ)
• 求められるSLAは低く、使う時だけ起動すれば良い(マネージドである必要なし)
前処理・モデル推定
21Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
21Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
モデルの精度評価
S3
モデル
バッチ推論SageMaker
Batch transform jobs
データウェアハウ
ス
S3
ML用データマート
評価用データJSON
評価用データ
生成ジョブ(Python)
S3
評価結果JSON
データウェアハ
ウス
評価結果
マート
BIツール(Tableau)
ロード(Python)
サイエンティスト
モデル
ワークフロー管理(Jenkins)
Slack連携
チャット(Slack)
エンジニア
22Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
22Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
モデルの精度評価とは
o 精度異常しきい値の定義と監視
• 5分以上早く予測してしまった割合の監視
• 5分以上予測がズレた割合の監視
o 予測分布の目視確認
• タクシー会社ごとの予測分布を目視で確認し、前週と比較して大きな違いがないか
モデル精度評価タイミング
o リリース前
• 過去データでの精度評価
• 本番リリースするのに十分な精度が出せている事を確認
o リリース後
• 最新データでの精度評価
• モデルが経年劣化していないことを確認する
モデルの精度評価
23Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
23Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
推論の種類と使い分け
o 応答速度重視:SageMaker Endpoint
o スループット重視:SageMaker Batch transform jobs→コチラを使う
SageMaker Batch transform jobsの使い方
o モデルへの入力をファイルに改行区切りで配置
• 設定:S3 data type = “S3Prefix” , Split type = “Line” , Batch strategy = “SingleRecord”
結果
o Endpointにクエリを投げていたときは3時間かかっていた処理が20分に短縮できた
モデルの精度評価
S3
モデル
SageMaker Batch transform
jobs
S3
{input 1のJSON}{input 2のJSON}
・・
{input NのJSON}
S3
モデル
{input 1の推論結果}{input 2の推論結果}
・・
{input Nの推論結果}
24Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
24Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
モデルサービング
S3
新モデル
旧モデル
推論SageMakerEndpoint
処理(Lambda)
API(API Gateway)
新
JapanTaxiアプリ
監視(Amazon CloudWatch)
応答時間 応答時間エラー率
応答時間
旧ロード
ロード
ワークフロー管理(jenkins)
90%
10%
エンジニア
カスタマ
デプロイ時
オンライン デプロイ
アラート
25Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
25Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
カナリアリリース
o カナリアリリースとは
1. 10%だけ新しいモデルに置き換える
2. 問題がなければすべて新しいモデルでリリース
o 実現方法
• AWS SageMaker Endpointの機能を利用
• 「ProductionVariants」を複数用意する
モデルサービング
SageMakerEndpoint
オートスケールApplication Autoscaling
コンテナ1
新モデル
コンテナ2
新モデル ・・・
オートスケールApplication Autoscaling
コンテナ1 コンテナ2
・・・旧モデル
旧モデル旧
Production Variant
新Production
Variant
26Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
26Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
実測した処理性能
o マシン:ml.m4.xlarge(4vcore, 16G RAM) x 1台
o リクエスト:平均1.4回/秒、最大20回/秒
o Lambda平均応答時間:20ms
• 推論の時間はもっと短い
なぜこんなに早いのか?
o 入力が10台(タクシー台数) x 50次元 程度であり、ニューラルネットの計算量が多くないため
モデルサービング
27Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
27Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
会場から出た質問
o Lambdaを挟む必要があるのか。API-Gateway から直接 SageMaker Endpointではダメなのか?
答え
o いろいろ融通がきくから
o 融通がきいた例
• アプリから飛んでくる電文の仕様が変わることがあったが、Lambdaで仕様変更を吸収することにより、モデルへのインプットを変え無くてすんだ
• 稀にモデルが明らかに異常な値を推論してしまうことがあったが、異常値をLambdaで消すことにより、アプリには応答しないようにした
モデルサービング
28Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
28Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
MLの概念が整理されてコンポーネント化されている
o トレーニングジョブ/ハイパーパラメータチューニング/モデル/エンドポイント等
o 成果物管理や開発プロセスの設計がしやすい
ML成果物が整理される
o 学習データ、モデル、バッチ推論ジョブ、エンドポイントが紐付いてトレースできる
モデルサービングが簡単
o カナリアリリースができる
o API-Gateway + Lambdaとの相性が抜群
所感:SageMakerの良い点
29Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
29Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
「Notebookをそのまま渡せばOK」ではない・・・
o Notebookはサイエンティストの試行錯誤ツール
o 本番化に向けてはバッチ処理化する必要がある
• コンポーネント分割、ログ出力、設定値のファイル化、エラーハンドリング、テストコード生成etc...
開発のプロセスにマッチしたワークフロー管理が無い
o StepFunctionは一連の処理を数珠つなぎには良いが、一つ一つの工程を確認しながら実行するには不向き
o 学習データの作成→(人が確認)→モデル推定→(人が確認)→デプロイといった開発のフローに乗らない
定期ジョブを実行するジョブコントローラがない
o マネージドAirflowサービスのようなものがほしい
所感:改善して欲しいポイント
30Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights ReservedProprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
まとめ
31Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
31Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
ビジネス課題と機械学習による解決
o JapanTaxiのビジネス課題である注文後キャンセルの課題を機械学習で低減
機械学習アプリケーションの運用
o データ収集
• TorrocoとKinesis DataStream
o 前処理・モデル推定
• 学習データとモデルのバージョン管理
• 日次自動実行ジョブと手動実行ジョブ
o モデルの精度評価
• 精度異常しきい値監視と予測値分布の目視確認
• リリース前の過去データでの評価と、毎週の最新データでの評価
• SageMaker Batch Transform jobsによる一括推論
o モデルサービング
• API Gateway + Lambda + SageMaker Endpoint
• SageMaker Endpointを用いたカナリアリリース
まとめ
32Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights ReservedProprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
宣伝
これから取り組もうとしている事
33Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
33Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
34Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
34Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
タクシーから取れるデータを役立てようという試み
センシングカーとしてのタクシー車両
35Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
35Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
1日のタクシー動態の様子
タクシーは常に膨大な数走り回っており、道沿いのリアルタイムなデータを収集できる
36Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
36Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
一緒に働いてくれる仲間を募集中
クラウド
Kubernetes
車載デバイス(IoT)
自社製の車載デバイスからデータを収集
ディープラーニングの分散処理
オンプレ一切なし
データエンジニアデータサイエンティスト
タクシービッグデータ解析
白線検出
例)ドライブレコーダ動画解析
ガソリンスタンド料金検出
37Proprietary and Confidential ©2017 JapanTaxi, Inc. All Rights Reserved
〒102-0094 東京都千代田区紀尾井町3-12
3-12 Kioicho Chiyoda-ku, Tokyo 102-0094 Japan
TEL 03-6265-6265 FAX 03-3239-8115
www.japantaxi.co.jp
文章·画像等の内容の無断転載及び複製等の行為はご遠慮ください。
Proprietary and Confidential ©2017 JapanTaxi, Inc.
All Rights Reserved