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

感動出品の起案からリリースまで

 感動出品の起案からリリースまで

感動出品の起案からリリースまで (Mercari ML Ops Night Vol.1)

Takuma Yamaguchi

May 23, 2018
Tweet

More Decks by Takuma Yamaguchi

Other Decks in Technology

Transcript

  1. 感動出品の起案からリリースまで
    Mercari ML Ops Night Vol.1
    Takuma Yamaguchi
    Machine Learning Engineer

    View Slide

  2. My Background
    2001年〜
    • 画像認識および機械学習アルゴリズム研究
    • 博士(工学)
    • その他,コンピュータビジョン / オペレーションズリサーチ分野での研究
    • CUDA 1.0の頃から GPGPU を利用
    2012年〜
    • データエンジニア
    • Hadoop や Spark を中心としたデータ分析基盤の開発・運用
    • ユーザ行動トラッキング,LTV 推定等のアルゴリズム開発
    2016年〜
    • 株式会社メルカリ
    • 画像認識を中心とした機械学習に基づく機能開発
    • 2017年: 出品時の画像認識機能をリリース (on Kubernetes)
    2

    View Slide

  3. Agenda
    3
    • 感動出品の歴史
    • 感動出品のシステム側の紹介
    • 内容は大いに被ります。。。
    • https://speakerdeck.com/kumon/maikurosabisuapurikesiyontositefalseji-jie-xue-xi

    View Slide

  4. 4
    メルカリの画像認識機能
    • 出品時の作業効率化が目的
    • 撮影した商品画像を認識
    • 商品名 / カテゴリ / ブランド の自動入力
    • 内部的には色識別も行っており,商品検索時の色フィルターに利用

    View Slide

  5. 5

    View Slide

  6. 6

    View Slide

  7. 7
    US版メルカリでもリリース
    USのデータを利用して一部再学習しただけでロジック自体は日本版と全く同じ

    View Slide

  8. 8
    プロジェクトのはじまり
    いつの間にか設定されていたブレスト

    View Slide

  9. 9
    画像による出品という最高の体験についてブレスト (2017/07/19)
    お客様を感動させたいんですよ。画像撮影する
    だけで、自動入力されて出品とか。
    精度20%くらいでもいいんで。
    いいですね〜
    カテゴリとブランドは、わりとすぐにできるとおも
    います。タイトルについても、なんとなくのアイ
    デアはあります。
    色も欲しいですね〜
    色は、実はわりと難しい課題なんですよね。
    リリース目標っていつ頃でしょうか?
    えっと〜、今Q中ですね
    あらら
    やってみます!
    (†) 今Q中: 2017年9月末がデッドライン
    (‡) 課題も開発期間も難易度高いのでリリースできればラッキーくらいの感覚
    (†)
    (‡)

    View Slide

  10. 10
    画像による出品という最高の体験についてブレスト (2017/07/19)
    お客様を感動させたいんですよ。画像撮影する
    だけで、自動入力されて出品とか。
    精度20%くらいでもいいんで。
    いいですね〜
    カテゴリとブランドは、わりとすぐにできるとおも
    います。タイトルについても、なんとなくのアイ
    デアはあります。
    色も欲しいですね〜
    色は、実はわりと難しい課題なんですよね。
    リリース目標っていつ頃でしょうか?
    えっと〜、今Q中ですね
    あらら
    やってみます!
    (†) 今Q中: 2017年9月末がデッドライン
    (‡) 課題も開発期間も難易度高いのでリリースできればラッキーくらいの感覚
    (†)
    (‡)
    プロジェクト名: 感動出品

    View Slide

  11. 11
    タイトル生成: なんとなくのアイデアを形に (2017/07末)
    • 画像のタイトル・説明文の生成は知識も経験もない
    • なんとなくのアイデアの方向性が悪くないかサーベイ
    • Bernardi, Raffaella, et al. Automatic Description Generation from Images.
    • プロトタイプの実装 (( )内は当時の自分用メモへの独り言 )
    • 関連ワードとスコア
    • データは100万商品程度 (だったはず)
    (うん、悪くない)
    (まさに感動出品) (これが感動出品)
    (日差しも結果も眩しい)
    (ブランドへの感度を高めたい)

    View Slide

  12. 12
    タイトル生成: なんとなくのアイデアを形に (2017/07末)
    • 画像のタイトル・説明文の生成は知識も経験もない
    • なんとなくのアイデアの方向性が悪くないかサーベイ
    • Bernardi, Raffaella, et al. Automatic Description Generation from Images.
    • プロトタイプの実装 (( )内は当時の自分用メモへの独り言 )
    • 関連ワードとスコア
    • データは100万商品程度 (だったはず)
    (うん、悪くない)
    (まさに感動出品) (これが感動出品)
    (日差しも結果も眩しい)
    (ブランドへの感度を高めたい)
    プロトタイプから
    ● いけそうな予感
    ● 季節性や商品の多様性を考慮するとデータは100万商品では足りない
    ● ブランドへの感度を高めたい
    ● 変なタイトルが生成されるのが不安
    ● カテゴリ認識・ブランド認識は、過去の経験からたぶん大丈夫

    View Slide

  13. 13
    モデル洗練 (8月)
    サマーインターンも貢献

    View Slide

  14. 14
    ※ 価格推定は、興味本位で実装したも
    ので、本番では使われていない
    間違えることもあるものの、本
    番運用に耐えられそうなモデ
    ルはできた

    View Slide

  15. 15
    メルカリアプリへの実装 (9月)
    のこり1ヶ月

    View Slide

  16. メルカリアプリに実装されるまでの残タスク
    16
    • 機械学習エンジニア
    • APIの実装
    • システム設計
    • SRE
    • システム構築
    • データサイエンティスト
    • ログ / KPI設計
    • バックエンドエンジニア
    • Mercari-API 改修
    • デザイナー
    • UI / UX設計
    • クライアントエンジニア
    • iOS / Androidアプリの改修
    • QAエンジニア
    • QA

    View Slide

  17. メルカリアプリに実装されるまでの残タスク
    17
    • 機械学習エンジニア
    • APIの実装
    • システム設計
    • SRE
    • システム構築
    • データサイエンティスト
    • ログ / KPI設計
    • バックエンドエンジニア
    • Mercari-API 改修
    • デザイナー
    • UI / UX設計
    • クライアントエンジニア
    • iOS / Androidアプリの改修
    • QAエンジニア
    • QA
    機械学習エンジニア 1人では、
    API実装、システム設計、 SREとのシステム構築
    で、手一杯で、この期間はモデルには一切触れず

    View Slide

  18. 実際の環境構築依頼
    18
    ● 機械学習を使った新機能をリリースしたい
    ● 1サーバで 4リクエスト/秒ほど処理できる
    ● API (Gunicorn + Django) + Queue + Worker (TensorFlow)
    ● Worker では,常時 25GB のメモリが必要で起動に10分かかる
    ● 機械学習モデルのファイルサイズは 15GB 超
    ● モデルは定期的に更新し GPU が必要
    機械学習を使った機能追加の相談

    View Slide

  19. 実際の環境構築依頼
    19
    ● 機械学習を使った新機能をリリースしたい
    ● 1サーバで 4リクエスト/秒ほど処理できる
    ● API (Gunicorn + Django) + Queue + Worker (TensorFlow)
    ● Worker では,常時 25GB のメモリが必要で起動に10分かかる
    ● 機械学習モデルのファイルサイズは 15GB 超
    ● モデルは定期的に更新し GPU が必要
    機械学習を使った機能追加の相談
    とりあえずDockerfile用意してください
    なんとかします

    View Slide

  20. 20
    1週間後

    View Slide

  21. 21
    System Architecture

    View Slide

  22. メルカリアプリに実装されるまでの残タスク
    22
    • 機械学習エンジニア
    • APIの実装
    • システム設計
    • SRE
    • システム構築
    • データサイエンティスト
    • ログ / KPI設計
    • バックエンドエンジニア
    • Mercari-API 改修
    • デザイナー
    • UI / UX設計
    • クライアントエンジニア
    • iOS / Androidアプリの改修
    • QAエンジニア
    • QA
    機械学習エンジニア 1人では、
    API実装、システム設計、 SREとのシステム構築
    で、手一杯で、この期間はモデルには一切触れず
    短期間でリリースできたのは
    ● USを中心にMicroservicesへシフト中だった
    ● 協力的なSRE
    ○ Dockerfile渡して
    ○ 1週間で
    ○ 全て構築されてた
    ■ デプロイ
    ■ モニタリング
    ■ etc...

    View Slide

  23. 23
    System Architecture
    機械学習エンジニア
    の担当部分
    画像がS3に保存されていることと
    GPUの利用のため,バッチサーバはAWSに.

    View Slide

  24. 24
    System Architecture
    通常の運用で見る部分

    View Slide

  25. 25
    Monitoring & Deployment
    通常の運用では,Datadog でのモニタリングと Spinnaker でのデプロイ・リソース管理のみ

    View Slide

  26. 26
    System Architecture

    View Slide

  27. Blue-Green Deployment
    27
    機械学習モデルはファイルサイズ(10GB+)の都合で Docker Image に含まれないものの,
    Persistent Volume(ReadOnlyMany)によって,Imutable Infrastructure を実現
    モデル更新のたびに
    Persistent Volumeを生成
    コードの更新だけの場合は
    そのまま
    (Redisは共通)

    View Slide

  28. 28
    感動出品リリース
    (2017/10/03〜)
    KPIや世論の反応を見ながら段階的に解放

    View Slide

  29. 29

    View Slide

  30. 30

    View Slide

  31. 31

    View Slide

  32. まとめ
    32
    • 感動出品の起案からリリースまでを紹介
    • Microservices化の流れのおかげもあり短期間でリリース
    • 雛形や指針が整っていれば機械学習エンジニアでもサービス運用は可能
    • 機械学習のシステム面を見る専任チームを用意するのが理想的
    • 機械学習エンジニアが専門領域で力を発揮
    • モデリングだけしかできないという意味ではない
    モデリングとリリースをシームレスにつなげて
    魅力的な機能を素早くリリースしていきたい

    View Slide

  33. Create value in a global marketplace
    where anyone can buy & sell

    View Slide