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

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

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for tsuzuki tsuzuki
March 08, 2022

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

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

Avatar for tsuzuki

tsuzuki

March 08, 2022
Tweet

More Decks by tsuzuki

Other Decks in Technology

Transcript

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

    改善が宿命付けられていたのですが、当時私は機械学 習の経験はありませんでした 日々試行錯誤しながらサービス開発をしています 都筑 友昭
  2. 会社概要
 7 会社設立
 従業員家族・知人約200名にサービス提供
 クローズドβ開始
 一般の方向けにオンラインでの集客を開始
 オープンβ開始
 AIを活用したサービス提供開始
 正式リリース
 AIを用いて推薦された商品を直接購入できる機能


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

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


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


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

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

    画像認識技術では、柄と色を推定している ファッションでは画像の中に対象となる商品以外 (セットとなる洋服やモデル、背景など ) が一緒に写って いる事が多い そういった画像を上手く扱う為に、 DROBE では複数の機械学習モデルを用いた手法を採用
  6. MUST 要件
 - 新しい商品が登録されたら自動で柄と色を推論して DB に保存したい 
 - 画像モデルを更新した際には全商品のタグを付け替える必要がある 


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

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

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

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

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

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

  11. 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"})
  12. 🎉 画像推論のような機械学習機能も Fargate を使う事でシンプルにサービスに組み込めた 
 
 🎉 リアルタイム性が必要とされないバッチなどの機能では、サービス側の処理と機械学習の API を

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