1. مقدمة
في هذا الدليل التعليمي حول الرموز البرمجية، سننشئ نموذجًا لتوقّع تقييمات الأفلام باستخدام نموذج مخصّص في BigQuery ML باستخدام لغة الاستعلامات البنيوية (SQL) فقط، وسننشر النموذج في VertexAI. ستتعرّف على ما يلي:
- كيفية إنشاء مجموعة بيانات في BigQuery باستخدام Cloud Shell وتحميل البيانات من ملف
- كيفية استخدام BigQuery ML للتعلم الخاضع للإشراف من أجل إنشاء نموذج توقّعات للانحدار المتعدّد الطبقات لتوقّعات تقييمات الأفلام بدون الكثير من الترميز ولكن باستخدام طلبات بحث SQL فقط
التطبيق الذي ستصممه
ستنشئ
- مجموعة بيانات في BigQuery تحتوي على مكونات الجدول والنموذج
- نموذج BigQuery ML لتوقّع تقييم الفيلم باستخدام طلبات بحث SQL
- نشر النموذج في "سجلّ نماذج Vertex AI"
المتطلبات
2. إنشاء مشروعك
- في Google Cloud Console، في صفحة أداة اختيار المشاريع، اختَر مشروعًا على Google Cloud أو أنشِئه.
- تأكَّد من تفعيل الفوترة لمشروعك على Cloud. تعرَّف على كيفية التحقّق مما إذا كانت الفوترة مفعَّلة في مشروع.
- انتقِل إلى BigQuery لتفعيل واجهة برمجة التطبيقات. يمكنك أيضًا فتح واجهة مستخدِم الويب في BigQuery مباشرةً عن طريق إدخال عنوان URL التالي في المتصفّح: https://console.cloud.google.com/bigquery
3- تفعيل Cloud Shell
- ستستخدم Cloud Shell، وهي بيئة سطر أوامر تعمل في Google Cloud ومزوّدة مسبقًا بـ bq: من Cloud Console، انقر على Activate Cloud Shell (تفعيل Cloud Shell) في أعلى يسار الصفحة:
- بعد الاتصال بـ Cloud Shell، من المفترض أن تظهر لك رسالة تفيد بأنّه سبق أن تم مصادقة حسابك وأنّه سبق ضبط المشروع على معرّف مشروعك. نفِّذ الأمر التالي في Cloud Shell لتأكيد مصادقة حسابك:
gcloud auth list
- نفِّذ الأمر التالي في Cloud Shell للتأكّد من أنّ الأمر gcloud يعرف مشروعك.
gcloud config list project
- إذا لم يتم ضبط مشروعك، استخدِم الأمر التالي لضبطه:
gcloud config set project <PROJECT_ID>
راجِع المستندات لمعرفة أوامر gcloud وكيفية استخدامها.
4. إعداد بيانات التدريب
هذه خطوة رئيسية في جميع المشاريع والمنتجات والتطبيقات ذات الصلة بالبيانات والتي تتطلّب الكثير من الخبرة في المجال بالإضافة إلى التكنولوجيا لإعداد مجموعة بيانات مثالية وجعلها جاهزة لمشروع الذكاء الاصطناعي. لأغراض هذا الدليل التعليمي حول الرموز البرمجية، سنستخدم ملف data الذي سبق أن تم إعداده.
5- إنشاء مجموعة البيانات وتحميلها
مجموعة بيانات BigQuery هي مجموعة من الجداول. يتم تخزين جميع الجداول في مجموعة البيانات في الموقع نفسه للبيانات. يمكنك أيضًا إرفاق عناصر تحكّم مخصّصة في الوصول لحصر إمكانية الوصول إلى مجموعة بيانات وجداولها.
- في Cloud Shell، استخدِم الأمر bq mk لإنشاء مجموعة بيانات باسم "movies".
bq mk --location=<<LOCATION>> movies
اضبط الموقع الجغرافي على منطقة (asia-south1).
- تأكَّد من توفّر ملف البيانات (بتنسيق .csv). نفِّذ الأوامر التالية في Cloud Shell لنسخ المستودع والانتقال إلى المشروع:
git clone <<repository link>>
cd movie-score
- استخدِم الأمر bq load لتحميل ملف CSV إلى جدول BigQuery (يُرجى العِلم أنّه يمكنك أيضًا التحميل مباشرةً من واجهة مستخدِم BigQuery):
bq load --source_format=CSV --skip_leading_rows=1 movies.movies_score \
./movies_bq_src.csv \ Id:numeric,name:string,rating:string,genre:string,year:numeric,released:string,score:string,director:string,writer:string,star:string,country:string,budget:numeric,company:string,runtime:numeric,data_cat:string
وصف الخيارات: –source_format=CSV - يستخدم تنسيق بيانات CSV عند تحليل ملف البيانات. –skip_leading_rows=1 - يتخطّى السطر الأول في ملف CSV لأنّه صفّ عناوين. Movies.movies - الوسيطة الثابتة الأولى - تحدّد الجدول الذي يجب تحميل البيانات إليه. ./movies.csv، الوسيطة الثابتة الثانية، تحدِّد الملف الذي سيتم تحميله. بالإضافة إلى الملفات المحلية، يمكن لأمر bq load تحميل الملفات من Cloud Storage باستخدام عناوين URL الخاصة بمسارات الموارد gs://my_bucket/path/to/file. مخطّط يمكن تحديده في ملف مخطّط JSON أو كقائمة مفصولة بفواصل (لقد استخدمت قائمة مفصولة بفواصل). ممتاز! تم الآن تحميل بيانات ملف CSV في جدول movies.movies.
- يمكنك إجراء طلب بحث بإحدى الطرق الثلاث التالية:
يمكننا التفاعل مع BigQuery بثلاث طرق، وسنختبر طريقتَين منهما: أ. واجهة مستخدم الويب في BigQuery ب. الأمر bq c. واجهة برمجة التطبيقات
SELECT name, rating, genre, runtime FROM movies.movies_score limit 3;
لقد استخدمتُ مساحة عمل BigQuery Web SQL لتنفيذ طلبات البحث. تظهر "مساحة عمل SQL" على النحو التالي:
باستخدام الأمر bq:
bq query --use_legacy_sql=false \
SELECT name, rating, genre, runtime FROM movies.movies_score limit 3;
6- توقّع تقييم الفيلم على مقياس من 1 إلى 10
تتيح ميزة "التعلم الآلي في BigQuery" التعلم الخاضع للإشراف باستخدام نوع نموذج الانحدار اللوجستي. يمكنك استخدام نوع نموذج الانحدار اللوجستي الثنائي للتنبؤ بما إذا كانت القيمة تندرج ضمن إحدى الفئتَين، أو يمكنك استخدام نوع نموذج الانحدار المتعدّد الفئات للتنبؤ بما إذا كانت القيمة تندرج ضمن إحدى الفئات المتعدّدة. وتُعرف هذه المشاكل باسم مشاكل التصنيف، لأنّها تحاول تصنيف البيانات إلى فئتين أو أكثر.
ملاحظة سريعة حول اختيار النموذج: هذا اختيار تجريبي للنموذج الذي تم اختياره هنا، استنادًا إلى تقييم النتائج التي أجريتها على بعض النماذج في البداية، واخترت في النهاية LOGISTIC REG لتبسيط الأمر والحصول على نتائج أقرب إلى التقييم الفعلي للفيلم من عدة قواعد بيانات. يُرجى العِلم أنّه يجب اعتبار هذا النموذج مجرد عيّنة لتنفيذ النموذج، وليس بالضرورة النموذج المقترَح لهذا الاستخدام. هناك طريقة أخرى لتنفيذ ذلك وهي توقّع نتيجة الفيلم على أنّها "جيد" أو "سيّئ" باستخدام نموذج الانحدار اللوجستي هذا بدلاً من توقّع النتيجة.
اختيار بيانات التدريب
سبق أن قسمنا بيانات الأفلام (بتنسيق csv) إلى 3 فئات في الجدول باستخدام الحقل data_cat الذي يحتوي على إحدى القيم الثلاث: TRAIN وTEST وPREDICT. إنّ تقسيم مجموعة البيانات لأغراض الاختبار والتدريب هو جانب مهم من النموذج. إذا كنت بحاجة إلى مزيد من المعلومات عن فهم عملية تقسيم مجموعة البيانات، يُرجى الرجوع إلى المستندات.
إنشاء نموذج الانحدار اللوجستي
يمكننا استخدام جملة CREATE MODEL مع الخيار LOGISTIC_REG لإنشاء نموذج انحدار لوجستي وتدريبه.
نفِّذ طلب البحث أدناه في مساحة عمل SQL في واجهة مستخدِم الويب في BigQuery:
CREATE OR REPLACE MODEL
`movies.movies_score_model`
OPTIONS
( model_type='LOGISTIC_REG',
auto_class_weights=TRUE,
data_split_method='NO_SPLIT',
input_label_cols=[‘score']
) AS
SELECT
* EXCEPT(id, data_cat)
FROM
‘movies.movies_score'
WHERE
data_cat = 'TRAIN';
تفاصيل طلب البحث:
- تُدرِّب عبارة CREATE MODEL نموذجًا باستخدام بيانات التدريب في عبارة SELECT.
- تحدّد عبارة OPTIONS نوع النموذج وخيارات التدريب. في ما يلي، يحدِّد الخيار LOGISTIC_REG نوع نموذج الانحدار اللوجستي. ليس من الضروري تحديد نموذج انحدار لوجستي ثنائي مقابل نموذج انحدار لوجستي متعدد الفئات: يمكن أن تحدِّد ميزة "الذكاء الاصطناعي من BigQuery" النموذج الذي سيتم تدريبه استنادًا إلى عدد القيم الفريدة في عمود التصنيف.
- تفرض القيمة data_split_method=‘NO_SPLIT' على BQML التدريب على البيانات وفقًا لشروط الطلب (data_cat = ‘TRAIN')، ويُرجى العلم أيضًا أنّه من الأفضل استخدام القيمة AUTO_SPLIT في هذا الخيار للسماح للإطار (أو الخدمة في هذه الحالة) بتقسيم القسم إلى أقسام تدريب/اختبار عشوائيًا.
- يحدِّد خيار input_label_cols العمود الذي سيتم استخدامه في عبارة SELECT كسمة تصنيف. في هذه الحالة، عمود التصنيف هو النتيجة، لذا سيتعرّف النموذج على أيّ من قيم النتيجة العشرة من المرجّح أن تكون صحيحة استنادًا إلى القيم الأخرى المتوفّرة في كل صف.
- يوازن الخيار auto_class_weights=TRUE تصنيفات الفئات في بيانات التدريب. تكون بيانات التدريب غير مرجحة تلقائيًا. إذا كانت التصنيفات في بيانات التدريب غير متوازنة، قد يتعلّم النموذج توقّع الفئة الأكثر رواجًا من التصنيفات بشكل أكبر.
- تُجري عبارة SELECT طلب بحث في الجدول الذي حمّلناه ببيانات ملف CSV. تصفِّر العبارة WHERE الصفوف في جدول الإدخال بحيث يتم اختيار مجموعة بيانات TRAIN فقط في هذه الخطوة.
بعد الإنشاء، يظهر ما يلي في قسم SCHEMA (المخطّط) من مساحة عمل BigQuery SQL:
التصنيفات
الميزات
تقييم نموذج الانحدار اللوجستي
بعد إنشاء النموذج، يمكنك تقييم أداء النموذج باستخدام الدالة ML.EVALUATE. تقيِّم الدالة ML.EVALUATE القيم المتوقّعة مقارنةً بالبيانات الفعلية. في ما يلي طلب البحث لتقييم النموذج:
SELECT
*
FROM
ML.EVALUATE (MODEL movies.movies_score_model,
(
SELECT
*
FROM
movies.movies_score
WHERE
data_cat= ‘TEST'
)
)
تأخذ الدالة ML.EVALUATE النموذج الذي تم تدريبه في الخطوة السابقة وبيانات التقييم التي يعرضها طلب فرعي SELECT. تعرض الدالة صفًا واحدًا من الإحصاءات عن النموذج.
بما أنّك أجريت انحدارًا لوجستيًا، تتضمّن النتائج المقاييس التي تظهر في لقطة الشاشة أعلاه، وهي الدقّة ومعدل الاسترجاع والدقة ودرجة F1 وlog_loss وroc_auc، وهي مقاييس بالغة الأهمية في تقييم أداء النموذج. يمكنك أيضًا استدعاء ML.EVALUATE بدون تقديم بيانات الإدخال. يسترجع ML.EVALUATE مقاييس التقييم المستمَدة أثناء التدريب، والتي تستخدِم مجموعة بيانات التقييم المحجوزة تلقائيًا.
نظرة سريعة على المقاييس الرئيسية:
الدقة: ما هي نسبة عمليات التحديد الإيجابية التي كانت صحيحة في الواقع؟ الدقة = عدد موجب صائب / (عدد موجب صائب + عدد موجب خاطئ) التذكر: ما هي نسبة النتائج الموجبة الفعلية التي تم رصدها بشكل صحيح؟ نسبة الاسترجاع = النتيجة الموجبة الصائبة / (النتيجة الموجبة الصائبة + النتيجة السالبة الخاطئة) الدقة: مقياس لتقييم نماذج التصنيف، وهو نسبة التنبؤات التي حققها نموذجنا بشكل صحيح. الدقة = عدد التنبؤات الصحيحة / إجمالي عدد التنبؤات
توقّع تقييم الفيلم باستخدام ML.PREDICT
يتوقّع الاستعلام التالي نتيجة كل فيلم في قسم PREDICT من مجموعة البيانات.
SELECT
*
FROM
ML.PREDICT (MODEL movies.movies_score_model,
(
SELECT
*
FROM
movies.movies_score
WHERE
data_cat= ‘PREDICT'
)
)
في ما يلي مقتطف من النتائج:
تعرِض نتيجة النموذج النتيجة المتوقّعة للفيلم على مقياس من 1 إلى 10 (التصنيف). قد تتساءل عن سبب توفّر عدة صفوف توقّعات لكل فيلم. ويعود السبب في ذلك إلى أنّ النموذج أرجع التصنيفات المتوقّعة المحتمَلة واحتمالات حدوث كلّ منها بالترتيب التنازلي.
تحليل النتائج المتوقّعة والنموذج
بالإضافة إلى ذلك، يمكنك تنفيذ خطوتَي تحليل رائعتَين كجزء من نتائج التوقّعات:
- لفهم سبب إنشاء النموذج لنتائج التوقّعات هذه، يمكنك استخدام الدالة ML.EXPLAIN_PREDICT.
- لمعرفة الميزات الأكثر أهمية لتحديد الفئة العمرية للدخل بشكل عام، يمكنك استخدام الدالة ML.GLOBAL_EXPLAIN.
يمكنك الاطّلاع على هذه الخطوات بالتفصيل في المستندات.
7- توقّع تقييم الفيلم باستخدام ميزة "التعلم الآلي التلقائي" في BigQuery
إنّ ميزة "التعلم الآلي التلقائي" رائعة إذا كنت تريد السماح لخدمة BigQuery بإنشاء النموذج نيابةً عنك والاسترخاء إلى أن يتمّ إنشاء نتائج النموذج. تتوفّر ميزة AUTOML مباشرةً في BQML (model_type=AUTOML_CLASSIFIER أو AUTOML_REGRESSOR)، ومن الأسهل بكثير طلبها إذا كانت البيانات متوفّرة في BigQuery.
CREATE OR REPLACE MODEL movies.auto_movies
OPTIONS(model_type='AUTOML_CLASSIFIER',
input_label_cols=['score'],
budget_hours=1.0)
AS
SELECT
* EXCEPT(id, data_cat)
FROM
movies.movies_score;
بعد إنشاء النموذج، يمكنك تنفيذ خطوات EVALUATE وPREDICT وEXPLAIN_PREDICT تمامًا كما ناقشنا في نموذج BQML المخصّص. يمكنك الاطّلاع على مزيد من المعلومات عن "الذكاء الاصطناعي التلقائي في BigQuery" في المستندات.
8. نشر نماذج BQML بنقرة واحدة في "سجلّ نماذج Vertex AI"
يمكنك الآن الاطّلاع على جميع نماذج تعلُّم الآلة ضمن "سجلّ نماذج Vertex AI"، ما يسهّل على مؤسستك إدارة النماذج ونشرها. ويشمل ذلك النماذج التي تم إنشاؤها باستخدام ميزتَي "تعلُّم الآلة" و"تعلُّم الآلة الآلي" في BigQuery والنماذج المدرَّبة المخصّصة. وإليك كيفية عمل ذلك:
CREATE OR REPLACE MODEL
`movies.movies_score_model`
OPTIONS
( model_type='LOGISTIC_REG',
auto_class_weights=TRUE,
data_split_method='NO_SPLIT',
model_registry='vertex_ai',
vertex_ai_model_version_aliases=['logistic_reg', 'experimental'],
input_label_cols=[‘score']
) AS
SELECT
* EXCEPT(id, data_cat)
FROM
‘movies.movies_score'
WHERE
data_cat = 'TRAIN';
أدرِج الخيار model_registry="vertex_ai" في طلب البحث CREATE MODEL حتى تتمكّن ميزة "الذكاء الاصطناعي من BigQuery" من اختيار النماذج التي تريد تسجيلها صراحةً في "سجلّ نماذج Vertex AI". يمكنك الاطّلاع على مزيد من المعلومات حول هذا الموضوع في مدوّنتنا.
9. ملخّص
في أقل من 30 دقيقة، يمكننا تنفيذ ما يلي:
- إعداد BigQuery كقاعدة بيانات لمشروع الإحصاءات
- تم إنشاء نموذج توقّعات مخصّص باستخدام طلبات بحث SQL لبيانات BigQuery فقط بدون أي ترميز آخر.
- تم إنشاء نموذج "التعلّم الآلي التلقائي" في BQ باستخدام طلبات بحث SQL فقط
- تم نشر نموذج BQML في "سجلّ نماذج Vertex AI".
10. تَنظيم
لتجنُّب تحصيل رسوم من حسابك على Google Cloud مقابل الموارد المستخدَمة في هذه المشاركة، اتّبِع الخطوات التالية:
- في Google Cloud Console، انتقِل إلى صفحة إدارة الموارد.
- في قائمة المشاريع، اختَر المشروع الذي تريد حذفه، ثم انقر على "حذف".
- في مربّع الحوار، اكتب رقم تعريف المشروع، ثم انقر على "إيقاف" لحذف المشروع.
11. تهانينا
تهانينا! لقد نجحت في إنشاء نموذج توقّع تقييمات الأفلام باستخدام BQML المخصّصة وAutoML، ونشرت النموذج في "سجلّ نماذج Vertex AI"، وكل ذلك باستخدام لغة الاستعلامات البنيوية فقط.