Vertex AI: تصدير نموذج تعلُّم الآلة في BigQuery ونشره من أجل التوقّع

1. نظرة عامة

في هذا الدرس التطبيقي، ستدرّب نموذجًا باستخدام BigQuery Machine Learning، ثم ستصدّر هذا النموذج وتنشره على Vertex AI. هذا هو أحدث منتج للذكاء الاصطناعي على Google Cloud.

ما ستتعلمه

ستتعرَّف على كيفية:

  • تدريب نموذج باستخدام BigQuery Machine Learning (BQML)
  • تصدير نموذج BQML إلى Cloud Storage
  • نشر نموذج BQML المدرَّب على Vertex AI
  • الحصول على توقّعات بشأن النموذج الذي تم نشره

تبلغ التكلفة الإجمالية لتشغيل هذا الدرس التطبيقي على Google Cloud حوالي 2 دولار أمريكي.

2. مقدمة عن Vertex AI

يستخدم هذا المختبر أحدث منتج للذكاء الاصطناعي متاح على Google Cloud. تدمج Vertex AI عروض تعلُّم الآلة على Google Cloud في تجربة تطوير سلسة. في السابق، كان يمكن الوصول إلى النماذج المدرَّبة باستخدام AutoML والنماذج المخصَّصة من خلال خدمات منفصلة. يجمع العرض الجديد بين كليهما في واجهة برمجة تطبيقات واحدة، بالإضافة إلى منتجات جديدة أخرى. يمكنك أيضًا نقل المشاريع الحالية إلى Vertex AI. إذا كانت لديك أي ملاحظات، يُرجى الانتقال إلى صفحة الدعم.

تتضمّن Vertex AI العديد من المنتجات المختلفة لدعم مهام سير العمل الشاملة لتعلُّم الآلة. سيركّز هذا التمرين العملي على المنتجات الموضّحة أدناه: "التوقّع" و"دفاتر الملاحظات".

نظرة عامة على منتجات Vertex

3- إعداد البيئة

يجب أن يكون لديك مشروع على Google Cloud Platform مع تفعيل الفوترة لتتمكّن من تنفيذ هذا الدرس العملي. لإنشاء مشروع، اتّبِع التعليمات هنا.

الخطوة 1: تفعيل Compute Engine API

انتقِل إلى Compute Engine وانقر على تفعيل إذا لم يكن مفعّلاً بعد. يجب توفير هذه المعلومات لإنشاء مثيل دفتر الملاحظات.

الخطوة 2: تفعيل واجهة برمجة التطبيقات Vertex AI API

انتقِل إلى قسم Vertex AI في Cloud Console وانقر على تفعيل واجهة Vertex AI API.

لوحة بيانات Vertex AI

الخطوة 3: إنشاء مثيل من Notebooks

سنستخدم "دفاتر الملاحظات" للحصول على التوقّعات بعد نشر النموذج. من قسم Vertex AI في Cloud Console، انقر على Notebooks:

قائمة Vertex AI

من هناك، انقر على مثيل جديد. بعد ذلك، اختَر نوع مثيل TensorFlow Enterprise 2.3 بدون وحدات معالجة الرسومات:

مثيل TFE

استخدِم الخيارات التلقائية، ثم انقر على إنشاء. بعد إنشاء المثيل، انقر على فتح JupyterLab:

فتح دفتر ملاحظات CAIP

4. تدريب نموذج BigQuery ML

تتيح لك ميزة BigQuery ML تدريب نماذج مخصّصة لتعلُّم الآلة باستخدام البيانات المخزّنة في BigQuery. يمكنك تدريب النماذج والحصول على توقّعات منها باستخدام لغة SQL. في هذا المختبر، سنستخدم مجموعة بيانات متاحة للجميع في BigQuery للتنبؤ باحتمالية عدم سداد دفعة بطاقة الائتمان.

الخطوة 1: إنشاء مجموعة بيانات BigQuery في مشروعك

لتدريب نموذج في BigQuery ML، عليك إنشاء مجموعة بيانات ضمن مشروعك لتخزين هذا النموذج. انقر على مشروعك في شريط القوائم الأيمن، ثم اختَر إنشاء مجموعة بيانات:

إنشاء مجموعة بيانات BQ

في حقل معرّف مجموعة البيانات، أدخِل cc_default. اترك بقية الحقول كما هي وانقر على إنشاء مجموعة بيانات.

الخطوة 2: تنفيذ طلب بحث CREATE MODEL

في أداة تعديل الطلبات في BigQuery، نفِّذ طلب CREATE MODEL التالي لإنشاء نموذج BigQuery ML وتدريبه على مجموعة البيانات العامة التي سنستخدمها. احرص على استبدال your-project باسم مشروعك على السحابة الإلكترونية:

CREATE OR REPLACE MODEL
  `your-project.cc_default.logistic_model` OPTIONS(model_type='LOGISTIC_REG',
    input_label_cols=['default_payment_next_month']) AS
SELECT
  limit_balance,
  sex,
  education_level,
  marital_status,
  age,
  pay_0,
  pay_2,
  pay_3,
  pay_4,
  pay_5,
  pay_6,
  bill_amt_1,
  bill_amt_2,
  bill_amt_3,
  bill_amt_4,
  bill_amt_5,
  bill_amt_6,
  pay_amt_1,
  pay_amt_2,
  pay_amt_3,
  pay_amt_4,
  pay_amt_5,
  pay_amt_6,
  default_payment_next_month
FROM
  `bigquery-public-data.ml_datasets.credit_card_default`

سيؤدي ذلك إلى إنشاء نموذج انحدار لوجستي يعرض قيمة عددية تتراوح بين 0 و1، ما يشير إلى أنّ عملية التنفيذ تستغرق حوالي دقيقة واحدة. عند اكتمال العملية، سيظهر النموذج ضمن مجموعة البيانات:

تفاصيل نموذج BQML

يمكنك النقر على النموذج للاطّلاع على مقاييس التدريب والتقييم.

5- تصدير نموذج BigQuery ML

باستخدام نموذج BQML مدرَّب، يمكننا استخدام بنية SQL الخاصة بنماذج تعلُّم الآلة على BigQuery للحصول على توقّعات أو يمكننا تصدير النموذج لنشره في مكان آخر. سنصدّر النموذج هنا لنتمكّن من تفعيله في Vertex AI لتقديم النموذج بشكل قابل للتوسيع والحصول على التوقّعات.

الخطوة 1: إنشاء حزمة في Cloud Storage للنموذج

في تفاصيل النموذج، انقر على تصدير النموذج:

تصدير نموذج BQML

سيُطلب منك إدخال موقع Google Cloud Storage ‏ (GCS) الذي تريد تصدير مواد عرض النموذج إليه. إذا لم يكن لديك حزمة GCS بعد، لا داعي للقلق. نحن بصدد إنشاء واحدة. أولاً، انقر على تصفّح:

تصفُّح حِزم GCS

بعد ذلك، انقر على رمز + لإنشاء مجموعة جديدة:

حزمة GCS جديدة

امنحها اسمًا فريدًا (يجب أن تكون أسماء حِزم التخزين فريدة على مستوى العالم). انقر على متابعة. في الخطوة التالية، ضمن نوع الموقع الجغرافي، اختَر المنطقة واختَر أيًا من المناطق من القائمة المنسدلة:

موقع الحزمة

استخدِم فئة التخزين التلقائية، وتأكَّد من اختيار موحّد ضمن "التحكّم في الوصول":

التحكّم الموحّد في الوصول

انقر على "متابعة" واستخدِم الإعدادات التلقائية لبقية الخيارات. بعد ذلك، انقر على إنشاء.

الخطوة 2: تصدير نموذج BQML

بعد إنشاء الحزمة الجديدة، أدخِل model-assets (أو أي اسم آخر تريده) في حقل الاسم، ثم انقر على اختيار:

مسار تصدير النموذج

بعد ذلك، انقر على تصدير. سيؤدي ذلك إلى إنشاء مهمة في BigQuery لتصدير النموذج بتنسيق SavedModel من TensorFlow إلى حزمة GCS التي أنشأتها حديثًا. سيستغرق تصديرها حوالي دقيقة واحدة.

أثناء تصدير النموذج، انتقِل إلى قسم "التخزين" في Cloud Console. عند اكتمال مهمتك، من المفترض أن ترى مواد عرض النموذج التي تم تصديرها إلى الحزمة التي أنشأتها للتو ضمن الدليل الفرعي model-assets:

مواد عرض النماذج التي تم تصديرها

6. استيراد النموذج إلى Vertex AI

في هذه الخطوة، سنشير إلى موقع التخزين في GCS الذي تمّ تصدير أصول النموذج إليه لإنشاء النموذج واستيراده إلى Vertex AI.

الخطوة 1: استيراد النموذج

في Cloud Console، انتقِل إلى قسم "النماذج" في Vertex AI. من هناك، انقر على استيراد:

استيراد النموذج

في الخطوة الأولى، امنح نموذجك الاسم predict_default. اختَر المنطقة نفسها التي أنشأت فيها الحزمة (us-central1 أو europe-west4 أو asia-east1). بعد ذلك، انقر على متابعة. في إعدادات النموذج، أبقِ الخيار "استيراد عناصر النموذج إلى حاوية جديدة مُنشأة مسبقًا" محدّدًا.

في القائمة المنسدلة إطار عمل النموذج، اختَر TensorFlow. بعد ذلك، اختَر 2.3 كإصدار إطار العمل.

في حقل "موقع العنصر النموذجي"، انقر على تصفّح، ثم انقر على حزمة GCS التي أنشأتها للتو، ثم انقر على الدليل model-assets:

مسار مواد عرض التصميم

ثم انقر على استيراد. سيستغرق استيراد النموذج بضع دقائق. بعد إنشاء النموذج، سيظهر في قسم النماذج في Cloud Console:

قسم "النماذج"

7. تفعيل النموذج في نقطة نهاية

بعد تحميل النموذج، الخطوة التالية هي إنشاء نقطة نهاية في Vertex. يمكن أن يتضمّن مورد النموذج في Vertex نقاط نهاية متعدّدة مرتبطة به، ويمكنك تقسيم عدد الزيارات بين نقاط النهاية.

الخطوة 1: إنشاء نقطة نهاية

في صفحة النموذج، انتقِل إلى علامة التبويب التفعيل والاختبار وانقر على التفعيل في نقطة نهاية:

النشر والاختبار

أدخِل اسمًا لنقطة النهاية، مثل default_pred_v1، واترك إعدادات تقسيم الزيارات كما هي، ثم اختَر نوع الجهاز لنشر النموذج. استخدمنا n1-highcpu-2 هنا، ولكن يمكنك اختيار أي نوع جهاز تريده.

بعد ذلك، انقر على "تم" ثم على متابعة. اترك إعدادات الموقع الجغرافي المحدّدة كما هي، ثم انقر على نشر. سيستغرق تفعيل نقطة النهاية بضع دقائق. عند اكتمالها، ستظهر علامة اختيار خضراء بجانبها:

نقطة النهاية التي تم نشرها

أنت على وشك الانتهاء. أنت الآن جاهز للحصول على توقّعات بشأن النموذج الذي تم نشره.

8. الحصول على توقّعات من النموذج الذي تم نشره

تتوفّر بعض الخيارات للحصول على توقّعات النموذج:

  • واجهة مستخدم Vertex AI
  • Vertex AI API

سنوضّح هنا كيفية الحصول على عبارات بحث مقترَحة من خلال واجهة برمجة التطبيقات

الخطوة 1: الحصول على توقّعات النموذج باستخدام Vertex AI API

لنوضّح لك كيفية الحصول على توقّعات النموذج هنا، سنستخدم مثيل Vertex Notebook الذي أنشأته في بداية هذا الدرس العملي.

بعد ذلك، افتح مثيل دفتر الملاحظات الذي أنشأته، وافتح دفتر ملاحظات Python 3 من "مشغّل التطبيقات" (Launcher):

فتح ورقة ملاحظات

في دفتر الملاحظات، شغِّل ما يلي في خلية لكتابة مثال اختباري في ملف JSON باسم default-pred.json. سنرسل هذا المثال إلى النموذج للحصول على نتيجة متوقّعة:

%%writefile default-pred.json
{
  "instances": [
    {"age": 39,
    "bill_amt_1": 47174,
    "bill_amt_2": 47974,
    "bill_amt_3": 48630,
    "bill_amt_4": 50803,
    "bill_amt_5": 30789,
    "bill_amt_6": 15874,
    "education_level": "1",
    "limit_balance": 50000,
    "marital_status": "2",
    "pay_0": 0,
    "pay_2":0,
    "pay_3": 0,
    "pay_4": 0,
    "pay_5": "0",
    "pay_6": "0",
    "pay_amt_1": 1800,
    "pay_amt_2": 2000,
    "pay_amt_3": 3000,
    "pay_amt_4": 2000,
    "pay_amt_5": 2000,
    "pay_amt_6": 2000,
    "sex": "1"}
  ]
}

بعد ذلك، في واجهة مستخدم Vertex، انقر على طلب نموذجي لنقطة النهاية التي فعّلتها للتو:

مثال على الطلب

انسخ الرمز من الخطوة 4 في علامة التبويب REST إلى دفتر الملاحظات وشغِّل الخلية:

متغيّرات الطلب

بعد ذلك، أضِف متغيّرًا للمنطقة التي أنشأت فيها الحزمة والنموذج. استبدِل your-region في السلسلة أدناه:

REGION="your-region" # either us-central1, europe-west4, or asia-east1

أخيرًا، أرسِل طلب توقّع إلى نقطة النهاية باستخدام curl من خلال نسخ الرمز التالي إلى دفتر الملاحظات:

!curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-prediction-aiplatform.googleapis.com/v1alpha1/projects/$PROJECT_ID/locations/$REGION/endpoints/$ENDPOINT_ID:predict \
-d "@default-pred.json"

من المفترض أن يظهر لك ما يلي (ستختلف قيم التوقّعات الدقيقة قليلاً):

{
  "predictions": [
    {
      "default_payment_next_month_values": [
        "1",
        "0"
      ],
      "default_payment_next_month_probs": [
        0.180815295299778,
        0.819184704700222
      ],
      "predicted_default_payment_next_month": [
        "0"
      ]
    }
  ],
  "deployedModelId": "your-model-id"
}

تعرض القيم في default_payment_next_month_probs احتمال كل فئة. في هذا المثال، يتوقّع نموذجنا أنّ هناك احتمالاً بنسبة% 81 ألا يتخلّف هذا الشخص عن سداد دفعه التالية. تتوافق قيمة .819 مع الفئة 0 (ليست القيمة التلقائية).

🎉 تهانينا! 🎉

لقد تعلّمت كيفية:

  • تدريب نموذج في BQML
  • تصدير نموذج BQML إلى Cloud Storage
  • استيراد نموذج BQML إلى Vertex AI للحصول على التوقعات
  • إنشاء نموذج Vertex AI وتفعيله في نقطة نهاية
  • الحصول على توقّعات بشأن نقطة النهاية التي تم نشرها من خلال Vertex Notebooks وcurl

لمزيد من المعلومات حول الأجزاء المختلفة من Vertex AI، اطّلِع على المستندات.

9- تنظيف

إذا أردت مواصلة استخدام دفتر الملاحظات الذي أنشأته في هذا الدرس التطبيقي، ننصحك بإيقافه عندما لا يكون قيد الاستخدام. من واجهة مستخدم Notebooks في Cloud Console، اختَر دفتر الملاحظات، ثم انقر على إيقاف:

إيقاف الجهاز الافتراضي

إذا أردت حذف دفتر الملاحظات بالكامل، ما عليك سوى النقر على زر "حذف" في أعلى يسار الصفحة.

لحذف نقطة النهاية التي نشرتها، انتقِل إلى قسم نقاط النهاية في وحدة تحكّم Vertex AI وانقر على رمز الحذف:

حذف نقطة النهاية

لحذف حزمة التخزين، استخدِم قائمة التنقّل في Cloud Console، وانتقِل إلى "مساحة التخزين"، واختَر الحزمة، ثم انقر على "حذف":

حذف مساحة التخزين