ہم سفارشات کے انتخاب کے معیار اور رفتار پر کیسے کام کرتے ہیں۔

میرا نام Pavel Parkhomenko ہے، میں ایک ML ڈویلپر ہوں۔ اس آرٹیکل میں، میں Yandex.Zen سروس کے ڈھانچے کے بارے میں بات کرنا چاہتا ہوں اور تکنیکی بہتری کا اشتراک کرنا چاہتا ہوں، جس کے نفاذ نے سفارشات کے معیار کو بڑھانا ممکن بنایا ہے۔ اس پوسٹ سے آپ سیکھیں گے کہ صارف کے لیے لاکھوں دستاویزات میں سے صرف چند ملی سیکنڈز میں سب سے زیادہ متعلقہ کو کیسے تلاش کرنا ہے۔ ایک بڑے میٹرکس (لاکھوں کالموں اور دسیوں لاکھوں قطاروں پر مشتمل) کی مسلسل سڑنے کا طریقہ تاکہ نئی دستاویزات دسیوں منٹوں میں اپنا ویکٹر حاصل کر سکیں؛ ویڈیو کے لیے اچھی ویکٹر کی نمائندگی حاصل کرنے کے لیے صارف آرٹیکل میٹرکس ڈیکمپوزیشن کا دوبارہ استعمال کیسے کریں۔

ہم سفارشات کے انتخاب کے معیار اور رفتار پر کیسے کام کرتے ہیں۔

ہمارے تجویز کردہ ڈیٹا بیس میں مختلف فارمیٹس کی لاکھوں دستاویزات شامل ہیں: ہمارے پلیٹ فارم پر بنائے گئے متنی مضامین اور بیرونی سائٹس، ویڈیوز، بیانیہ اور مختصر پوسٹس سے لیے گئے ہیں۔ ایسی سروس کی ترقی بڑی تعداد میں تکنیکی چیلنجوں سے وابستہ ہے۔ ان میں سے کچھ یہ ہیں:

  • کمپیوٹنگ کے کاموں کو تقسیم کریں: تمام بھاری آپریشن آف لائن کریں، اور حقیقی وقت میں صرف ماڈلز کا فوری اطلاق کریں تاکہ 100-200 ms کے لیے ذمہ دار ہوں۔
  • صارف کے اقدامات کو فوری طور پر مدنظر رکھیں۔ ایسا کرنے کے لیے ضروری ہے کہ تمام واقعات فوری طور پر تجویز کنندہ تک پہنچائے جائیں اور ماڈلز کے نتائج کو متاثر کریں۔
  • فیڈ کو اس طرح بنائیں کہ نئے صارفین کے لیے یہ ان کے رویے کے مطابق تیزی سے ڈھال لے۔ جو لوگ ابھی سسٹم میں شامل ہوئے ہیں انہیں یہ محسوس کرنا چاہئے کہ ان کے تاثرات سفارشات کو متاثر کرتے ہیں۔
  • جلدی سے سمجھیں کہ کس کو نیا مضمون تجویز کرنا ہے۔
  • نئے مواد کے مسلسل ظہور پر فوری جواب دیں۔ ہر روز دسیوں ہزار مضامین شائع ہوتے ہیں، اور ان میں سے اکثر کی عمر محدود ہوتی ہے (کہیں، خبریں)۔ یہی چیز انہیں فلموں، موسیقی اور دیگر طویل المدت اور مہنگے مواد سے ممتاز کرتی ہے۔
  • علم کو ایک ڈومین ایریا سے دوسرے میں منتقل کریں۔ اگر کسی سفارشی نظام میں ٹیکسٹ آرٹیکلز کے لیے تربیت یافتہ ماڈل موجود ہیں اور ہم اس میں ویڈیو شامل کرتے ہیں، تو ہم موجودہ ماڈلز کو دوبارہ استعمال کر سکتے ہیں تاکہ نئی قسم کے مواد کی درجہ بندی بہتر ہو۔

میں آپ کو بتاؤں گا کہ ہم نے ان مسائل کو کیسے حل کیا۔

امیدواروں کا انتخاب

درجہ بندی کے معیار میں عملی طور پر کوئی خرابی کے بغیر، چند ملی سیکنڈ میں زیر غور دستاویزات کی تعداد کو ہزاروں گنا کیسے کم کیا جائے؟

فرض کریں کہ ہم نے بہت سے ML ماڈلز کو تربیت دی، ان کی بنیاد پر خصوصیات تیار کیں، اور دوسرے ماڈل کو تربیت دی جو صارف کے لیے دستاویزات کی درجہ بندی کرتا ہے۔ سب کچھ ٹھیک ہو جائے گا، لیکن آپ حقیقی وقت میں تمام دستاویزات کے لیے تمام نشانیاں نہیں لے سکتے اور ان کا حساب نہیں لگا سکتے، اگر ان میں سے لاکھوں دستاویزات ہیں، اور سفارشات کو 100-200 ms میں بنانے کی ضرورت ہے۔ کام لاکھوں میں سے ایک مخصوص ذیلی سیٹ کو منتخب کرنا ہے، جسے صارف کے لیے درجہ دیا جائے گا۔ اس مرحلے کو عام طور پر امیدواروں کا انتخاب کہا جاتا ہے۔ اس کے لیے کئی تقاضے ہیں۔ سب سے پہلے، انتخاب بہت جلد ہونا چاہیے، تاکہ درجہ بندی کے لیے زیادہ سے زیادہ وقت باقی رہ جائے۔ دوم، درجہ بندی کے لیے دستاویزات کی تعداد کو بہت کم کرنے کے بعد، ہمیں صارف سے متعلقہ دستاویزات کو ہر ممکن حد تک محفوظ رکھنا چاہیے۔

امیدواروں کے انتخاب کا ہمارا اصول تیار ہو چکا ہے، اور اس وقت ہم ایک ملٹی سٹیج سکیم پر پہنچ چکے ہیں:

ہم سفارشات کے انتخاب کے معیار اور رفتار پر کیسے کام کرتے ہیں۔

سب سے پہلے، تمام دستاویزات کو گروپوں میں تقسیم کیا جاتا ہے، اور سب سے زیادہ مقبول دستاویزات ہر گروپ سے لی جاتی ہیں۔ گروپس سائٹس، عنوانات، کلسٹرز ہو سکتے ہیں۔ ہر صارف کے لیے، اس کی تاریخ کی بنیاد پر، اس کے قریب ترین گروپس کا انتخاب کیا جاتا ہے اور ان سے بہترین دستاویزات لی جاتی ہیں۔ ہم ان دستاویزات کو منتخب کرنے کے لیے کے این این انڈیکس کا بھی استعمال کرتے ہیں جو حقیقی وقت میں صارف کے قریب ترین ہوں۔ kNN انڈیکس بنانے کے کئی طریقے ہیں؛ ہمارے بہترین طریقے ہیں۔ HNSW (حیرارکیکل نیویگیبل سمال ورلڈ گرافس)۔ یہ ایک درجہ بندی کا ماڈل ہے جو آپ کو چند ملی سیکنڈ میں لاکھوں کے ڈیٹا بیس سے صارف کے لیے قریب ترین N ویکٹر تلاش کرنے کی اجازت دیتا ہے۔ ہم پہلے اپنے پورے دستاویز کے ڈیٹا بیس کو آف لائن انڈیکس کرتے ہیں۔ چونکہ انڈیکس میں تلاش کرنا بہت تیزی سے کام کرتا ہے، اگر کئی مضبوط ایمبیڈنگز ہیں، تو آپ کئی اشاریہ جات (ہر ایمبیڈنگ کے لیے ایک انڈیکس) بنا سکتے ہیں اور ان میں سے ہر ایک کو حقیقی وقت میں رسائی حاصل کر سکتے ہیں۔

ہمارے پاس اب بھی ہر صارف کے لیے دسیوں ہزار دستاویزات موجود ہیں۔ تمام خصوصیات کو شمار کرنے کے لیے یہ ابھی بھی بہت کچھ ہے، لہذا اس مرحلے پر ہم ہلکی درجہ بندی کا استعمال کرتے ہیں - ایک ہلکا وزن والا بھاری درجہ بندی والا ماڈل جس میں کم خصوصیات ہیں۔ کام یہ پیش گوئی کرنا ہے کہ بھاری ماڈل کے اوپر کون سی دستاویزات ہوں گی۔ سب سے زیادہ پیش گوئی کرنے والے دستاویزات ہیوی ماڈل میں استعمال کیے جائیں گے، یعنی درجہ بندی کے آخری مرحلے پر۔ یہ نقطہ نظر آپ کو صارف کے لیے زیر غور دستاویزات کے ڈیٹا بیس کو دسیوں ملی سیکنڈز میں لاکھوں سے ہزاروں تک کم کرنے کی اجازت دیتا ہے۔

ALS رن ٹائم میں قدم رکھتا ہے۔

ایک کلک کے فوراً بعد صارف کے تاثرات کو کیسے مدنظر رکھا جائے؟

سفارشات میں ایک اہم عنصر صارف کے تاثرات کے جواب کا وقت ہے۔ یہ نئے صارفین کے لیے خاص طور پر اہم ہے: جب کوئی شخص صرف سفارشی نظام کا استعمال شروع کرتا ہے، تو اسے مختلف عنوانات کی دستاویزات کی غیر ذاتی نوعیت کی فیڈ ملتی ہے۔ جیسے ہی وہ پہلا کلک کرتا ہے، آپ کو اسے فوری طور پر ذہن میں رکھنا ہوگا اور اس کی دلچسپیوں کے مطابق ڈھالنا ہوگا۔ اگر آپ آف لائن تمام عوامل کا حساب لگاتے ہیں، تو تاخیر کی وجہ سے فوری نظام کا جواب ناممکن ہو جائے گا۔ لہذا صارف کے اعمال کو حقیقی وقت میں پروسیس کرنا ضروری ہے۔ ان مقاصد کے لیے، ہم صارف کی ویکٹر کی نمائندگی کرنے کے لیے رن ٹائم پر ALS قدم استعمال کرتے ہیں۔

آئیے فرض کریں کہ ہمارے پاس تمام دستاویزات کے لیے ویکٹر کی نمائندگی ہے۔ مثال کے طور پر، ہم ELMo، BERT یا دیگر مشین لرننگ ماڈلز کا استعمال کرتے ہوئے آرٹیکل کے متن کی بنیاد پر ایمبیڈنگ آف لائن بنا سکتے ہیں۔ سسٹم میں ان کے تعاملات کی بنیاد پر ہم ایک ہی جگہ میں صارفین کی ویکٹر کی نمائندگی کیسے حاصل کر سکتے ہیں؟

صارف دستاویز میٹرکس کی تشکیل اور سڑنے کا عمومی اصولہمارے پاس ایم یوزرز اور این دستاویزات ہیں۔ کچھ صارفین کے لیے، کچھ دستاویزات سے ان کا تعلق معلوم ہوتا ہے۔ پھر اس معلومات کو mx n میٹرکس کے طور پر پیش کیا جا سکتا ہے: قطاریں صارفین سے مطابقت رکھتی ہیں، اور کالم دستاویزات سے مطابقت رکھتے ہیں۔ چونکہ اس شخص نے زیادہ تر دستاویزات نہیں دیکھی ہیں، اس لیے زیادہ تر میٹرکس سیل خالی رہیں گے، جبکہ دیگر بھرے جائیں گے۔ ہر ایونٹ (جیسے، ناپسندیدگی، کلک) کے لیے میٹرکس میں کچھ قدر فراہم کی جاتی ہے - لیکن آئیے ایک آسان ماڈل پر غور کریں جس میں پسند 1 سے مماثل ہے، اور ناپسندیدگی -1 کے مساوی ہے۔

آئیے میٹرکس کو دو حصوں میں تحلیل کرتے ہیں: P (m x d) اور Q (d x n)، جہاں d ویکٹر کی نمائندگی کا طول و عرض ہے (عام طور پر ایک چھوٹی تعداد)۔ پھر ہر آبجیکٹ ڈی ڈائمینشنل ویکٹر سے مطابقت رکھتا ہے (ایک صارف کے لیے - میٹرکس P میں ایک قطار، ایک دستاویز کے لیے - میٹرکس Q میں ایک کالم)۔ یہ ویکٹر متعلقہ اشیاء کے ایمبیڈنگز ہوں گے۔ یہ اندازہ لگانے کے لیے کہ آیا کوئی صارف کسی دستاویز کو پسند کرے گا، آپ آسانی سے ان کی سرایت کو ضرب دے سکتے ہیں۔

ہم سفارشات کے انتخاب کے معیار اور رفتار پر کیسے کام کرتے ہیں۔
میٹرکس کو گلنے کے ممکنہ طریقوں میں سے ایک ALS (Alternating Least Squares) ہے۔ ہم مندرجہ ذیل نقصان کی تقریب کو بہتر بنائیں گے:

ہم سفارشات کے انتخاب کے معیار اور رفتار پر کیسے کام کرتے ہیں۔

یہاں rui صارف u کا دستاویز i کے ساتھ تعامل ہے، qi دستاویز i کا ویکٹر ہے، pu صارف u کا ویکٹر ہے۔

پھر اوسط مربع غلطی کے نقطہ نظر سے بہترین صارف ویکٹر (مقررہ دستاویز ویکٹر کے لیے) متعلقہ لکیری رجعت کو حل کرکے تجزیاتی طور پر پایا جاتا ہے۔

اسے "ALS قدم" کہا جاتا ہے۔ اور خود ALS الگورتھم یہ ہے کہ ہم باری باری ایک میٹرکس (صارفین اور مضامین) کو ٹھیک کرتے ہیں اور دوسرے کو اپ ڈیٹ کرتے ہیں، بہترین حل تلاش کرتے ہیں۔

خوش قسمتی سے، صارف کی ویکٹر کی نمائندگی کو تلاش کرنا کافی تیز عمل ہے جو ویکٹر ہدایات کا استعمال کرتے ہوئے رن ٹائم پر کیا جا سکتا ہے۔ یہ چال آپ کو فوری طور پر درجہ بندی میں صارف کے تاثرات کو مدنظر رکھنے کی اجازت دیتی ہے۔ اسی ایمبیڈنگ کو امیدواروں کے انتخاب کو بہتر بنانے کے لیے کے این این انڈیکس میں استعمال کیا جا سکتا ہے۔

تقسیم شدہ تعاونی فلٹرنگ

انکریمنٹل ڈسٹری بیوٹڈ میٹرکس فیکٹرائزیشن کیسے کریں اور نئے مضامین کی ویکٹر کی نمائندگی کو تیزی سے تلاش کریں؟

مشمولات سفارشی اشاروں کا واحد ذریعہ نہیں ہیں۔ ایک اور اہم ذریعہ باہمی معلومات ہے۔ اچھی درجہ بندی کی خصوصیات روایتی طور پر صارف دستاویز میٹرکس کے گلنے سے حاصل کی جا سکتی ہیں۔ لیکن جب اس طرح کے گلنے کی کوشش کرنے کی کوشش کی گئی تو ہمیں مسائل کا سامنا کرنا پڑا:

1. ہمارے پاس لاکھوں دستاویزات اور لاکھوں صارفین ہیں۔ میٹرکس ایک مشین پر مکمل طور پر فٹ نہیں ہوتا ہے، اور سڑنے میں کافی وقت لگے گا۔
2. سسٹم میں موجود زیادہ تر مواد کی عمر مختصر ہوتی ہے: دستاویزات صرف چند گھنٹوں کے لیے متعلقہ رہتی ہیں۔ لہذا، یہ ضروری ہے کہ ان کی ویکٹر کی نمائندگی کو جلد از جلد بنایا جائے۔
3. اگر آپ دستاویز کے شائع ہونے کے فوراً بعد ایک سڑن بناتے ہیں، تو صارفین کی کافی تعداد کے پاس اس کا جائزہ لینے کا وقت نہیں ہوگا۔ لہذا، اس کی ویکٹر کی نمائندگی زیادہ تر اچھی نہیں ہوگی۔
4. اگر کوئی صارف پسند کرتا ہے یا ناپسند کرتا ہے، تو ہم اسے فوری طور پر سڑنے میں مدنظر نہیں رکھ سکیں گے۔

ان مسائل کو حل کرنے کے لیے، ہم نے بار بار اضافی اپ ڈیٹس کے ساتھ صارف دستاویز میٹرکس کی تقسیم شدہ سڑن کو نافذ کیا۔ یہ بالکل کیسے کام کرتا ہے؟

فرض کریں کہ ہمارے پاس N مشینوں کا ایک جھرمٹ ہے (N سینکڑوں میں ہے) اور ہم ان پر میٹرکس کی تقسیم شدہ سڑن کرنا چاہتے ہیں جو ایک مشین پر فٹ نہیں ہے۔ سوال یہ ہے کہ اس سڑن کو کیسے انجام دیا جائے تاکہ ایک طرف، ہر مشین پر کافی ڈیٹا ہو اور دوسری طرف، تاکہ حسابات آزاد ہوں؟

ہم سفارشات کے انتخاب کے معیار اور رفتار پر کیسے کام کرتے ہیں۔

ہم اوپر بیان کردہ ALS ڈیکمپوزیشن الگورتھم استعمال کریں گے۔ آئیے دیکھتے ہیں کہ ایک ALS قدم کو تقسیم شدہ طریقے سے کیسے انجام دیا جائے - باقی اقدامات اسی طرح کے ہوں گے۔ ہم کہتے ہیں کہ ہمارے پاس دستاویزات کا ایک مقررہ میٹرکس ہے اور ہم صارفین کا میٹرکس بنانا چاہتے ہیں۔ ایسا کرنے کے لیے، ہم اسے لائنوں کے ذریعے N حصوں میں تقسیم کریں گے، ہر حصے میں تقریباً اتنی ہی لائنیں ہوں گی۔ ہم ہر مشین کو متعلقہ قطاروں کے غیر خالی خلیات کے ساتھ ساتھ دستاویز ایمبیڈنگ کا میٹرکس (مکمل طور پر) بھیجیں گے۔ چونکہ اس کا سائز بہت بڑا نہیں ہے، اور صارف دستاویز میٹرکس عام طور پر بہت کم ہوتا ہے، اس لیے یہ ڈیٹا باقاعدہ مشین پر فٹ ہو جائے گا۔

یہ چال کئی ادوار میں دہرائی جا سکتی ہے جب تک کہ ماڈل ایک ایک کر کے فکسڈ میٹرکس کو تبدیل نہ کر لے۔ لیکن پھر بھی، میٹرکس سڑنے میں کئی گھنٹے لگ سکتے ہیں۔ اور یہ اس مسئلے کو حل نہیں کرتا ہے کہ آپ کو فوری طور پر نئے دستاویزات کی سرایت حاصل کرنے اور ان کی ایمبیڈنگ کو اپ ڈیٹ کرنے کی ضرورت ہے جن کے بارے میں ماڈل بناتے وقت بہت کم معلومات تھیں۔

تیز رفتار اضافی ماڈل اپ ڈیٹس کے تعارف نے ہماری مدد کی۔ ہم کہتے ہیں کہ ہمارے پاس فی الحال تربیت یافتہ ماڈل ہے۔ اس کی تربیت کے بعد سے، ایسے نئے مضامین آئے ہیں جن کے ساتھ ہمارے صارفین نے تعامل کیا ہے، ساتھ ہی ایسے مضامین جن کا تربیت کے دوران بہت کم تعامل ہوا ہے۔ اس طرح کے مضامین کی ایمبیڈنگز کو تیزی سے حاصل کرنے کے لیے، ہم ماڈل کی پہلی بڑی ٹریننگ کے دوران حاصل کردہ یوزر ایمبیڈنگز کا استعمال کرتے ہیں اور ایک مقررہ صارف میٹرکس کے ذریعے دستاویز میٹرکس کا حساب لگانے کے لیے ایک ALS مرحلہ کرتے ہیں۔ یہ آپ کو بہت تیزی سے سرایت کرنے کی اجازت دیتا ہے - دستاویز شائع ہونے کے چند منٹوں کے اندر - اور اکثر حالیہ دستاویزات کی سرایت کو اپ ڈیٹ کرتے ہیں۔

فوری طور پر انسانی اعمال کو مدنظر رکھتے ہوئے سفارشات کرنے کے لیے، رن ٹائم میں ہم آف لائن حاصل کردہ صارف ایمبیڈنگز کا استعمال نہیں کرتے ہیں۔ اس کے بجائے، ہم ALS مرحلہ کرتے ہیں اور اصل صارف ویکٹر حاصل کرتے ہیں۔

دوسرے ڈومین ایریا میں منتقل کریں۔

کسی ویڈیو کی ویکٹر کی نمائندگی کرنے کے لیے ٹیکسٹ آرٹیکلز پر صارف کے تاثرات کا استعمال کیسے کریں؟

ابتدائی طور پر، ہم نے صرف متنی مضامین کی سفارش کی، اس لیے ہمارے بہت سے الگورتھم اس قسم کے مواد کے مطابق بنائے گئے ہیں۔ لیکن دیگر قسم کے مواد کو شامل کرتے وقت، ہمیں ماڈلز کو اپنانے کی ضرورت کا سامنا کرنا پڑا۔ ہم نے ویڈیو مثال کا استعمال کرتے ہوئے اس مسئلے کو کیسے حل کیا؟ ایک آپشن یہ ہے کہ تمام ماڈلز کو شروع سے دوبارہ تربیت دیں۔ لیکن اس میں کافی وقت لگتا ہے، اور کچھ الگورتھم تربیتی نمونے کے سائز کا مطالبہ کر رہے ہیں، جو سروس پر اپنی زندگی کے پہلے لمحات میں نئی ​​قسم کے مواد کے لیے مطلوبہ مقدار میں دستیاب نہیں ہے۔

ہم دوسرے راستے پر گئے اور ویڈیو کے لیے ٹیکسٹ ماڈلز کو دوبارہ استعمال کیا۔ اسی ALS چال نے ویڈیوز کی ویکٹر کی نمائندگی کرنے میں ہماری مدد کی۔ ہم نے ٹیکسٹ آرٹیکلز کی بنیاد پر صارفین کی ویکٹر کی نمائندگی کی اور ویڈیو ویو کی معلومات کا استعمال کرتے ہوئے ایک ALS قدم کیا۔ تو ہمیں آسانی سے ویڈیو کی ویکٹر کی نمائندگی مل گئی۔ اور رن ٹائم کے وقت ہم صرف ٹیکسٹ آرٹیکلز اور ویڈیو ویکٹر سے حاصل کردہ صارف ویکٹر کے درمیان قربت کا حساب لگاتے ہیں۔

حاصل يہ ہوا

ریئل ٹائم سفارشی نظام کی بنیادی ترقی میں بہت سے چیلنجز شامل ہیں۔ اس ڈیٹا کو مؤثر طریقے سے استعمال کرنے کے لیے آپ کو تیزی سے ڈیٹا پر کارروائی کرنے اور ML طریقوں کو لاگو کرنے کی ضرورت ہے۔ کم سے کم وقت میں صارف کے سگنلز اور مواد کی نئی اکائیوں پر کارروائی کرنے کے قابل پیچیدہ تقسیم شدہ نظام بنائیں؛ اور بہت سے دوسرے کام۔

موجودہ نظام میں، جس کا میں نے بیان کیا ہے، صارف کے لیے سفارشات کا معیار اس کی سرگرمی اور سروس پر قیام کی مدت کے ساتھ بڑھتا ہے۔ لیکن یقیناً، یہاں بنیادی مشکل ہے: نظام کے لیے فوری طور پر ایسے شخص کے مفادات کو سمجھنا مشکل ہے جس کا مواد کے ساتھ بہت کم تعامل ہے۔ نئے صارفین کے لیے تجاویز کو بہتر بنانا ہمارا کلیدی ہدف ہے۔ ہم الگورتھم کو بہتر بناتے رہیں گے تاکہ کسی شخص سے متعلقہ مواد تیزی سے اس کی فیڈ میں داخل ہو، اور غیر متعلقہ مواد نہ دکھایا جائے۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں