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
Machine learning and system design
Search
shibuiwilliam
March 15, 2022
Technology
0
76
Machine learning and system design
about machine learning system design for web EC marketplace.
https://techplay.jp/event/768641
shibuiwilliam
March 15, 2022
Tweet
Share
More Decks by shibuiwilliam
See All by shibuiwilliam
生成AIのためのデータ収集とデータエンジニアリング
shibuiwilliam
4
460
LLMで推論するライブラリを整理する
shibuiwilliam
5
1.3k
生成AIの研究開発を事業につなげる データ、仕組み、コミュニケーション
shibuiwilliam
1
82
デプロイして本番システムで使うことから考えるAI
shibuiwilliam
2
630
今日からRAGを 始めることを考える
shibuiwilliam
2
1.6k
2024年生成AI新年会登壇資料
shibuiwilliam
0
330
Creative as Software Engineering
shibuiwilliam
2
640
Kubernetesクラスターを引き継ぐ技術
shibuiwilliam
3
340
機械学習システム構築実践ガイド
shibuiwilliam
1
920
Other Decks in Technology
See All in Technology
Snowflake ML モデルを dbt データパイプラインに組み込む
estie
0
110
生成AI×財務経理:PoCで挑むSlack AI Bot開発と現場巻き込みのリアル
pohdccoe
1
780
DevinでAI AWSエンジニア製造計画 序章 〜CDKを添えて〜/devin-load-to-aws-engineer
tomoki10
0
180
事業を差別化する技術を生み出す技術
pyama86
2
360
入門 PEAK Threat Hunting @SECCON
odorusatoshi
0
170
What's new in Go 1.24?
ciarana
1
110
EDRの検知の仕組みと検知回避について
chayakonanaika
12
5.1k
MIMEと文字コードの闇
hirachan
2
1.4k
2/18 Making Security Scale: メルカリが考えるセキュリティ戦略 - Coincheck x LayerX x Mercari
jsonf
0
230
データベースの負荷を紐解く/untangle-the-database-load
emiki
2
540
株式会社Awarefy(アウェアファイ)会社説明資料 / Awarefy-Company-Deck
awarefy
3
11k
Potential EM 制度を始めた理由、そして2年後にやめた理由 - EMConf JP 2025
hoyo
2
2.8k
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
30
4.6k
Why Our Code Smells
bkeepers
PRO
336
57k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.5k
Music & Morning Musume
bryan
46
6.4k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Agile that works and the tools we love
rasmusluckow
328
21k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
133
33k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
650
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
4
430
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Transcript
1 機械学習とシステムデザイン 2020/03/02 Mercari AI & Search Engineering Team shibui
yusuke
2 自己紹介 cat : 0.55 dog: 0.45 human : 0.70
gorilla : 0.30 Object Detection Shibui Yusuke • 写真検索 & Edge AI Team 基盤エンジニア MLエンジニア アノテーター(NEW!) • Github: @shibuiwilliam • Qiita: @cvusk • Facebook: @shibui yusuke • 最近やってること:Android、AR
3 最近やってること
4 • メルカリのMLシステム事例のうち、汎用的に使えそうな構成を共有します。 今日話すこと Easy Safe 違反出品検知 価格推定 感動出品 配送推定
(US) Kaggle (US) 感動出品 (US) 感動出品 v2 バーコード出品 違反出品検知 v2 KYC 違反出品検知 v3 不正検知 写真検索 価格推定 v2 配送推定 感動トレカ推定 AIカタログマッピング Edge AI listing dispatcher 2017 2018 2019
5 メルカリのワークフロー 売れるかな? 出品する 探す 買う 配送する • ユーザの売る・買うをつなぐC2Cマーケットプレイス・プラットフォーム。 出品者
購入者
6 • 目的:出品の配送サイズを推定しレコメンド。 (いろいろな配送方法・サイズを出品時に選択) • モデル:既存の類似商品の配送サイズを元にした近傍法。 • タイミング:出品前。 配送推定システム 出品する
配送する ML推論基盤 商品情報 (説明文等) 配送サイズ
7 • 解決したい課題: ◦ 1リクエストに1推論を返すサービスを作りたい。 • 解決策: ◦ GET/POSTを受け付けるREST APIに推論モデルを組み込
む。 • 利点: ◦ シンプルな構成のため、開発、運用が簡単。 ◦ スケールアウトや障害箇所の特定が容易。 • 注意点: ◦ 推論モデルのサイズ次第でレスポンス速度が上下する。 ◦ レスポンス内容: ▪ 分類の場合、全確率値を返すか、 top-kを返すか。 ▪ 確率に応じたクライアントの動作。 シンプルなWeb API クライアント 推論REST API
8 • 解決したい課題: ◦ 推論に既存データの一部を利用する場合、 DWHに アクセスするのは負荷・遅延が発生する。 • 解決策: ◦
利用するデータを前処理してキャッシュや DBに入れ ておく。 • 利点: ◦ 推論速度向上。 ◦ DWHへの負荷削減。 • 注意点: ◦ 推論用キャッシュやDBが必要。 ◦ データの鮮度が必要な場合、キャッシュや DBにTTL を設定しないと古いデータで推論される。 データ・キャッシュ クライアント 推論REST API DB DWH 前処理
9 違反検知システム 出品する 買う • 目的:違反出品を検知する。 • モデル:違反カテゴリごとに専用モデルを用意。 • タイミング:出品後。
ML推論基盤 商品情報 違反有無
10 並列的なマイクロサービス • 解決したい課題: ◦ 1イベントをトリガーにして複数のモデルで並列に推論す る。モデルを増減することがある。 • 解決策: ◦
推論器をマイクロサービス化し、各推論へのリクエストを 集約するプロキシを設置、集約した推論結果をレスポン スする。 ◦ ターゲットの推論器はプロキシに環境変数で設定する。 • 利点: ◦ 推論器ごとにリソース調整や更新が可能。 ◦ 推論器のメンテナンス、障害局所化。 ◦ 推論器の追加・削除が容易。 • 注意点: ◦ コスト増。 ◦ 推論の一つが失敗した場合のリトライ方針やタイムアウト を設定しないと、1推論器のエラーが全推論器の負荷につ ながる。 クライアント プロキシ A違反モデル B違反モデル ・ ・ ・
11 非同期推論 • 解決したい課題: ◦ 推論の呼び出し元と出力先が違う場合、同期的 に処理すると遅延・障害の原因になる。 • 解決策: ◦
呼び出し元と推論器の間にキューやメッセージ ングを置き、疎結合にする。 • 利点: ◦ 各コンポーネントを分離可能。 ◦ 推論器で障害が発生してもリトライ可能。 • 注意点: ◦ 推論の順番は保証されないため、入力やデータ に対する推論順が必要なワークフローでは注意 が必要。 ◦ 推論エラー時のリトライポリシー。 A違反モデル B違反モデル ・ ・ ・ プロキシ メッセージング 出力先
12 写真検索システム 売れるかな? 探す • 目的:似た画像の商品を探す。 • モデル:画像に対する物体検出、特徴抽出、類 似ベクトル検索の組み合わせ。 •
タイミング:出品検討中、検索中。 ML推論基盤 学習 パイプライン 入力画像 類似商品
13 連続的な推論システム • 解決したい課題: ◦ 結果を出すまでに複数の推論モデルを経由する。 • 解決策: ◦ 各モデルをマイクロサービスとして配置、各推論器
へのリクエストをプロキシで集約する。 • 利点: ◦ 複数のモデルを通して複雑な推論を処理可能。 ◦ 各推論器を分離し、それぞれに負荷分散やリソース 調整が可能。 • 注意点: ◦ モデル間で依存した学習や開発が必要。 ◦ 途中の推論でエラーが発生すると後続の処理が実 行できないため、可用性の検討が必要。 ◦ コスト増。 プロキシ 物体検出 特徴抽出 類似検索 入力画像から 物体検出 被写体から 特徴抽出 抽出した特徴ベクトルから 類似ベクトル検索
14 継続的なモデル追加 • 解決したい課題: ◦ 使用するデータが更新される場合、モデルを定期 的に更新する必要がある。 • 解決策: ◦
更新されたデータと推論器を自動で追加する学習 パイプラインと、追加された推論器を検出する サービスディスカバリを組み合わせる。 ◦ 不要な推論器は停止するだけで検索対象から除 外可能。 • 利点: ◦ 更新されたデータやモデルを推論対象に組み込 むことが可能。 • 注意点: ◦ 学習パイプラインの安定性。 ◦ 推論器の追加・削除処理。 削除 追加 プロキシ サービス ディスカバリ 特徴抽出 出品データ 出品画像 インデクシング ML推論基盤 ML学習基盤
15 • MLシステムの難しさ まとめ ! 出力が確率的 ! スピードが遅い ! データの変化 ! モデルの更新 閾値による出力判定、上位 x件を見せて人間の判断に委ねる
リソース調整、タイムアウト、キャッシュ、シンプルなモデル キャッシュ、定期的なデータ更新 カナリアリリース、ABテスト、サービスディスカバリー ビジネスロジックやUI/UXとの整合性
16 コロナウィルスに負けずにイベントを開催した運営に称賛と感謝! この登壇者紹介を本人の 確認なく掲載した大胆さに も称賛申し上げます。 https://techplay.jp/event/768641