建立以內容為基礎的建議系統

Blob 儲存體
Container Registry
Databricks
Kubernetes Service
Machine Learning

建議是適用于許多企業的主要收益驅動程式,適用于不同類型的產業,包括零售、新聞和媒體。 透過大量資料的可用性,您現在可以使用機器學習服務來提供高度相關的建議。

建議系統有兩種主要類型:共同作業篩選和以內容為基礎。 共同作業篩選可識別客戶行為中的類似模式,並建議其他類似客戶互動的專案。 以內容為基礎的建議會使用專案的相關資訊來學習客戶喜好設定,並建議與客戶先前互動的專案共用屬性的專案。 本文所述的方法是以內容為基礎的建議系統為焦點。

此範例案例示範您的企業如何使用機器學習服務,為您的客戶自動進行以內容為基礎的個人化。 概括而言,您可以使用 Azure Databricks 來定型模型,以預測使用者將參與專案的機率。 該模型會以預測服務的形式部署到生產環境,並使用 Azure Kubernetes Service。 接著,您可以使用這項預測,根據使用者最可能取用的內容來排名專案,以建立個人化的建議。

潛在使用案例

此案例與下列使用案例有關:

  • 網站或行動應用程式的內容建議。
  • 電子商務網站的產品建議。
  • 針對網站顯示的 ad 建議。

架構

架構圖:使用 Azure Databricks 在 Apache Spark 上進行以內容為基礎的個人化訓練、評估和部署機器學習模型。

此範例案例說明如何使用 Azure Databricks來定型、評估和部署機器學習模型,以在 Apache Spark 上進行以內容為基礎的個人化。 在此情況下,模型會針對包含使用者和專案功能的資料集,以受監督的分類演算法進行定型。 每個範例的標籤都是二進位值,表示使用者參與 (例如,按一下) 專案。 此案例涵蓋完整的端對端建議系統工作負載所需的步驟子集。 此案例的廣泛內容是以一般電子商務網站為基礎,前端可提供快速變更內容給使用者。 本網站使用 cookie 和使用者設定檔來個人化該使用者的內容。 除了使用者設定檔之外,網站可能會有每個使用者所提供之每個專案的相關資訊。 一旦該資料可供使用,就會執行下列步驟來建立並讓建議系統:

  1. 不同的使用者和專案資料集會經過前置處理和聯結,這會導致數位和類別功能的混合,以用於預測使用者專案互動 (按一下) 。 此資料表會上傳至Azure Blob 儲存體。 基於示範目的,會使用 Criteo 顯示廣告挑戰資料集 。 此資料集符合所述的匿名資料表,因為它包含用於觀察到的使用者點擊的二進位標籤、13個數值功能,以及另一個26個類別功能。
  2. MMLSpark程式庫可讓您在Azure Databricks上定型LightGBM分類器,以在上一個步驟中建立的數值和分類功能的函式預測點擊機率。 LightGBM 是高效率的機器學習演算法, MMLSpark 可針對大型資料集進行 LightGBM 模型的分散式訓練。
  3. 定型的分類器會序列化並儲存在 Azure 模型登錄中。 您可以使用 azure 模型登錄來儲存和組織不同版本的模型 (例如,根據較新的資料或 Azure Machine Learning (Azure ML) 工作區中的不同超參數) 。
  4. 服務腳本是使用 MML Spark 服務 程式庫所定義,以從定型的模型提供預測。
  5. Azure ML 是用來在Azure Container Registry中建立 Docker 映射,其中保存具有評分腳本的映射,以及提供預測的所有必要相依性。
  6. Azure ML 也用來布建計算以提供預測。 Kubernetes 叢集是使用 Azure Kubernetes Service (AKS) ,以及處理預期負載所需的節點數目來設定。 您可以根據模型的計算和記憶體需求來調整虛擬機器大小。
  7. 計分服務會部署為 AKS 叢集上的 web 服務。 服務會提供一個端點,其中使用者和專案功能可以傳送來接收該使用者和專案點擊的預測機率。

單元

此架構會使用下列元件:

  • Azure Blob 儲存體是針對儲存大量非結構化資料而優化的儲存體服務。 在此範例案例中,輸入資料會儲存在這裡。
  • Azure Databricks 是用於模型定型和評估的受控 Apache Spark 叢集。 此案例也會使用 MMLSpark,這是以 Spark 為基礎的架構,專為大規模機器學習所設計。
  • Azure Container Registry 用來將評分腳本封裝為容器映射,以用來在生產環境中提供模型。
  • Azure Kubernetes Service 用來將定型的模型部署到 web 或應用程式服務。
  • 此案例中會使用Azure Machine Learning來註冊機器學習模型,並部署 AKS。
  • Microsoft recommender 是開放原始碼存放庫,其中包含公用程式程式碼和範例。 使用此存放庫,使用者可以開始建立、評估和讓推薦系統。

考量

延展性

針對定型,您可以根據所使用的資料大小和模型定型所需的計算,來相應增加或減少 Azure Databricks 。 若要調整規模,您可以調整叢集可用的核心總數或記憶體數量。 您只需編輯 (Vm) 使用的 虛擬機器 數目或類型。 在此範例中,Criteo 資料集包含45800000個數據列;在具有10個標準 L8s vm 的叢集上,會有幾分鐘的時間進行定型。

針對部署,您可以根據評分服務的預期負載和延遲需求來調整計算資源。 評分服務會使用 [MML Spark] 服務,在 Kubernetes 叢集中的每個節點上分別執行。 利用這種作法,您可以順暢地將在 Azure Databricks 上開發的功能轉換和模型預測管線傳送到生產端。 它也不需要預先計算所有可能使用者和專案組合的分數,如果您使用動態使用者功能(例如一天的時間),可能會很困難。

可用性

機器學習工作分為兩個資源元件:用於定型的資源,以及用於生產部署的資源。 定型所需的資源通常不需要高可用性,因為即時生產要求不會直接叫用這些資源。 用於服務的資源需要具有高可用性,以便滿足客戶的要求。

Azure Databricks的訓練可能會在具有服務等級協定 (SLA) 的任何區域進行,以支援您的需求。 在生產環境部署中, Azure Kubernetes Service 是用來提供此 SLA的廣泛地理可用性。

安全性

此案例可以使用 Azure Active Directory (Azure AD) 向Azure Databricks工作區和Azure Kubernetes叢集驗證使用者。 您可以透過 Azure AD authentication 或以角色為基礎的存取控制來管理許可權。

部署此案例

必要條件

您必須具有現有的 Azure 帳戶。

逐步介紹

此案例的所有程式碼都可以在 Microsoft recommender 存放庫中取得。

若要在 Azure Databricks上執行用於定型和部署建議模型的筆記本:

  1. 從 Azure 入口網站建立 Azure Databricks 工作區
  2. 依照 安裝指示 ,在您工作區中的叢集上安裝 Microsoft recommender 存放庫中的公用程式。
    1. --mmlspark 安裝腳本中包含可安裝 MMLSpark 的選項。
    2. 此外, MMLSpark 需要在叢集設定中停用自動調整。
  3. 將定型筆記本匯入您的工作區。 登入您的 Azure Databricks 工作區之後:
    1. 選取工作區左側的 [ 首頁 ]。
    2. 在主目錄中以滑鼠右鍵按一下空白。
    3. 選取 [匯入]。
    4. 選取 [ URL],然後在文字欄位中貼上下列字串: https://aka.ms/recommenders/lgbm-criteo-training
    5. 選取 [匯入]。
  4. 在這裡針對運算化筆記本重複步驟3: https://aka.ms/recommenders/lgbm-criteo-o16n
  5. 選取筆記本以將其開啟、附加設定的叢集,然後執行筆記本。

定價

若要更深入瞭解在 Azure 上執行此案例的成本,請使用 azure 定價計算機。 良好的起點假設如下:

  • 定型資料的規模與 (45800000 個數據列) 所使用的範例資料集相同。
  • 每日需要定型以更新服務模型。
  • Azure Databricks使用使用 L8s 實例布建12個 vm 的叢集,來進行定型。
  • 定型將需要一小時的時間,包括功能處理和模型定型,以及驗證。
  • Azure Machine Learning將用來將模型部署至使用使用 D3 實例的小型三節點叢集進行 AKS。
  • AKS 叢集會視需要自動調整,因此平均每個月會使用兩個節點。

若要查看您的使用案例的價格有何不同,請變更變數以符合您預期的資料大小並提供負載需求。 針對較大或較小的定型資料大小,可分別增加或減少 Databricks 叢集的大小。 若要在模型服務期間處理大量的並行使用者,應該增加 AKS 叢集。 如需調整 AKS 以支援延遲和載入需求的詳細資訊,請參閱 運算化筆記本

後續步驟