System Design শেখো
শেখো / ML / AI সিস্টেম ডিজাইন

Feature Store

10 মিনিট Module 10 · ML / AI System Design 🔥
এক নজরে
  • Feature store হলো একটি কেন্দ্রীয় system যেখানে ML feature তৈরি, সংরক্ষণ ও পুনঃব্যবহার করা হয়।
  • এর online store দ্রুত serving-এর জন্য, আর offline store training-এর জন্য — দুটোই একই feature definition থেকে আসে বলে train/serve skew কমে।
  • Feast (open-source) ও Tecton (managed) হলো জনপ্রিয় feature store।

সমস্যাটা কী?

একটা বড় company-তে অনেকগুলো ML team থাকে — কেউ fraud detection-এ কাজ করছে, কেউ recommendation-এ, কেউ credit scoring-এ। সবারই একটা common জিনিস দরকার: "user-টি গত ৩০ দিনে মোট কত টাকা খরচ করেছে।" এখন যদি প্রতিটি team আলাদাভাবে এই হিসাব করে, তিনটে সমস্যা হয়:

১. একই কাজ তিনবার হয় (অপচয়)। ২. তিন team তিন রকম হিসাব করে — কেউ refund বাদ দেয়, কেউ দেয় না (inconsistency)। ৩. সবচেয়ে বিপজ্জনক — training-এর সময় এক হিসাব, serving-এর সময় আরেক হিসাব হয়ে train/serve skew তৈরি হয়।

এই বিশৃঙ্খলা সামলাতেই এসেছে feature store

মূল ধারণা

Feature store হলো একটি কেন্দ্রীয় data system যেখানে ML feature-গুলো একবার সংজ্ঞায়িত ও তৈরি হয়, এরপর training ও serving উভয় কাজে নির্ভরযোগ্যভাবে পুনঃব্যবহৃত হয়।

প্রথমে বুঝি feature কী। Feature হলো raw data থেকে বানানো একটা সংখ্যাসূচক signal যা model-কে শেখায়। যেমন raw data হলো "user-এর সব order-এর তালিকা", আর feature হতে পারে "গত ৭ দিনের গড় order মূল্য" বা "শেষ login থেকে কত ঘণ্টা পার হয়েছে।" Model এই feature দেখেই সিদ্ধান্ত নেয়।

Feature store মূলত একটা "library"-র মতো — যেখানে প্রতিটি feature-এর একটা নাম, একটা সংজ্ঞা, আর একটা compute করার নিয়ম লেখা থাকে। যে কেউ সেই নাম দিয়ে feature টেনে নিতে পারে, নতুন করে বানাতে হয় না।

কীভাবে কাজ করে

দুই ধরনের store

Feature store-এর হৃদয়ে দুটি storage থাকে, দুটোর কাজ ভিন্ন:

বৈশিষ্ট্যOffline StoreOnline Store
কাজtraining-এর জন্য historical featureserving-এর জন্য সর্বশেষ feature
প্রযুক্তিdata warehouse (BigQuery, S3)key-value DB (Redis, DynamoDB)
Latencyসেকেন্ড/মিনিট চললেও সমস্যা নেইকয়েক মিলিসেকেন্ড লাগে
Data পরিমাণমাস/বছরের পুরো ইতিহাসশুধু সর্বশেষ মান
পড়ার ধরনবিশাল batch readএকটা একটা lookup

Consistency ও point-in-time correctness

Training-এর সময় একটা সূক্ষ্ম বিপদ আছে — data leakage। ধরো ১ জানুয়ারির একটা prediction-এর জন্য তুমি ভুল করে ৫ জানুয়ারির feature মান ব্যবহার করলে। তখন model "ভবিষ্যৎ দেখে ফেলছে," যা production-এ সম্ভব না। Feature store point-in-time join করে নিশ্চিত করে যে প্রতিটি training row-এ ঠিক সেই সময়ের feature মানই বসছে।

Freshness

Feature কত তাজা সেটাও জরুরি। "user এই মুহূর্তে cart-এ কী রেখেছে" — এই feature কয়েক সেকেন্ড পুরোনো হলেই অকেজো (streaming feature)। আবার "গত ৬ মাসের আয়" প্রতিদিন একবার update করলেই চলে (batch feature)। Feature store দুই ধরনের freshness-ই সামলায়।

সহজ উদাহরণ

ভাবো একটা বড় রান্নাঘরের কেন্দ্রীয় মসলার ভাণ্ডার। আগে প্রতিটি শেফ নিজের মতো করে মসলা গুঁড়ো করত — কারো ঝাল বেশি, কারো কম, একই বিরিয়ানির স্বাদ একেক দিন একেক রকম। এখন একটা কেন্দ্রীয় ভাণ্ডার (feature store) সব মসলা একই মাপে তৈরি করে রাখে। ভাণ্ডারের দুই অংশ — একটা বড় গুদাম (offline store) যেখানে মাসের stock, আর রান্নাঘরের পাশে ছোট তাক (online store) যেখান থেকে শেফ সাথে সাথে হাত বাড়িয়ে মসলা নেয়। সবাই একই মসলা পায়, তাই স্বাদ সবসময় এক।

কৌশল

Feature store ব্যবহারে কিছু সাধারণ pattern:

  1. Materialization: offline-এ হিসাব করা feature নিয়মিত online store-এ "ঠেলে দেওয়া" হয় যাতে serving-এ দ্রুত পাওয়া যায়।
  2. Feature versioning: feature-এর সংজ্ঞা বদলালে নতুন version বানানো হয়, পুরোনো model যেন না ভাঙে।
  3. Shared registry: একটা কেন্দ্রীয় তালিকা যেখানে কোম্পানির সব feature খুঁজে পাওয়া যায় — reuse-এর মূল চাবি।

কখন ব্যবহার করবে / করবে না

Feature store দরকার যখন:

  • একাধিক team বা model একই feature ব্যবহার করে।
  • training আর real-time serving — দুটোই লাগে।
  • train/serve skew বড় সমস্যা হয়ে দাঁড়িয়েছে।

দরকার নেই যখন:

  • ছোট একটা project, একটাই model, শুধু batch prediction।
  • feature-এর সংখ্যা হাতে গোনা আর কেউ reuse করছে না।
সাবধান

Feature store একটা ভারী infrastructure — Redis cluster, warehouse, pipeline, registry সব মিলে যথেষ্ট maintenance খরচ। ছোট startup-এ অনেক সময় এটা over-engineering হয়ে যায়। আগে একটা সহজ shared SQL view বা parquet file দিয়ে চেষ্টা করো; team আর model সংখ্যা বাড়লে তবেই পূর্ণ feature store-এ যাও।

বাস্তব উদাহরণ

Uber-এর "Michelangelo" platform-এ feature store ধারণাটা জনপ্রিয় হয়। তাদের ride-pricing, ETA prediction, fraud — সব model একই feature pool থেকে টানে, যেমন "এই এলাকায় গত ১ ঘণ্টায় কতগুলো trip হয়েছে।"

Open-source জগতে Feast সবচেয়ে পরিচিত — এটি offline store হিসেবে BigQuery/Snowflake আর online store হিসেবে Redis/DynamoDB ব্যবহার করে, একই feature definition থেকে দুই জায়গায় feature serve করে। আর Tecton হলো এর managed, enterprise সংস্করণ যেটি streaming feature, freshness আর monitoring সহ একটা সম্পূর্ণ সমাধান দেয়। দুটোরই মূল প্রতিশ্রুতি একই — "define once, use everywhere, no skew."

টিপস

Interview-এ feature store ব্যাখ্যা করতে গিয়ে শুধু "feature রাখার জায়গা" বললে দুর্বল শোনাবে। জোর দাও দুটো জিনিসে — (১) online/offline consistency দিয়ে train/serve skew কমানো, আর (২) point-in-time correctness দিয়ে data leakage ঠেকানো। এই দুটো বললে বোঝা যাবে তুমি কেন feature store লাগে সেই গভীর কারণটা জানো।

মিনি কুইজ

1. Feature store-এ online আর offline store-এর মূল পার্থক্য কী?

2. Feature store কীভাবে train/serve skew কমায়?

3. Feature reuse-এর সুবিধা কোনটি?