مخازن ميزات التعلُّم الآلي (ML) قد جذبت الانتباه والاستخدام لتطبيقات الأعمال الحرجة منذ أن عرَّفت أوبر المفهوم مع ميشيلأنجلو في عام 2017. في هذا المقال، سنتعمق في أساسيات مخازن ميزات ML ونستكشف السبب وكيف يمكن لـ ScyllaDB أن يكون جزءًا حاسمًا من بنيتكم التحتية لمخزن الميزات.
لفهم ما هي مخازن الميزات، من الضروري أولاً فهم ما هي الميزات.
ما هي الميزة؟
في التعلم الآلي، الميزة هي مجموعة من نقاط البيانات التي يمكن استخدامها لتدريب نموذج وإجراء توقعات حول المستقبل بناءً على البيانات التاريخية. على سبيل المثال، تطبيقنا عينة مخزن الميزات يتيح لك إجراء توقعات بشأن تأخر الرحلات الجوية بناءً على سجلات الرحلات التاريخية.
الميزات هي نتيجة عمليات معالجة البيانات المعقدة وخطوط الإنتاج المتحولة. كميات هائلة من بيانات الميزة تمكِّن التوقعات الدقيقة ومشاريع التعلم الآلي الناجحة.
ما هو مخزن الميزات؟
A feature store is a central database in your machine-learning architecture that contains your real-time and historical features. Feature stores allow your data engineers and data scientists to use the same central repository to discover, monitor, and analyze features.
What does a feature store architecture look like?
قواعد بيانات على الإنترنت وخارجها في مخزن الميزات
عندما نتحدث عن مخازن الميزات، يميز المستخدمون عادةً بين نوعين من قواعد البيانات في بنيتهم. من ناحية، يستخدمون قاعدة بيانات على الإنترنت، ومن ناحية أخرى، قد يمتلكون أيضًا قاعدة بيانات خارج الإنترنت. تخدم هذه القواعد بيانات أغراض مختلفة.
قاعدة بيانات خارج الخط: تخزن هذه النوعية من القواعد البيانات الميزات المعالجة التاريخية، وعادة ما تضاف بشكل جماعي. تغطي قواعد البيانات خارج الخط بيانات الميزات لفترة زمنية شاسعة من التاريخ؛ ومن ثم، فهي مفيدة للعمل مع مجموعة من الميزات في فترة معينة من التاريخ.
قاعدة بيانات على الخط: قد تحتوي هذه القاعدة البيانات على بيانات من تيارات البيانات الفورية والقاعدة البيانات خارج الخط أيضًا. يتم استخدام التخزين على الخط لخدمة نموذج الإنتاج وتطبيقات فورية أخرى بالبيانات الميزة الأخيرة. الأداء والتأخير القليل مهم حقًا هنا. إذا لم تكن قواعد بياناتك قادرة على توفير الميزات الفورية بسرورية، فقد يستخدم نموذجك بيانات قديمة أو غير دقيقة للتنبؤ.
نمذجة البيانات في متجر الميزة: تصميم الجداول الواسعة مقابل الضيق
عند تصميم نموذج البيانات داخل متجر الميزة، سواء كان خارج الخط أو على الخط، يمكنك اختيار بين نوعين من تصاميم الجداول: الواسعة والضيقة. كل منها له مزايا وعيوبها. دعونا نرى أمثلة فعلية لكليهما ولماذا قد لا تكون الأفضل لحالتك الاستخدام:
تصميم الجدول الواسع
يشمل تصميم الجدول الواسع أعمدة منفصلة لكل ميزة. كلما زادت أنواع الميزات التي تريد تخزينها في الجدول، زاد عدد الأعمدة التي يجب إنشاؤها.
مثال لتخطيط الجدول الواسع
create table feature_store.wide_example( | |
date TIMESTAMP, | |
feature_id INT, | |
feature_col1 FLOAT, | |
feature_col2 FLOAT, | |
feature_col3 FLOAT, | |
feature_col4 FLOAT, | |
feature_col5 FLOAT, | |
feature_col6 FLOAT, | |
feature_col7 FLOAT | |
) |
يمكن أن يكون هذا النوع من التخطيط سهل البدء به، لكنه يصبح أكثر تعقيدًا للحفاظ عليه مع مرور الوقت وصعب الإجراء تغييرات عليه. كلما أردت إدخال ميزة جديدة (أو إلغاء وجود ميزة موجودة)، يجب تعديل المخطط، وهو ما يمكن أن يكون معقدًا.
تصميم الجدول الضيق
تصاميم الجداول الضيقة مبسطة وأسهل في الصيانة. وذلك لأن عدد الأعمدة لا يهمل زيادة أو نقصان في المستقبل، حتى لو أضفت أو قمت بإزالة ميزات.
مثال على تخطيط جدول ضيق
create table feature_store.narrow_example( | |
feature_id INT, | |
feature_name TEXT, | |
feature_value FLOAT | |
) |
باستخدام هذا التخطيط، يمكنك الاستمرار في استخدام عمودين ثابتين فقط على المدى الطويل لتخزين الميزات. واحد لاسم الميزة (على سبيل المثال، تأخير الطائرات المتأخرة) وواحد لقيمة هذه الميزة.
بشكل عام، قد تتطلب الجداول الضيقة إلقاء نوع البيانات عند استرداد البيانات لأنها ليست في الشكل الصحيح (على سبيل المثال، نوع العمود هو FLOAT، ولكن في الواقع، قيمة البيانات هي INTEGER). لحسن الحظ، عندما نتحدث عن مخازن الميزات، تكون المخازن على الإنترنت وخارجها قد أصبحت بياناتها في شكل رقم نظيف (FLOAT)، وجميع القيم لها نفس النوع بيانات، مما يعني أن هذا ليس عيبًا في حالة مخازن الميزات.
ما هو ScyllaDB، وكيف يمكن استخدامه في بنية مخزن الميزات الخاصة بك؟
من أجل بناء تطبيقات الاستدلال الفوري من قبل فرق التعلم الآلي، يحتاجون إلى قواعد بيانات يمكنها إرجاع الميزات على نطاق واسع بتأخير قصير. ScyllaDB هي قاعدة بيانات NoSQL عالية الأداء وخفيفة التأخير تستطيع التعامل مع حجم كبير من عمليات القراءة والكتابة. علاوة على ذلك، ScyllaDB هي قاعدة بيانات موثوق بها لعبور حملات مخزن الميزات الحيوية في شركات مثل GE Healthcare أو ShareChat. بسبب توافرها العالي وقدرتها على البقاء، يمكنها القيام بالأعمال الثقيلة في بنيتك التحتية حيث الأداء والموثوقية مهمة.
علاوة على استخدام ScyllaDB كمخزن على الإنترنت في هيكل متجر الميزات الخاص بك، يتم استخدام ScyllaDB أيضًا كحل تخزين هجين على الإنترنت/خارج الإنترنت. بهذه الطريقة، يمكنك تخفيض عبء الصيانة على فريقك من خلال امتلاك قاعدة بيانات واحدة لخدمة جميع أعمال متجر الميزات الخاص بك.
عادةً ما يضع المستخدمون ScyllaDB في وسط هيكلتهم لإبقاء واسترداد الميزات ومعلومات متجر الميزات. في هذه الحالة، يعمل ScyllaDB كمخزن على الإنترنت. يستخدم المستخدمون الآخرون أيضًا ScyllaDB كحل تخزين هجين على الإنترنت/خارج الإنترنت. الأداء هو متطلب أساسي لتسريع تطوير النماذج، وأداء ScyllaDB في القراءة والكتابة يلبي باستمرار أو يتجاوز توقعات المستخدمين.
في الواقع، وجد بعض المستخدمين أن ScyllaDB يمكن أن يحل محل قواعد بيانات متعددة ويعمل كمخزن مركزي واحد لجميع احتياجات بيانات التعلم الآلي. على سبيل المثال، يمكن لـ ScyllaDB استبدال Redis (مخزن على الإنترنت) و PostgreSQL (مخزن خارج الإنترنت) – مما يجعل صيانة البنية التحتية أقل تكلفة وأبسط.
تتميز ScyllaDB في حالات الاستخدام التي تتطلب تأخيرًا منخفضًا وأداءً عاليًا. علاوة على ذلك، يتوافق ScyllaDB مع Cassandra و DynamoDB مما يعني أنه إذا كنت تستخدم بالفعل إحدى هذه القواعد البيانات، يمكنك التوصيل بسلاسة دون الحاجة إلى تغيير الاستعلامات الخاصة بك.
دليل التعلم: مخزن ScyllaDB على الإنترنت
لمساعدتك على البدء بـ ScyllaDB كمخزن على الإنترنت، قمنا بإنشاء تطبيق نموذجي (كما هو متاح على GitHub).
- استنساخ المستودع
- التسجيل في ScyllaDB Cloud أو تثبيت ScyllaDB محليًا
- إنشاء المخطط:
cqlsh "node-0.aws_us_east_1.xxxxxxxxx.clusters.scylla.cloud" 9042 -u scylla -p "password" -f schema.cql
- الاتصال بالعقدة باستخدام cqlsh واستيراد مجموعة نموذجية من البيانات
cqlsh "node-0.aws_us_east_1.xxxxxxxxx.clusters.scylla.cloud" 9042 -u scylla -p "password" scylla@cqlsh> COPY feature_store.flight_features FROM 'flight_features.csv';
هذا الأمر يغذي مجموعة نموذجية من بيانات الرحلات:
op_carrier_fl_num|actual_elapsed_time|air_time|arr_delay|arr_time|cancellation_code|cancelled|carrier_delay|crs_arr_time|crs_dep_time|crs_elapsed_time|dep_delay|dep_time|dest|distance|diverted|fl_date |late_aircraft_delay|nas_delay|op_carrier|origin|security_delay|taxi_in|taxi_out|weather_delay|wheels_off|wheels_on| | |
—————–+——————-+——–+———+——–+—————–+———+————-+————+————+—————-+———+——–+—-+——–+——–+——————-+——————-+———+———-+——+————–+——-+——–+————-+———-+———+ | |
4317| 96.0| 73.0| -19.0| 2113.0| | 0.0| | 2132| 2040| 112.0| -3.0| 2037.0|MLI | 373.0| 0.0|2018-12-31 02:00:00| | |OO |DTW | | 5.0| 18.0| | 2055.0| 2108.0| | |
3372| 94.0| 74.0| 81.0| 1500.0| | 0.0| 0.0| 1339| 1150| 109.0| 96.0| 1326.0|RNO | 564.0| 0.0|2018-12-31 02:00:00| 81.0| 0.0|OO |SEA | 0.0| 3.0| 17.0| 0.0| 1343.0| 1457.0| | |
1584| 385.0| 348.0| -21.0| 2023.0| | 0.0| | 2034| 1700| 394.0| -9.0| 1658.0|SFO | 2565.0| 0.0|2018-12-31 02:00:00| | |UA |EWR | | 13.0| 33.0| | 1731.0| 2019.0| | |
4830| 119.0| 85.0| -35.0| 1431.0| | 0.0| | 1437| 1245| 136.0| -13.0| 1232.0|MSP | 546.0| 0.0|2018-12-31 02:00:00| | |OO |MSP | | 16.0| 18.0| | 1250.0| 1415.0| | |
2731| 158.0| 146.0| -19.0| 1911.0| | 0.0| | 1930| 1800| 160.0| -8.0| 1800.0|MSP | 842.0| 0.0|2018-12-31 02:00:00| | |WN |PVD | | 7.0| 7.0| | 1807.0| 1904.0| |
view rawgistfile1.txt hosted with ❤ by GitHub.
ScyllaDB + Feast
يمكن لـ ScyllaDB أيضًا التكامل مع أدوات مخزن الميزات مثل Feast. Feast هو مخزن ميزات مفتوح المصدر شهير للتعلم الآلي الإنتاجي. يمكنك استخدام عدة أنظمة قواعد بيانات كمخزن ميزات على الإنترنت عند استخدام Feast، بما في ذلك ScyllaDB.
لإعداد ScyllaDB كمخزن Feast على الإنترنت، تحتاج إلى تعديل ملف التكوين لـ Feast وإضافة بيانات اعتمادك في ScyllaDB. ScyllaDB متوافق مع Cassandra، لذا يمكنك استخدام موصل Cassandra المدمج في Feast.
# feature_store.yaml | |
project: scylla_feature_repo | |
registry: data/registry.db | |
provider: local | |
online_store: | |
type: cassandra | |
hosts: | |
– node-0.aws_us_east_1.xxxxxxxx.clusters.scylla.cloud | |
– node-1.aws_us_east_1.xxxxxxxx.clusters.scylla.cloud | |
– node-2.aws_us_east_1.xxxxxxxx.clusters.scylla.cloud | |
keyspace: feast | |
username: scylla | |
password: password |
view rawgistfile1.txt hosted with ❤ by GitHub.
الخاتمة
مخازن الميزات ضرورية لهندسة الميزات وبناء نماذج التعلم الآلي. إذا كنت تقوم ببناء بنية على الفور لمخزن الميزات، يجب أن تأخذ الأداء بعين الاعتبار. متطلبات التأثير المنخفض والأداء العالي والناتج العالي تجعل قواعد بيانات NoSQL مرشحًا مثاليًا كحل على الإنترنت لتخزين ميزات مخزن الميزات.
Source:
https://dzone.com/articles/tutorial-whats-an-aiml-feature-store-and-how-to-bu