共用方式為


將推薦模型定型

本文包含 Azure Databricks 上以深度學習為基礎的建議模型的兩個範例。 相較於傳統建議模型,深度學習模型可以達到更高的質量結果,並調整為較大的數據量。 隨著這些模型持續演進,Databricks 提供了一個架構,可有效定型能夠處理數億使用者的大型建議模型。

一般建議系統可以視為漏鬥圖中顯示的階段。

推薦系統架構圖表

某些模型,如雙塔模型,執行更好的擷取模型。 這些模型較小,而且可在數百萬個數據點上有效運作。 其他模型,例如 DLRM 或 DeepFM,在重新調整模型時表現更好。 這些模型可以擷取更多數據、更大,而且可以提供更細緻的建議。

需求

Databricks Runtime 14.3 LTS ML

工具

本文中的範例說明下列工具:

  • TorchDistributor:TorchDistributor 是一種架構,可讓您在 Databricks 上執行大規模的 PyTorch 模型定型。 它會使用Spark來進行協調流程,並可調整為叢集中可用的 GPU 數目。
  • 馬賽克 StreamingDataset:StreamingDataset 使用預先擷取和交錯等功能,改善 Databricks 上大型數據集訓練的效能和延展性。
  • MLflow:Mlflow 可讓您追蹤參數、計量和模型檢查點。
  • TorchRec:新式推薦系統使用內嵌查閱表格來處理數百萬用戶和專案,以產生高質量的建議。 較大的內嵌大小可改善模型效能,但需要大量的 GPU 記憶體和多重 GPU 設定。 TorchRec 提供一個架構,可跨多個 GPU 調整建議模型和查閱表格,使其非常適合大型內嵌。

範例:使用雙塔模型架構的電影建議

雙塔模型的設計目的是在合併使用者和項目數據之前分別處理使用者和項目數據,以處理大規模的個人化工作。 它能夠有效率地產生數十或數千個體面的質量建議。 模型通常預期有三個輸入:user_id功能、product_id功能,以及二元標籤,定義使用者、產品互動是 <正面的(使用者購買產品)還是負數(使用者給予產品> 一星評等)。 模型的輸出會針對使用者和專案進行內嵌,然後通常會結合這些輸出來預測用戶項目互動(通常使用點乘積或餘弦相似度)。

當雙塔模型同時為使用者和產品提供內嵌時,您可以將這些內嵌放在向量資料庫中,例如 Databricks 向量存放區,並在使用者和專案上執行類似相似搜尋的作業。 例如,您可以將所有專案放在向量存放區中,並針對每個使用者查詢向量存放區,以尋找內嵌專案與用戶類似的前百個專案。

下列範例筆記本會使用「從專案集學習」數據集來實作雙塔模型定型,以預測使用者高度評分的可能性。 它會使用馬賽克 StreamingDataset 來載入分散式數據、將 TorchDistributor 用於分散式模型定型,以及用於模型追蹤和記錄的 Mlflow。

雙塔推薦模型筆記本

取得筆記本

此筆記本也可在 Databricks Marketplace 中取得: 雙塔模型筆記本

注意

  • 雙塔模型的輸入通常是類別特徵user_id和product_id。 您可以修改模型以支援使用者和產品的多個特徵向量。
  • 雙塔模型的輸出通常是二進位值,指出使用者是否會與產品產生正面或負面互動。 您可以針對其他應用程式修改模型,例如回歸、多類別分類,以及多個使用者動作的機率(例如關閉或購買)。 應謹慎實作複雜的輸出,因為競爭目標可能會降低模型所產生的內嵌品質。

範例:使用綜合數據集定型 DLRM 架構

DLRM 是專為個人化與建議系統而設計的最先進的類神經網路架構。 它會結合類別和數值輸入,以有效地建立用戶項目互動的模型,並預測用戶喜好設定。 DLRM 通常預期輸入包含疏鬆功能(例如使用者標識碼、專案標識碼、地理位置或產品類別)和密集功能(例如使用者年齡或項目價格)。 DLRM 的輸出通常是用戶參與的預測,例如點擊率或購買可能性。

DLRMs 提供可高度自定義的架構,可處理大規模數據,使其適用於各種網域的複雜建議工作。 因為它是比雙塔架構更大的模型,所以此模型通常用於重新調整階段。

下列範例筆記本會建置 DLRM 模型,以使用密集(數值)特徵和疏鬆(類別)特徵來預測二進位卷標。 它會使用綜合數據集來定型模型、用於分散式數據載入的馬賽克 StreamingDataset、Distributed 模型定型的 TorchDistributor,以及用於模型追蹤和記錄的 Mlflow。

DLRM 筆記本

取得筆記本

此筆記本也可在 Databricks Marketplace 中取得: DLRM 筆記本

雙塔和 DLRM 模型的比較

下表顯示選取要使用的推薦模型一些指導方針。

模型類型 定型所需的數據集大小 模型大小 支援的輸入類型 支援的輸出類型 使用案例
雙塔 變小 變小 通常有兩個特徵(user_id,product_id) 主要二元分類和內嵌產生 產生數百或數千個可能的建議
DLRM 各種類別和密集特徵(user_id、性別、geographic_location、product_id、product_category...) 多類別分類、回歸、其他分類 精細擷取(推薦數十項高度相關專案)

總而言之,雙塔模型最適合用於產生成千上萬的高質量建議。 例如,來自纜線提供者的電影建議。 DLRM 模型最適合用來根據更多數據產生非常特定的建議。 例如,想要向客戶展示他們極有可能購買的少量專案,例如零售商。