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

Amazon Personalizeでやらかした話

Amazon Personalizeでやらかした話

2019/07/10

11d0b5a9bcbdb07d838bf8ac3f841834?s=128

KosukeShimizu

July 10, 2019
Tweet

Other Decks in Technology

Transcript

  1. Copyright 2019 HANDS LAB INC. All rights reserved. Amazon Personalizeで

    やらかした話 清水 幸佑(Kosuke Shimizu)
  2. 自己紹介 • 清水幸佑 (しみず こうすけ) • 1995年生まれの長野育ち • 青色大好き •

    数学好き ◦ 鈴木貫太郎さんの動画が 面白い • ハンズラボ 2018新卒で入社 • よく書く言語 ◦ Python(メイン) ◦ PHP(サブ) ◦ Go(趣味) @thimi0412
  3. 2 何してんの? • 東急ハンズのECサイトの バックエンドを担当 • 最近は外部モール(楽天, Yahoo, etc) •

    割となんでもやるマン • 消費税と戦闘中
  4. Copyright 2019 HANDS LAB INC. All rights reserved. こっから本題

  5. 4 Amazon Personalizeとは • 2019/6/10に一般提供開始 • アプリケーションを使用している顧客に対して開発者が個別のレコメンデーションを 
 簡単に作成できるようにする機械学習サービス 


    
 • AutoMLの機能を使用すれば 
 アルゴリズムの選択やモデルのトレーニングまで行ってくれる 
 
 • APIのエンドポイントも作成してくれる 
 
 • S3にCSVファイルを用意すればデータを取り込んでくれる 
 
 • Qiitaに記事を書きました 
 Amazon Personalizeでやらかさないための使い方とLamdbaでの使用方法 
 https://qiita.com/thimi0412/items/15ef2c22646634804034

  6. 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が得られる
  7. Copyright 2019 HANDS LAB INC. All rights reserved. そうだ、東急ハンズの購買データで作ってみよう

  8. 7 作成したアーキテクチャ Amazon API Gateway AWS Lambda Amazon Personalize client

    { "item_list": [ "2200399000000", "4571243110130", "4539427300012", "2430000362002" ] } 推薦商品IDを格納したJSONが返される
  9. 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'],) • どんな商品が推薦されているか気になったので 以下のコードを実行! なんか遅いけど 大丈夫か!
  10. Copyright 2019 HANDS LAB INC. All rights reserved. やらかしてしまった

  11. 10 事件の発覚 • 2019/6/13 • AWS SUMMIT DAY2に参加中 ウェーイ!

  12. 11 事件の発覚 こすとやばい Personalizeて、なんのサービス? A 俺 Kさんにより #pj_cost_optimizing に追加されました。

  13. 12 事件の発覚 A K 2日で気づいてよかった 傷は浅い

  14. 13 3,214.70$って何円だっけ • 約34万円 • なぜか何度も3,214.70$でググる • たった2日で34万円は辛い • AWSのサポートからも

    大丈夫ですか的な連絡が来ている • AWS SUMMITのセッションの 内容が飛ぶほどの衝撃 申し訳ねぇ...
  15. 14 原因はTPSの最小値の設定 ここの数値を200にしていた! • TPS(transactions per second) 1秒に最低何回処理を行うか • TPSを1に設定すると

    レコメンドの取得は1秒間に1回まで • DynamoDBのキャパシティー みたいな感じ • それにしても16,073.500TPS-hoursは さすがにやりすぎた • せめてやるならTPSを1にして 処理の間にスリープ処理を入れるべき だった
  16. 15 実運用する時はどうすればいいのか Amazon API Gateway AWS Lambda Amazon Personalize client

    Amazon DynamoDB 1. 事前にユーザへの商品の推薦を行い DynamoDBに入れておく AWS ECS Task Schedule 2. LambdaはDynamoDBから推薦された商品 IDを取得する
  17. 16 得られた教訓 • 新しいサービスの事前調査をする • 課金体系にしっかり目を通す • 場合によってはAWSのサポートに聞くのもあり • 料金をおおよそでいいので計算できるようにする

    • 以上のことを周りと共有すること
  18. 17 得られた教訓 とりあえず新サービスは気をつけろ!

  19. 18 次はForecastだ!

  20. Thank you!