Transformers4Rec هي مكتبة مرنة وفعالة للتوصية المتسلسلة والقائمة على الجلسة ويمكن أن تعمل مع Pytorch.
تعمل المكتبة كجسر بين معالجة اللغة الطبيعية (NLP) وأنظمة التوصية (RECSYS) من خلال الاندماج مع واحدة من أطر NLP الأكثر شعبية ، محولات الوجه المعانقة (HF). تتيح Transformers4Rec هيكل المحولات الحديثة المتاحة للباحثين وممارسي الصناعة.
يوضح الشكل التالي استخدام المكتبة في نظام التوصية. عادةً ما تكون بيانات الإدخال سلسلة من التفاعلات مثل العناصر التي يتم تصفحها في جلسة ويب أو عناصر موضوعة في عربة. تساعدك المكتبة على معالجة التفاعلات وصممها حتى تتمكن من إخراج توصيات أفضل للعنصر التالي.

عادة ما تتجاهل خوارزميات التوصية التقليدية الديناميات الزمنية وتسلسل التفاعلات عند محاولة نمذجة سلوك المستخدم. بشكل عام ، يرتبط تفاعل المستخدم التالي بتسلسل الخيارات السابقة للمستخدم. في بعض الحالات ، قد يكون ذلك عملية شراء أو تشغيل متكرر. يمكن أن تعاني اهتمامات المستخدم أيضًا من انجراف الفائدة لأن التفضيلات يمكن أن تتغير مع مرور الوقت. تتم معالجة هذه التحديات من خلال مهمة التوصية المتسلسلة .
حالة الاستخدام الخاص للتوصية المتسلسلة هي مهمة التوصية القائمة على الجلسة حيث يمكنك فقط الوصول إلى التسلسل القصيرة للتفاعلات في الجلسة الحالية. هذا أمر شائع جدًا في الخدمات عبر الإنترنت مثل التجارة الإلكترونية والأخبار والوسائط حيث قد يختار المستخدم تصفح مجهول الهوية بسبب امتثال الناتج المحلي الإجمالي الذي يقيد جمع ملفات تعريف الارتباط أو لأن المستخدم جديد في الموقع. هذه المهمة ذات صلة أيضًا بالسيناريوهات التي تتغير فيها اهتمامات المستخدمين كثيرًا بمرور الوقت اعتمادًا على سياق المستخدم أو النية. في هذه الحالة ، يعد الاستفادة من التفاعلات في الجلسة الحالية أكثر واعدة من التفاعلات القديمة لتوفير التوصيات ذات الصلة.
للتعامل مع التوصية المتسلسلة والقائمة على الجلسة ، تم استكشاف العديد من خوارزميات التعلم المتسلسل المطبقة سابقًا في التعلم الآلي وأبحاث NLP لـ RECSYS على أساس جيران K-Nearest ، والتعدين المتكرر للأنماط ، ونماذج Markov المخفية ، والشبكات العصبية المتكررة ، وأكثر من المعبدات العصبية مؤخرًا باستخدام آلية التحويل الذاتية. على عكس Transformers4Rec ، تقبل هذه الأطر فقط تسلسل معرفات العناصر كمدخلات ولا توفر تطبيقًا معياريًا قابل للتطوير لاستخدام الإنتاج.
يقدم Transformers4Rec الفوائد التالية:
المرونة : توفر Transformers4Rec لبنات بناء معيارية قابلة للتكوين ومتوافقة مع وحدات Pytorch القياسية. يمكّنك تصميم كتلة المباني هذا من إنشاء بنيات مخصصة بأبراج متعددة ورؤوس/مهام متعددة وخسائر.
الوصول إلى محولات HF : يمكن استخدام أكثر من 64 من هياكل المحولات المختلفة لتقييم مهمة التوصية المتسلسلة والقائمة على الجلسة نتيجة لتكامل محولات الوجه المعانقة.
دعم لميزات الإدخال المتعددة : تدعم محولات HF فقط تسلسل معرفات الرمز المميز كمدخل لأنه تم تصميمه في الأصل لـ NLP. يمكّنك Transformers4Rec من استخدام أنواع أخرى من البيانات الجدولية المتسلسلة كمدخلات مع محولات HF نظرًا للميزات الغنية المتوفرة في مجموعات بيانات Recsys. يستخدم Transformers4Rec مخططًا لتكوين ميزات الإدخال وإنشاء الطبقات الضرورية تلقائيًا ، مثل تضمين الجداول وطبقات الإسقاط وطبقات الإخراج بناءً على الهدف دون الحاجة إلى تغييرات رمز لتضمين ميزات جديدة. يمكنك تطبيع ودمج ميزات الإدخال على مستوى التفاعل وتجمعها بطرق قابلة للتكوين.
المعالجة المسبقة السلس وهندسة الميزات : كجزء من نظام Merlin البيئي ، تم دمج Transformers4Rec مع خادم الاستدلال nvtabular و triton. تمكنك هذه المكونات من إنشاء خط أنابيب مُسرِّب GPU بالكامل للتوصية المتسلسلة والقائمة على الجلسة. لدى NVTAbular عمليات ما قبل المعالجة المشتركة للتوصية القائمة على الجلسة وتصدير مخطط مجموعة البيانات. يتوافق المخطط مع Transformers4Rec بحيث يمكن تكوين ميزات الإدخال تلقائيًا. يمكنك تصدير النماذج المدربة الخاصة بك للخدمة مع خادم Triton Interference في خط أنابيب واحد يتضمن معالجة مسبقة على الإنترنت واستدلال النموذج. لمزيد من المعلومات ، راجع خط الأنابيب الشامل مع Nvidia Merlin.

فاز Transformers4Rec مؤخرًا مسابقتين توصيتين على أساس الجلسة: WSDM WebTour Workshop Challenge 2021 (التي تم تنظيمها بواسطة Booking.com) وتحدي بيانات Workshop Sigir للتجارة الإلكترونية 2021 (تنظمها Coveo). توفر المكتبة دقة أعلى للتوصية القائمة على الجلسة من الخوارزميات الأساسية وأجرنا تحليلًا تجريبيًا واسع النطاق حول الدقة. يتم نشر هذه الملاحظات في ورقة ACM Recsys'21.
يتطلب تدريب نموذج مع Transformers4Rec إجراء الخطوات عالية المستوى التالية:
توفير المخطط وبناء وحدة إدخال.
إذا واجهت مشكلات التوصية المستندة إلى الجلسة ، فأنت تريد عادةً استخدام فئة TabularSequenceFeatures لأنه يدمج ميزات السياق مع ميزات متسلسلة.
توفير المهام التنبؤ.
تتوفر المهام التي يتم توفيرها مباشرة خارج الصندوق من وثائق API الخاصة بنا.
بناء جسم محول وتحويل هذا إلى نموذج.
توضح عينة الكود التالية كيفية تحديد وتدريب نموذج XLNET مع Pytorch لمهمة التنبؤ بنظام العنصر التالي:
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. عندما تحدد الرأس ، يمكنك استبدالNextItemPredictionTaskبمثال منBinaryClassificationTask. راجع رمز العينة في وثائق API للفئة.
يمكنك تثبيت Transformers4Rec باستخدام PIP أو Conda أو تشغيل حاوية Docker.
يمكنك تثبيت Transformers4Rec مع الوظيفة لاستخدام Merlin Dataloader Merlin Dataloader. يوصى بشدة بالتثبيت مع Dataloader لتحسين الأداء. يمكن تثبيت هذه المكونات كوسائط اختيارية لأمر pip install .
لتثبيت Transformers4Rec باستخدام PIP ، قم بتشغيل الأمر التالي:
pip install transformers4rec[nvtabular] -> كن على دراية بأن تثبيت Transformers4Rec مع pip لا يقوم تلقائيًا بتثبيت Rapids CUDF. -> CUDF مطلوب للإصدارات المسلحة GPU من تحويلات nvtabular و merlin dataloader.
تتوفر تعليمات لتثبيت CUDF مع PIP هنا: https://docs.rapids.ai/install#pip-install
pip install cudf-cu11 dask-cudf-cu11 --extra-index-url=https://pypi.nvidia.com لتثبيت Transformers4Rec باستخدام Conda ، قم بتشغيل الأمر التالي مع 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 للحصول على معلومات حول أسماء حاويات Merlin وعنوان URL إلى صور الحاويات في الكتالوج ومكونات Merlin الرئيسية.
يوضح خط الأنابيب من طرف إلى طرف مع صفحة Nvidia Merlin كيفية استخدام Transformers4Rec ومكتبات Merlin الأخرى مثل NVTAbular لإنشاء نظام توصيات كامل.
لدينا العديد من دفاتر الملاحظات لمساعدتك في بناء نظام توصيات أو دمج Transformers4Rec في نظامك:
إذا كنت ترغب في تقديم مساهمات مباشرة إلى Transformers4Rec ، فاشر بالمساهمة في Transformers4Rec. نحن مهتمون بشكل خاص بالمساهمات أو طلبات الميزات لعمليات هندسة الميزات الخاصة بنا والمعالجة المسبقة. لمزيد من التقدم في Merlin Roadmap ، نشجعك على مشاركة جميع التفاصيل المتعلقة بخط أنابيب نظام التوصية الخاص بك من خلال الانتقال إلى https://developer.nvidia.com/merlin-devzone-survey.
إذا كنت مهتمًا بمعرفة المزيد حول كيفية عمل Transformers4Rec ، راجع وثائق Transformers4Rec الخاصة بنا. لدينا أيضًا وثائق API التي تحدد تفاصيل الوحدات والفئات المتاحة داخل Transformers4Rec.