Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Amazon Personalizeでやらかした話
KosukeShimizu
July 10, 2019
Technology
0
550
Amazon Personalizeでやらかした話
2019/07/10
KosukeShimizu
July 10, 2019
Tweet
Share
Other Decks in Technology
See All in Technology
Persistence in Serverless Applications - ServerlessDays NYC
marcduiker
0
190
アーキテクチャを明文化して開発に臨んだ話
akihiyo76
0
250
ROS再入門-はじめてのSLAM-
miura55
0
380
トランザクションスクリプトは何がダメなのか?
polidog
2
1.2k
LINEのB2Bプラットフォームにおけるトラブルシューティング2選
line_developers
PRO
3
280
サーバレスECにおける Step Functions の使い方 〜ステートマシン全部見せます!〜
miu_crescent
0
180
JFrog 最新情報 - JFrog DevOps プラットフォームの今までとこれから / jfrog-update-for-devopskaigi-2022
tsuyo
0
140
セキュリティ 開運研修2022 / security 2022
cybozuinsideout
PRO
3
3.3k
ハッカー飯に New Relic を導入して実践した3つのこと
nobuakikikuchi
0
170
FoodTechにおける商流・金流・物流の進化/Evolution of Commercial, Financial, and Logistics in FoodTech
dskst
0
380
What's new in Vision
satotakeshi
0
170
The role of the data organization as a business progresses
line_developers
PRO
3
820
Featured
See All Featured
How GitHub Uses GitHub to Build GitHub
holman
465
280k
Fontdeck: Realign not Redesign
paulrobertlloyd
73
4.1k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
655
120k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
19
1.4k
Agile that works and the tools we love
rasmusluckow
319
19k
Visualization
eitanlees
124
11k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
237
19k
Infographics Made Easy
chrislema
233
17k
Web development in the modern age
philhawksworth
197
9.3k
Testing 201, or: Great Expectations
jmmastey
21
5.4k
How To Stay Up To Date on Web Technology
chriscoyier
780
250k
Code Review Best Practice
trishagee
43
9k
Transcript
Copyright 2019 HANDS LAB INC. All rights reserved. Amazon Personalizeで
やらかした話 清水 幸佑(Kosuke Shimizu)
自己紹介 • 清水幸佑 (しみず こうすけ) • 1995年生まれの長野育ち • 青色大好き •
数学好き ◦ 鈴木貫太郎さんの動画が 面白い • ハンズラボ 2018新卒で入社 • よく書く言語 ◦ Python(メイン) ◦ PHP(サブ) ◦ Go(趣味) @thimi0412
2 何してんの? • 東急ハンズのECサイトの バックエンドを担当 • 最近は外部モール(楽天, Yahoo, etc) •
割となんでもやるマン • 消費税と戦闘中
Copyright 2019 HANDS LAB INC. All rights reserved. こっから本題
4 Amazon Personalizeとは • 2019/6/10に一般提供開始 • アプリケーションを使用している顧客に対して開発者が個別のレコメンデーションを 簡単に作成できるようにする機械学習サービス
• AutoMLの機能を使用すれば アルゴリズムの選択やモデルのトレーニングまで行ってくれる • APIのエンドポイントも作成してくれる • S3にCSVファイルを用意すればデータを取り込んでくれる • Qiitaに記事を書きました Amazon Personalizeでやらかさないための使い方とLamdbaでの使用方法 https://qiita.com/thimi0412/items/15ef2c22646634804034
5 Amazon Personalizeとは USER_ID,ITEM_ID, TIMESTAMP 582,456,1477897643 582,458,1477897643 582,490,1472037749 601,855,1472033257 601,451,1472033257
USER_ID,AGE,GENDER 180,71,male 185,55,female 332,30,female 352,51,male 365,22,female ITEM_ID,ITEM_NAEM,CATEGORY_ID 461,歯ブラシ(青),1 693,オールスパイス ,10 112,赤ワイン,9 113,白ワイン,9 369,キャンドル(10本入),6 ユーザと商品の購買データ ユーザのデータ 商品のデータ モデル API 全部自動でやってくれる! APIにユーザIDを送ることで 推薦する商品IDが得られる
Copyright 2019 HANDS LAB INC. All rights reserved. そうだ、東急ハンズの購買データで作ってみよう
7 作成したアーキテクチャ Amazon API Gateway AWS Lambda Amazon Personalize client
{ "item_list": [ "2200399000000", "4571243110130", "4539427300012", "2430000362002" ] } 推薦商品IDを格納したJSONが返される
8 どんな商品が推薦されているのか? import boto3 len(users) # およそ3万 personalizert = boto3.client(
'personalize-runtime' , region_name ='ap-northeast-1' ) for user in users: recommend_item = personalizert .get_recommendations( campaignArn ="<Campaign ARN>" , userId =user['user_id'],) • どんな商品が推薦されているか気になったので 以下のコードを実行! なんか遅いけど 大丈夫か!
Copyright 2019 HANDS LAB INC. All rights reserved. やらかしてしまった
10 事件の発覚 • 2019/6/13 • AWS SUMMIT DAY2に参加中 ウェーイ!
11 事件の発覚 こすとやばい Personalizeて、なんのサービス? A 俺 Kさんにより #pj_cost_optimizing に追加されました。
12 事件の発覚 A K 2日で気づいてよかった 傷は浅い
13 3,214.70$って何円だっけ • 約34万円 • なぜか何度も3,214.70$でググる • たった2日で34万円は辛い • AWSのサポートからも
大丈夫ですか的な連絡が来ている • AWS SUMMITのセッションの 内容が飛ぶほどの衝撃 申し訳ねぇ...
14 原因はTPSの最小値の設定 ここの数値を200にしていた! • TPS(transactions per second) 1秒に最低何回処理を行うか • TPSを1に設定すると
レコメンドの取得は1秒間に1回まで • DynamoDBのキャパシティー みたいな感じ • それにしても16,073.500TPS-hoursは さすがにやりすぎた • せめてやるならTPSを1にして 処理の間にスリープ処理を入れるべき だった
15 実運用する時はどうすればいいのか Amazon API Gateway AWS Lambda Amazon Personalize client
Amazon DynamoDB 1. 事前にユーザへの商品の推薦を行い DynamoDBに入れておく AWS ECS Task Schedule 2. LambdaはDynamoDBから推薦された商品 IDを取得する
16 得られた教訓 • 新しいサービスの事前調査をする • 課金体系にしっかり目を通す • 場合によってはAWSのサポートに聞くのもあり • 料金をおおよそでいいので計算できるようにする
• 以上のことを周りと共有すること
17 得られた教訓 とりあえず新サービスは気をつけろ!
18 次はForecastだ!
Thank you!