推薦系統(tǒng)可以幫助您發(fā)現(xiàn)新產(chǎn)品并做出明智的決策。然而,在許多依賴于推薦的領(lǐng)域,如電子商務(wù)、新聞和流媒體服務(wù),用戶可能無法跟蹤,或者根據(jù)當(dāng)時的需求,用戶的口味可能會迅速變化。
基于會話的推薦系統(tǒng)是順序推薦的一個子領(lǐng)域,最近很受歡迎,因為它們可以在任何給定的時間點根據(jù)用戶的情況和偏好推薦項目。在這些領(lǐng)域中,捕捉用戶對項目的短期或上下文偏好很有幫助。
在本文中,我們將介紹基于會話的推薦任務(wù),該任務(wù)由 NVIDIA Merlin 平臺的 Transformers4Rec 庫支持。然后,我們展示了使用 Transformers4Rec 在幾行代碼中創(chuàng)建基于會話的推薦模型是多么容易,最后,我們展示了使用 NVIDIA Merlin 庫的端到端基于會話的推薦管道。
Transformers4Rec 庫功能
NVIDIA Merlin 團(tuán)隊于 ACM RecSys’21 發(fā)布,通過利用最先進(jìn)的 Transformers 體系結(jié)構(gòu),為順序和基于會話的推薦任務(wù)設(shè)計并公開了 NVIDIA Merlin Transformers4Rec 庫。該庫可由研究人員擴(kuò)展,對從業(yè)者來說很簡單,在工業(yè)部署中又快速又可靠。
它利用了 擁抱面( HF )變壓器 庫中的 SOTA NLP 體系結(jié)構(gòu),可以在 RecSys 域中快速試驗許多不同的 transformer 體系結(jié)構(gòu)和預(yù)訓(xùn)練方法。
Transformers4Rec 還幫助數(shù)據(jù)科學(xué)家、行業(yè)從業(yè)者和院士構(gòu)建推薦系統(tǒng),該系統(tǒng)可以利用同一會話中過去用戶交互的短序列,然后動態(tài)建議用戶可能感興趣的下一個項目。
以下是 Transformers4Rec 庫的一些亮點:
靈活性和效率: 構(gòu)建塊模塊化,與 vanilla PyTorc h 模塊和 TF Keras 層兼容。您可以創(chuàng)建自定義體系結(jié)構(gòu),例如,使用多個塔、多個頭/任務(wù)和損耗。 Transformers4Rec 支持多個輸入功能,并提供可配置的構(gòu)建塊,這些構(gòu)建塊可以輕松組合用于定制體系結(jié)構(gòu)。
與集成 HuggingFace Transformers : 使用最前沿的 NLP 研究,并為 RecSys 社區(qū)提供最先進(jìn)的 transformer 體系結(jié)構(gòu),用于順序和基于會話的推薦任務(wù)。
支持多種輸入功能: Transformers4Rec 支持使用任何類型的順序表格數(shù)據(jù)的高頻變壓器。
與無縫集成 NVTabular 用于預(yù)處理和特征工程。
Production-ready: 導(dǎo)出經(jīng)過培訓(xùn)的模型以用于 NVIDIA Triton 推理服務(wù)器 在單個管道中進(jìn)行在線特征預(yù)處理和模型推理。
開發(fā)您自己的基于會話的推薦模型
只需幾行代碼,就可以基于 SOTA transformer 體系結(jié)構(gòu)構(gòu)建基于會話的模型。下面的示例顯示了如何將強大的 XLNet transformer 體系結(jié)構(gòu)用于下一個項目預(yù)測任務(wù)。
正如您可能注意到的,使用 PyTorch 和 TensorFlow 構(gòu)建基于會話的模型的代碼非常相似,只有幾個不同之處。下面的代碼示例使用 Transformers4Rec API 使用 PyTorch 和 TensorFlow 構(gòu)建基于 XLNET 的推薦模型:
#from transformers4rec import torch as tr from transformers4rec import tf as tr from merlin_standard_lib import Schema schema = Schema().from_proto_text("") max_sequence_length, d_model = 20, 320 # Define input module to process tabular input-features and to prepare masked inputs input_module = tr.TabularSequenceFeatures.from_schema( schema, max_sequence_length=max_sequence_length, continuous_projection=64, aggregation="concat", d_output=d_model, masking="clm", ) # Define Next item prediction-task prediction_task = tr.NextItemPredictionTask(hf_format=True,weight_tying=True) # Define the config of the XLNet architecture transformer_config = tr.XLNetConfig.build( d_model=d_model, n_head=8, n_layer=2,total_seq_length=max_sequence_length ) # Get the PyT model model = transformer_config.to_torch_model(input_module, prediction_task) # Get the TF model #model = transformer_config.to_tf_model(input_module, prediction_task)
為了證明該庫的實用性和 transformer 體系結(jié)構(gòu)在用戶會話的下一次點擊預(yù)測中的適用性, NVIDIA Merlin 團(tuán)隊使用 Transformers4Rec 贏得了兩次基于會話的推薦比賽:
2021 WSDM WebTour 研討會挑戰(zhàn)賽 通過預(yù)訂。 com ( NVIDIA solution )
Coveo 2021 SIGIR 電子商務(wù)研討會數(shù)據(jù)挑戰(zhàn)賽 ( NVIDIA solution )
使用 NVIDIA Merlin 構(gòu)建端到端、基于會話的推薦管道的步驟
圖 3 顯示了使用 NVIDIA Merlin Transformers4Rec 的基于會話的推薦管道的端到端管道。
圖 3 :基于端到端會話的推薦管道
NVTabular 是一個用于表格數(shù)據(jù)的功能工程和預(yù)處理庫,旨在快速、輕松地操作用于培訓(xùn)大規(guī)模推薦系統(tǒng)的 TB 級數(shù)據(jù)集。它提供了一個高級抽象,以簡化代碼,并使用 RAPIDS cuDF library。
NVTabular 支持深度學(xué)習(xí) (DL) 模型所需的不同特征工程轉(zhuǎn)換,例如分類編碼和數(shù)值特征歸一化。它還支持特征工程和生成順序特征。有關(guān)支持的功能的更多信息,請參見此處。
在下面的代碼示例中,您可以很容易地看到如何創(chuàng)建一個 NVTabular 預(yù)處理工作流,以便在會話級別對交互進(jìn)行分組,并按時間對交互進(jìn)行排序。最后,您將獲得一個已處理的數(shù)據(jù)集,其中每一行表示一個用戶會話以及該會話的相應(yīng)順序特征。
import nvtabular as nvt # Define Groupby Operator features = ['session_id', 'item_id', 'timestamp', 'category'] groupby_features = features >> nvt.ops.Groupby( groupby_cols=["session_id"], sort_cols=["timestamp"], aggs={ 'item_id': ["list", "count"], 'category': ["list"], 'timestamp': ["first"], }, name_sep="-") # create dataset object dataset = nvt.Dataset(interactions_df) workflow = nvt.Workflow(groupby_features) # Apply the preprocessing workflow on the dataset sessions_gdf = workflow.transform(dataset).compute()
使用 Triton 推理服務(wù)器 簡化人工智能模型在生產(chǎn)中的大規(guī)模部署。 Triton 推理服務(wù)器使您能夠部署和服務(wù)您的模型進(jìn)行推理。它支持許多不同的機器學(xué)習(xí)框架,例如 TensorFlow 和 Pytork 。
機器學(xué)習(xí)( ML )管道的最后一步是將 ETL 工作流和經(jīng)過訓(xùn)練的模型部署到產(chǎn)品中進(jìn)行推理。在生產(chǎn)設(shè)置中,您希望像在培訓(xùn)( ETL )期間那樣轉(zhuǎn)換輸入數(shù)據(jù)。例如,在使用 ML / DL 模型進(jìn)行預(yù)測之前,應(yīng)該對連續(xù)特征使用相同的規(guī)范化統(tǒng)計信息,并使用相同的映射將類別編碼為連續(xù) ID 。
幸運的是, NVIDIA Merlin 框架有一個集成機制,可以將預(yù)處理工作流(用 NVTABLAR 建模)和 PyTorch 或 TensorFlow 模型作為 NVIDIA Triton 推理的集成模型進(jìn)行部署。集成模型保證對原始輸入應(yīng)用相同的轉(zhuǎn)換。
下面的代碼示例展示了使用 NVIDIA Merlin 推理 API 函數(shù)創(chuàng)建集成配置文件,然后將模型提供給 TIS 是多么容易。
import tritonhttpclient import nvtabular as nvt workflow = nvt.Workflow.load("") from nvtabular.inference.triton import export_tensorflow_ensemble as export_ensemble #from nvtabular.inference.triton import export_pytorch_ensemble as export_ensemble export_ensemble( model, workflow, name=" ", model_path=" ", label_columns=["
只需幾行代碼,就可以為 NVIDIA PyTorch 推理服務(wù)器提供 NVTabular 工作流、經(jīng)過培訓(xùn)的 Triton 或 TensorFlow 模型以及集成模型,以便執(zhí)行端到端的模型部署。 使用 NVIDIA Merlin 推理 API ,您可以將原始數(shù)據(jù)集作為請求(查詢)發(fā)送到服務(wù)器,然后從服務(wù)器獲取預(yù)測結(jié)果。
本質(zhì)上, NVIDIA Merlin 推理 API 使用 NVIDIA Triton ensembling 特性創(chuàng)建模型管道。 NVIDIA Triton ensemble 表示一個或多個模型的管道以及這些模型之間輸入和輸出張量的連接。
結(jié)論
在這篇文章中,我們向您介紹了 NVIDIA Merlin Transformers4Rec ,這是一個用于順序和基于會話的推薦任務(wù)的庫,它與 NVIDIA NVTabular 和 NVIDIA Triton 推理服務(wù)器無縫集成,為此類任務(wù)構(gòu)建端到端的 ML 管道。
關(guān)于作者
Ronay Ak 是 NVIDIA RAPIDS 團(tuán)隊的數(shù)據(jù)科學(xué)家。
GabrielMoreira 是 NVIDIA ( NVIDIA ) Merlin 團(tuán)隊的高級研究員,致力于推薦系統(tǒng)的深度學(xué)習(xí),這是他的博士學(xué)位的重點。他曾擔(dān)任首席數(shù)據(jù)科學(xué)家和軟件工程師多年。
審核編輯:郭婷
-
NVIDIA
+關(guān)注
關(guān)注
14文章
5304瀏覽量
106329 -
API
+關(guān)注
關(guān)注
2文章
1605瀏覽量
63994
發(fā)布評論請先 登錄
NVIDIA AI技術(shù)助力歐洲醫(yī)療健康行業(yè)發(fā)展
自己寫庫:構(gòu)建庫函數(shù)雛形

借助NVIDIA技術(shù)加速半導(dǎo)體芯片制造
NVIDIA推出NVLink Fusion技術(shù)
利用NVIDIA技術(shù)構(gòu)建從數(shù)據(jù)中心到邊緣的智慧醫(yī)院解決方案
ServiceNow攜手NVIDIA構(gòu)建150億參數(shù)超級助手
企業(yè)使用NVIDIA NeMo微服務(wù)構(gòu)建AI智能體平臺
ZXUN xGW會話數(shù)不均衡的故障分析

MCUXpresso_24.12.148/FRDM-K22F調(diào)試會話啟動速度非常慢,怎么解決?
如何使用flex-builder構(gòu)建aruco庫?
NVIDIA Omniverse Kit 107的安裝部署步驟

HarmonyOS NEXT 原生應(yīng)用/元服務(wù)-DevEco Profiler會話區(qū)
簡述NVIDIA Isaac的重要更新

使用NVIDIA JetPack 6.0和YOLOv8構(gòu)建智能交通應(yīng)用

評論