Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Mercar Gears MercariにおけるEdgeAIについて
Search
oshima
September 14, 2021
Technology
0
190
Mercar Gears MercariにおけるEdgeAIについて
Mercari Gears lecture session にて利用したスライドです。
https://www.youtube.com/watch?v=kKL0RKd34a0
oshima
September 14, 2021
Tweet
Share
More Decks by oshima
See All by oshima
CCSE2023 大規模言語モデルのZero-shot Learningを用いたデータ構築と開発への応用
yujioshima
2
420
メルカリのLLMを使ったサービス開発の進め方
yujioshima
0
250
生成系AI/LLM に関する 注目アップデート ~MS Build 2023 編~
yujioshima
5
2.5k
MLOps勉強会 そのEdgeAIはUXを 改善できるか
yujioshima
1
1.2k
CCSE2020 メルカリにおけるEdgeAIを用いた 新たなUXの開発
yujioshima
0
300
MLSE モバイル向け機械学習モデル管理基盤
yujioshima
2
3.2k
Other Decks in Technology
See All in Technology
DynamoDB でスロットリングが発生したとき/when_throttling_occurs_in_dynamodb_short
emiki
0
230
Flutterによる 効率的なAndroid・iOS・Webアプリケーション開発の事例
recruitengineers
PRO
0
110
Evangelismo técnico: ¿qué, cómo y por qué?
trishagee
0
360
Platform Engineering for Software Developers and Architects
syntasso
1
520
Zennのパフォーマンスモニタリングでやっていること
ryosukeigarashi
0
100
Introduction to Works of ML Engineer in LY Corporation
lycorp_recruit_jp
0
130
IBC 2024 動画技術関連レポート / IBC 2024 Report
cyberagentdevelopers
PRO
0
110
第1回 国土交通省 データコンペ参加者向け勉強会③- Snowflake x estie編 -
estie
0
130
開発生産性を上げながらビジネスも30倍成長させてきたチームの姿
kamina_zzz
2
1.7k
Engineer Career Talk
lycorp_recruit_jp
0
180
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間
oracle4engineer
PRO
28
13k
データプロダクトの定義からはじめる、データコントラクト駆動なデータ基盤
chanyou0311
2
320
Featured
See All Featured
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
How GitHub (no longer) Works
holman
310
140k
RailsConf 2023
tenderlove
29
900
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Optimizing for Happiness
mojombo
376
70k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
25
1.8k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Why Our Code Smells
bkeepers
PRO
334
57k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
Transcript
メルカリにおけるEdgeAIの活用 @y-oshima
2 多くの機能をリリース • 検索の改善 • 画像検索 • 違反出品検知 • AI出品
• レコメンデーション Mercariにおける機械学習の取り組み 機械学習プラットフォーム
3 EdgeAI モバイルのようなデバイス上で機械学習の推論を行う技術
4
5 Agenda • なぜEdgeAIが必要なのか • EdgeAIを用いた機能の開発 • EdgeAIを支える技術 • EdgeAIを支える技術を支える基盤
6 なぜEdgeAIが必要なのか
7 売れるかチェック アイテムを撮影すると • 売れている価格平均 • 売り切れ率 がわかる UXを改善し利用率を上げたい
8 利用率を向上のために 結果表示 タップ 領域検出 写真撮影 カメラ画面 売れるかチェックのステップ
9 利用率を向上のために 結果表示 タップ 物体認識 写真撮影 カメラ画面 各ステップの遷移率をログから集計 ここでやめてしまうお客様が多い 写真の撮影は想定以上にハードルが高いのでは?
写真撮影のステップをなくせないか
10 「かざす」UI スニーカー 〇〇円
11 • 応答性 ◦ 素早く結果を返せるか • 連続性 ◦ 状態の遷移が連続的か •
フィードバック ◦ アクションの結果が伝わるか • 柔軟性 ◦ 変更を加えるのが容易か UIの評価指標 [Aagesen, P. T., & Heyer, C. 2016]
12 応答性 結果表示 タップ 領域検出 写真撮影 カメラ画面 1秒 1秒
13 応答性 スニーカー 〇〇円 かざした瞬間結果が出る 応答性 高
14 連続性 結果表示 タップ 領域検出 写真撮影 カメラ画面 画面遷移 画面遷移
15 連続性 スニーカー 〇〇円 物体検出や結果表示に 画面遷移がない 連続性 高
16 フィードバック 結果表示 タップ 領域検出 写真撮影 カメラ画面 画面遷移の後でしかフィードバックが得られない
17 フィードバック スニーカー 〇〇円 注目されたアイテムや 結果が即座にわかる フィードバック 高
18 柔軟性 結果表示 タップ 領域検出 写真撮影 カメラ画面 写真の修正は撮影のやり直し
19 柔軟性 サングラス △△円 カメラを動かすだけで 別のアイテムに移る 柔軟性 高
20 「かざす」UI実現の課題 ② 物体検出や画像検索 ① 写真を送信 ③ 結果を返す サーバで推論を行う場合 全体で1sec程度
ネットワークの影響を受ける
21 「かざす」UI実現の課題 サーバで推論を行う場合 滑らかな体験を実現するためには 100 msec 未満が理想 [Card, S. K.,
Robertson, G. G., & Mackinlay, J. D. (1991, March)] サーバでの推論では間に合わない
22 Edge AI 1 sec 〜 〜 50ms • 100ms未満を実現可能
• ネット環境の影響がない
23 なぜEdgeAIが必要なのか まとめ • EdgeAI ◦ モバイルなどの上で機械学習の推論を行う技術 • EdgeAIによってレイテンシを大幅に小さくできる • インタラクティブなUXを実現できる
24 EdgeAIを用いた機能の開発
25 売れるかチェックの仕組み 画像検索 物体検出 画像送信 写真撮影 結果表示 検出結果確認
26 「かざす」UI実現のために 画像検索 物体検出 カメラ起動 結果表示
27 「かざす」UI実現のために 画像検索 物体検出 カメラ起動 結果表示 MLモデルを端末上で推論
28 Core ML モバイル上でのML推論用ライブラリ
29 Core ML • マルチプラットフォーム • 柔軟なランタイムオプション TensorFlow Lite を採用
モバイル上でのML推論用ライブラリ
30 EdgeAIにおけるMLモデル • 学習データの作成 • MLモデルの学習 MLモデルの変換 数百MB~数GB 変換されたMLモデルを実行 10
MB 程度
31 動画上での推論 動画入力 結果表示 推論 毎フレーム繰り返される 前処理 うまく制御しないとだんだん動画が遅れたりする
32 Mediapipe Google製のOSS 動画などストリーミングメディアでのML推論用ライブラリ
33 ストリーミングでの推論 各処理をノードとしたパイプラインを構築 ノードレベルで並列化が可能
34 動画上での推論 動画入力 結果表示 推論 前処理 N フレーム目 N+1 フレーム目
35 UI上の工夫 AI/MLは間違う • なぜこの値段なのか • 想像している値段と大きな差がある XXX円で売れます! かざすUIでは表示領域が狭いので注意が必要
36 スニーカー 売れている価格 XXX ~ △△△ 円 Nike エアマックス UI上の工夫
AIが間違ったときに納得できるように 認識結果の情報を提示することで 間違っていた場合に納得感がある* 売れている価格の範囲であり 絶対の価格と思わせない * [J. Zhou et al. 2019] https://pair.withgoogle.com/
37 • MLモデルの推論 • ストリーミング処理 • お客様を混乱させないUI設計 EdgeAIを用いた機能の開発 まとめ TensorFlowLite Mediapipe
38 EdgeAIを支える技術
39 「かざす」UI実現のために 画像検索 物体検出 カメラ起動 結果表示
40 「かざす」UI実現のために 画像検索 物体検出 カメラ起動 結果表示 目標:100ms以内で推論
41 Edgeデバイス上でのモデル実行 オブジェクト検出モデル 例:SSDlite-mobilenetv2 前処理等も含むと不十分 device CPU Pixel3 120 msec
Pixel4 90 msec
42 Java API Objective C API Core C Library Delegate
GPU CPU CoreML NNAPI TensorFlow Liteのアーキテクチャ
43 • GPU ◦ iOS, Android両方をサポート • XNNPack ◦ iOS,
Android両方:特定の行列演算をCPU上で高速化 • NNAPI ◦ Android向け:Pixel4ではEdgeTPUを利用できる • CoreML ◦ iOS向け:iPhone 11ではNPUが利用可能 TFLite でサポートされる Delegate
44 Edgeデバイス上でのモデル実行 オブジェクト検出モデル 例:SSDlite-mobilenetv2 device CPU GPU Pixel3 120 msec
30 msec Pixel4 90 msec 13 msec
45 MediaPipeの公式サンプル https://google.github.io/mediapipe/solutions/box_tracking.html BoxTracking
46 BoxTrackingのパイプライン
47 BoxTrackingのパイプライン 検出されたオブジェクトをカメラの移動方向から 以前のフレームのオブジェクトと紐付ける フレームをまたいでオブジェクトを追 跡できる
48 出口に近いほど高優先度 パイプライン優先度
49 検出が終わるまで 入力を待つ 検出が途切れても なめらかな出力 滑らかな表示の工夫
50 類似カテゴリでも価格や売れやすさは違う 日々新しい商品が追加される 静的な分類器や端末上にIndexを持つことが困難 サーバ上で画像検索を行う必要がある メルカリでの問題:巨大かつ複雑な商品カテゴリ
51 アイテムを検出したタイミングで切り出してサーバに送る • 予期しない画像をサーバに送る可能性 • 画像のアップロードに時間がかかる 類似商品の検索
52 サーバ上の画像検索を使う懸念点 • 予期しない画像をサーバに送る可能性 • 画像のアップロードに時間がかかる 01110 11010 101.. 端末上で特徴量化して送信
画像は復元できない 転送サイズ大幅削減 数百KB → 数KB 類似商品の検索
53 GPU CPU or NPU/TPU パイプラインの最適化
54 Before After
55 • Delegateによる推論の高速化 • 端末上で特徴量化まで行うことで ◦ プライバシーに配慮 ◦ 低レイテンシなサーバ呼び出し EdgeAIを支える技術まとめ
56 EdgeAIを支える技術を支える基盤
57 オブジェクト認識に使われるモデル • SSD-Mobilenetv2 [Sandler, Mark, et al. 2018] •
SSD-Mobilenetv3-small [Howard, Andrew, et al. 2019] • SSD-MobileDet [Xiong, Yunyang, et al. 2020] EdgeにおけるMLモデルの選定 精度だけでは決められない
58 • モデルアーキテクチャ • 変換オプション • Delegation • デバイス EdgeにおけるMLモデルで意識すべきこと
59 • モデルアーキテクチャ • 変換オプション • Delegation • デバイス EdgeにおけるMLモデルで意識すべきこと
60 EdgeAIにおけるMLモデル • 学習データの作成 • MLモデルの学習 MLモデルの変換 数百MB~数GB 変換されたMLモデルを実行 10
MB 程度
61 • FLOAT32 ◦ サーバでモデルを学習・推論するときと同じ • FLOAT16 ◦ 重みを単精度で表現することで軽量化 •
Weight only quantization (UINT8) ◦ 重みをUINT8量子化 • Full quantization (UINT8) ◦ 重みと活性化関数を量子化 TF Liteの変換オプション
62 変換オプション サイズ レイテンシ 精度劣化 FLOAT32 ✕ △ なし FLOAT16
△ △ 小 UINT8: weight only quant ◎ △ 中 UINT8: full quant ◯ ◎ 大 ※劣化の可能性が高い 変換オプションによる比較 ※
63 • モデルアーキテクチャ • 変換オプション • Delegation • デバイス EdgeにおけるMLモデルで意識すべきこと
64 Delegateオプションと実行デバイス Delegate • CPU • GPU • XNNPACK •
NNAPI • CoreML iOS Android デバイスごとにCPU, GPUの性能は異なる [Wu, C. J., et. al. 2019]
65 EdgeにおけるMLモデルの選定 変換形式 Delegate デバイス モデル
66 EdgeにおけるMLモデルの選定 変換形式 Delegate デバイス モデル 自動化!
67 Edgeモデル検証用プラットフォーム
68 Edgeモデル検証用プラットフォーム
69 Kubernetes上にML基盤を構築するプロジェクト 複数のコンポーネントを持つ • Kubeflow pipeline ◦ 機械学習モデルの学習や評価のパイプラインの管理 • Kubeflow
metadata ◦ 機械学習モデルのメタデータ管理
70 Edgeモデル検証用プラットフォーム
71 モデルの学習 モデルの評価 metadata保存 モデルの変換 ベンチマーク実行 ベンチマークを metadataに保存
72 Edgeモデル検証用プラットフォーム
73 精度比較と変換による劣化の検証 モデルA モデルB float16 float32 uint8
74 デバイスごとのベンチマーク iPhone 11 iPhone 8 CoreML GPU CPU XNNPack
75
76 メルカリのEdgeAIの取り組み UX設計 • EdgeAIでインタラクティブなUXを実現 • お客様を混乱させないUI設計 クライアントサイド • どこまでをクライアントサイドで行えるかの設計
• ms単位の最適化 バックエンド • 広範なデバイスをサポートするためのプラットフォーム
77 今回お話できなかったこと • KPI設計とリリース後の監視・改善 • クライアントサイドのモデル更新
78