কম্পিউটার

রেডিস দিয়ে ফিস্টে শুরু করা:মেশিন লার্নিং ফিচার স্টোর কুইকস্টার্ট টিউটোরিয়াল

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

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

  1. একটি Parquet ফাইল অফলাইন স্টোর এবং Redis অনলাইন স্টোর সহ একটি স্থানীয় বৈশিষ্ট্য দোকান স্থাপন করুন৷
  2. Parquet ফাইলগুলি থেকে ডেমো টাইম সিরিজ বৈশিষ্ট্যগুলি ব্যবহার করে একটি প্রশিক্ষণ ডেটাসেট তৈরি করুন৷
  3. অফলাইন স্টোর থেকে রেডিস অনলাইন স্টোরে বৈশিষ্ট্যের মানগুলিকে বস্তুগত (লোড) করুন৷
  4. অনুমানের জন্য Redis অনলাইন স্টোর থেকে সর্বশেষ বৈশিষ্ট্যগুলি পড়ুন।

আপনি নীচের নির্দেশিত পদক্ষেপগুলি অনুসরণ করে Google Colab বা আপনার লোকালহোস্টে টিউটোরিয়ালটি চালাতে পারেন।

রেডিস দিয়ে ফিস্টে শুরু করা:মেশিন লার্নিং ফিচার স্টোর কুইকস্টার্ট টিউটোরিয়াল সংক্ষেপে ভোজ:

ফিস্ট (ফিয়া ture st ore) হল একটি ওপেন সোর্স ফিচার স্টোর এবং এটি লিনাক্স ফাউন্ডেশন এআই এবং ডেটা ফাউন্ডেশনের অংশ। এটি একটি কম লেটেন্সি অনলাইন স্টোর (রিয়েল-টাইম পরিবেশনের জন্য) বা একটি অফলাইন স্টোর (মডেল প্রশিক্ষণ বা ব্যাচ পরিবেশনের জন্য) থেকে মডেলগুলিতে বৈশিষ্ট্য ডেটা পরিবেশন করতে পারে। এটি একটি কেন্দ্রীয় রেজিস্ট্রিও প্রদান করে তাই মেশিন লার্নিং ইঞ্জিনিয়ারদের এবং ডেটা সায়েন্টিস্ট এমএল ব্যবহারের ক্ষেত্রে প্রাসঙ্গিক বৈশিষ্ট্যগুলি আবিষ্কার করতে পারে। নীচে ফিস্টের একটি উচ্চ-স্তরের স্থাপত্য রয়েছে:

ফিস্ট হল একটি পাইথন লাইব্রেরি + ঐচ্ছিক CLI। আপনি পিপ ব্যবহার করে ফিস্ট ইনস্টল করতে পারেন, যেমনটি এই টিউটোরিয়ালে শীঘ্রই বর্ণনা করা হবে।

রেডিসের সাথে ফিস্ট এই প্রবাহে বেশ কয়েকটি সাধারণ সমস্যার সমাধান করে:

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

Redis টিউটোরিয়াল ওভারভিউ সহ ভোজ

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

  • একটি রাইড-শেয়ারিং অ্যাপ ব্যবহার করে তারা তাদের অভিজ্ঞতায় কতটা সন্তুষ্ট তা নির্ধারণ করতে আমরা কিছু ড্রাইভারের সমীক্ষা করেছি।
  • আমরা বাকি ব্যবহারকারীদের জন্য ড্রাইভারের সন্তুষ্টির জন্য ভবিষ্যদ্বাণী তৈরি করতে চাই যাতে আমরা সম্ভাব্য অসন্তুষ্ট ব্যবহারকারীদের কাছে পৌঁছাতে পারি।

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

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

ধাপ 1:Redis ইনস্টল করুন এবং পটভূমিতে Redis সার্ভার চালান

Redis ইনস্টল করতে নিচের বিকল্পগুলির একটি অনুসরণ করুন:

উবুন্টু:

$ sudo snap install redis

ডকার:

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

ম্যাক (হোমব্রু):

$ brew install redis

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

ধাপ 2:Redis এর সাথে ফিস্ট ইনস্টল করুন

পিপ ব্যবহার করে ফিস্ট SDK এবং CLI ইনস্টল করুন:

$ pip install 'feast[redis]'
ইনস্টল করুন

ধাপ 3:একটি বৈশিষ্ট্য সংগ্রহস্থল তৈরি করুন এবং অনলাইন স্টোর হিসাবে Redis কনফিগার করুন

একটি বৈশিষ্ট্য সংগ্রহস্থল হল একটি ডিরেক্টরি যাতে বৈশিষ্ট্য স্টোর এবং পৃথক বৈশিষ্ট্যগুলির কনফিগারেশন থাকে।

ধাপ 3a:একটি বৈশিষ্ট্য সংগ্রহস্থল তৈরি করুন

একটি নতুন বৈশিষ্ট্য সংগ্রহস্থল তৈরি করার সবচেয়ে সহজ উপায় হল 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
    ডেমো বৈশিষ্ট্য সংজ্ঞা রয়েছে
  • ডেটা/ কাঁচা ডেমো পারকুয়েট ডেটা রয়েছে

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

Redis-কে অনলাইন স্টোর হিসেবে কনফিগার করতে আমাদের feature_store.yaml-এ অনলাইন_স্টোরের জন্য প্রকার এবং সংযোগ_স্ট্রিং মান সেট করতে হবে নিম্নরূপ:

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

প্রদানকারী স্থানীয়ভাবে এই ডেমোতে অপরিশোধিত ডেটা (প্রশিক্ষণ ডেটা এবং পরিবেশনের জন্য বৈশিষ্ট্য মান তৈরি করার জন্য) কোথায় বিদ্যমান তা নির্ধারণ করে। অনলাইন_স্টোর অনলাইন স্টোর ডাটাবেসে (পরিষেবার জন্য) বৈশিষ্ট্যের মানগুলি কোথায় বাস্তবায়িত (লোড) করতে হবে তা নির্ধারণ করে।

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

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

তাই

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

ধাপ 3c:example.py এ ডেমো বৈশিষ্ট্য সংজ্ঞা পরিদর্শন

আসুন example.py-এ ডেমো বৈশিষ্ট্যের সংজ্ঞাগুলি একবার দেখে নেওয়া যাক (আপনার টার্মিনালে এটি দেখতে আপনি

cat
চালাতে পারেন
example
.
py 
)।

Example.py

ধাপ 3d:কাঁচা ডেটা পরিদর্শন করুন

অবশেষে, আসুন কাঁচা ডেটা পরিদর্শন করি। এই ডেমোতে আমাদের কাছে থাকা কাঁচা ডেটা একটি স্থানীয় parquet ফাইলে সংরক্ষণ করা হয়। ডেটাসেট একটি রাইড-শেয়ারিং অ্যাপে একজন ড্রাইভারের প্রতি ঘন্টায় পরিসংখ্যান ক্যাপচার করে৷

রেডিস দিয়ে ফিস্টে শুরু করা:মেশিন লার্নিং ফিচার স্টোর কুইকস্টার্ট টিউটোরিয়াল

ধাপ 4:বৈশিষ্ট্য সংজ্ঞা নিবন্ধন করুন এবং আপনার বৈশিষ্ট্য দোকান স্থাপন করুন

এখন আমরা

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

$ feast apply

আউটপুট:

Registered entity driver_id
Registered feature view driver_hourly_stats
Deploying infrastructure for driver_hourly_stats

ধাপ 5:প্রশিক্ষণ ডেটা তৈরি করা

একটি মডেল প্রশিক্ষণ, আমাদের বৈশিষ্ট্য এবং লেবেল প্রয়োজন. প্রায়শই, এই লেবেল ডেটা আলাদাভাবে সংরক্ষণ করা হয় (উদাহরণস্বরূপ, আপনার কাছে ব্যবহারকারীর সমীক্ষার ফলাফল সংরক্ষণ করার একটি টেবিল এবং বৈশিষ্ট্যের মান সহ আরেকটি টেবিল রয়েছে)।

ব্যবহারকারী টাইমস্ট্যাম্প সহ লেবেলের সেই টেবিলটি জিজ্ঞাসা করতে পারে এবং ডেটা তৈরির প্রশিক্ষণের জন্য একটি সত্তা ডেটাফ্রেম হিসাবে ফিস্টে পাস করতে পারে। অনেক ক্ষেত্রে, ফিস্ট প্রাসঙ্গিক বৈশিষ্ট্য ভেক্টর তৈরি করতে বুদ্ধিমানের সাথে প্রাসঙ্গিক টেবিলে যোগদান করবে।

  • উল্লেখ্য যে আমরা টাইমস্ট্যাম্পগুলি অন্তর্ভুক্ত করি কারণ আমরা চাই বিভিন্ন টাইমস্ট্যাম্পে একই ড্রাইভারের বৈশিষ্ট্যগুলি একটি মডেলে ব্যবহার করা হোক৷

পাইথন

(নীচের কোডটি 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]

ধাপ 6:আপনার Redis অনলাইন স্টোরে বৈশিষ্ট্য লোড করুন

আমরা এখন আপনার Redis অনলাইন স্টোরে বৈশিষ্ট্য ডেটা লোড করব বা বাস্তবায়িত করব যাতে আমরা অনলাইন ভবিষ্যদ্বাণীর জন্য মডেলগুলিতে সর্বশেষ বৈশিষ্ট্যগুলি পরিবেশন করতে পারি।

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

$ 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]

পদক্ষেপ 7:অনুমানের জন্য বৈশিষ্ট্য ভেক্টর আনা

অনুমান করার সময়, আমাদের

get_online_features()
ব্যবহার করে Redis অনলাইন ফিচার স্টোর থেকে বিভিন্ন ড্রাইভারের জন্য (যা অন্যথায় শুধুমাত্র ব্যাচের উত্সগুলিতে বিদ্যমান থাকতে পারে) জন্য সর্বশেষ বৈশিষ্ট্যের মানগুলি দ্রুত পড়তে হবে। . এই বৈশিষ্ট্য ভেক্টর তারপর মডেল খাওয়ানো যেতে পারে.

পাইথন

(নীচের কোডটি একটি ফাইলে অনুলিপি করুন 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 ব্যবহারের ক্ষেত্রে খুব দ্রুত লেটেস্ট ফিচার পড়তে পারবেন, কম লেটেন্সি এবং স্কেলে উচ্চ থ্রুপুট সহ।

এরপর কি?

  • ফিস্ট ডেটা মডেল বুঝতে ফিস্ট ধারণা পৃষ্ঠাটি পড়ুন এবং ফিস্ট আর্কিটেকচার পৃষ্ঠাটি পড়ুন৷
  • Redis এর সাথে ফিস্টের জন্য সম্পূর্ণ কনফিগারেশন গাইড পড়ুন, এবং Redis-এ বৈশিষ্ট্য মান সংরক্ষণ করতে ব্যবহৃত ডেটা মডেলটি পড়ুন।
  • কেস স্টাডিজ – আপনার সহকর্মীদের থেকে শিখুন:কীভাবে কোম্পানিগুলি অনলাইন স্টোর (Wix, Swiggy, Comcast, Zomato, AT&T, DoorDash, iFood) হিসাবে Redis-এর সাথে ফিচার স্টোরগুলি ব্যবহার করছে এবং বিশেষভাবে কীভাবে তারা Redis এর সাথে Feast ব্যবহার করছে তা জানুন তাদের অনলাইন স্টোর (গোজেক, উদান, রবিনহুড)।
  • ফিস্ট এবং রেডিসের সাথে Azure পরিচালিত ফিচার স্টোর সম্পর্কে পড়ুন এবং Azure টিউটোরিয়ালের পাশাপাশি অন্যান্য ফিস্ট টিউটোরিয়ালের সাথে ফিস্টের সাথে শুরু করুন
  • আপনি যথাক্রমে ফিস্ট এবং রেডিসের সাধারণ পণ্য পরিচিতি পৃষ্ঠাগুলিতে ফিস্ট বা রেডিস সম্পর্কে আরও তথ্য সন্ধান করতে পারেন।

স্ল্যাকের অন্যান্য ফিস্ট ব্যবহারকারী এবং অবদানকারীদের সাথে যোগ দিন এবং সম্প্রদায়ের অংশ হয়ে উঠুন!


  1. উদাহরণ সহ Redis GEORADIUSBYMEMBER কমান্ড - Redis টিউটোরিয়াল

  2. Apple TV+

  3. ওয়েবের জন্য Android মেসেজ দিয়ে শুরু করা

  4. Xen ভার্চুয়ালাইজেশন দিয়ে শুরু করা