কম্পিউটার টিউটোরিয়াল

Feast এবং Redis কুইকস্টার্ট: মিনিটে একটি স্কেলেবল ML ফিচার স্টোর বানান

এই টিউটোরিয়ালটি একটি ধাপে ধাপে Feast for Redis কুইকস্টার্ট প্রদান করে যা Feast-কে Redis-কে এর অনলাইন ফিচার স্টোর হিসেবে ব্যবহার করে মেশিন লার্নিং-এ এর اند-টু-এন্ড উদাহরণে নিয়ে যাবে। এটি Feast Quickstart টিউটোরিয়ালের ওপর ভিত্তি করে, কিন্তু ডিফল্ট অনলাইন স্টোরের বদলে, এটি রিয়েল-টাইম প্রেডিকশন বড় স্কেলে ডেলিভার করার জন্য Redis অনলাইন স্টোর ব্যবহার করে। আপনি যদি Feast বা Redis-র সাথে পরিচিত না হন, তবে Feast-কে Redis-র সাথে শুরু করার সবচেয়ে দ্রুত উপায় এই টিউটোরিয়াল। ফিচার স্টোর এবং Feast using Redis ব্লগ আর্টিকেলটি হাই-লেভেল পরিচিতির জন্য রেফার করুন। Redis এবং Feast-র উপর আরও বিস্তারিত তথ্য এবং অতিরিক্ত রিসোর্সগুলো এই টিউটোরিয়ালের শেষে উপলব্ধ।

এই টিউটোরিয়ালে আপনি:

  1. একটি লোকাল ফিচার স্টোর ডিপ্লয় করুন Parquet ফাইল অফলাইন স্টোর এবং Redis অনলাইন স্টোর সহ।
  2. Parquet ফাইল থেকে ডেমো টাইম সিরিজ ফিচার ব্যবহার করে একটি ট্রেনিং ডেটাসেট বানান।
  3. অফলাইন স্টোর থেকে ফিচার ভ্যালুইগুলো ম্যাটেরিয়ালাইজ (লোড) করুন Redis অনলাইন স্টোরে।
  4. ইনফারেন্সের জন্য Redis অনলাইন স্টোর থেকে লেটেস্ট ফিচারগুলো পড়ুন।

আপনি টিউটোরিয়ালটি Google Colab-এ বা আপনার লোকালহোস্টে নিচের গাইডেড ধাপগুলো অনুসরণ করে চালাতে পারেন।

Feast এবং Redis কুইকস্টার্ট: মিনিটে একটি স্কেলেবল ML ফিচার স্টোর বানান

Feast সংক্ষেপে:

Feast (Feature store) একটি ওপেন সোর্স ফিচার স্টোর এবং Linux Foundation AI & Data Foundation-এর অংশ। এটি ফিচার ডেটা মডেলগুলোর কাছে সার্ভ করতে পারে একটি লো-লেটেন্সি অনলাইন স্টোর থেকে (রিয়েল-টাইম সার্ভিং-এর জন্য) বা একটি অফলাইন স্টোর থেকে (মডেল ট্রেনিং বা ব্যাচ সার্ভিং-এর জন্য)। এটিও একটি সেন্ট্রাল রেজিস্ট্রি প্রদান করে যাতে মেশিন লার্নিং ইঞ্জিনিয়াররা এবং ডেটা সায়েন্টিস্টরা ML ইউজ কেসের জন্য প্রাসঙ্গিক ফিচারগুলো ডিসকভার করতে পারে। নিচে Feast-এর একটি হাই-লেভেল আর্কিটেকচার দেওয়া হলো:

Feast একটি Python লাইব্রেরি + অপশনাল CLI। Feast ইনস্টল করা যায় pip ব্যবহার করে, যা এই টিউটোরিয়ালে শীঘ্রই বর্ণনা করা হবে।

Redis-র সাথে Feast এই ফ্লোতে বেশ কিছু সাধারণ সমস্যা সমাধান করে:

  1. ট্রেনিং-সার্ভিং স্কিউ এবং জটিল ডেটা জয়েন: ফিচার ভ্যালুগুলো প্রায়শ একাধিক টেবিলে অস্তিত্বে থাকে। এই ডেটাসেটগুলো জয়েন করা জটিল, ধীর, এবং এরর-প্রোন হতে পারে।
    • Feast এই টেবিলগুলো ব্যাটল-টেস্টেড লজিক দিয়ে জয়েন করে যা পয়েন্ট-ইন-টাইম করেক্টনেস নিশ্চিত করে যাতে ভবিষ্যতের ফিচার ভ্যালু মডেলগুলোর কাছে লিক করে না।
  2. কম লেটেন্সি এবং স্কেলে অনলাইন ফিচার উপলব্ধতা: ইনফারেন্স টাইমে, মডেলগুলো প্রায়শই ফিচার এক্সেস করতে চায় যা সহজে উপলব্ধ নয় এবং রিয়েল-টাইমে অন্যান্য ডেটা সোর্স থেকে প্রিকম্পিউট করতে হয়।
    • Feast-কে Redis-র সাথে ডিপ্লয় করে আপনি নিশ্চিত করবেন যে প্রয়োজনীয় ফিচারগুলো কনসিস্টেন্টলি উপলব্ধ এবং ইনফারেন্স টাইমে তাজা কম্পিউটেড, কম লেটেন্সি এবং হাই থ্রুপুট সহ।
  3. ফিচার রিয়ুজেবিলিটি এবং মডেল ভার্সনিং: একটি প্রতিষ্ঠানের ভিন্ন টিমগুলো প্রায়শই প্রজেক্টগুলোর মাঝপথে ফিচার রিয়ুজ করতে পারে না, যার ফলে ডুপ্লিকেট ফিচার ক্রিয়েশন লজিক সৃষ্টি হয়। মডেলগুলোর ডেটা ডিপেন্ডেন্সি থাকে যা ভার্সনিং দরকার, যেমন A/B টেস্ট করার সময় মডেল ভার্সনগুলো রান করা।
    • Feast পূর্বে ব্যবহৃত ফিচারগুলো ডিসকভার এবং কোলাবোরেশন সক্ষম করে এবং ফিচার সেটগুলোর ভার্সনিং সক্ষম করে (ফিচার সার্ভিসের মাধ্যমে)।
    • Feast ফিচার ট্রান্সফরমেশন সক্ষম করে যাতে ব্যবহারকারীরা অনলাইন/অফলাইন ইউজ কেস এবং মডেলগুলোর মাঝপথে ট্রান্সফরমেশন লজিক রিয়ুজ করতে পারে।

Redis-র সাথে Feast টিউটোরিয়াল ওভারভিউ

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

  • আমরা কিছু ড্রাইভার সার্ভে করেছি কিভাবে সন্তুষ্ট वो একটি রাইড-শেয়ারিং অ্যাপ ব্যবহার করার অভিজ্ঞতাকে लेकर।
  • আমরা বাকি ব্যবহারকারীদের জন্য ড্রাইভার স্যাটিসফ্যাকশনের প্রেডিকশন জেনারেট করতে চাই যাতে আমরা পোটেনশিয়ালি অসন্তুষ্ট ব্যবহারকারীদের কাছে পৌঁছাতে পারি।

টিউটোরিয়াল ধাপগুলো:

  1. Redis ইনস্টল করুন এবং Redis-Server ব্যাকগ্রাউন্ডে চালু করুন
  2. Redis-র সাথে Feast ইনস্টল করুন
  3. একটি ফিচার রিপোজিটরি তৈরি করুন এবং Redis-কে অনলাইন স্টোর হিসেবে ডিফাইন করুন
  4. ফিচার ডেফিনিশন রেজিস্টার করুন এবং আপনার ফিচার স্টোর ডিপ্লয় করুন
  5. ট্রেনিং ডেটা জেনারেট করুন
  6. আপনার Redis অনলাইন স্টোরে ফিচার লোড করুন
  7. ইনফারেন্সের জন্য ফিচার ভেক্টর ফেচ করুন

ধাপ ১: Redis ইনস্টল করুন এবং Redis server ব্যাকগ্রাউন্ডে চালু করুন

Redis ইনস্টল করতে নিচের অ্যাল্টারনেটিভগুলোর একট্টি ফলো করুন:

Ubuntu:

$ sudo snap install redis

Docker:

$ docker run --name redis --rm -p 6379:6379 -d redis

Mac (Homebrew):

$ brew install redis

Redis ইনস্টল করার অন্যান্য উপায় সম্পর্কে অতিরিক্ত তথ্য এখানে পাওয়া যাবে। অতিরিক্ত কনফিগারেশন ইনফরমেশন Redis Quick Start গাইডে পাওয়া যাবে।

ধাপ ২: Redis-র সাথে Feast ইনস্টল করুন

pip ব্যবহার করে Feast SDK এবং CLI ইনস্টল করুন:

$ pip install 'feast[redis]'

ধাপ ৩: একটি ফিচার রিপোজিটরি তৈরি করুন এবং Redis-কে অনলাইন স্টোর হিসেবে কনফিগার করুন

একটি ফিচার রিপোজিটরি হলো একটি ডিরেক্টরি যাতে ফিচার স্টোরের কনফিগারেশন এবং ইনডিভিজুয়াল ফিচারগুলো থাকে।

ধাপ ৩a: একটি ফিচার রিপোজিটরি তৈরি করুন

একটি নতুন ফিচার রিপোজিটরি তৈরি করার সবচেয়ে সহজ উপায় হলো feast init কমান্ড ব্যবহার করা। এটি ইনিশিয়াল ডেমো ডেটা সহ একটি স্কাফফোল্ডিং তৈরি করে।

$ feast init feature_repo $ cd feature_repo

আউটপুট:

Creating a new Feast repository in /Users/nl/dev_fs/feast/feature_repo

ফলস্বরূপ ডেমো রিপোটি দেখি। এটি ব্রেক ডাউন হয়ে যায়:

  • feature_store.yaml একটি ডেমো সেটআপ ধারণ করে ডেটা সোর্স এবং অনলাইন স্টোর কনফিগার করে
  • example.py
    ডেমো ফিচার ডেফিনিশন ধারণ করে
  • data/ কাঁচা ডেমো parquet ডেটা ধারণ করে

ধাপ ৩b: YAML কনফিগারেশন ফাইলে Redis-কে অনলাইন স্টোর হিসেবে কনফিগার করুন

Redis-কে অনলাইন স্টোর হিসেবে কনফিগার করতে, feature_store.yaml-এ online_store-এর জন্য type এবং connection_string ভ্যালু সেট করতে হবে নিচের মত করে:

project: my_project
registry: data/registry.db
provider: local
online_store:
type: redis
connection_string: localhost:6379

প্রোভাইডার ডিফাইন করে কাঁচা ডেটা কোথায় আছে (ট্রেনিং ডেটা এবং সার্ভিং-এর জন্য ফিচার ভ্যালু জেনারেট করার জন্য) এই ডেমোতে, লোকালি। online_store ডিফাইন করে কোথায় ম্যাটেরিয়ালাইজ (লোড) করতে হবে ফিচার ভ্যালু অনলাইন স্টোর ডাটাবেসে (সার্ভিং-এর জন্য)।

দ্রষ্টব্য যে উপরের কনফিগারেশন টিউটোরিয়ালের জন্য প্রদত্ত ডিফল্ট YAML ফাইল থেকে আলাদা যা পরিবর্তে ডিফল্ট অনলাইন স্টোর ব্যবহার করে :

project: my_project
registry: data/registry.db
provider: local
online_store:
path: data/online_store.db

সেজন্য YAML ফাইলে online_store-এর জন্য এই দুটি লাইন যোগ করে (

type: redis, connection_string: localhost:6379
) উপরের মত করে, Feast তারপর Redis-কে তার অনলাইন স্টোর হিসেবে পড়তে এবং লিখতে সক্ষম হয়। Redis Online Store Feast কোর কোডের অংশ, এবং তাই, Feast জানে কীভাবে Redis-কে আউট-অফ-দ-বক্স ব্যবহার করতে হয়।

ধাপ ৩c: example.py-এ ডেমো ফিচার ডেফিনিশন ইন্সপেক্ট করা

চলুন example.py-এ ডেমো ফিচার ডেফিনিশনটি দেখি (টার্মিনালে দেখতে

cat
example
.
py 
রান করুন)।

Example.py

ধাপ ৩d: কাঁচা ডেটা ইন্সপেক্ট করুন

শেষে, কাঁচা ডেটা ইন্সপেক্ট করুন। এই ডেমোতে আমাদের কাঁচা ডেটা একটি লোকাল parquet ফাইলে সংরক্ষিত। ডেটাসেটটি একটি রাইড-শেয়ারিং অ্যাপে একটি ড্রাইভারের ঘন্টাভিত্তিক স্ট্যাটস ক্যাপচার করে।

Feast এবং Redis কুইকস্টার্ট: মিনিটে একটি স্কেলেবল ML ফিচার স্টোর বানান

ধাপ ৪: ফিচার ডেফিনিশন রেজিস্টার করুন এবং আপনার ফিচার স্টোর ডিপ্লয় করুন

এখন আমরা

feast apply
রান করি example.py-এ ডেফাইন করা ফিচার ভিউ এবং এন্টিটি রেজিস্টার করতে। apply কমান্ডটি কারেন্ট ডিরেক্টরিতে পাইথন ফাইলগুলো স্ক্যান করে ফিচার ভিউ/এন্টিটি ডেফিনিশন খুঁজে বের করতে, অবজেক্টগুলো রেজিস্টার করতে, এবং ইনফ্রাস্ট্রাকচার ডিপ্লয় করতে। এই উদাহরণে, এটি example.py পড়ে (উপর দেখানো হয়েছে) এবং Redis অনলাইন স্টোর সেট আপ করে।

$ feast apply

আউটপুট:

Registered entity driver_id
Registered feature view driver_hourly_stats
Deploying infrastructure for driver_hourly_stats

ধাপ ৫: ট্রেনিং ডেটা জেনারেট করা

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

ব্যবহারকারী সেটি লেবেলের টেবিলকে টাইমস্ট্যাম্পসহ কোয়েরি করতে পারে এবং সেটিকে Feast-এ এন্টিটি ডেটাফ্রেম হিসেবে পাস করতে পারে ট্রেনিং ডেটা জেনারেশনের জন্য। অনেক কেসে, Feast ইন্টেলিজেন্টলি প্রাসঙ্গিক টেবিলগুলো জয়েন করবে প্রাসঙ্গিক ফিচার ভেক্টর তৈরি করতে।

  • দ্রষ্টব্য যে আমরা টাইমস্ট্যাম্পস অন্তর্ভুক্ত করেছি কারণ আমরা একই ড্রাইভারের জন্য ভিন্ন টাইমস্ট্যাম্পে ফিচারগুলো একটি মডেলে ব্যবহার করতে চাই।

Python

(নিচের কোডটি কপি করে gen_train_data.py ফাইলে পেস্ট করুন এবং তারপর রান করুন):

আউটপুট:

----- Feature schema -----

<class 'pandas.core.frame.DataFrame'>
Int64Index: 3 entries, 0 to 2
Data columns (total 6 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 event_timestamp 3 non-null datetime64[ns, UTC]
1 driver_id 3 non-null int64
2 label_driver_reported_satisfaction 3 non-null int64
3 conv_rate 3 non-null float32
4 acc_rate 3 non-null float32
5 avg_daily_trips 3 non-null int32
dtypes: datetime64[ns, UTC](1), float32(2), int32(1), int64(2)
memory usage: 132.0 bytes
None

----- Example features -----

event_timestamp driver_id ... acc_rate avg_daily_trips
0 2021-08-23 15:12:55.489091+00:00 1003 ... 0.120588 938
1 2021-08-23 15:49:55.489089+00:00 1002 ... 0.504881 635
2 2021-08-23 16:14:55.489075+00:00 1001 ... 0.138416 606

[3 rows x 6 columns]

ধাপ ৬: আপনার Redis অনলাইন স্টোরে ফিচার লোড করা

আমরা এখন ফিচার ডেটা আপনার Redis অনলাইন স্টোরে লোড বা ম্যাটেরিয়ালাইজ করব যাতে আমরা লেটেস্ট ফিচার মডেলগুলোর কাছে অনলাইন প্রেডিকশনের জন্য সার্ভ করতে পারি।

materialize
কমান্ডটি ব্যবহারকারীদের একটি নির্দিষ্ট ঐতিহাসিক টাইম রেঞ্জের ওপর ফিচার ম্যাটেরিয়ালাইজ করতে দেয় অনলাইন স্টোরে। এটি প্রদত্ত টাইম রেঞ্জের ওপর সকল ফিচার ভিউর জন্য ব্যাচ সোর্স কোয়েরি করবে, এবং কনফিগার্ড অনলাইন স্টোরে লেটেস্ট ফিচার ভ্যালুগুলো লোড করবে।
materialize
–
incremental
কমান্ডটি শুধু সেই নতুন ডেটা ইনজেস্ট করবে যা অফলাইন স্টোরে এসেছে, গত materialize কলের পর থেকে।

$ CURRENT_TIME=$(date -u +"%Y-%m-%dT%H:%M:%S")
$ feast materialize-incremental $CURRENT_TIME

আউটপুট:

Materializing 1 feature views to 2021-08-23 16:25:46+00:00 into the redis online store.

driver_hourly_stats from 2021-08-22 16:25:47+00:00 to 2021-08-23 16:25:46+00:00:
100%|████████████████████████████████████████████| 5/5 [00:00<00:00, 592.05it/s]

ধাপ ৭: ইনফারেন্সের জন্য ফিচার ভেক্টর ফেচ করা

ইনফারেন্স টাইমে, আমাদের দ্রুত পড়তে হবে লেটেস্ট ফিচার ভ্যালুগুলো ভিন্ন ড্রাইভারদের জন্য (যা অন্যথায় ব্যাচ সোর্সে মাত্র থাকতে পারে) Redis অনলাইন ফিচার স্টোর থেকে,

get_online_features()
ব্যবহার করে। এই ফিচার ভেক্টরগুলো তারপর মডেলে ফিড করা যায়।

Python

(নিচের কোডটি কপি করে get_feature_vectors.py ফাইলে পেস্ট করুন এবং তারপর রান করুন):

আউটপুট

{
'acc_rate': [0.5732735991477966, 0.7828438878059387],
'avg_daily_trips': [33, 984],
'conv_rate': [0.15498852729797363, 0.6263588070869446],
'driver_id': [1004, 1005]
}

অভিনন্দন! আপনি টিউটোরিয়ালের শেষে পৌঁছেছেন। ব্যাকগ্রাউন্ডে চলমান Redis সার্ভার বন্ধ করতে আপনি

redis-cli shutdown
কমান্ড ব্যবহার করতে পারেন।

টিউটোরিয়াল রিক্যাপ:

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

পরবর্তী কী?

  • Feast Concepts পেজ পড়ুন Feast ডেটা মডেল বুঝতে, এবং Feast Architecture পেজ পড়ুন।
  • Redis-র সাথে Feast-র পূর্ণ কনফিগারেশন গাইড পড়ুন, এবং Redis-এ ফিচার ভ্যালু স্টোর করতে ব্যবহৃত ডেটা মডেল।
  • কেস স্টাডিজ – আপনার পিয়াররা থেকে শিখুন: কীভাবে কোম্পানি গুলো ফিচার স্টোর ব্যবহার করছে Redis-কে অনলাইন স্টোর হিসেবে (Wix, Swiggy, Comcast, Zomato, AT&T, DoorDash, iFood), এবং নির্দিষ্টভাবে কীভাবে তারা Feast-কে Redis-র সাথে ব্যবহার করছে তাদের অনলাইন স্টোরের জন্য (Gojek, Udaan, Robinhood)।
  • Azure Managed Feature Store with Feast and Redis সম্পর্কে পড়ুন এবং Getting started with Feast on Azure টিউটোরিয়াল ফলো করুন সেই সাথে অন্যান্য Feast টিউটোরিয়ালগুলো।
  • আপনি Feast বা Redis-র উপর আরও ইনফো খুঁজতে পারেন Feast এবং Redis-এর জেনারেল প্রোডাক্ট ইন্ট্রোডাকশন পেজগুলতে।

Slack-এ অন্যান্য Feast ব্যবহারকারী এবং কন্ট্রিবিউটারদের সাথে যোগদান করুন এবং কমিউনিটির অংশ बनুন!


  1. রেডিস GEORADIUSBYMEMBER ব্যবহার: উদাহরণসহ ব্যাবহারিক গাইড

  2. Apple TV+ নবীনের গাইড: সাইন আপ, নেভিগেট, এবং এক্সক্লूसিভ কন্টেন্ট উপভোগ

  3. Android Messages for Web মাস্টার করুন: দ্রুত সেটআপ ও টিপস

  4. Xen ভার্চুয়ালাইজেশনের সাথে শুরু: একটি কম্প্রিহেনসিভ বিগিনার্স গাইড