2019/5/16に行われたGPU Deep Learning Community #11にて、LT発表させていただいた資料です。掲載に合わせ、少し改変しています。
https://gdlc.connpass.com/event/128748/
Deep Learning開発を行うにあたり、弊社の研究チームが直面した課題と、その解決方法として開発した支援プラットフォームKAMONOHASHIを紹介します。
2019/5/16に行われたGPU Deep Learning Community #11にて、LT発表させていただいた資料です。掲載に合わせ、少し改変しています。
https://gdlc.connpass.com/event/128748/
Deep Learning開発を行うにあたり、弊社の研究チームが直面した課題と、その解決方法として開発した支援プラットフォームKAMONOHASHIを紹介します。
データ分析:ゆるふわキャリア相談会 ?ZOZO Oisix JapanTaxi FiNC?
でLTさせて頂きました
https://connpass.com/event/147298/
--
JapanTaxi, Inc. All Rights Reserved
102-0094 東京都千代田区紀尾井町3-12 3-12
TEL 03-6265-6265 FAX 03-3239-8115
https://japantaxi.co.jp/
文章·画像等の内容の無断転載及び複製等の行為はご遠慮ください。
Proprietary and Confidential ?2019 JapanTaxi, Inc. All Rights Reserved
1. 1
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
JapanTaxiにおける
SageMaker+αによる
機械学習アプリケーションの本番運用
2019/7/18
JapanTaxi
次世代モビリティ事業部
渡部徹太郎
第6回 Amazon SageMaker事例祭り
2. 2
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
2
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
自己紹介
ID : fetaro
名前:渡部 徹太郎
研究:東京工業大学でデータベースと情報検索の研究(@日本データベース学会)
前職:
- 大手SIer: オンライントレードシステム基盤
- 大手SIer: オープンソース技術部隊 (MongoDB等)
- リクルートテクノロジーズ: ビッグデータ分析基盤 (EMR, Hortonworks, BigQuery, Oracle Exadata)
現職:
- JapanTaxi: データエンジニア
好きなAWSのサービス :
- Lambda
日本AWSユーザ会(JAWS)
ビッグデータ支部
3. 3
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
3
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
データエンジニアです
データ
サイエンティスト
ビジネス
データ
エンジニア
機械学習をビジネスで成功させるために必要な3つの人種
4. 4
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
4
Proprietary 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
5. 5
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
5
Proprietary and Confidential ?2019 JapanTaxi, Inc. All Rights Reserved
タクシー配車アプリ『JapanTaxi』
今いる場所 行きたい場所 呼ぶ
6. 6
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
6
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
? ビジネス課題と機械学習による解決
? 機械学習アプリケーションの運用
? まとめ
アジェンダ
7. 7
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights ReservedProprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
ビジネス課題と
機械学習による解決
8. 8
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
8
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
課題:注文キャンセルによる乗車機会の損失
キャンセル注文
車を探す 配車決定を通知
受諾 乗車機会の損失
ユーザー
タクシー会社配車システム
ドライバー
キャンセル通知
迎車開始
9. 9
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
9
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
原因:到着時間の期待値のギャップ
5分くらいで
来るかな?
それなら
他の交通手段を
使おう
キャンセル注文
車を探す 配車決定を通知
受諾 乗車機会の損失
ユーザー
タクシー会社配車システム
ドライバー
キャンセル通知
迎車開始
10分
かかります
10. 10
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
10
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
解決策:期待値調整をするために到着予想時間を表示
5分くらいで
来るかな?
注文
しない
ユーザー
タクシー会社配車システム
ドライバー
注文前
到着時間
予想システム
10分
かかるなら
他を探そう
乗車機会の損失
解決!!
10分
かかります
11. 11
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
11
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
解決手段:ディープラーニングにより注文前到着時間を予測する
候補1
目的地
? ポイント:注文する前なので、お迎え場所に向かうタクシーは確定していない
お迎え場所
候補2
候補3
候補4
12. 12
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
12
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
実装:Attention機構を使った注文前お迎え時間予測モデル
配車候補の車両の特徴量
? 出発地の緯度経度
? お迎え場所緯度経度
? 出発時の方向?速度
? お迎え場所への方向?直線距離
? 直線距離が近い順番
車両以外の環境の特徴量
? 日、曜日、時間
? 祝日、休日
Attention機構
? 機械翻訳や画像認識などで使われ
るネットワーク構造
? 入力に応じて注目するべき特徴量
に大きな重みが付与される
? 実際に配車される車両の重みが大
きくなることを期待
到着時間
13. 13
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
13
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
結果:ABテストの結果
注文率の低下は抑止できた
狙い通り
注文キャンセル率は低下
14. 14
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights ReservedProprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
機械学習アプリケーションの運用
15. 15
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
15
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
?データ収集
?前処理?モデル推定
?モデルの精度評価
?モデルサービング
運用で行うこと
16. 16
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
16
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
データ収集
データウェアハウス
生
データ
アプリ
DB
アプリ
システム
バッチデータ収集
(torocco)
ストリームデータ
収集
(Lambda)
タクシーの
GPS等
DWH
データ
SQL
Kinesis
DataStream
事業システム
ジョブ実行基盤
(マネージドAirflow)
アプリ
データ
= embulk サービス
毎日
実行毎日
実行
リアル
タイム
バッチ
バッチ
リアルタイム
17. 17
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
17
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
データウェアハウス S3
前処理?モデル推定
DWH
データ
ML用
データ
マート
学習
データ
JSON
モデル生成
ジョブ
SageMaker
学習
データ
生成
(Python)
ワークフロー管理
(Jenkins)
SQL
ソースコード
(GitHub)
モデル生成
プログラム
学習データ
生成
プログラム
エンジニア
サイエンティスト
データ加工
SQL
S3
SageMaker
モデル
ジョブ実行基盤
(マネージドAirflow)
毎日実行
エンハンスのときに実行
定期実行
手動実行
18. 18
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
18
Proprietary 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モデルとは
19. 19
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
19
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
? バージョン管理
o ソースコード
? GitHubを利用
? JapanTaxiの開発フローがGitHubメインであるため、CodeCommitは利用せず
o 学習データファイル
? 自前でバージョン管理
? 学習データを生成したソースコードのgitコミット番号をデータ名に付与
o モデル
? SageMakerのモデルのバージョン管理を利用
? モデル名にGitHubのコミットハッシュを付与
前処理?モデル推定
20. 20
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
20
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
? ジョブ管理
o 日次自動実行
? 処理量が大きく毎日少しづつ行う必要のある処理
? 実施する処理: ML用データマート生成
? マネージドAirflowの利用
? JapanTaxiの分析基盤の標準ジョブ実行基盤であり、他のデータ収集ジョブと一緒
にまとめて管理
o 手動実行
? モデルをエンハンスする時に実行
? 実施する処理:学習データの作成、モデル推定ジョブの実行、精度評価の実行
? Jenkinsの利用
? 採用理由
? 実行毎にパラメータを変えて実行できる
? 15分以上の長時間処理ができる(Lambdaではダメ)
? 求められるSLAは低く、使う時だけ起動すれば良い(マネージドである必要な
し)
前処理?モデル推定
21. 21
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
21
Proprietary 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)
エンジニア
22. 22
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
22
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
? モデルの精度評価とは
o 精度異常しきい値の定義と監視
? 5分以上早く予測してしまった割合の監視
? 5分以上予測がズレた割合の監視
o 予測分布の目視確認
? タクシー会社ごとの予測分布を目視で確認し、前週と比較して大きな違いがないか
? モデル精度評価タイミング
o リリース前
? 過去データでの精度評価
? 本番リリースするのに十分な精度が出せている事を確認
o リリース後
? 最新データでの精度評価
? モデルが経年劣化していないことを確認する
モデルの精度評価
23. 23
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
23
Proprietary 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の推論結果}
24. 24
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
24
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
モデルサービング
S3
新モデル
旧モデル
推論
SageMaker
Endpoint
処理
(Lambda)
API
(API Gateway)
新
JapanTaxi
アプリ
監視
(Amazon CloudWatch)
応答時間 応答時間
エラー率
応答時間
旧
ロード
ロード
ワークフロー管理
(jenkins)
90%
10%
エンジニア
カスタマ
デプロイ時
オンライン デプロイ
アラート
25. 25
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
25
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
? カナリアリリース
o カナリアリリースとは
1. 10%だけ新しいモデルに置き換える
2. 問題がなければすべて新しいモデルでリ
リース
o 実現方法
? AWS SageMaker Endpointの機能を利用
? 「ProductionVariants」を複数用意
する
モデルサービング
SageMaker
Endpoint
オートスケール
Application Autoscaling
コンテナ1
新
モデル
コンテナ2
新
モデル ???
オートスケール
Application Autoscaling
コンテナ1 コンテナ2
???旧
モデル
旧
モデル旧
Production
Variant
新
Production
Variant
26. 26
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
26
Proprietary 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次元 程度であり、ニューラルネットの計算量が多くないため
モデルサービング
27. 27
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
27
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
? 会場から出た質問
o Lambdaを挟む必要があるのか。API-Gateway から直接 SageMaker Endpointではダメなの
か?
? 答え
o いろいろ融通がきくから
o 融通がきいた例
? アプリから飛んでくる電文の仕様が変わることがあったが、Lambdaで仕様変更を吸収す
ることにより、モデルへのインプットを変え無くてすんだ
? 稀にモデルが明らかに異常な値を推論してしまうことがあったが、異常値をLambdaで消
すことにより、アプリには応答しないようにした
モデルサービング
28. 28
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
28
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
? MLの概念が整理されてコンポーネント化されている
o トレーニングジョブ/ハイパーパラメータチューニング/モデル/エンドポイント等
o 成果物管理や開発プロセスの設計がしやすい
? ML成果物が整理される
o 学習データ、モデル、バッチ推論ジョブ、エンドポイントが紐付いてトレースできる
? モデルサービングが簡単
o カナリアリリースができる
o API-Gateway + Lambdaとの相性が抜群
所感:SageMakerの良い点
29. 29
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
29
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
? 「Notebookをそのまま渡せばOK」ではない???
o Notebookはサイエンティストの試行錯誤ツール
o 本番化に向けてはバッチ処理化する必要がある
? コンポーネント分割、ログ出力、設定値のファイル化、エラーハンドリング、テスト
コード生成etc...
? 開発のプロセスにマッチしたワークフロー管理が無い
o StepFunctionは一連の処理を数珠つなぎには良いが、一つ一つの工程を確認しながら実行す
るには不向き
o 学習データの作成→(人が確認)→モデル推定→(人が確認)→デプロイ
といった開発のフローに乗らない
? 定期ジョブを実行するジョブコントローラがない
o マネージドAirflowサービスのようなものがほしい
所感:改善して欲しいポイント
30. 30
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights ReservedProprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
まとめ
31. 31
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
31
Proprietary 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を用いたカナリアリリース
まとめ
32. 32
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights ReservedProprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
宣伝
これから取り組もうとしている事
33. 33
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
33
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
34. 34
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
34
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
タクシーから取れるデータを役立てようという試み
センシングカーとしてのタクシー車両
35. 35
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
35
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
1日のタクシー動態の様子
タクシーは常に膨大な数走り回っており、
道沿いのリアルタイムなデータを収集できる
36. 36
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
36
Proprietary and Confidential ?2017 JapanTaxi, Inc. All Rights Reserved
一緒に働いてくれる仲間を募集中
クラウド
Kubernetes
車載デバイス(IoT)
自社製の車載デバイスからデータを収集
ディープラーニングの分散処理
オンプレ一切なし
データエンジニアデータサイエンティスト
タクシービッグデータ解析
白線検出
例)ドライブレコーダ動画解析
ガソリンスタンド
料金検出
37. 37
Proprietary 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