Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Mercari Image search 1st Anniversary

Mercari Image search 1st Anniversary

Improvement and enhancement of Mercari's image search, using Tensorflow Serving, Faiss, and Kubernetes clusters to manage the service.

shibuiwilliam

March 15, 2022
Tweet

More Decks by shibuiwilliam

Other Decks in Technology

Transcript

  1. 2 whoami 写真検索 Shibui Yusuke • Image Search & Edge

    AI Team 基盤 + MLエンジニア + いろいろ • Github: @shibuiwilliam • Qiita: @cvusk • Facebook: @shibui yusuke • 最近やってること:ARとか
  2. 7 • AWSとGCPのマルチクラウド・マルチk8s構成 アーキテクチャ Kubernetes Engine Container Registry Cloud Build

    Cloud Storage cronjob hourly daily monthly Hourly index Daily index Monthly index REST Feature extract Object detect CRD
  3. 8 • コンテナ・ベース・パイプラインによるインデックス生成 アーキテクチャ cronjob Hourly indexing Daily indexing Monthly

    indexing Fetch images Feature extract Container based pipeline Container Registry Cloud Build Cloud Storage Store index Build image Push image New items
  4. 9 • 多段階推論とサービス・ディスカバリ アーキテクチャ Kubernetes Engine Hourly index Daily index

    Monthly index REST Feature extract Object detect 1 pm 2 pm 3 pm 3/18 3/19 3/20 Jan Feb Mar Service discovery ① ② ③ ④
  5. 11 • 写真検索開始当初のサービスレベル: ◦ 利用頻度   : 最高 1リクエスト / 秒 ◦ アラート頻度 : 平均

    2 / week ◦ 全断     : 3回 ◦ コスト    : 社外秘(高かった) • なぜか私がオンコール担当の週ばかりアラートが鳴っていた・・・。 障害対応の夜 写
  6. 12 • 各コンポーネントで障害発生 障害対応の夜 Kubernetes Engine Container Registry Cloud Build

    Cloud Storage cronjob hourly daily monthly Hourly index Daily index Monthly index REST Feature extract Object detect CRD
  7. 13 運用管理機能の不足 当初の監視 監視未達 ・ RESTエラー率監視 ・ RESTエラー数監視 +  リクエスト数監視 +  推論エラー監視

    +  Index数監視 +  Indexエラー監視 +  ジョブリトライ +  ログ精査 • ログ、リトライ、監視いずれも不足し、障害切り分けできない状態
  8. 14 • サブスレッドが残存してデッドロック リトライされないジョブ cronjob Hourly indexing Daily indexing Monthly

    indexing Fetch images Feature extract Container based pipeline New items Main thread Sub thread Extract feature Queue メインスレッドが落ちても・・・ キューが残ってサブスレッドが 落ちない・・・ リトライもしない・・・
  9. 15 コスト削減 Kubernetes Engine REST Feature extract Object detect Hourly

    index Daily index Monthly index Hourly index Daily index Monthly index Hourly index Daily index Monthly index Hourly index Daily index Monthly index Hourly index Daily index Monthly index Hourly index Daily index Monthly index Hourly index Daily index Monthly index • 増え続ける一方のインデックスとコスト Kubernetes Engine REST Feature extract Object detect Hourly index Daily index Monthly index Hourly index Daily index Monthly index Hourly index Daily index Monthly index Hourly index Daily index Monthly index Hourly index Daily index Monthly index Hourly index Daily index Monthly index Hourly index Daily index Monthly index Cleaner Before After 古いインデックスは削 除
  10. 16 全断(一例) • 証明書の期限切れ・・・ Kubernetes Engine Hourly index Daily index

    Monthly index REST Feature extract Object detect へんじがない。 ただのしかばねのようだ。
  11. 17 • 最近のサービスレベル: ◦ 利用頻度   : 最高 25リクエスト / 秒 ◦ アラート頻度 : 平均

    1 / month ◦ 全断     : 今年に入って0回 ◦ コスト    : 社外秘(当初の半額) • しかしやはり私がオンコール担当の週はアラートが鳴る・・・。 障害対応の夜明け