موږ څنګه د سپارښتنو د انتخاب کیفیت او سرعت باندې کار کوو

زما نوم Pavel Parkhomenko دی، زه د ML جوړونکی یم. په دې مقاله کې، زه غواړم د Yandex.Zen خدماتو جوړښت په اړه وغږیږم او تخنیکي پرمختګونه شریک کړم، چې پلي کول یې د سپارښتنو کیفیت لوړول ممکن کړي. له دې پوسټ څخه به تاسو زده کړئ چې څنګه د کارونکي لپاره د ملیونونو سندونو په مینځ کې یوازې په څو ملی ثانیو کې خورا اړونده ومومئ؛ د لوی میټریکس دوامداره تخریب کولو څرنګوالی (د ملیونونو کالمونو او لسګونو ملیون قطارونو څخه جوړ دی) ترڅو نوي اسناد په لسګونو دقیقو کې خپل ویکتور ترلاسه کړي؛ د ویډیو لپاره د ښه ویکتور نمایش ترلاسه کولو لپاره د کارونکي مقالې میټریکس تخریب څنګه بیا وکاروئ.

موږ څنګه د سپارښتنو د انتخاب کیفیت او سرعت باندې کار کوو

زموږ د سپارښتنې ډیټابیس د مختلف فارمیټونو ملیونونه سندونه لري: د متن مقالې زموږ په پلیټ فارم کې رامینځته شوي او د بهرني سایټونو ، ویډیوګانو ، داستانونو او لنډ پوسټونو څخه اخیستل شوي. د دې ډول خدماتو پراختیا د ډیری تخنیکي ننګونو سره تړاو لري. دلته ځینې یې دي:

  • د کمپیوټینګ دندې تقسیم کړئ: ټول درانه عملیات آفلاین ترسره کړئ، او په ریښتیني وخت کې یوازې د 100-200 ms مسؤلیت لپاره د ماډلونو چټک غوښتنلیک ترسره کړئ.
  • په چټکۍ سره د کارونکي عملونه په پام کې ونیسئ. د دې کولو لپاره، دا اړینه ده چې ټولې پیښې سمدستي وړاندیز کونکي ته وسپارل شي او د ماډلونو پایلې اغیزه وکړي.
  • فیډ جوړ کړئ ترڅو د نوي کاروونکو لپاره دا په چټکۍ سره د دوی چلند سره تطابق وکړي. هغه خلک چې یوازې په سیسټم کې شامل شوي باید احساس وکړي چې د دوی نظریات په سپارښتنو اغیزه کوي.
  • په چټکۍ سره پوه شئ چې چا ته د یوې نوې مقالې وړاندیز وکړئ.
  • د نوي مینځپانګې دوامداره راڅرګندیدو ته ګړندي ځواب ورکړئ. هره ورځ په لسګونو زره مقالې خپریږي، او ډیری یې محدود ژوند لري (وایې، خبرونه). دا هغه څه دي چې دوی د فلمونو، میوزیک او نورو اوږدمهاله او قیمتي مینځپانګو رامینځته کولو څخه توپیر کوي.
  • له یوې ډومین سیمې څخه بلې ته پوهه لیږدول. که چیرې د سپارښتنې سیسټم د متن مقالو لپاره روزل شوي ماډلونه ولري او موږ دې ته ویډیو اضافه کړو، موږ کولی شو موجوده ماډلونه بیا وکاروو ترڅو د منځپانګې نوي ډول غوره کړي.

زه به تاسو ته ووایم چې موږ دا ستونزې څنګه حل کړې.

د کاندیدانو انتخاب

د درجې کیفیت کې په حقیقت کې هیڅ خرابیدو سره په څو ملی ثانیو کې په زرګونو ځله د غور لاندې اسنادو شمیر څنګه کم کړئ؟

فرض کړئ چې موږ ډیری ML ماډلونه روزلي، د دوی پر بنسټ ځانګړتیاوې رامینځته کړي، او یو بل ماډل روزلی چې د کارونکي لپاره اسناد درجه بندي کوي. هرڅه به سم وي ، مګر تاسو نشئ کولی په ریښتیني وخت کې د ټولو اسنادو ټولې نښې واخلئ او محاسبه کړئ ، که چیرې دا ملیونونه سندونه شتون ولري ، او وړاندیزونه باید په 100-200 ms کې جوړ شي. دنده دا ده چې د ملیونونو څخه یو مشخص فرعي سیټ غوره کړئ ، کوم چې به د کارونکي لپاره درجه بندي شي. دا مرحله معمولا د کاندید انتخاب بلل کیږي. د دې لپاره څو اړتیاوې شتون لري. لومړی، انتخاب باید په چټکۍ سره ترسره شي، ترڅو د امکان تر حده ډیر وخت د درجه بندي لپاره پاتې شي. دوهم، د درجه بندي لپاره د اسنادو شمیر خورا کمولو سره، موږ باید د کارونکي پورې اړوند اسناد د امکان تر حده په بشپړه توګه وساتو.

زموږ د نوماندانو د انتخاب اصول وده کړې، او دا مهال موږ څو مرحلې سکیم ته رسیدلي یو:

موږ څنګه د سپارښتنو د انتخاب کیفیت او سرعت باندې کار کوو

لومړی، ټول اسناد په ګروپونو ویشل شوي، او خورا مشهور اسناد د هرې ډلې څخه اخیستل شوي. ګروپونه کیدای شي سایټونه، موضوعات، کلسترونه وي. د هر کارونکي لپاره، د هغه د تاریخ پراساس، هغه ته نږدې ډلې غوره کیږي او غوره اسناد له دوی څخه اخیستل کیږي. موږ د kNN شاخص هم کاروو ترڅو هغه اسناد غوره کړو چې په ریښتیني وخت کې کارونکي ته نږدې وي. د kNN شاخص جوړولو لپاره ډیری میتودونه شتون لري؛ زموږ غوره کار وکړ HNSW (حیراریکیکل نیویګیبل کوچنۍ نړۍ ګرافونه). دا یو درجه بندي ماډل دی چې تاسو ته اجازه درکوي په څو ملی ثانیو کې د ملیونونو ډیټابیس څخه د کارونکي لپاره N نږدې ویکتورونه ومومئ. موږ لومړی خپل ټول سند ډیټابیس آفلاین لیست کوو. له هغه ځایه چې په شاخص کې لټون خورا ګړندي کار کوي ، که چیرې ډیری قوي سرایتونه شتون ولري ، تاسو کولی شئ ډیری شاخصونه رامینځته کړئ (د هر ایمبیډینګ لپاره یو شاخص) او هر یو ته په ریښتیني وخت کې لاسرسی ومومئ.

موږ لاهم د هر کارونکي لپاره لسګونه زره سندونه لرو. دا لاهم د ټولو ځانګړتیاو شمیرلو لپاره خورا ډیر دی، نو پدې مرحله کې موږ د رڼا درجه بندي کاروو - د لږو ځانګړتیاو سره د سپک وزن درانه درجه بندي ماډل. دنده دا ده چې وړاندوینه وکړي کوم اسناد چې دروند ماډل به په سر کې ولري. د لوړ وړاندوینې سره اسناد به په درانه ماډل کې وکارول شي، دا د درجه بندي په وروستي مرحله کې. دا طریقه تاسو ته اجازه درکوي د اسنادو ډیټابیس کم کړئ چې د کارونکي لپاره په پام کې نیول شوي له ملیونونو څخه زرګونو ته په لسګونو ملی ثانیو کې.

د چلولو په وخت کې ALS ګام

څنګه د یو کلیک وروسته سمدستي د کارونکي فیډبیک حساب کړئ؟

په سپارښتنو کې یو مهم فاکتور د کارونکي فیډبیک ته د ځواب وخت دی. دا په ځانګړي توګه د نوي کاروونکو لپاره مهم دی: کله چې یو څوک یوازې د سپارښتنې سیسټم کارول پیل کوي، هغه د مختلفو موضوعاتو اسنادو غیر شخصي فیډ ترلاسه کوي. هرڅومره ژر چې هغه لومړی کلیک وکړي ، تاسو اړتیا لرئ سمدلاسه دا په پام کې ونیسئ او د هغه ګټو سره تطابق وکړئ. که تاسو ټول فکتورونه آفلاین محاسبه کړئ، د ځنډ له امله به د چټک سیسټم غبرګون ناممکن شي. نو دا اړینه ده چې په ریښتیني وخت کې د کارونکي عملونه پروسس کړئ. د دې موخو لپاره، موږ د کارن د ویکتور نمایندګۍ جوړولو لپاره د چلولو په وخت کې د ALS ګام کاروو.

راځئ فرض کړو چې موږ د ټولو اسنادو لپاره د ویکتور استازیتوب لرو. د مثال په توګه، موږ کولی شو د ELMo، BERT یا نورو ماشین زده کړې ماډلونو په کارولو سره د مقالې متن پراساس آفلاین ایمبیډینګونه جوړ کړو. موږ څنګه کولی شو په سیسټم کې د دوی د متقابل عمل پراساس په ورته ځای کې د کاروونکو ویکتور نمایش ترلاسه کړو؟

د کارونکي سند میټرکس د جوړولو او تخریب عمومي اصولاجازه راکړئ چې m کاروونکي او n اسناد ولرو. د ځینو کاروونکو لپاره، د ځینو اسنادو سره د دوی اړیکه معلومه ده. بیا دا معلومات د mxn میټرکس په توګه ښودل کیدی شي: قطارونه د کاروونکو سره مطابقت لري، او کالمونه د اسنادو سره مطابقت لري. څرنګه چې شخص ډیری اسناد نه دي لیدلي، د میټریکس ډیری حجرې به خالي پاتې شي، پداسې حال کې چې نور به ډک شي. د هرې پیښې لپاره (لکه، ناخوښه، کلیک) یو څه ارزښت په میټرکس کې چمتو شوي - مګر راځئ چې یو ساده ماډل په پام کې ونیسو چې په کې یو ډول د 1 سره مطابقت لري، او ناخوښه -1 سره مطابقت لري.

راځئ چې میټریکس په دوه برخو تحلیل کړو: P (mxd) او Q (dxn) ، چیرې چې d د ویکتور نمایش ابعاد دی (معمولا یو کوچنی شمیر). بیا به هر څیز د d-dimensional ویکتور سره مطابقت ولري (د کارونکي لپاره - په میټریکس P کې قطار، د سند لپاره - په میټریکس Q کې کالم). دا ویکتورونه به د اړوندو شیانو سرایت وي. د وړاندوینې لپاره چې ایا یو کارن به یو سند خوښ کړي ، تاسو کولی شئ په ساده ډول د دوی سرایتونه ضرب کړئ.

موږ څنګه د سپارښتنو د انتخاب کیفیت او سرعت باندې کار کوو
د میټریکس د تخریب یوه ممکنه لاره ALS (د ټیټ چوکونو بدیل) دی. موږ به د لاندې زیان فعالیت اصلاح کړو:

موږ څنګه د سپارښتنو د انتخاب کیفیت او سرعت باندې کار کوو

دلته rui د سند i سره د یوزر یو تعامل دی، qi د سند i ویکتور دی، pu د کارن u ویکتور دی.

بیا د اوسط مربع خطا له لید څخه غوره کارونکي ویکتور (د ثابت سند ویکتورونو لپاره) د اړوند خطي ریګریشن حل کولو سره په تحلیلي ډول موندل کیږي.

دا د "ALS ګام" په نوم یادیږي. او پخپله د ALS الګوریتم دا دی چې موږ په بدیل سره یو میټریک (کاروونکي او مقالې) اصلاح کوو او بل یې تازه کوو، د غوره حل موندلو.

خوشبختانه، د کارونکي ویکتور نمایش موندل یو خورا ګړندی عملیات دی چې د ویکتور لارښوونو په کارولو سره د چلولو په وخت کې ترسره کیدی شي. دا چال تاسو ته اجازه درکوي چې سمدلاسه د کارونکي فیډبیک په درجه بندي کې په پام کې ونیسئ. د کاندید انتخاب ته وده ورکولو لپاره د kNN شاخص کې ورته سرایت کارول کیدی شي.

توزیع شوي د همکارۍ فلټر کول

څنګه د زیاتیدونکي توزیع شوي میټریکس فکتوریزیشن ترسره کړئ او ژر تر ژره د نوي مقالو ویکتور نمایشونه ومومئ؟

مواد د سپارښتنې نښو یوازینۍ سرچینه نه ده. بله مهمه سرچینه د همکارۍ معلومات دي. د ښه درجه بندي ځانګړتیاوې په دودیز ډول د کارونکي سند میټرکس له تخریب څخه ترلاسه کیدی شي. مګر کله چې د داسې تخریب کولو هڅه کول، موږ له ستونزو سره مخ شو:

1. موږ ملیونونه سندونه او لسګونه ملیون کارونکي لرو. میټریکس په بشپړ ډول په یوه ماشین کې نه فټ کیږي، او تخریب به ډیر وخت ونیسي.
2. په سیسټم کې ډیری مینځپانګې لنډ عمر لري: اسناد یوازې د څو ساعتونو لپاره اړین پاتې کیږي. نو ځکه، دا اړینه ده چې د دوی ویکتور نمایندګي ژر تر ژره جوړه کړئ.
3. که تاسو د سند له خپریدو سمدلاسه وروسته تخریب رامینځته کړئ ، نو د کاروونکو کافي شمیر به د دې ارزولو لپاره وخت ونه لري. نو ځکه، د دې ویکتور استازیتوب به ډیری احتمال ډیر ښه نه وي.
4. که یو کارن خوښ یا ناخوښه وي، موږ به په سمدستي توګه ونه توانیږو چې دا په تخریب کې په پام کې ونیسو.

د دې ستونزو د حل لپاره، موږ د پرله پسې زیاتیدونکي تازه معلوماتو سره د کارونکي - سند میټرکس ویشل شوي تخریب پلي کړل. دا څنګه په سمه توګه کار کوي؟

فرض کړئ چې موږ د N ماشینونو کلستر لرو (N په سلګونو کې دی) او موږ غواړو په دوی باندې د میټریکس ویشل شوي تخریب ترسره کړو چې په یوه ماشین کې نه وي. پوښتنه دا ده چې دا تخریب څنګه ترسره کیدی شي چې له یوې خوا په هر ماشین کې کافي ډیټا شتون ولري او له بلې خوا حسابونه خپلواک وي؟

موږ څنګه د سپارښتنو د انتخاب کیفیت او سرعت باندې کار کوو

موږ به د پورته تشریح شوي ALS تخریب الګوریتم وکاروو. راځئ وګورو چې څنګه د ALS یو ګام په ویشل شوي ډول اجرا کړو - پاتې مرحلې به ورته وي. راځئ چې ووایو موږ د اسنادو ثابت میټرکس لرو او موږ غواړو د کاروونکو میټریکس جوړ کړو. د دې کولو لپاره، موږ به دا د لینونو په واسطه په N برخو وویشو، هره برخه به نږدې ورته شمیر لینونه ولري. موږ به هر ماشین ته د اړوندو قطارونو غیر خالي حجرو ته ولیږو ، په بیله بیا د اسنادو سرایتونو میټریکس (په بشپړ ډول). څرنګه چې د دې اندازه ډیره لویه نه ده، او د کارونکي-د اسنادو میټریکس معمولا ډیر لږ وي، دا ډاټا به په منظم ماشین کې فټ شي.

دا چل په څو پړاوونو کې تکرار کیدی شي تر هغه چې ماډل یو له بل سره بدل شي، د ثابت میټریکس یو په بل بدل شي. مګر بیا هم، د میټرکس تخریب کولی شي څو ساعته وخت ونیسي. او دا هغه ستونزه نه حل کوي چې تاسو اړتیا لرئ ژر تر ژره د نوي سندونو سرایت ترلاسه کړئ او د هغه ایمبیډینګ تازه کړئ چې د ماډل جوړولو پرمهال لږ معلومات شتون درلود.

د ګړندي زیاتیدونکي ماډل تازه معلوماتو معرفي زموږ سره مرسته وکړه. راځئ چې ووایو موږ اوس مهال روزل شوي ماډل لرو. د هغې د روزنې راهیسې، نوې مقالې شتون لري چې زموږ کاروونکو ورسره اړیکه نیولې، او همدارنګه هغه مقالې چې د روزنې په جریان کې لږ متقابل عمل درلود. د دې لپاره چې د داسې مقالو ګړندي ترلاسه کولو لپاره ، موږ د کارونکي ایمبیډینګونه کاروو چې د ماډل لومړۍ لوی روزنې په جریان کې ترلاسه شوي او د یو ثابت کارونکي میټریکس سره د سند میټریکس محاسبه کولو لپاره یو ALS ګام ترسره کوو. دا تاسو ته اجازه درکوي په چټکۍ سره ایمبیډینګونه ترلاسه کړئ - د سند له خپریدو وروسته په څو دقیقو کې - او ډیری وختونه د وروستي اسنادو ایمبیډینګ تازه کړئ.

د سپارښتنو کولو لپاره سمدلاسه د انسان عملونه په پام کې ونیسئ، د چلولو په وخت کې موږ د کارونکي ایمبیډینګونه نه کاروو چې آفلاین ترلاسه شوي. پرځای یې، موږ د ALS ګام ترسره کوو او د اصلي کارونکي ویکتور ترلاسه کوو.

بل ډومین سیمې ته لیږدول

د ویډیو د ویکتور نمایندګۍ جوړولو لپاره د متن مقالو په اړه د کاروونکو فیډبیک کارولو څرنګوالی؟

په پیل کې، موږ یوازې د متن مقالو وړاندیز وکړ، نو زموږ ډیری الګوریتمونه د دې ډول منځپانګې سره سمون لري. مګر کله چې د مینځپانګې نور ډولونه اضافه کول ، موږ د ماډلونو د تطبیق اړتیا سره مخ یو. موږ څنګه د ویډیو مثال په کارولو سره دا ستونزه حل کړه؟ یو اختیار دا دی چې ټول ماډلونه له سکریچ څخه وروزل شي. مګر دا ډیر وخت نیسي ، او ځینې الګوریتمونه د روزنې نمونې اندازې غوښتنه کوي ، کوم چې لاهم په خدمت کې د خپل ژوند په لومړیو شیبو کې د نوي ډول مینځپانګې لپاره اړین مقدار کې شتون نلري.

موږ بلې لارې ته لاړو او د ویډیو لپاره د متن ماډلونه بیا وکاروو. ورته ALS چال موږ سره د ویډیو ویکتور نماینده ګانو په جوړولو کې مرسته وکړه. موږ د متن مقالو پراساس د کاروونکو ویکتور نمایش واخیست او د ویډیو لید معلوماتو په کارولو سره د ALS ګام ترسره شو. نو موږ په اسانۍ سره د ویډیو ویکتور استازیتوب ترلاسه کړ. او د چلولو په وخت کې موږ په ساده ډول د متن مقالو او ویډیو ویکتور څخه ترلاسه شوي د کارونکي ویکتور ترمینځ نږدې والی محاسبه کوو.

پایلې

د ریښتیني وخت سپارښتنې سیسټم اصلي رامینځته کول ډیری ننګونې لري. تاسو اړتیا لرئ ژر تر ژره ډیټا پروسس کړئ او د دې ډیټا مؤثره کارولو لپاره د ML میتودونه پلي کړئ؛ پیچلي توزیع شوي سیسټمونه رامینځته کړئ چې په لږترلږه وخت کې د کاروونکو سیګنالونو او د مینځپانګو نوي واحدونو پروسس کولو وړ وي؛ او ډیری نورې دندې.

په اوسني سیسټم کې، هغه ډیزاین چې ما یې تشریح کړی، د کاروونکي لپاره د سپارښتنو کیفیت د هغه فعالیت او په خدمت کې د پاتې کیدو مودې سره وده کوي. مګر البته، دلته اصلي ستونزه ده: د سیسټم لپاره دا ستونزمنه ده چې سمدستي د هغه چا په ګټو پوه شي چې د منځپانګې سره لږ تعامل لري. د نویو کاروونکو لپاره د سپارښتنو ښه کول زموږ کلیدي هدف دی. موږ به د الګوریتم اصلاح کولو ته دوام ورکړو ترڅو هغه مینځپانګه چې د یو شخص سره تړاو لري په چټکۍ سره د هغه فیډ ته راځي، او غیر متناسب مینځپانګه نه ښودل کیږي.

سرچینه: www.habr.com

Add a comment