AWS Startup ブログ

【週刊 Ask An Expert #45】ユーザーへのおすすめ商品リストを表示するには?先週の #AWSLoft で受けた質問をざっくり紹介!

こんにちは、スタートアップ ソリューションアーキテクトの塚田 (Twitter: @akitsukada) です。

さて今週も週刊 Ask An Expert をお届けしていこうと思います!

Online Ask An Expert とは?

皆さん、AWS Loft Tokyo はご存知でしょうか?

目黒セントラルスクエア17Fにある、AWS を利用中のスタートアップとデベロッパーのためのコワーキングおよびイベントスペースです。その一角に AWS のエキスパート – Solutions Architect (SA) や Cloud Support Engineer (CSE)、ときにはサービス開発チーム – といった AWS の中の人に気軽に技術的な質問ができる、Ask An Expert カウンターがあります。…が、現在残念ながら新型コロナウィルス対策のため、AWS Loft は2020年3月から一時的に休館中です。

しかしそんな中、Ask An Expert は 2020 年 12 月から Online Ask An Expert に姿を変えて、新しくリモートでの対応を開始しました。そんな Online Ask An Expertはこちらからご利用いただけます

通常は先週分の Online Ask An Expert でいただいた質問をご紹介するのですが、この連載をお休みしていた12月にも少数ながら相談が寄せられていたので、今日はそれらからいくつかピックアップしてざっくり解説していきたいと思います。Let’s ask an expert!

週刊 Ask An Expert #45 (2020/12月中旬〜2021/1月上旬)

Q1. Amazon ECS on AWS Fargate でマルチテナントの SaaS アプリケーションを稼働している。ストレージとして Amazon S3Amazon EFS どちらがふさわしいか?

ユースケースをお伺いしたところ、テナントごとに

  • 永続化するファイルがある
  • 一時的なファイルがある(CSV 取り込みおよび出力処理)
  • 利用プランによって利用可能容量に違いがある
  • よくアクセスされるのは全ファイルのうち最新10%の見込み
  • 一つ一つのファイルは〜数十KB
  • ファイルを開いて追記するような処理はない

ということでした。

EFS、S3 どちらでも要件は満たせるものの、ローカルでファイルをオープンするような処理もないというところから、

  • 保存量あたりのストレージ料金
  • 長期保存時の Intelligent Tiering による自動最適化
  • 将来的なデータレイク構築の可能性

などを踏まえ、Amazon S3 が適している面が多いのではと議論しました。

なおご利用中の Fargate プラットフォームバージョンが 1.3 だったため、EFS を利用するには 1.4 に上げる必要があることも合わせてご案内しました。

Q2. Amazon SageMaker JumpStart について。PyTorch Hub や TensorFlow Hub などからの様々な事前トレーニング済みモデルを利用できるとのことだが、その一覧はあるか?

以下四点をご案内しました。

  1. 上記 SageMaker JumpStartのご紹介動画
  2. サービスページのソリューションリスト
  3. AWS が提供している Open Data
  4. Model Zoo

Q3. Amazon DynamoDB のテーブル設計手順が知りたい。DynamoDB の設計書を作りたい。

DynamoDB を使用した設計とアーキテクチャの設計に関するベストプラクティスをご紹介した上で、以下資料の21ページ以降を一緒に見ていきました。

試しにアクセスパターンをいくつかリストアップしてテーブル定義書・インデックス定義書を起こすところを口頭でシミュレーションし、感覚を掴んでいただけました。

Q4. ログインしたユーザにおすすめ商品を表示する機能を実装したいです。…が、機械学習を利用した機能の開発経験がありません。

AWS の機械学習サービスの全体像をご紹介しながら、特に Amazon Personalize について以下資料を見ながらご案内しました。

ユーザー情報(Users)、商品情報(Items)、過去の購入取引データ(Interactions)を用意して Personalize にデータをインポートし、ソリューション・キャンペーンを作成。Python 利用の場合以下のようなイメージでアプリケーションからおすすめリストを取得できることをご案内しました。

import boto3

personalizeRt = boto3.client('personalize-runtime')

response = personalizeRt.get_recommendations(
    campaignArn = 'Campaign ARN',
    userId = 'User ID')

print("Recommended items")
for item in response['itemList']:
    print (item['itemId'])

また、レコメンド用教師データの保存先を迷われているという事なので、 S3 に保存することをおすすめしました。そこから必要に応じて整形し、Amazon Personalize に入力したりする方法をあわせてご説明しました。

Q (番外編): AWS DeepRacer に興味がある。ミニ四駆との違いを教えてほしい。

AWS DeepRacer は、強化学習に対応した 1/18 スケールの完全自律型レースカー、3D レーシングシミュレーター、およびグローバルレーシングリーグを備えた、強化学習 (RL) を自由自在に操る最速の手段です。開発者は、オンラインシミュレーターで RL モデルのトレーニング、評価、調整を行います。学習したモデルを AWS DeepRacer にデプロイし、実際に自律型車両に搭載して、AWS DeepRacer チャンピオンカップを求めて AWS DeepRacer リーグで競争できます。

YouTube で最近のミニ四駆事情を見て、色々といじりたおしたい少年時代の想いが再燃してきたそうです。DeepRacer でもミニ四駆みたいに、タイヤ、ボディ、シャーシ、モーターなど、物理的なアプローチでスピードを上げるような改造をした上でレースに参加できないかとのことでした。

関連利用規約等のページをご案内しながら、それはやめていただくようお願いしました。

週刊 Ask An Expert まとめ、今回はここまで

最後までお読み頂きありがとうございます。

冒頭に書いたように、執筆者の独断により興味深かった質問を選び、かつざっくり要約して記載しています。実際にはより具体的な質問をより多く頂いていますが、様々なご相談があることが伝わっていれば幸いです。まだ Online Ask An Expert をご利用になったことがない方も、ぜひ一度お気軽にご利用ください。

このブログの著者

A author image of Aki Tsukada塚田 朗弘(Aki Tsukada)

Head of Startup Solutions Architect, Japan.
AWS Amplify が好き。

Twitter: @akitsukada