Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
AWS Fargate を使ってコストを抑えつつ 機械学習のバッチ処理を構築した話
tsuzuki
March 08, 2022
Technology
1
340
AWS Fargate を使ってコストを抑えつつ 機械学習のバッチ処理を構築した話
AWS Startup Tech Meetup Online #11
https://aws-startup-community.connpass.com/event/237573/
の登壇資料です。
tsuzuki
March 08, 2022
Tweet
Share
Other Decks in Technology
See All in Technology
GeoLocationAnchor and MKTileOverlay
toyship
0
110
ソフトウェアテスト自動化、一歩前へ
yoshikiito
5
850
RDRA + JavaによるレジャーSaaSプロダクトの要件定義と実装のシームレスな接続
jjebejj
PRO
3
730
UWBを使ってみた
norioikedo
0
430
音のような言葉 〜ちゃちゃっとチャットで楽しむちょっとしたコツ〜 / words like sounds
satoryu
1
1.4k
Power AutomateでのAdaptive Cards
miyakemito
1
570
約6年間運用したシステムをKubernetesに完全移行するまで/Kubernetes Novice Tokyo
isaoshimizu
5
900
miisan's career talk
mii3king
0
220
Rethinking how distributed applications are built
tillrohrmann
0
100
The Fractal Geometry of Software Design
vladikk
1
1.2k
Strategyパターン
hankehly
0
140
Persistence in Serverless Applications - ServerlessDays NYC
marcduiker
0
250
Featured
See All Featured
Building Applications with DynamoDB
mza
83
4.7k
Building Adaptive Systems
keathley
25
1.1k
In The Pink: A Labor of Love
frogandcode
131
21k
Building Better People: How to give real-time feedback that sticks.
wjessup
344
17k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
269
11k
The Invisible Customer
myddelton
110
11k
Art Directing for the Web. Five minutes with CSS Template Areas
malarkey
196
9.4k
What the flash - Photography Introduction
edds
62
10k
BBQ
matthewcrist
74
7.9k
Documentation Writing (for coders)
carmenhchung
48
2.6k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
7
1.1k
Become a Pro
speakerdeck
PRO
3
840
Transcript
AWS Fargate を使ってコストを抑えつつ 機械学習のバッチ処理を構築した話
自己紹介 2 新卒で半導体の会社に就職 ソーシャルゲームの開発やコンサルティング会社を経て 2019年より株式会社 DROBE の CTO DROBE は生まれた時から機械学習による事業効率の
改善が宿命付けられていたのですが、当時私は機械学 習の経験はありませんでした 日々試行錯誤しながらサービス開発をしています 都筑 友昭
はじめに 3 機械学習をサービスに組み込む時に こんな事を思ったことはありませんか?
はじめに 🏗 インフラを作るのが大変そう 💻 運用が面倒そう 💰 出来るだけ安くしたい 4
はじめに 5 本日は AWS Fargate を使った 機械学習のバッチ処理を最大限シンプルに 実装したお話をします 同じような悩みを持つ方の参考に少しでもなれば嬉しいです!
会社と事業の紹介
会社概要 7 会社設立 従業員家族・知人約200名にサービス提供 クローズドβ開始 一般の方向けにオンラインでの集客を開始 オープンβ開始 AIを活用したサービス提供開始 正式リリース AIを用いて推薦された商品を直接購入できる機能
ストア機能リリース シリーズAにて5億円の資金を調達 フェムトパートナーズ株式会社を引受先とする 第三者割当増資 2019.04 2019.06 2019.09 2020.03 2020.10 2021.04 株式会社DROBE 代表取締役CEO 山敷 守 資本金 1億円 従業員数 約30名 (パート・アルバイト含む)
サービスの概要 8 約70問のアンケートをもとにAIとスタイリストが協働、 5~8点の商品をお選びし、ご自宅にお届け。 自宅で試着して商品の購入を検討。購入や着こなしに悩んだら、 スタイリストにLINEで相談。気に入ったものだけ購入、それ以外は返送。
商品の感想を送っていただくことで、 回数を重ねるごとに自分に似合う商品が届くように。 1 2 3
取り扱い商品 9 取り扱い商品数 万超 40 メーカー ※一部 ※SKU
売上推移 10 2021年12月 2020年12月 2019年12月 億超 1
月商 サービス開始2年で
1顧客あたりスタイリング時間推移 11 分 15 分 240 AI導入
1回あたり購入金額 購入率 (購入金額/送付商品総額) AI導入前 (〜2020年1月) AI導入後 (2020年2月〜)
AI導入前 (〜2020年1月) AI導入後 (2020年2月〜) Note : 購入金額は同一条件となる商品点数5点での比較 1顧客あたり購入KPI 12 %増 113 %増 129
サービスの流れ 13 STEP. 1 プロフィールを記入 AIにてWeb事前提案 スタイリストにて 商品選定→発送 試着・FB
STEP. 2 STEP. 3 STEP. 4 1−3ヶ月頻度で 繰り返し 70問 5~8点 いつでも ストアでお買い物
サービス内での機械学習利用例 ➀ 14 AI による事前提案 ユーザーさんに事前に商品を提案 する機能 カテゴリーや色のバランス、多様性 などが大事
サービス内での機械学習利用例 ➁ 15 スタイリストの商品選択画面 スタイリストが使う商品検索画面 機械学習を使っておすすめ順に並び 替える機能がある他、柄や素材と いったタグや、色やカテゴリーなどの
幅広い検索軸を用意
サービス内での機械学習利用例 ➂ 16 ストア 検索の無い EC サイト 機械学習や運営からのオススメ
などによって商品を提案
17 これらの機能を実現する為に、 DROBEではレコメンドはもとより 画像認識技術を使って商品タグを充実させています
画像認識の実装
画像認識の仕組み 19 出展: https://github.com/cvdfoundation/fashionpedia#images タグ推定モデル 柄 色推定モデル 色 セグメンテー ションモデル
画像認識技術では、柄と色を推定している ファッションでは画像の中に対象となる商品以外 (セットとなる洋服やモデル、背景など ) が一緒に写って いる事が多い そういった画像を上手く扱う為に、 DROBE では複数の機械学習モデルを用いた手法を採用
Application container 画像認識のサービスへの組み込み 20 Web app Aurora 画像認識 API container
① 推論をリクエスト ② 処理結果を取得 ③ DBへ保存
再掲 🏗 インフラを作るのが大変そう 💻 運用が面倒そう 💰 出来るだけ安くしたい 21
DROBE ではどうしたか
MUST 要件 - 新しい商品が登録されたら自動で柄と色を推論して DB に保存したい - 画像モデルを更新した際には全商品のタグを付け替える必要がある
WANT 要件 - 出来るだけシンプルに作りたい (もし上手くいかなかったら機能自体辞めるかもしれない) - サーバーの費用も出来るだけ下げたい 妥協出来ること - リアルタイム性 (新商品を登録してから翌日くらいに推定が終わっていれば問題ない) 運用の要件を整理 23
1. 常に API サーバーを建てておき、Application を定期実行 要件から導き出される実現案 24 App container Web
app Aurora 画像認識 API container ① 推論をリクエスト ② 処理結果を取得 ③ DBへ保存 Step Function
要件から導き出される実現案 25 App container Web app 画像認識 API container ①
推論をリクエスト ② 処理結果を取得 ③ DBへ保存 Step Function 2. バッチの開始前に API サーバーを起動し、終了後に API サーバーを落とす
要件から導き出される実現案 26 3. サービス側のバッチ処理と機械学習の API を同じ Fargate Task に纏める App
container Web app Aurora 画像認識 API container ① 推論をリクエスト localhost ② 処理結果を取得 ③ DBへ保存 Step Function
要件から導き出される実現案 27 3. サービス側のバッチ処理と機械学習の API を同じ Fargate Task に纏める 🏗
インフラはシンプル 💻 運用も既存のインフラの知識でやれる 💰 費用は使った分だけ
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"})
Fargate Task は独立したリソースなので、平行し て呼び出す事も可能 例えば商品 id が奇数のものと偶数のものは別の Task
で処理するなどスケールが可能 定期実行 29 Step Function Fargate Schedule Task
🎉 画像推論のような機械学習機能も Fargate を使う事でシンプルにサービスに組み込めた 🎉 リアルタイム性が必要とされないバッチなどの機能では、サービス側の処理と機械学習の API を
同じ Fargate Task に纏める事で、コストと複雑性を抑えられた 🎉 バッチを並列化する事である程度のスケールにも耐えられる仕組みを構築できた まとめ 30
さいごに
We are hiring!! 32 採用情報 https://info.drobe.co.jp/jobs エンジニアリング資料 https://info.drobe.co.jp/engineering 少しでも気になった方、お気軽にご連絡ください!!
カジュアルにお話するだけでも大歓迎です! Twitter Meety