天天看點

Pytorch 推出“TorchRec”:用于推薦系統 (RecSys) 的基于 Python 的 PyTorch 庫

Pytorch 推出“TorchRec”:用于推薦系統 (RecSys) 的基于 Python 的 PyTorch 庫

推薦系統 (RecSys) 是當今生産就緒型 AI 的重要組成部分,盡管您看一下 Github 不會知道它。與 Vision 和 NLP 等領域相比,RecSys 的大部分持續發現和開發都是在閉門造車的情況下進行的。對于探索這些方法或建立個性化使用者體驗的學術研究人員來說,該領域遠未實作民主化。

RecSys 作為一個領域也是通過稀疏和/或順序事件的學習模型定義的,這與其他 AI 領域有很多重疊。許多方法尤其是那些用于可擴充性和分布式執行的方法都是可移植的。RecSys 方法在全球人工智能投資中占很大比例;是以将它們封閉起來可以防止這筆錢進入更大的人工智能領域。

TorchRec是推薦系統的新 PyTorch 域庫。該庫包括标準的稀疏性和并行性原語,允許研究人員建立和實施尖端的定制模型。

到 2020 年年中,PyTorch 團隊收到了很多關于開源 PyTorch 生态系統缺乏大規模生産品質推薦系統包的回報。在尋找解決方案時,Meta 開發人員将 Meta 的生産 RecSys 堆棧作為 PyTorch 域庫提供,并堅定地緻力于圍繞它建構生态系統。這使整個 RecSys 領域的研究人員和公司受益。Meta 的堆棧子產品化并設計了一個完全可擴充的代碼庫,适用于各種推薦用例。

目标是從 Meta 的軟體堆棧中提取必要的建構元素,以同時實作創造性實驗和增長。

TorchRec 帶有可擴充的低級模組化基礎和幾個電池供電的子產品。它從“雙塔”([1],[2])架構開始,它具有不同的子子產品,用于學習候選項目表示和查詢或上下文。輸入信号可以是浮點“密集”特征和高基數分類“稀疏”特征的組合,需要訓練大量嵌入表。資料并行性(重複計算的“密集”元件)和模型并行性(将巨大的嵌入表分布在多個節點上)是此類系統的有效訓練所必需的。

  • 諸如嵌入袋和鋸齒狀張量之類的模組化原語使建立具有混合資料和模型并行性的大規模、高性能的多裝置/多節點模型變得簡單。
  • RecSys 核心具有 FBGEMM 優化,包括對稀疏和量化操作的支援。
  • 分片器可以使用多種技術對嵌入表進行分片,包括資料并行、逐表、逐行、逐表行和逐列。
  • 模型分片計劃器可以自動為模型建構最佳分片計劃。
  • 流水線通過重疊資料加載裝置傳輸(複制到 GPU)、裝置間通信(輸入 dist)和計算(前向、後向)來提高速度。

性能擴充

TorchRec 具有适用于規模化 Recommendations AI 的尖端架構,它為 Meta 的一些最複雜的模型提供支援。它被用來訓練一個 1.25 萬億參數的模型,該模型在 1 月份上線,一個 3 萬億參數的模型即将上線。這應該表明 PyTorch 可以解決業界最複雜的 RecSys 挑戰。社群中的許多人告訴我們,分片嵌入很麻煩。TorchRec 在解決這個問題上做得很好。

不幸的是,使用公共資料集提供大規模基準是有問題的,因為大多數開源标準太小而無法大規模展示性能。

開源和開放技術的優勢是多方面的。Meta 正在向 PyTorch 社群提供最先進的 RecSys 包,希望許多人能夠為其開發做出貢獻,允許進行新的研究并協助衆多企業。

Github:

https://github.com/pytorch/torchrec

參考:

https://pytorch.org/blog/introducing-torchrec/