機械学習を使用して映画のレコメンデーション システムを構築する

Blob Storage
Container Instances
Cosmos DB
Data Science Virtual Machine
Machine Learning

この例のシナリオでは、企業が機械学習を使用して、顧客に対する製品のレコメンデーションを自動化する方法を示します。 特に、Azure データ サイエンス仮想マシン (DSVM) は、映画の年齢区分に基づいて、ユーザーに映画をレコメンドする Azure 上のモデルをトレーニングするために使用されます。

パーソナライズされたレコメンデーションは、小売業からニュース、メディアまで、さまざまな業界で役立つ可能性があります。 考えられるアプリケーションとしては、仮想ストア内で製品のレコメンデーションを提供する、ニュースや投稿のレコメンデーションを提供する、音楽のレコメンデーションを提供するなどです。 企業は、顧客に対してパーソナライズされたレコメンデーションを行うスタッフを雇用する代わりに、Azure を使用して顧客の好みを理解するようにモデルをトレーニングすることで、カスタマイズされたレコメンデーションを大規模に提供できます。

関連するユース ケース

次のユース ケースについて、このシナリオを検討してください。

  • Web サイト上での映画のレコメンデーション。
  • モバイル アプリでのコンシューマー製品のレコメンデーション。
  • ストリーミング メディア上でのニュースのレコメンデーション。

映画のレコメンデーション システムのアーキテクチャ

映画のレコメンデーションをトレーニングするための機械学習モデルのアーキテクチャ

このシナリオでは、映画評価のデータセットに対して Spark の交互最小二乗法 (ALS) アルゴリズムを使用する機械学習モデルのトレーニングと評価について説明します。 このシナリオの手順を次に示します。

  1. フロントエンド Web サイトまたはアプリ サービスによって、ユーザー、項目、および数値評価タプルのテーブルに表されたユーザーの映画に関する操作の履歴データを収集します。

  2. 収集された履歴データが、Blob ストレージに格納されます。

  3. Data Science Virtual Machine (DSVM) は、多くの場合、Spark ALS レコメンダー モデルに基づく製品の実験または開発目的で、小規模なワークロードに使用されます。 ALS モデルは、データ分割戦略を適用してデータセット全体から生成されたトレーニング データセットを使って、トレーニングされます。 たとえば、データセットは、ビジネス要件に応じて、無作為、時系列、または階層化による複数のセットに分割することができます。 他の機械学習タスクと同様に、レコメンダーは評価メトリック (precision@k、recall@kMAPnDCG@k など) を使用して検証されます。

  4. Azure Machine Learning は、ハイパーパラメーターのスイープおよびモデルの管理など、実験を調整します。

  5. トレーニング済みのモデルは、Azure Cosmos DB 上に保存され、その後は、指定されたユーザーに対して上位 k 作品の映画のレコメンデーションを行うために適用できます。

  6. 次に、モデルは Azure Container Instances または Azure Kubernetes Service を使用して、Web またはアプリ サービス上にデプロイされます。

レコメンダー サービスの構築とスケーリングの詳細なガイドについては、「Azure 上でリアルタイム レコメンデーション API を構築する」の記事を参照してください。

Components

  • データ サイエンス仮想マシン (DSVM) は、機械学習とデータ サイエンスのためのディープ ラーニング フレームワークおよびツールを備えた Azure 仮想マシンです。 DSVM は、ALS の実行に使用できるスタンドアロンの Spark 環境を備えています。 ワークロードが小さく、分散ソリューションが不要な場合は、DSVM を使用します。

  • Azure BLOB ストレージは、映画のレコメンデーションのデータセットを格納します。

  • Azure Machine Learning は、機械学習モデルの構築、管理、およびデプロイを高速化するために使用されます。

  • Azure Cosmos DB は、グローバル分散型のマルチモデル データベース ストレージを可能にします。

  • Azure Container Instances は、必要に応じて Azure Kubernetes Service を使用して、トレーニング済みのモデルを Web またはアプリ サービスにデプロイするために使用されます。

DSVM の代替手段

Azure Databricks は、モデルのトレーニングと評価が実行されるマネージド Spark クラスターです。 マネージド Spark 環境は、数分で設定できます。また、自動スケーリング (スケールアップとスケールダウン) は、クラスターの手動スケーリングに関連したリソースとコストの削減に役立ちます。 リソースを節約するためのもう 1 つのオプションは、非アクティブなクラスターを自動的に終了するように構成することです。

考慮事項

可用性

通常、機械学習に基づくアプリのリソースは、トレーニング用のリソースと処理用のリソースに分割されます。 トレーニングに必要なリソースは、実際の運用環境の要求によって直接操作されることはないので、一般に高可用性は必要ありません。 サービスに必要とされるリソースは、顧客の要求を処理するために高可用性を備えている必要があります。

トレーニングについては、DSVM が世界中の複数のリージョンで使用可能であり、仮想マシンのサービス レベル アグリーメント (SLA) を満たしています。 サービスについては、Azure Kubernetes Service が高可用性インフラストラクチャを提供しています。 エージェント ノードもまた、仮想マシンの SLA に従います。

スケーラビリティ

保持しているデータ セットが大きい場合は、ご利用の DSVM をスケーリングしてトレーニング時間を短縮することが可能です。 VM サイズを変更することにより、VM をスケールアップまたはスケールダウンできます。 トレーニングにかかる時間を減らすために、メモリ内のご自身のデータセットに見合う十分な大きさのメモリ サイズと多めの vCPU 数を選択します。

Security

このシナリオでは、Azure Active Directory を使用して、コード、モデル、および (メモリ内) データが含まれている DSVM へのアクセスに対してユーザーを認証できます。 データは、Azure Storage に格納されてから DSVM に読み込まれます。そこで、Storage Service Encryption を使用して自動的に暗号化されます。 アクセス許可は、Azure Active Directory 認証またはロールベースのアクセス制御を利用して管理できます。

このシナリオのデプロイ

前提条件:既存の Azure アカウントが必要です。 Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。

このシナリオのコードはすべて、Microsoft Recommenders リポジトリで入手できます。

次の手順に従って ALS クイックスタート ノートブックを実行します。

  1. Azure portal から DSVM を作成します。

  2. Notebooks フォルダー内にリポジトリを複製します。

    cd notebooks
    git clone https://github.com/Microsoft/Recommenders
    
  3. SETUP.md ファイルに示されている手順に従って、conda 依存関係をインストールします。

  4. ブラウザーで、ご自身の JupyterLab VM に移動してから、notebooks/00_quick_start/als_pyspark_movielens.ipynb に移動します。

  5. ノートブックを実行します。

次のステップ

次の Azure アーキテクチャ センターの記事を参照してください。

次のコードをお試しください。