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 العديد من المنتجات المختلفة لدعم مهام سير العمل الشاملة لتعلُّم الآلة. سيركّز هذا التمرين العملي على المنتجات الموضّحة أدناه: "التوقّع" و"دفاتر الملاحظات".

3- إعداد البيئة
يجب أن يكون لديك مشروع على Google Cloud Platform مع تفعيل الفوترة لتتمكّن من تنفيذ هذا الدرس العملي. لإنشاء مشروع، اتّبِع التعليمات هنا.
الخطوة 1: تفعيل Compute Engine API
انتقِل إلى Compute Engine وانقر على تفعيل إذا لم يكن مفعّلاً بعد. يجب توفير هذه المعلومات لإنشاء مثيل دفتر الملاحظات.
الخطوة 2: تفعيل واجهة برمجة التطبيقات Vertex AI API
انتقِل إلى قسم Vertex AI في Cloud Console وانقر على تفعيل واجهة Vertex AI API.

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

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

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

4. تدريب نموذج BigQuery ML
تتيح لك ميزة BigQuery ML تدريب نماذج مخصّصة لتعلُّم الآلة باستخدام البيانات المخزّنة في BigQuery. يمكنك تدريب النماذج والحصول على توقّعات منها باستخدام لغة SQL. في هذا المختبر، سنستخدم مجموعة بيانات متاحة للجميع في BigQuery للتنبؤ باحتمالية عدم سداد دفعة بطاقة الائتمان.
الخطوة 1: إنشاء مجموعة بيانات BigQuery في مشروعك
لتدريب نموذج في BigQuery ML، عليك إنشاء مجموعة بيانات ضمن مشروعك لتخزين هذا النموذج. انقر على مشروعك في شريط القوائم الأيمن، ثم اختَر إنشاء مجموعة بيانات:

في حقل معرّف مجموعة البيانات، أدخِل 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، ما يشير إلى أنّ عملية التنفيذ تستغرق حوالي دقيقة واحدة. عند اكتمال العملية، سيظهر النموذج ضمن مجموعة البيانات:

يمكنك النقر على النموذج للاطّلاع على مقاييس التدريب والتقييم.
5- تصدير نموذج BigQuery ML
باستخدام نموذج BQML مدرَّب، يمكننا استخدام بنية SQL الخاصة بنماذج تعلُّم الآلة على BigQuery للحصول على توقّعات أو يمكننا تصدير النموذج لنشره في مكان آخر. سنصدّر النموذج هنا لنتمكّن من تفعيله في Vertex AI لتقديم النموذج بشكل قابل للتوسيع والحصول على التوقّعات.
الخطوة 1: إنشاء حزمة في Cloud Storage للنموذج
في تفاصيل النموذج، انقر على تصدير النموذج:

سيُطلب منك إدخال موقع Google Cloud Storage (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، وانتقِل إلى "مساحة التخزين"، واختَر الحزمة، ثم انقر على "حذف":
