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

AWS Fargate を使ってコストを抑えつつ 機械学習のバッチ処理を構築した話

5bd84b33d9b1a95390b725b84e914291?s=47 tsuzuki
March 08, 2022

AWS Fargate を使ってコストを抑えつつ 機械学習のバッチ処理を構築した話

AWS Startup Tech Meetup Online #11 https://aws-startup-community.connpass.com/event/237573/ の登壇資料です。

5bd84b33d9b1a95390b725b84e914291?s=128

tsuzuki

March 08, 2022
Tweet

Other Decks in Technology

Transcript

  1. AWS Fargate を使ってコストを抑えつつ 機械学習のバッチ処理を構築した話


  2. 自己紹介 2 新卒で半導体の会社に就職 ソーシャルゲームの開発やコンサルティング会社を経て 2019年より株式会社 DROBE の CTO DROBE は生まれた時から機械学習による事業効率の

    改善が宿命付けられていたのですが、当時私は機械学 習の経験はありませんでした 日々試行錯誤しながらサービス開発をしています 都筑 友昭
  3. はじめに
 3 機械学習をサービスに組み込む時に
 こんな事を思ったことはありませんか?


  4. はじめに
 🏗 インフラを作るのが大変そう
 
 💻 運用が面倒そう
 
 💰 出来るだけ安くしたい
 4

  5. はじめに
 5 本日は AWS Fargate を使った 機械学習のバッチ処理を最大限シンプルに 実装したお話をします 同じような悩みを持つ方の参考に少しでもなれば嬉しいです! 


  6. 会社と事業の紹介


  7. 会社概要
 7 会社設立
 従業員家族・知人約200名にサービス提供
 クローズドβ開始
 一般の方向けにオンラインでの集客を開始
 オープンβ開始
 AIを活用したサービス提供開始
 正式リリース
 AIを用いて推薦された商品を直接購入できる機能


    ストア機能リリース
 シリーズAにて5億円の資金を調達 
 フェムトパートナーズ株式会社を引受先とする
 第三者割当増資
 2019.04 2019.06 2019.09 2020.03 2020.10 2021.04 株式会社DROBE
 代表取締役CEO
 山敷 守
 資本金
 1億円
 従業員数
 約30名
 (パート・アルバイト含む) 

  8. サービスの概要
 8 約70問のアンケートをもとにAIとスタイリストが協働、 
 5~8点の商品をお選びし、ご自宅にお届け。 
 自宅で試着して商品の購入を検討。購入や着こなしに悩んだら、 
 スタイリストにLINEで相談。気に入ったものだけ購入、それ以外は返送。 


    商品の感想を送っていただくことで、 
 回数を重ねるごとに自分に似合う商品が届くように。 
 1 2 3
  9. 取り扱い商品
 9 取り扱い商品数
 万超
 40 メーカー ※一部 
 ※SKU


  10. 売上推移
 10 2021年12月 
 2020年12月 
 2019年12月 
 億超
 1

    月商
 サービス開始2年で

  11. 1顧客あたりスタイリング時間推移
 11 分
 15 分
 240 AI導入

  12. 1回あたり購入金額
 購入率 (購入金額/送付商品総額) 
 AI導入前
 (〜2020年1月) 
 AI導入後
 (2020年2月〜) 


    AI導入前
 (〜2020年1月) 
 AI導入後
 (2020年2月〜) 
 Note : 購入金額は同一条件となる商品点数5点での比較 
 1顧客あたり購入KPI
 12 %増
 113 %増
 129
  13. サービスの流れ 13 STEP. 1 プロフィールを記入
 AIにてWeb事前提案 
 スタイリストにて
 商品選定→発送
 試着・FB


    STEP. 2 STEP. 3 STEP. 4 1−3ヶ月頻度で 繰り返し 70問 5~8点 いつでも ストアでお買い物

  14. サービス内での機械学習利用例 ➀
 14 AI による事前提案 ユーザーさんに事前に商品を提案 する機能
 
 カテゴリーや色のバランス、多様性 などが大事


  15. サービス内での機械学習利用例 ➁
 15 スタイリストの商品選択画面 スタイリストが使う商品検索画面 
 
 機械学習を使っておすすめ順に並び 替える機能がある他、柄や素材と いったタグや、色やカテゴリーなどの

    幅広い検索軸を用意 

  16. サービス内での機械学習利用例 ➂
 16 ストア 検索の無い EC サイト 
 
 機械学習や運営からのオススメ

    などによって商品を提案 

  17. 17 これらの機能を実現する為に、
 DROBEではレコメンドはもとより
 画像認識技術を使って商品タグを充実させています


  18. 画像認識の実装


  19. 画像認識の仕組み
 19 出展: https://github.com/cvdfoundation/fashionpedia#images タグ推定モデル 柄 色推定モデル 色 セグメンテー ションモデル

    画像認識技術では、柄と色を推定している ファッションでは画像の中に対象となる商品以外 (セットとなる洋服やモデル、背景など ) が一緒に写って いる事が多い そういった画像を上手く扱う為に、 DROBE では複数の機械学習モデルを用いた手法を採用
  20. Application container 画像認識のサービスへの組み込み
 20 Web app Aurora 画像認識 API container

    ① 推論をリクエスト ② 処理結果を取得 ③ DBへ保存
  21. 再掲
 🏗 インフラを作るのが大変そう
 
 💻 運用が面倒そう
 
 💰 出来るだけ安くしたい
 21

  22. DROBE ではどうしたか


  23. MUST 要件
 - 新しい商品が登録されたら自動で柄と色を推論して DB に保存したい 
 - 画像モデルを更新した際には全商品のタグを付け替える必要がある 


    
 WANT 要件
 - 出来るだけシンプルに作りたい (もし上手くいかなかったら機能自体辞めるかもしれない) 
 - サーバーの費用も出来るだけ下げたい 
 
 妥協出来ること
 - リアルタイム性 (新商品を登録してから翌日くらいに推定が終わっていれば問題ない) 運用の要件を整理
 23
  24. 1. 常に API サーバーを建てておき、Application を定期実行
 要件から導き出される実現案
 24 App container Web

    app Aurora 画像認識 API container ① 推論をリクエスト ② 処理結果を取得 ③ DBへ保存 Step Function
  25. 要件から導き出される実現案
 25 App container Web app 画像認識 API container ①

    推論をリクエスト ② 処理結果を取得 ③ DBへ保存 Step Function 2. バッチの開始前に API サーバーを起動し、終了後に API サーバーを落とす

  26. 要件から導き出される実現案
 26 3. サービス側のバッチ処理と機械学習の API を同じ Fargate Task に纏める
 App

    container Web app Aurora 画像認識 API container ① 推論をリクエスト localhost ② 処理結果を取得 ③ DBへ保存 Step Function
  27. 要件から導き出される実現案
 27 3. サービス側のバッチ処理と機械学習の API を同じ Fargate Task に纏める
 🏗

    インフラはシンプル
 
 💻 運用も既存のインフラの知識でやれる
 
 💰 費用は使った分だけ

  28. Fargate task の終了
 28 Faragte task を終了させるために、全てのコンテナのプロセスを止める必要がある Flask を止めるための endpoint

    を準備しておき、App server 側で処理が終わったら叩く def shutdown_server(): func = request.environ.get("werkzeug.server.shutdown") if func is None: raise RuntimeError("Not running with the Werkzeug Server") func() @app.route("/system/shutdown", methods=["POST"]) def finalize(): shutdown_server() return jsonify({"message": "ok"})
  29. Fargate Task は独立したリソースなので、平行し て呼び出す事も可能 
 
 例えば商品 id が奇数のものと偶数のものは別の Task

    で処理するなどスケールが可能 
 定期実行
 29 Step Function Fargate Schedule Task
  30. 🎉 画像推論のような機械学習機能も Fargate を使う事でシンプルにサービスに組み込めた 
 
 🎉 リアルタイム性が必要とされないバッチなどの機能では、サービス側の処理と機械学習の API を

    同じ Fargate Task に纏める事で、コストと複雑性を抑えられた 
 
 🎉 バッチを並列化する事である程度のスケールにも耐えられる仕組みを構築できた 
 まとめ
 30
  31. さいごに


  32. We are hiring!!
 32 採用情報 https://info.drobe.co.jp/jobs エンジニアリング資料 https://info.drobe.co.jp/engineering 少しでも気になった方、お気軽にご連絡ください!! 


    カジュアルにお話するだけでも大歓迎です! 
 Twitter Meety