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

1. نظرة عامة

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

المعلومات التي تطّلع عليها

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

  • تدريب نموذج باستخدام تعلُّم الآلة في BigQuery (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

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

الخطوة 2: تفعيل Vertex AI API

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

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

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

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

قائمة Vertex AI

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

مثيل TFE

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

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

4. تدريب نموذج تعلُّم الآلة في BigQuery

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

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

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

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

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

الخطوة 2: تشغيل استعلام CREATE MODEL

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

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

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

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

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

تصدير نموذج BQML

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

تصفُّح حِزم GCS

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

حزمة GCS جديدة

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

موقع الحزمة

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

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

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

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

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

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

بعد ذلك، انقر على تصدير. سيؤدي هذا الإجراء إلى إنشاء مهمة في BigQuery لتصدير نموذجك بتنسيق SaveModel من 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

سنعرض هنا كيفية تلقّي توقّعات من خلال واجهة برمجة التطبيقات.

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

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

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

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

في ورقة الملاحظات، نفِّذ ما يلي في خلية لكتابة مثال اختبار لملف 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، اختَر ورقة الملاحظات ثم انقر على إيقاف:

إيقاف المثيل

إذا كنت ترغب في حذف الدفتر بالكامل، فانقر فوق الزر "Delete" (حذف) في أعلى الجانب الأيمن.

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

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

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

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