AI News HubLIVE
站內改寫2 分鐘閱讀

針對電商搜尋微調稀疏嵌入 | 第2部分:在Modal上訓練SPLADE

本文是五部分系列的第二部分,介紹瞭如何在Modal的無伺服器GPU上訓練SPLADE模型,使用Amazon ESCI資料集進行電商搜尋。文章涵蓋了資料載入、產品文本格式化、Modal應用設定、SPLADE模型建立、訓練函式、SpladeLoss理解、YAML配置、並行超引數搜尋以及避免的陷阱。目標是構建一個針對電商搜尋最佳化的稀疏嵌入模型。

來源Qdrant Blog作者: [email protected] (Andrey Vasnetsov)

本篇文章是五部分系列的第二部分,重點介紹如何在Modal的無伺服器GPU上訓練SPLADE模型,以最佳化電商搜尋。系列的前一篇文章解釋了為什麼稀疏嵌入優於BM25,而本文則聚焦於構建實際的訓練流程。所有原始碼均可在GitHub倉庫中找到,微調後的模型也可在HuggingFace上試用。

資料集:Amazon ESCI

我們使用Amazon的ESCI資料集(Shopping Queries Dataset),該資料集源自KDD Cup 2022,是電商搜尋領域最真實的基準之一。它包含超過120萬個查詢-產品對,並附有人工標註的相關性標籤,分為四個等級:精確匹配(Exact)、替代品(Substitute)、互補品(Complement)和不相關(Irrelevant)。訓練時,我們將精確匹配和替代品作為正樣本,使模型學會識別相關產品和合理替代品。

產品文本格式化

產品文本的格式化方式對稀疏嵌入至關重要。與捕捉廣泛語義的密集模型不同,SPLADE基於詞彙訊號:文本中的具體標記決定了啟用的詞彙維度。文章建議使用方括號標註品牌、管道符分隔不同部分,並設定字元限制,以保持品牌名稱、產品屬性和關鍵特徵的詞彙訊號清晰可辨。

設定Modal應用

Modal提供無伺服器GPU,無需預配硬體,按秒計費。配置中關鍵的兩點是持久化卷和分離執行。持久化卷確保訓練檢查點不會因連線斷開而丟失;分離執行允許長時間訓練任務在後臺進行。

建立SPLADE模型

使用Sentence Transformers v5中的SparseEncoder可以輕鬆實現SPLADE訓練。該模型由兩部分組成:MLMTransformer(輸出詞彙表上的logits)和SpladePooling(對標記級logits進行最大池化,並應用ReLU和對數飽和)。文章選擇從DistilBERT而非預訓練SPLADE檢查點開始,以衡量領域特定微調的實際效果。

訓練函式與SpladeLoss

核心訓練邏輯包含SpladeLoss,它結合了兩個目標:對比損失(SparseMultipleNegativesRankingLoss)和稀疏正則化。對比損失將批次內的其他產品作為負樣本,將相關查詢-產品對拉近,不相關對推遠。稀疏正則化則懲罰密集輸出,以保持檢索效率。正則化權重控制稀疏程度:查詢正則化權重設為5e-5,文件正則化權重設為3e-5,以在速度和召回率間取得平衡。

配置與並行超引數搜尋

超引數透過YAML檔案管理,便於實驗。在Modal上,可以使用spawn()並行啟動多個實驗,每個實驗分配一個A100 GPU。例如,24個實驗的並行搜尋可在單個訓練執行時間內完成。

應避免的陷阱:無推斷的SPLADE

文章警告不要試圖用靜態嵌入替換查詢側的Transformer以節省延遲。實驗表明,靜態嵌入在電商搜尋中表現極差(nDCG@10僅為0.065,而標準SPLADE為0.389),因為它無法處理上下文相關的查詢(如“蘋果”在“蘋果手機”與“蘋果水果”中的不同含義)。Transformer雖然每查詢耗時約15毫秒,但對搜尋而言完全可以接受。

執行訓練

可透過Modal命令啟動訓練,支援快速測試和完整資料集分離執行。檢查點儲存到持久化卷中,模型已釋出在HuggingFace上供直接使用。下一篇文章將載入該模型,將產品索引到Qdrant,並進行檢索基準測試,評估相對於BM25的提升。

關鍵要點

  • ESCI的分級相關性標籤使模型學習細微匹配,而非二元相關。
  • 產品文本格式化對稀疏模型至關重要,結構化格式可保持詞彙訊號。
  • SpladeLoss平衡對比學習和稀疏正則化,正則化權重是主要調優引數。
  • Modal的持久化卷和分離執行解決了檢查點管理問題。
  • 不要跳過查詢Transformer,其15毫秒延遲換來了6倍的質量提升。