Transformers4REC是一個靈活,有效的庫,用於基於順序和會話的建議,可以與Pytorch一起使用。
該圖書館通過與最受歡迎的NLP框架之一集成,擁抱Face Transformers(HF)之間的自然語言處理(NLP)和推薦系統(RECSY)之間的橋樑。 Transformers4Rec使最新的變壓器體系結構可用於Recsys研究人員和行業從業人員。
下圖顯示了在推薦系統中使用庫。輸入數據通常是一系列交互的序列,例如在Web會話中瀏覽的項目或放入購物車中的項目。該庫可幫助您處理和建模交互作用,以便您可以為下一個項目輸出更好的建議。

傳統的推薦算法通常忽略試圖建模用戶行為時的時間動態和交互的順序。通常,下一個用戶互動與用戶以前選擇的順序有關。在某些情況下,這可能是反复的購買或歌曲播放。用戶興趣也可能會遭受興趣漂移的影響,因為偏好會隨著時間而變化。這些挑戰是由順序推薦任務解決的。
順序啟用的特殊用例是基於會話的推薦任務,在該任務中,您只能訪問當前會話中的簡短交互順序。這在電子商務,新聞和媒體門戶等在線服務中非常普遍,由於GDPR合規性限制了收集cookie或用戶是該網站的新手,因此用戶可能會選擇匿名瀏覽。此任務也與用戶興趣隨時間變化的方案有關,具體取決於用戶上下文或意圖。在這種情況下,利用當前會話的交互比舊交互更有希望,以提供相關的建議。
為了處理基於順序和會話的建議,已經在機器學習和NLP研究中應用的許多序列學習算法已用於基於K-Nearest鄰居,頻繁的模式挖掘,隱藏的Markov模型,經常性的神經網絡以及最近使用自我注意力的神經結構的Recsys進行了探索,並使用自我關注機制和變形金剛結構進行了探索。與Transformers4REC不同,這些框架僅接受項目ID的序列作為輸入,並且不提供用於生產使用的模塊化,可擴展的實現。
Transformers4REC提供以下好處:
靈活性:Transformers4REC提供了可配置並與標準Pytorch模塊兼容的模塊化構件。這種建築塊設計使您可以創建具有多個塔,多個頭/任務和損失的自定義體系結構。
訪問HF變形金剛:由於擁抱面孔變壓器集成,可以使用64多個不同的變壓器體系結構來評估您的順序和基於會話的推薦任務。
支持多個輸入功能:HF變形金剛僅支持令牌ID作為輸入的序列,因為它最初是為NLP設計的。 Transformers4REC使您可以使用其他類型的順序表格數據作為HF變形金剛的輸入,因為Recsys數據集中有豐富的功能。 Transformers4REC使用模式來配置輸入功能,並自動創建必要的層,例如基於目標的嵌入表,投影層和輸出層,而無需更改代碼更改即可包括新功能。您可以以可配置的方式標準化並結合互動和序列級輸入功能。
無縫預處理和功能工程:作為Merlin生態系統的一部分,Transformers4REC與NVTABULAR和TRITON推理服務器集成在一起。這些組件使您能夠構建完全GPU加速的管道,以進行順序和基於會話的建議。 NVTABULAR具有基於會話建議的常見預處理操作,並導出數據集模式。該模式與Transformers4REC兼容,因此可以自動配置輸入功能。您可以在包括在線功能預處理和模型推理的單個管道中導出訓練有素的模型,以與Triton推理服務器一起使用。有關更多信息,請參閱NVIDIA MERLIN的端到端管道。

Transformers4REC最近贏得了兩項基於會話的推薦競賽:WSDM WebTour研討會挑戰2021(由Booking.com組織)和Sigir電子商務研討會數據挑戰2021(由COVEO組織)。該庫提供的基於會話建議的精度比基線算法更高,我們對準確性進行了廣泛的經驗分析。這些觀察結果發表在我們的ACM Recys'21論文中。
使用Transformers4REC訓練模型通常需要執行以下高級步驟:
提供模式並構建輸入模塊。
如果遇到基於會話的建議問題,則通常要使用表格序列圖類,因為它將上下文功能與順序功能合併。
提供預測任務。
我們的API文檔可以從開箱即用的任務。
構建變壓器並將其轉換為模型。
以下代碼示例顯示瞭如何使用pytorch定義和訓練XLNET模型,以完成下一項預測任務:
from transformers4rec import torch as tr
from transformers4rec . torch . ranking_metric import NDCGAt , RecallAt
# Create a schema or read one from disk: tr.Schema().from_json(SCHEMA_PATH).
schema : tr . Schema = tr . data . tabular_sequence_testing_data . schema
max_sequence_length , d_model = 20 , 64
# Define the input module to process the tabular input features.
input_module = tr . TabularSequenceFeatures . from_schema (
schema ,
max_sequence_length = max_sequence_length ,
continuous_projection = d_model ,
aggregation = "concat" ,
masking = "causal" ,
)
# Define a transformer-config like the XLNet architecture.
transformer_config = tr . XLNetConfig . build (
d_model = d_model , n_head = 4 , n_layer = 2 , total_seq_length = max_sequence_length
)
# Define the model block including: inputs, masking, projection and transformer block.
body = tr . SequentialBlock (
input_module ,
tr . MLPBlock ([ d_model ]),
tr . TransformerBlock ( transformer_config , masking = input_module . masking )
)
# Define the evaluation top-N metrics and the cut-offs
metrics = [ NDCGAt ( top_ks = [ 20 , 40 ], labels_onehot = True ),
RecallAt ( top_ks = [ 20 , 40 ], labels_onehot = True )]
# Define a head with NextItemPredictionTask.
head = tr . Head (
body ,
tr . NextItemPredictionTask ( weight_tying = True , metrics = metrics ),
inputs = input_module ,
)
# Get the end-to-end Model class.
model = tr . Model ( head )您可以修改前面的代碼以執行二進制分類。輸入模塊中的掩碼可以設置為
None代替causal。定義頭部時,可以用BinaryClassificationTask實例替換NextItemPredictionTask。請參閱類的API文檔中的示例代碼。
您可以使用PIP,CONDA或運行Docker容器安裝Transformers4REC。
您可以使用功能安裝Transformers4REC,以使用GPU加速Merlin DataLoader。強烈建議使用數據加載程序安裝,以提高性能。這些組件可以作為pip install命令的可選參數安裝。
要使用PIP安裝Transformers4Rec,請運行以下命令:
pip install transformers4rec[nvtabular] - >請注意,使用pip安裝Transformers4REC不會自動安裝Rapids CUDF。 - > gpu加速版本的nvtabular變換和merlin數據加載器所需的CUDF。
可以在此處提供有關使用PIP安裝CUDF的說明:https://docs.rapids.ai/install#pip-install
pip install cudf-cu11 dask-cudf-cu11 --extra-index-url=https://pypi.nvidia.com要使用Conda安裝Transformers4REC,請使用conda或mamba運行以下命令以創建一個新的環境。
mamba create -n transformers4rec-23.04 -c nvidia -c rapidsai -c pytorch -c conda-forge
transformers4rec=23.04 ` # NVIDIA Merlin `
nvtabular=23.04 ` # NVIDIA Merlin - Used in example notebooks `
python=3.10 ` # Compatible Python environment `
cudf=23.02 ` # RAPIDS cuDF - GPU accelerated DataFrame `
cudatoolkit=11.8 pytorch-cuda=11.8 ` # NVIDIA CUDA version ` Transformers4REC已預安裝在merlin-pytorch容器中,該容器可從NVIDIA GPU Cloud(NGC)目錄中獲得。
有關Merlin容器名稱,目錄中的容器圖像的URL以及Key Merlin組件,請參閱Merlin容器文檔頁面。
帶有NVIDIA MERLIN頁面的端到端管道顯示瞭如何使用Transformers4Rec和其他Merlin庫(如NVTabular)來構建完整的建議系統。
我們有幾個示例筆記本,可以幫助您構建推薦系統或將Transformers4REC集成到您的系統中:
如果您想直接為Transformers4REC做出貢獻,請參閱構造Transformers4Rec。我們對我們的功能工程和預處理操作的貢獻或功能請求特別感興趣。為了進一步推進我們的Merlin路線圖,我們鼓勵您通過訪問https://developer.nvidia.com/merlin-devzone-survey分享有關建議系統管道的所有詳細信息。
如果您有興趣了解有關Transformers4REC的工作方式的更多信息,請參閱我們的Transformers4Rec文檔。我們還擁有API文檔,概述了Transformers4REC中可用模塊和類的細節。