Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

1

Share

Download to read offline

Machine learning microservice_management

Download to read offline

Machine learning system in production, deployed as microservice architecture and managed with DevOps method.

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

Machine learning microservice_management

  1. 1. マシンラーニング、マイクロサービス、マネジメント 2019/04/16 メルカリ AI Engineering Sysml EM Yusuke Shibui 1
  2. 2. 自己紹介 Yusuke Shibui ○ @shibuiwilliam or @cvusk ○ AI Engineering SysML Engineering Manager Platform Engineer ML Engineer cat : 0.55 dog: 0.45 human : 0.70 megane : 0.30 Object Detection 2
  3. 3. Agenda ● メルカリの機械学習 ● Sysmlとは ● ビジネスとシステムで考える ● 出品検知 3
  4. 4. メルカリの機械学習 4
  5. 5. メルカリのご紹介 「メルカリ」は、個人がスマホで簡単に売り買いを楽しめる、CtoCマーケットプレイスです。 5
  6. 6. 写真検索 写真の中から欲しいモノを選択して絞り込み、検索 6 iOSの方はぜひ使ってみてください!
  7. 7. メルカリの機械学習 簡単な 売買 安心な 売買 3月 出品検知システム(商品) 7月 商品通報の識別 12月 出品検知システム(商品)    アップデート 8月 価格推定 10月 AI出品 10月 AI商品サイズ推定( US) 11月 Kaggleコンペ開催 (US価格推定) 3月 AI出品(US) 4月 AI出品(本, CD, DVD等) 6月 (バーコード出品) 2月 違反検知システム(取引) 3月 年齢確認商品の検出 7月 違反検知システム(取引) 1月 登録情報監視 3月 AI写真検索 春 価格推定機能の   アップデート 2017 2018 2019 7
  8. 8. Sysmlとは 8
  9. 9. メルカリのMLエンジニアとSysml データ収集 モデル作成 予測サーバ作成 システム運用 ML Engineer SysML / ML Ops 画像 テキスト インテグレーション プラットフォーム開発 約20名 約10名 9
  10. 10. Sysmlとは ● ミッション:機械学習モデルを本番システムで動かす ○ プラットフォーム開発:機械学習モデルを活用するためのシステムを開発し運用 ○ インテグレーション:機械学習モデルをシステムに組み込む 10Hidden Technical Debt in Machine Learning Systems https://papers.nips.cc/paper/5656-hidden-technical-debt-in-machine-learning-systems.pdf
  11. 11. MLプラットフォームLykeion Istio & Kubernetes Sysmlとは Istio & Kubernetes ● 機械学習のワークフローをカバーするプラットフォーム Lykeion(リュケイオン)を独自開発 ● コンテナ・ワークフローによる学習プロセス ● オンライン・アップデートを可能とする推論システム k8s job k8s job k8s job k8s job Docker Image with model Data retrieval Preprocess Training Evaluation DeploymentA/B TestServingReady to go! Build Improve Model file Deploy A Deploy B Virtualservice Destinationrule GatewayMercari 11
  12. 12. ビジネスとシステムで考える 12
  13. 13. ビジネスで考える ● 機械学習の価値 ○ ✕ テストデータのパフォーマンス(AccuracyやRMSE等) ○ ○ ビジネスへの還元 ● 機械学習を実用的に使えるようにすることがSysmlのミッション ● 良い機械学習システム ○ モデルを簡単にリリースし、改善することができる ○ システムが安定稼働し、システム、モデル両方の障害対応ができる 13
  14. 14. システムで考える Lykeion Istio & KubernetesIstio & Kubernetes ● 個々のサービスがマイクロサービスとなった拡張性あるアーキテクチャ ● 複数のモデルで構成されるサービスは内部もマイクロサービスとなっている ● 今日はこのアーキテクチャにたどり着くまでの汗と涙に満ちた話をします MLプラットフォーム Lykeion 価格推定 出品検知 写真検索 kyc 14 AI出品
  15. 15. 出品検知 15
  16. 16. 出品検知 ● 出品された商品から特定種類のものを検知する。 ● 1システムで複数の機械学習モデルを稼働。 出品検知のワークフロー ② 規約違反や分類対象の   商品を検知 ① 商品出品 ③ カスタマーサポートで 通知された商品を確認 通常商品 検知システム 16 規約違反商品 × カスタマー サポート
  17. 17. ● 出品された商品から特定種類のものを検知する。 ● 履歴 ○ 2017年12月 第1.0版 リリース ○ 2018年4月 第1.1版 拡張 ○ 2018年10月 第1.2版 ディープラーニングモデル稼働 ○ 2019年2月 第2.0版 マイクロサービス化 出品検知 17
  18. 18. ● 第1.0版のシステム構成 ○ 1deploymentに多クラス分類が1個 ○ モノリシックな非同期推論システム ○ 運用は楽 出品検知 違反A 10% 違反B 30% 違反C 20% ・・・ xx% Deployment uwsgi+flask categorical preprocess text preprocess numerical preprocess multiclass classifier Queue CS dataset Docker Image with model Data retrieval Preprocess Training Evaluation学習 推論 multiclass classifier 18
  19. 19. ● 第1.0版の課題 ○ もっと高精度に検知したい出品がある 出品検知 違反A 10% 違反B 30% 違反C 20% ・・・ xx% Deployment uwsgi+flask categorical preprocess text preprocess numerical preprocess multiclass classifier Queue CS dataset Docker Image with model Data retrieval Preprocess Training Evaluation学習 推論 multiclass classifier 要改善 19
  20. 20. ● 第1.1版のシステム構成 ○ 特定の検知を2値分類にして強化 ○ 多クラス分類+2値分類 ○ まだモノリシックだけど、運用は楽 出品検知 違反A 10% 違反B 30% 違反C 20% ・・・ xx% Deployment uwsgi+flask categorical preprocess text preprocess numerical preprocess Queue CS dataset Docker Image with model Data retrieval Preprocess Training Evaluation学習 multiclass classifier binary classifier multiclass classifier binary classifier 推論 20
  21. 21. ● 第1.1版の課題 ○ もっと高精度に検知するために画像、テキストによる出品検知が必要 最優先 ○ 個別モデルの再学習、更新ができない ○ モデル追加・更新には全モデルの再学習が必要になる 出品検知 違反A 10% 違反B 30% 違反C 20% ・・・ xx% Deployment uwsgi+flask categorical preprocess text preprocess numerical preprocess Queue CS dataset Docker Image with model Data retrieval Preprocess Training Evaluation学習 推論 multiclass classifier binary classifier multiclass classifier binary classifier 要改善 21
  22. 22. ● 第1.2版:ディープラーニングと Istioの投入 ○ TF serving推論Docker imageを個々のディープラーニングモデル用にビルド ○ 前処理とsklearnモデルは1個のDocker imagesに集約し、リソース効率化 ○ ディープラーニングのみ独立した Docker imageとする ○ IstioによるA/Bテストのサポート 出品検知 dataset Docker Image with model and preprocess for DL 学習 multiclass classifier binary classifier Docker Image with model deeplearning classifier 22 Data retrieval Training Evaluation Training Evaluation Preprocess Preprocess Docker Image with model deeplearning classifier Training EvaluationPreprocess
  23. 23. 出品検知 違反A 10% 違反B 30% 違反C 20% ・・・ xx% CS 推論 Queue Istio virtualservice destinationrule ● 第1.2版:ディープラーニングと Istioの投入 ○ TF serving推論Docker imageを個々のディープラーニングモデル用にビルド ○ 前処理とsklearnモデルは1個のDocker imagesに集約し、リソース効率化 ○ ディープラーニングのみ独立した Docker imageとする ○ IstioによるA/Bテストのサポート 90% 10% 23 旧モデル 新モデル
  24. 24. Group deployment proxy ● 第1.2版のシステム構成 ○ ディープラーニングを複数投入:画像、テキストによる検知 ○ Istioとプロキシ追加:複数推論器へのアクセスを集約 出品検知 違反A 10% 違反B 30% 違反C 20% ・・・ xx% CS dataset 学習 推論 Docker Image with model deeplearning classifier Queue Istio virtualservice destinationrule Deployment uwsgi+flask categorical preprocess text preprocess numerical preprocess multiclass classifier binary classifier image preprocess Deploy uwsgi+flask Deploy uwsgi+flask Deploy tfserving deeplearning classifier Docker Image with model and preprocess for DL multiclass classifier binary classifier 24 Data retrieval Training Evaluation Training Evaluation Preprocess Preprocess Docker Image with model deeplearning classifier
  25. 25. Group deployment proxy ● 第1.2版の課題 ○ 個別モデルの再学習、更新ができない ○ モデル追加には全モデルの再学習が必要になる ○ 前処理とディープラーニングが 1:1のデプロイになっていない 出品検知 違反A 10% 違反B 30% 違反C 20% ・・・ xx% CS dataset 学習 推論 Queue Istio virtualservice destinationrule Deployment uwsgi+flask categorical preprocess text preprocess numerical preprocess multiclass classifier binary classifier image preprocess Deploy uwsgi+flask Deploy uwsgi+flask Deploy tfserving deeplearning classifier Docker Image with model and preprocess for DL multiclass classifier binary classifier 25 Data retrieval Training Evaluation Training Evaluation Preprocess Preprocess 要改善 Docker Image with model deeplearning classifier Docker Image with model deeplearning classifier モノリ シック
  26. 26. 出品検知 ● 第1.1版まで: 課題の優先度は モデル追加 > アーキテクチャ改善 ○ 少数の単純な機械学習モデルのみ ○ 短い学習時間、簡単なデプロイメント →モノリシックなアーキテクチャで運用できる ● 第1.2版以降: 課題の優先度は アーキテクチャ改善 > モデル追加 ○ モデルの増加 ○ ディープラーニングによる学習時間の長時間化 ○ より複雑な検知ルールと煩雑なデプロイメント →モノリシックなアーキテクチャだと運用が困難 26
  27. 27. 出品検知 ● 第1.2版の課題例:学習と推論で精度が大きく違うことがある ○ 学習データの境界値サンプリング不足  ■ 犬っぽい犬、猫っぽい猫だけでなく、猫っぽい犬、犬っぽい猫が必要。 ○ 学習と推論でデータ型やスケールを一致させない誤り dataset学習 Docker Image with model Accuracy 99% Precision 98% Recall 99% →毎日数千件の  誤検知 Group deployment proxy推論 Queue Istio virtualservice destinationrule Deployment uwsgi+flask categorical preprocess text preprocess numerical preprocess multiclass classifier binary classifier image preprocess Deploy uwsgi+flask Deploy uwsgi+flask Deploy tfserving deeplearning classifier float32で学習 float16で推論 しかしこの修正を リリースするには 1ヶ月かかる 27 Data retrieval Training Evaluation Training Evaluation Preprocess Preprocess 間違いやすい境界値 を無視したランダム サンプリング
  28. 28. Group deployment proxy推論 Queue Istio virtualservice destinationrule Deployment uwsgi+flask categorical preprocess text preprocess numerical preprocess multiclass classifier binary classifier image preprocess Deploy uwsgi+flask Deploy uwsgi+flask Deploy tfserving deeplearning classifier 出品検知 dataset学習 Docker Image with model Accuracy 99% Precision 98% Recall 97% OOM! ● 第1.2版の課題例:起動の遅い前処理と Out of memory ○ Tfidf vectorizerのpickleが不要なstop-wordで容量肥大化 ○ 細長い画像のリサイズで RAM圧迫 最小限の CPU/RAM 豊富な リソース 28 しかしこの修正を リリースするには 1ヶ月かかる Data retrieval Training Evaluation Training Evaluation Preprocess Preprocess
  29. 29. 出品検知 違反A 10% 違反B 30% 違反C 20% ・・・ xx% CS 推論 Queue Istio virtualservice destinationrule ● 第1.2版の課題例:Istio Virtualserviceの分散ロードによるA/Bテスト、オンラインリリース ○ この実装だと全デプロイメントを A/Bテストすることになる ○ 学習結果が安定しないから A/Bテストしつつ並行して再学習 Virtualserviceにより 複数エンドポイントに 分散ロード可能 10% 90% 学習 いろいろやり直すため、 1ヶ月かかるdataset 29 旧モデル 新モデル Data retrieval Training Evaluation Training Evaluation Preprocess Preprocess
  30. 30. Group deployment proxy ● 第1.2版の課題 ○ 個別モデルの再学習、更新ができない ○ モデル追加には全モデルの再学習が必要になる ○ 前処理とディープラーニングが分かれた構成 出品検知 違反A 10% 違反B 30% 違反C 20% ・・・ xx% CS dataset Docker Image with model 学習 推論 multiclass classifier binary classifier Docker Image with model deeplearning classifier ... Queue Istio virtualservice destinationrule Deployment uwsgi+flask categorical preprocess text preprocess numerical preprocess multiclass classifier binary classifier image preprocess Deploy uwsgi+flask Deploy uwsgi+flask Deploy tfserving deeplearning classifier 要改善 Data retrieval Preprocess Training Evaluation Training Evaluation Road to release and update deep learning (つまりは愚痴) ● grpc, tfserving用のライブラリ、 Docker Image開発 ● 不安定な学習 ○ 同じデータとパラメータで学習しても同じ評価値のモデルができるとは限らない ● 一括デプロイメント ○ 全モデルを一括してリリースするアーキテクチャのため、一つでも悪いモデルがあると全モデルの学習をやり直し ● データ型 ○ 学習と推論で異なるコーディングになる一方、入力と前処理は型を一致させる( Pythonで忘れがち) ● ディープラーニングの推論スピード ○ ピーク時間での出品数を処理しきれないからモデルをダイエットしたいが、更新に 1ヶ月かかるからスケジュールが組めない ● 各デプロイメントに分散しているログ ○ 障害箇所の特定に時間がかかる ● 学習では概ね良い結果がでているけど、特定の出品に弱い推論器 ○ 学習、評価時に誤検知しやすいデータのサンプリングが不充分 ● その他、トラブルシューティングしまくってリリースした後の謎の達成感 ○ 「こんな難しいことできるオレかっこいい」症候群 Data retrieval Preprocess Training Evaluation DeploymentA/B TestServingReady to go! Build Improve 30
  31. 31. Lykeion Istio & Kubernetes システムで考える Istio & Kubernetes ● A/Bテスト以前に、学習と推論の差異(開発環境と本番環境の差異)を埋める QAが必要 ○ オフラインテストの結果がオンライン推論と大きく乖離 ○ ユニットテストを書けない機械学習モデルこそ、マニュアルでのオンラインテストが必要 Docker Image with model Data retrieval Preprocess Training Evaluation A/B TestServingReady to go! Build Improve Deploy A Deploy B Virtualservice Destinationrule GatewayMercari QADeployment k8s job k8s job k8s job k8s job Model file 31
  32. 32. システムで考える ● 機械学習モデルを本番システムにリリースするための QAを用意 ○ Kubernetesのマニフェスト ○ REST APIはGETとPOST必須 ■ GRPC、RESTのLiveness Probe、Readiness Probe ○ オンラインでの推論試験、境界値試験 ■ 正例、負例 ■ 間違いやすい正例、間違いやすい負例 ■ 画像:白黒、異常に細長い、被写体が真ん中にない、「〜〜様専用」のみ ■ テキスト:顔文字、単語の羅列、スペック表、異常に短い or長い ○ オンラインでのパフォーマンス試験、負荷試験 ○ 可読性のあるログ ○ 障害監視、アラート ○ 結合試験 32
  33. 33. 出品検知 ● 推論デプロイメントの分割 ● そのために学習プロセスの依存関係を分割 dataset学習 Group deployment proxy推論 Queue Istio virtualservice destinationrule Deployment uwsgi+flask categorical preprocess text preprocess numerical preprocess multiclass classifier binary classifier image preprocess Deploy uwsgi+flask Deploy uwsgi+flask Deploy tfserving deeplearning classifier 推論器を分 割 依存関係を 分割 Docker Image with model and preprocess for DL multiclass classifier binary classifier 33 Data retrieval Training Evaluation Training Evaluation Preprocess Preprocess Docker Image with model deeplearning classifier Docker Image with model deeplearning classifier
  34. 34. ● 第2.0版のシステム構成 ○ 全モデルを個別学習、個別デプロイメントにするマイクロサービス・アーキテクチャ 出品検知 違反A 10% 違反B 30% 違反C 20% ・・・ xx% CS 推論 proxy ML model deployment Istio virtualservice ML model deployment Istio virtualservice Queue dataset学習 Data retrieval Preprocess Training Evaluation Preprocess Image Model Image Data retrieval Preprocess Training Evaluation Preprocess Image Model Image Data retrieval Preprocess Training Evaluation Preprocess Image Model Image ML model deployment Istio virtualservice Preprocess deployment ML model deployment Istio virtualservice Preprocess deployment 34
  35. 35. ● 第2.0版のシステム構成 ○ 全モデルを個別学習、個別デプロイメントにするマイクロサービス・アーキテクチャ ○ 個別モデルのオンライン A/Bテストと無停止アップデート 出品検知 違反A 10% 違反B 30% 違反C 20% ・・・ xx% CS 推論 proxy ML model deployment Istio virtualservice Queue dataset学習 Data retrieval Preprocess Training Evaluation Preprocess Image Model Image ML model deployment Istio virtualservice Preprocess deployment ML model deployment Preprocess deployment 90% 10% 35 1リリース10分に短縮
  36. 36. まとめ 36
  37. 37. ビジネスとシステムで考える ● サービスは長く使われることで持続的に価値を生み出していくことが求められる ● しかし新しいサービスが価値を生むかどうかは出してみないとわからない ● 価値を生むようであれば価値を最大化するために定常的に改善できる必要がある → 0->1の発見:1モデルですばやく作りやすいモノリシック・アーキテクチャでリリース → 1->10の改善:複数モデルと持続的な更新が必要になったときに          マイクロサービス・アーキテクチャに移行 37
  • Tyee

    May. 8, 2019

Machine learning system in production, deployed as microservice architecture and managed with DevOps method.

Views

Total views

2,519

On Slideshare

0

From embeds

0

Number of embeds

1,373

Actions

Downloads

25

Shares

0

Comments

0

Likes

1

×