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中可用模块和类的细节。