共用方式為


訓練推薦系統模型

本文包含兩個 Azure Databricks 上深度學習型的建議程式模型範例。 與舊版建議程式模型相比,深度學習模型可以達到更高品質的結果,並可擴展至更大的資料量。 隨著這些模型持續演進,Databricks 提供了一個架構,可有效訓練能夠處理數億使用者的大型建議模型。

一般建議系統可視為一個漏斗,其階段如圖所示。

建議程式系統結構圖表

某些模型,如雙塔模型,在檢索任務中表現更佳。 這些模型較小,而且可在數百萬個資料點上有效作業。 其他模型,例如 DLRM 或 DeepFM,在重新排名模型時表現更好。 這些模型可以接收更多資料、規模較大,並且可以提供精細度的建議。

需求

Databricks 執行環境 14.3 LTS ML

工具

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

  • TorchDistributor:TorchDistributor 是一個架構,可讓您在 Databricks 上執行大規模 PyTorch 模型訓練。 此架構使用 Spark 進行協調流程,並可擴展至您叢集中可用的 GPU 數量。
  • Mosaic StreamingDataset:StreamingDataset 使用預先擷取和交錯等功能,改善在 Databricks 上大型資料集訓練的效能和可擴縮性。
  • MLflow:MLflow 可讓您追蹤參數、指標和模型檢查點。
  • TorchRec:新式推薦系統使用內嵌查閱表格來處理數百萬個使用者和專案,以產生高品質的建議。 較大的內嵌大小可提升模型效能,但需要大量的 GPU 記憶體和多 GPU 設定。 TorchRec 提供一個架構,可跨多個 GPU 擴展推薦模型和查找表,非常適合大型嵌入。

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

雙塔模型是專為處理大規模的個人化工作而設計,先分別處理使用者和項目資料,然後再將其合併。 此模型能夠有效率地產生數百或數千個品質優良的建議。 該模型通常需要三個輸入:user_id 特徵、product_id 特徵,以及定義<使用者與產品>互動是正面 (使用者購買產品) 還是負面 (使用者給予產品一星級評等) 的二進位標籤。 該模型的輸出是使用者和項目的嵌入向量,然後一般會將其合併 (通常使用內積或餘弦相似性) 來預測使用者-項目互動。

由於雙塔模型提供使用者和產品的內嵌,您可以將這些內嵌放在向量索引中,例如 馬賽克 AI 向量搜尋,並在使用者和專案上執行類似相似搜尋的作業。 例如,您可以將所有專案放在向量存放區中,並針對每個使用者查詢向量存放區,以尋找內嵌專案與用戶類似的前百個專案。

以下的筆記本範例使用「從項目集學習」資料集實作雙塔模型訓練,以預測使用者對某部電影給予高評分的可能性。 它使用 Mosaic StreamingDataset 進行分散式資料載入,使用 TorchDistributor 進行分散式模型訓練,並使用 MLflow 進行模型追蹤和記錄。

雙塔推薦系統模型筆記

取得筆記本

此筆記本也可在 Databricks 市集購買:雙塔模型筆記本

注意

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

範例:使用合成資料集訓練 DLRM 結構

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

DLRM 提供高度可自訂的架構,可以處理大規模的資料,因此適用於各種網域的複雜建議工作。 由於此架構是一個比雙塔結構更大的模型,因此此模型通常用於重新排名階段。

下列的筆記本範例組建了一個 DLRM 模型,使用密集 (數值) 特徵和稀疏 (類別) 特徵來預測二進位標籤。 它使用合成資料集來訓練模型,使用 Mosaic StreamingDataset 進行分散式資料載入,使用 TorchDistributor 進行分散式模型訓練,並使用 MLflow 進行模型追蹤和記錄。

DLRM 筆記本

取得筆記本

此筆記本也可在 Databricks 市集購買:DLRM 筆記本

範例:在無伺服器 GPU 運算上使用 LLM-foundry 微調嵌入模型

嵌入模型是現代推薦系統中關鍵的組成部分,特別是在檢索階段,能有效搜尋數百萬個項目的相似性。 雖然雙塔模型產生任務專屬嵌入,但預訓練嵌入模型可針對特定領域應用進行微調,以提升檢索品質。

以下範例筆記本示範如何利用對比學習,在無伺服器 GPU 運算(SGC)上微調 BERT 式嵌入模型。 它使用 llm-foundry 框架結合 Composer 的訓練器,來微調像 gte-large-en-v1.5 這樣的模型,並處理儲存在 Delta 表格中的資料。 本範例使用 Mosaic Streaming 將資料轉換為 Mosaic Data Shard(MDS)格式,用於分散式資料載入,並使用 MLflow 進行模型追蹤與記錄。

微調嵌入模型筆記本

取得筆記本

注意

  • 嵌入模型期望資料具有 query_textpositive_passage 欄位,而 negative_passages 欄位是可選的。
  • 這些微調後的嵌入可用於向量儲存庫中進行相似性搜尋操作,從而有效檢索相關項目以供推薦系統使用。
  • 這種方法在需要將通用嵌入模型調整到特定領域或使用情境時特別有用。

雙塔和 DLRM 模型的比較

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

模型類型 訓練所需的資料集大小 模型大小 支援的輸入類型 支援的輸出類型 使用案例
雙塔 變小 變小 通常是兩個特徵 (user_id、product_id) 主要是二元分類和嵌入生成 產生數百或數千個可能的建議
DLRM 較大 較大 各種類別和密集特徵 (user_id、性別、地理位置、product_id、product_category、…) 多類分類、迴歸、其他 精細擷取 (推薦數十個高度相關的項目)

總而言之,雙塔模型最適合用於非常有效率地產生數以千計的高品質建議。 例如,有線電視供應商提供的電影建議。 DLRM 模型最適合用於根據更多資料產生非常特定的建議。 舉例來說,零售商希望向客戶提供他們極有可能購買的少量商品。