এই সাইটের বিষয়বস্তু কৃত্রিম বুদ্ধিমত্তা (AI) বা মেশিন অনুবাদ প্রযুক্তি ব্যবহার করে অনুবাদ করা হয়েছে এবং ত্রুটি থাকতে পারে।

Skip to content

মেশিন লার্নিং-উন্নত ব্লুম ফিল্টার ব্যবহার করে স্পার্ক জয়েন কোয়েরির খরচ কীভাবে কমায় Roblox

সারসংক্ষেপ

প্রতিদিন Roblox-এ ৭০ মিলিয়ন ব্যবহারকারী মিলিয়ন মিলিয়ন অভিজ্ঞতার সাথে যুক্ত হয়, যা ত্রৈমাসিকভাবে মোট ১৬ বিলিয়ন ঘন্টা। এই মিথস্ক্রিয়া একটি পেটাবাইট-স্কেলের ডেটা লেক তৈরি করে, যা বিশ্লেষণ এবং মেশিন লার্নিং (ML) এর উদ্দেশ্যে সমৃদ্ধ করা হয়। আমাদের ডেটা লেকে ফ্যাক্ট এবং ডাইমেনশন টেবিলগুলো যোগ করা অত্যন্ত রিসোর্স-নিবিড়, তাই এটিকে অপ্টিমাইজ করতে এবং ডেটা শাফলিং কমাতে আমরা Learned Bloom Filters [1] গ্রহণ করেছি—ML ব্যবহার করে তৈরি স্মার্ট ডেটা স্ট্রাকচার। উপস্থিতি পূর্বাভাসের মাধ্যমে, এই ফিল্টারগুলো যোগের ডেটা উল্লেখযোগ্যভাবে কমিয়ে আনে, দক্ষতা বৃদ্ধি করে এবং খরচ কমায়। এ ছাড়াও, আমরা আমাদের মডেল আর্কিটেকচার উন্নত করেছি এবং প্রক্রিয়াকরণের জন্য মেমরি ও সিপিইউ সময় কমানো এবং অপারেশনাল স্থিতিশীলতা বৃদ্ধিতে এগুলোর উল্লেখযোগ্য সুবিধাগুলো প্রদর্শন করেছি।

ভূমিকা

আমাদের ডেটা লেকে, ফ্যাক্ট টেবিল এবং ডেটা কিউবগুলো দক্ষ অ্যাক্সেসের জন্য সময়ানুসারে বিভক্ত (temporally partitioned), যেখানে ডাইমেনশন টেবিলগুলোতে এমন কোনো বিভাজন নেই, এবং আপডেটের সময় সেগুলোকে ফ্যাক্ট টেবিলের সাথে যোগ করা অনেক বেশি রিসোর্স-নিবিড়। জয়নের মূল স্পেস নির্ধারিত হয় যে ফ্যাক্ট টেবিলটি যোগ করা হচ্ছে তার সময়ানুসারে বিভাজন দ্বারা। সেই সময়গত বিভাজন-এ উপস্থিত মাত্রার সত্তুগুলো সম্পূর্ণ মাত্রার ডেটাসেটে থাকা সত্তুগুলোর একটি ছোট উপসেট। ফলস্বরূপ, এই যোগগুলোতে শাফল করা মাত্রার ডেটার অধিকাংশই শেষ পর্যন্ত বাতিল হয়ে যায়। এই প্রক্রিয়াটি অনুকূল করতে এবং অপ্রয়োজনীয় শাফলিং কমাতে, আমরা পৃথক যোগ কী-তে ব্লুম ফিল্টার ব্যবহার করার কথা বিবেচনা করেছি, কিন্তু ফিল্টারের আকার এবং মেমরি ফুটপ্রিন্টের সমস্যায় পড়েছি।

এগুলো সমাধান করতে আমরা Learned Bloom Filters অন্বেষণ করেছি, যা একটি ML-ভিত্তিক সমাধান এবং কম ফালস পজিটিভ রেট বজায় রেখে Bloom Filter-এর আকার কমায়। এই উদ্ভাবন গণনামূলক খরচ কমিয়ে এবং সিস্টেম স্থিতিশীলতা উন্নত করে জয়েন অপারেশনের দক্ষতা বৃদ্ধি করে। নিম্নলিখিত চিত্রটি আমাদের বিতরণকৃত কম্পিউটিং পরিবেশে প্রচলিত এবং অপ্টিমাইজড জয়েন প্রক্রিয়াগুলি চিত্রায়িত করে।

লার্ন্ড ব্লুম ফিল্টার ব্যবহার করে জয়নের দক্ষতা বৃদ্ধি

ফ্যাক্ট টেবিল এবং ডাইমেনশন টেবিলের মধ্যে জয়েন্ট অপ্টিমাইজ করতে আমরা লার্নড ব্লুম ফিল্টার বাস্তবায়ন গ্রহণ করেছি। আমরা ফ্যাক্ট টেবিলে উপস্থিত কী-গুলো থেকে একটি ইনডেক্স তৈরি করেছি এবং পরবর্তীতে জয়েন্ট অপারেশনের আগে ডাইমেনশন ডেটা প্রি-ফিল্টার করার জন্য সেই ইনডেক্সটি ব্যবহার করেছি। 

প্রচলিত ব্লুম ফিল্টার থেকে লার্নড ব্লুম ফিল্টারে বিবর্তন

যদিও প্রচলিত ব্লুম ফিল্টার কার্যকর, এটি আমাদের কাঙ্ক্ষিত ফ্যালস পজিটিভ রেট পেতে প্রতিটি ওয়ার্কার নোডে অতিরিক্ত ১৫-২৫% মেমোরি যোগ করে। কিন্তু লার্নড ব্লুম ফিল্টার ব্যবহার করে আমরা একই ফ্যালস পজিটিভ রেট বজায় রেখে উল্লেখযোগ্যভাবে ছোট ইনডেক্স সাইজ অর্জন করেছি। এর কারণ হল ব্লুম ফিল্টারকে একটি বাইনারি ক্লাসিফিকেশন সমস্যায় রূপান্তর করা হয়েছে। পজিটিভ লেবেল ইনডেক্সে মানের উপস্থিতি নির্দেশ করে, আর নেগেটিভ লেবেল অনুপস্থিতি নির্দেশ করে।

একটি এমএল মডেলের প্রবর্তন মানগুলির প্রাথমিক যাচাইকরণকে সহজ করে, এবং এর পরে ভুল নেগেটিভ দূর করার জন্য একটি ব্যাকআপ ব্লুম ফিল্টার ব্যবহার করা হয়। আকারের এই হ্রাস আসে মডেলের সংকুচিত উপস্থাপনা এবং ব্যাকআপ ব্লুম ফিল্টারের জন্য প্রয়োজনীয় কী-এর সংখ্যা কমে যাওয়ার কারণে। এটিই এটিকে প্রচলিত ব্লুম ফিল্টার পদ্ধতির থেকে পৃথক করে। 

এই কাজের অংশ হিসেবে, আমরা আমাদের লার্নড ব্লুম ফিল্টার পদ্ধতির মূল্যায়নের জন্য দুটি মেট্রিক নির্ধারণ করেছি: সূচকের চূড়ান্ত সিরিয়ালাইজড অবজেক্টের আকার এবং জয়েন কোয়েরিগুলি সম্পাদনের সময় সিপিইউ ব্যবহার। 

বাস্তবায়নের চ্যালেঞ্জ মোকাবেলা

আমাদের প্রাথমিক চ্যালেঞ্জ ছিল এমন একটি অত্যন্ত পক্ষপাতদুষ্ট প্রশিক্ষণ ডেটাসেট মোকাবিলা করা, যেখানে ফ্যাক্ট টেবিলে মাত্র কয়েকটি মাত্রা টেবিলের কী ছিল। এভাবে করার সময়, আমরা টেবিলগুলোর মধ্যে প্রায় প্রতি তিনটির মধ্যে একটি কী-র ওভারল্যাপ লক্ষ্য করেছিলাম। এটি মোকাবিলা করতে, আমরা স্যান্ডউইচ লার্নড ব্লুম ফিল্টার পদ্ধতি [2] ব্যবহার করেছি। এটি একটি প্রাথমিক ঐতিহ্যবাহী ব্লুম ফিল্টারকে একীভূত করে ডেটাসেট বিতরণ পুনঃসামঞ্জস্য করতে, ফ্যাক্ট টেবিল থেকে অনুপস্থিত অধিকাংশ কী অপসারণ করে, কার্যকরভাবে ডেটাসেট থেকে নেতিবাচক নমুনাগুলিকে বাদ দেয়। এরপর, শুধুমাত্র প্রাথমিক ব্লুম ফিল্টারে থাকা কী-গুলো এবং ফ্যালস পজিটিভ-গুলো ML মডেলে পাঠানো হয়, যা প্রায়ই "লার্নড অরাকল" নামে পরিচিত। এই পদ্ধতি লার্নড অরাকলের জন্য একটি সুষম প্রশিক্ষণ ডেটাসেট তৈরি করে, যা পক্ষপাতের সমস্যা কার্যকরভাবে সমাধান করে।

দ্বিতীয় চ্যালেঞ্জটি মডেল আর্কিটেকচার এবং প্রশিক্ষণ বৈশিষ্ট্যগুলোর উপর কেন্দ্রীভূত ছিল। ফিশিং URL-এর ক্লাসিক সমস্যার [1] তুলনায়, আমাদের যোগসূত্র কীগুলো (যা অধিকাংশ ক্ষেত্রে ব্যবহারকারী/অভিজ্ঞতার জন্য অনন্য শনাক্তকারী) স্বভাবতই তথ্যবহুল ছিল না। এর ফলে আমরা ডাইমেনশন অ্যাট্রিবিউটগুলোকে সম্ভাব্য মডেল বৈশিষ্ট্য হিসেবে অনুসন্ধান করতে শুরু করি, যা ডাইমেনশন এন্টিটি ফ্যাক্ট টেবিলে উপস্থিত আছে কিনা তা পূর্বাভাস দিতে সাহায্য করতে পারে। উদাহরণস্বরূপ, কল্পনা করুন একটি ফ্যাক্ট টেবিল যা একটি নির্দিষ্ট ভাষায় অভিজ্ঞতার জন্য ব্যবহারকারী সেশনের তথ্য ধারণ করে। ব্যবহারকারী ডাইমেনশনের ভৌগোলিক অবস্থান বা ভাষা পছন্দ বৈশিষ্ট্যগুলো ভালো সূচক হতে পারে যে কোনো ব্যবহারকারী ফ্যাক্ট টেবিলে আছে কিনা।

তৃতীয় চ্যালেঞ্জ—ইনফারেন্স লেটেন্সি—মডেলগুলোকে মিথ্যা নেগেটিভ কমিয়ে দ্রুত প্রতিক্রিয়া দিতে সক্ষম হতে হতো। এই মূল মেট্রিকগুলোর জন্য গ্রেডিয়েন্ট-বুস্টেড ট্রি মডেল ছিল সেরা পছন্দ, এবং আমরা প্রিসিশন ও গতি বজায় রাখতে এর ফিচার সেট ছাঁটাই করেছি।

আমাদের শেখানো ব্লুম ফিল্টার ব্যবহার করে আপডেট করা জয়েন কোয়েরিটি নিচে দেখানো হলো:

ফলাফল

এখানে আমাদের ডেটা লেকে Learned Bloom ফিল্টার নিয়ে করা পরীক্ষার ফলাফলগুলো দেওয়া হলো। আমরা এগুলোকে পাঁচটি প্রোডাকশন ওয়ার্কলোড-এ একীভূত করেছি, যেগুলোর প্রত্যেকটির ডেটা বৈশিষ্ট্য ভিন্ন। এই ওয়ার্কলোডগুলোর সবচেয়ে গণনামূলকভাবে ব্যয়বহুল অংশ হলো ফ্যাক্ট টেবিল এবং ডাইমেনশন টেবিলের মধ্যে জয়েন। ফ্যাক্ট টেবিলগুলির কী স্পেস ডাইমেনশন টেবিলের প্রায় ৩০%। প্রথমে, আমরা আলোচনা করব কীভাবে লার্নড ব্লুম ফিল্টার চূড়ান্ত সিরিয়ালাইজড অবজেক্টের আকারের দিক থেকে প্রচলিত ব্লুম ফিল্টারকে ছাড়িয়ে গেছে। এরপর, আমরা দেখাই কীভাবে আমাদের ওয়ার্কলোড প্রসেসিং পাইপলাইনে লার্নড ব্লুম ফিল্টার একীভূত করার মাধ্যমে আমরা কর্মক্ষমতা উন্নতি লক্ষ্য করেছি।

লার্ন্ড ব্লুম ফিল্টারের আকারের তুলনা

নিচে দেখানো হয়েছে, একটি নির্দিষ্ট ফালস পজিটিভ রেট বিবেচনা করলে, শেখানো ব্লুম ফিল্টারের দুইটি ভ্যারিয়েন্ট ঐতিহ্যগত ব্লুম ফিল্টারগুলোর তুলনায় মোট অবজেক্টের আকার ১৭–৪২% পর্যন্ত উন্নত করে।

এছাড়াও, আমাদের গ্রেডিয়েন্ট বুস্টেড ট্রি-ভিত্তিক মডেলে বৈশিষ্ট্যের একটি ছোট উপসেট ব্যবহার করে, আমরা ইনফারেন্স দ্রুত করার সময় মাত্র সামান্য শতাংশ অপ্টিমাইজেশনই হারিয়েছি।

শেখা ব্লুম ফিল্টার ব্যবহারের ফলাফল 

এই বিভাগে, আমরা বিভিন্ন মেট্রিক্স জুড়ে ব্লুম ফিল্টার-ভিত্তিক জয়নের কর্মক্ষমতাকে নিয়মিত জয়নের কর্মক্ষমতার সাথে তুলনা করি। 

নিচের টেবিলে লার্নড ব্লুম ফিল্টার ব্যবহারের সঙ্গে এবং ছাড়া ওয়ার্কলোডগুলির কর্মক্ষমতা তুলনা করা হয়েছে। উভয় জয়েন ধরনের জন্য একই ক্লাস্টার কনফিগারেশন বজায় রেখে, মোট ১% মিথ্যা-ইতিবাচক সম্ভাবনা সহ একটি লার্নড ব্লুম ফিল্টার নিচের তুলনাটি প্রদর্শন করে। 

প্রথমত, আমরা দেখেছি যে Bloom Filter বাস্তবায়ন CPU ঘন্টায় নিয়মিত join-এর তুলনায় প্রায় ৬০% বেশি কার্যকর। Bloom Filter মূল্যায়নে অতিরিক্ত গণনার কারণে Learned Bloom Filter পদ্ধতির স্ক্যান ধাপে CPU ব্যবহার বৃদ্ধি পেয়েছে। তবে, এই ধাপে করা প্রি-ফিল্টারিং শাফল হওয়া ডেটার পরিমাণ কমিয়েছে, যা পরবর্তী ধাপগুলোর CPU ব্যবহার কমিয়ে মোট CPU ঘন্টা হ্রাস করেছে।

দ্বিতীয়ত, Learned Bloom Filters-এ নিয়মিত জয়নের তুলনায় মোট ডেটা সাইজ প্রায় ৮০% কম এবং মোট শাফল বাইটের পরিমাণও প্রায় ৮০% কম। এর ফলে নীচে আলোচনা করা মতো জয়নের পারফরম্যান্স আরও স্থিতিশীল হয়। 

পরীক্ষানিরীক্ষার সময় আমাদের অন্যান্য প্রোডাকশন ওয়ার্কলোডগুলিতেও রিসোর্স ব্যবহারের হ্রাস লক্ষ্য করেছি। পাঁচটি ওয়ার্কলোড জুড়ে দুই সপ্তাহের সময়কালে, লার্নড ব্লুম ফিল্টার পদ্ধতি গড়ে দৈনিক ২৫% খরচ সাশ্রয় করেছে, যা মডেল প্রশিক্ষণ এবং সূচক তৈরিকেও অন্তর্ভুক্ত করে।

জয়েন সম্পাদনের সময় শাফল করা ডেটার পরিমাণ কমে যাওয়ার কারণে, আমরা আমাদের অ্যানালিটিক্স পাইপলাইনের অপারেশনাল খরচ উল্লেখযোগ্যভাবে কমাতে পেরেছি এবং এটিকে আরও স্থিতিশীল করতে পেরেছি। নিম্নলিখিত চার্টটি আমাদের পরীক্ষামূলক পাঁচটি ওয়ার্কলোডের জন্য দুই সপ্তাহের সময়কালে একটি নিয়মিত জয়েন ওয়ার্কলোড এবং একটি লার্নড ব্লুম ফিল্টার-ভিত্তিক ওয়ার্কলোডের রান সময় (ওয়াল ক্লক টাইম) এর পরিবর্তনশীলতা (পরিবর্তন সহগ ব্যবহার করে) দেখায়। লার্নড ব্লুম ফিল্টার ব্যবহার করে চালানো রানগুলো আরও স্থিতিশীল—দৈর্ঘ্যে আরও সামঞ্জস্যপূর্ণ—যা এগুলোকে সস্তা, অস্থায়ী এবং অবিশ্বস্ত কম্পিউট রিসোর্সে স্থানান্তর করার সম্ভাবনা উন্মুক্ত করে। 

তথ্যসূত্র

[1] টি. ক্রাসকা, এ. বেটেল, ই. এইচ. চি, জে. ডিন, এবং এন. পলিযোটিস। শেখা সূচক কাঠামোর পক্ষে যুক্তি। https://arxiv.org/abs/1712.01208, ২০১৭।

[2] M. Mitzenmacher. স্যান্ডউইচিংয়ের মাধ্যমে শেখানো ব্লুম ফিল্টারসমূহের অপ্টিমাইজেশন। 

https://arxiv.org/abs/1803.01474, ২০১৮.

¹২০২৩ সালের ৩০ জুন সমাপ্ত ৩ মাসের হিসাবে

²২০২৩ সালের ৩০ জুনে শেষ হওয়া ৩ মাসের হিসাবে