إنشاء نموذج لتعلُّم الآلة المالي باستخدام أداة What-If وVertex AI

1. نظرة عامة

في هذا التمرين، ستستخدم أداة "ماذا لو" لتحليل نموذج XGBoost تم تدريبه على البيانات المالية. بعد تحليل النموذج، سيتم نشره في Vertex AI الجديد من Cloud.

المعلومات التي ستتعرّف عليها

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

  • تدريب نموذج XGBoost على مجموعة بيانات عامة عن القروض العقارية في دفتر ملاحظات مستضاف
  • تحليل النموذج باستخدام أداة "ماذا لو"
  • نشر نموذج XGBoost في Vertex AI

تبلغ التكلفة الإجمالية لتنفيذ هذا البرنامج التدريبي على Google Cloud حوالي 1 دولار أمريكي.

2. مقدمة عن Vertex AI

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

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

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

3- لمحة سريعة عن خوارزمية XGBoost

XGBoost هي إطار عمل تعلُّم آلي يستخدم أشجار القرارات وتعزيز التدرّج لإنشاء نماذج تنبؤية. يعمل هذا المنهج من خلال تجميع عدة أشجار قرارات معًا بناءً على الدرجة المرتبطة بالعُقد الورقية المختلفة في أي شجرة.

المخطّط البياني أدناه هو تمثيل مرئي لنموذج شجرة قرارات بسيط يُقيّم ما إذا كان يجب إقامة مباراة رياضية استنادًا إلى توقّعات الطقس:

مثال على نموذج شجرة

لماذا نستخدم XGBoost لهذا النموذج؟ على الرغم من أنّ الشبكات العصبية التقليدية تحقّق أفضل أداء في التعامل مع البيانات غير المنظَّمة، مثل الصور والنصوص، فإنّ أشجار القرارات غالبًا ما تحقّق أداءً جيدًا للغاية في التعامل مع البيانات المنظَّمة، مثل مجموعة بيانات القروض العقارية التي سنستخدمها في هذا الدليل التعليمي.

4. إعداد البيئة

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

الخطوة 1: تفعيل واجهة برمجة التطبيقات Compute Engine API

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

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

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

لوحة بيانات Vertex

الخطوة 3: إنشاء مثيل "دفاتر ملاحظات Google"

من قسم Vertex في Cloud Console، انقر على "دفاتر ملاحظات":

اختيار دفاتر ملاحظات

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

مثيل TFE

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

الخطوة 4: تثبيت XGBoost

بعد فتح مثيل JupyterLab، ستحتاج إلى إضافة حزمة XGBoost.

لتنفيذ ذلك، اختَر "المحطة الطرفية" من مشغّل التطبيقات:

بعد ذلك، نفِّذ ما يلي لتثبيت أحدث إصدار من XGBoost المتوافق مع Vertex AI:

pip3 install xgboost==1.2

بعد اكتمال ذلك، افتح مثيلًا لدفتر ملاحظات Python 3 من مشغّل التطبيقات. يمكنك الآن البدء في استخدام دفتر الملاحظات.

الخطوة 5: استيراد حِزم Python

في الخلية الأولى من دفتر الملاحظات، أضِف عمليات الاستيراد التالية وشغِّل الخلية. يمكنك تشغيله من خلال الضغط على زر السهم المتّجه لليمين في القائمة العلوية أو الضغط على مفتاحَي Command وEnter:

import pandas as pd
import xgboost as xgb
import numpy as np
import collections
import witwidget

from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, confusion_matrix
from sklearn.utils import shuffle
from witwidget.notebook.visualization import WitWidget, WitConfigBuilder

5- تنزيل البيانات ومعالجتها

سنستخدم مجموعة بيانات القروض العقارية من ffiec.gov لتدريب نموذج XGBoost. أجرينا بعض المعالجة المُسبَقة على مجموعة البيانات الأصلية وأنشأنا نسخة أصغر منها لاستخدامها في تدريب النموذج. ويتوقّع هذا النموذج ما إذا كان ستتم الموافقة على طلب معيّن للرهن العقاري أم لا.

الخطوة 1: تنزيل مجموعة البيانات التي تمّت معالجتها مسبقًا

وفّرنا لك نسخة من مجموعة البيانات في Google Cloud Storage. يمكنك تنزيله من خلال تنفيذ الأمر gsutil التالي في دفتر ملاحظات Jupyter:

!gsutil cp 'gs://mortgage_dataset_files/mortgage-small.csv' .

الخطوة 2: قراءة مجموعة البيانات باستخدام Pandas

قبل إنشاء إطار بيانات Pandas، سننشئ dict لنوع بيانات كل عمود حتى تقرأ Pandas مجموعة البيانات بشكل صحيح:

COLUMN_NAMES = collections.OrderedDict({
 'as_of_year': np.int16,
 'agency_code': 'category',
 'loan_type': 'category',
 'property_type': 'category',
 'loan_purpose': 'category',
 'occupancy': np.int8,
 'loan_amt_thousands': np.float64,
 'preapproval': 'category',
 'county_code': np.float64,
 'applicant_income_thousands': np.float64,
 'purchaser_type': 'category',
 'hoepa_status': 'category',
 'lien_status': 'category',
 'population': np.float64,
 'ffiec_median_fam_income': np.float64,
 'tract_to_msa_income_pct': np.float64,
 'num_owner_occupied_units': np.float64,
 'num_1_to_4_family_units': np.float64,
 'approved': np.int8
})

بعد ذلك، سننشئ إطار بيانات ونقدّم إليه أنواع البيانات التي حدّدناها أعلاه. من المهمّ ترتيب بياناتنا عشوائيًا في حال ترتيب مجموعة البيانات الأصلية بطريقة معيّنة. ونستخدم أداة sklearn تُسمى shuffle لإجراء ذلك، والتي استوردناها في الخلية الأولى:

data = pd.read_csv(
 'mortgage-small.csv',
 index_col=False,
 dtype=COLUMN_NAMES
)
data = data.dropna()
data = shuffle(data, random_state=2)
data.head()

data.head() تتيح لنا معاينة الصفوف الخمسة الأولى من مجموعة البيانات في Pandas. من المفترض أن يظهر لك ما يلي بعد تشغيل الخلية أعلاه:

معاينة مجموعة بيانات القروض العقارية

في ما يلي الميزات التي سنستخدمها لتطبيق النموذج. إذا تصفّحت إلى النهاية، سيظهر لك العمود الأخير approved، وهو ما نتوقّعه. تشير القيمة 1 إلى أنّه تمت الموافقة على تطبيق معيّن، وتشير القيمة 0 إلى أنّه تم رفضه.

للاطّلاع على توزيع القيم الموافَق عليها أو المرفوضة في مجموعة البيانات وإنشاء صفيف numpy من التصنيفات، نفِّذ ما يلي:

# Class labels - 0: denied, 1: approved
print(data['approved'].value_counts())

labels = data['approved'].values
data = data.drop(columns=['approved'])

تحتوي مجموعة البيانات على حوالي% 66 من التطبيقات الموافَق عليها.

الخطوة 3: إنشاء عمود وهمي للقيم الفئوية

تحتوي مجموعة البيانات هذه على مزيج من القيم الفئوية والرقمية، ولكن تتطلّب أداة XGBoost أن تكون جميع الميزات رقمية. بدلاً من تمثيل القيم الفئوية باستخدام ترميز بقيمة واحدة، سنستفيد من دالة get_dummies في Pandas لنموذج XGBoost.

تأخذ get_dummies عمودًا يحتوي على عدة قيم محتملة وتحوِّله إلى سلسلة من الأعمدة يحتوي كل منها على 0 و1 فقط. على سبيل المثال، إذا كان لدينا عمود "اللون" يتضمّن القيمتَين المحتملتَين "أزرق" و "أحمر"، سيحوّل get_dummies هذا العمود إلى عمودَين باسم "color_blue" و "color_red" يتضمّنان كل القيم المنطقية 0 و1.

لإنشاء أعمدة وهمية لسماتنا الفئوية، نفِّذ الرمز البرمجي التالي:

dummy_columns = list(data.dtypes[data.dtypes == 'category'].index)
data = pd.get_dummies(data, columns=dummy_columns)

data.head()

عند معاينة البيانات هذه المرة، ستظهر لك عناصر فردية (مثل purchaser_type الموضّحة أدناه) مُقسّمة إلى أعمدة متعددة:

أعمدة Pandas الوهمية

الخطوة 4: تقسيم البيانات إلى مجموعات تدريب واختبار

أحد المفاهيم المهمة في التعلم الآلي هو قسمة التطبيق / الاختبار. سوف نأخذ معظم بياناتنا ونستخدمها لتدريب نموذجنا، وسنخصص باقي البيانات لاختبار نموذجنا على بيانات لم يسبق لها مثيل.

أضف الرمز التالي إلى دفترك، والذي يستخدم دالة ساي كيت ليرن train_test_split لقسمة البيانات:

x,y = data.values,labels
x_train,x_test,y_train,y_test = train_test_split(x,y)

أصبحت الآن مستعدًا لبناء نموذجك وتدريبه!

6- إنشاء نموذج XGBoost وتدريبه وتقييمه

الخطوة 1: تحديد نموذج XGBoost وتدريبه

إنّ إنشاء نموذج في XGBoost أمر بسيط. سنستخدم الفئة XGBClassifier لإنشاء النموذج، ونحتاج فقط إلى تمرير معلَمة objective الصحيحة لمهمة التصنيف المحدّدة. في هذه الحالة، نستخدم reg:logistic لأنّنا نواجه مشكلة تصنيف ثنائي ونريد من النموذج عرض قيمة واحدة في النطاق (0,1): 0 للإشارة إلى أنّه لم تتم الموافقة على الطلب و1 للإشارة إلى أنّه تمت الموافقة على الطلب.

ستنشئ التعليمة البرمجية التالية نموذج XGBoost:

model = xgb.XGBClassifier(
    objective='reg:logistic'
)

يمكنك تدريب النموذج باستخدام سطر واحد من الرموز، ما يؤدي إلى استدعاء طريقة fit() وتمرير بيانات التدريب والتصنيفات إليها.

model.fit(x_train, y_train)

الخطوة 2: تقييم دقة النموذج

يمكننا الآن استخدام النموذج الذي تم تدريبه لإنشاء توقّعات لبيانات الاختبار باستخدام الدالة predict().

وبعد ذلك، سنستخدم دالة accuracy_score() لمكتبة ساي كيت ليرن لحساب دقة النموذج بناءً على مستوى أدائه في بيانات الاختبار. سنرسل إليه قيم الحقائق الأساسية إلى جانب القيم المتوقّعة للنموذج لكل مثال في مجموعة الاختبار:

y_pred = model.predict(x_test)
acc = accuracy_score(y_test, y_pred.round())
print(acc, '\n')

من المفترض أن تبلغ دقة الترجمة %87 تقريبًا، ولكن قد تختلف قليلاً لأنّ هناك دائمًا عامل عشوائي في التعلّم الآلي.

الخطوة 3: حفظ النموذج

لنشر النموذج، عليك تشغيل الرمز التالي لحفظه في ملف محلي:

model.save_model('model.bst')

7- استخدام أداة "ماذا لو" لتفسير النموذج

الخطوة 1: إنشاء الرسم البياني لأداة "ماذا لو"

لربط أداة ماذا لو بالنموذج المحلي، يجب تمرير مجموعة فرعية من أمثلة الاختبار إليها بالإضافة إلى القيم الأساسية لهذه الأمثلة. لننشئ صفيفًا من Numpy يتضمّن 500 مثال اختباري مع تصنيفات الحقائق الأساسية:

num_wit_examples = 500
test_examples = np.hstack((x_test[:num_wit_examples],y_test[:num_wit_examples].reshape(-1,1)))

إنّ إنشاء مثيل أداة "ماذا لو" أمر بسيط مثل إنشاء عنصر WitConfigBuilder وتمريره إلى النموذج الذي نريد تحليله.

بما أنّ "أداة الاحتمالات" تتوقّع قائمة بالنتائج لكل فئة في النموذج (في هذه الحالة فئتان)، سنستخدم طريقة predict_proba في XGBoost مع "أداة الاحتمالات":

config_builder = (WitConfigBuilder(test_examples.tolist(), data.columns.tolist() + ['mortgage_status'])
  .set_custom_predict_fn(model.predict_proba)
  .set_target_feature('mortgage_status')
  .set_label_vocab(['denied', 'approved']))
WitWidget(config_builder, height=800)

يُرجى العِلم أنّ تحميل الرسم البياني سيستغرق دقيقة واحدة. عند تحميل الصفحة، من المفترض أن يظهر لك ما يلي:

العرض الأولي لأداة "ماذا لو"

يعرض لنا محور y توقّعات النموذج، حيث يشير 1 إلى توقّع approved بثقة عالية، ويشير 0 إلى توقّع denied بثقة عالية. المحور س هو مجرد انتشار جميع نقاط البيانات المحملة.

الخطوة 2: استكشاف نقاط البيانات الفردية

طريقة العرض التلقائية في "أداة ماذا لو" هي علامة التبويب محرر نقاط البيانات. يمكنك هنا النقر على أيّ نقطة بيانات فردية للاطّلاع على ميزاتها وتغيير قيم الميزات ومعرفة مدى تأثير هذا التغيير في توقّعات النموذج لنقطة بيانات فردية.

في المثال أدناه، اخترنا نقطة بيانات قريبة من الحدّ الأدنى 0 .5. تم إنشاء طلب الرهن العقاري المرتبط بنقطة البيانات هذه من CFPB. غيّرنا هذه الميزة إلى 0 وغيّرنا أيضًا قيمة agency_code_Department of Housing and Urban Development (HUD) إلى 1 لمعرفة ما سيحدث لتوقّعات النموذج إذا كان هذا القرض مصدره وزارة الإسكان والتنمية الحضرية:

كما يظهر لنا في القسم السفلي الأيمن من أداة "ماذا لو"، أدى تغيير هذه الميزة إلى خفض توقّعات النموذج في approved بشكل ملحوظ بنسبة 32%. وقد يشير هذا إلى أن الوكالة التي تم الحصول على قرض منها لها تأثير قوي على مخرجات النموذج، ولكننا سنحتاج إلى إجراء المزيد من التحليلات للتأكد من ذلك.

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

الخطوة 3: التحليل الافتراضي

بعد ذلك، انقر على أي نقطة بيانات وحرك شريط التمرير عرض أقرب نقطة بيانات عكسية إلى اليمين:

سيؤدي تحديد هذا الخيار إلى عرض نقطة البيانات التي تحتوي على قيم السمات الأكثر تشابهًا مع النقطة الأصلية التي اخترتها، ولكن مع التوقع المقابل. يمكنك بعد ذلك الانتقال إلى قيم السمات لمعرفة المواضع التي اختلفت فيها نقطتا البيانات (يتم تمييز الاختلافات باللون الأخضر وبالخطّ العريض).

الخطوة 4: الاطّلاع على الرسوم البيانية للاعتماد الجزئي

لمعرفة مدى تأثير كلّ سمة في توقّعات النموذج بشكل عام، ضَع علامة في مربّع رسومات التبعية الجزئية وتأكَّد من اختيار رسومات التبعية الجزئية الشاملة:

يتضح لنا هنا أنّ احتمال رفض القروض الناشئة عن HUD أكبر قليلاً. ويكون الرسم البياني هو هذا الشكل لأن رمز الوكالة عبارة عن ميزة منطقية، ولذلك لا يمكن أن تكون القيم إلا 0 أو 1 بالضبط.

applicant_income_thousands هي سمة رقمية، ويمكننا في الرسم البياني للاعتماد الجزئي ملاحظة أنّ الدخل المرتفع يزيد قليلاً من احتمالية الموافقة على طلب، ولكنّه لا يزيد عن 200 ألف دولار أمريكي تقريبًا. بعد 200 ألف دولار أمريكي، لا تؤثّر هذه الميزة في توقّعات النموذج.

الخطوة 5: استكشاف الأداء العام والعدالة

بعد ذلك، انتقِل إلى علامة التبويب الأداء والعدالة. يعرض هذا القسم إحصاءات الأداء العام لنتائج النموذج على مجموعة البيانات المقدَّمة، بما في ذلك مصفوفات الالتباس ومنحنيات PR ومنحنيات ROC.

اختَر mortgage_status كميزة "الحقيقة الأساسية" للاطّلاع على مصفوفة الارتباك:

تعرض مصفوفة الالتباس هذه التنبؤات الصحيحة وغير الصحيحة لنموذجنا كنسبة مئوية من إجمالي عدد التنبؤات. إذا أضفت مربعي نعم / نعم متوقَّعة ولا فعلية / لا متوقَّعة، من المفترض أن تضيف الدقة نفسها المستخدَمة في نموذجك (في هذه الحالة حوالي 87%، على الرغم من أنّ النموذج قد يختلف قليلاً لأنّ هناك عنصر العشوائية في تدريب نماذج تعلُّم الآلة).

يمكنك أيضًا تجربة شريط التمرير الخاص بالحدّ الأدنى، ورفع وخفض درجة التصنيف الإيجابي التي يحتاج النموذج إلى عرضها قبل أن يقرر توقّع approved للقروض، والاطّلاع على كيفية تغيير ذلك للدقة والنتائج الموجبة الخاطئة والنتائج السالبة الخاطئة. في هذه الحالة، تكون الدقة أعلى عند مستوى 0.55 تقريبًا.

بعد ذلك، في القائمة المنسدلة تقسيم حسب على يمين الصفحة، اختَر loan_purpose_Home_purchase:

ستظهر لك الآن الأداء في مجموعتَي البيانات الفرعيتَين: تعرض الشريحة "0" الحالات التي لا يكون فيها القرض مخصّصًا لشراء منزل، وتعرض الشريحة "1" الحالات التي يكون فيها القرض مخصّصًا لشراء منزل. اطّلِع على الدقة ومعدّل النتيجة الإيجابية الزائفة ومعدّل النتيجة السلبية الزائفة بين الشرائحتَين للبحث عن الاختلافات في الأداء.

في حالة توسيع الصفوف لإلقاء نظرة على مصفوفات الالتباس، يمكنك أن ترى أن النموذج يتنبأ بـ "المقبولة" لطلبات القروض بنسبة 70٪ تقريبًا لشراء المنازل و46٪ فقط من القروض التي ليست لشراء المنازل (ستختلف النسب المئوية الدقيقة على النموذج):

إذا اخترت المساواة الديمغرافية من أزرار الاختيار على يمين الصفحة، سيتم تعديل الحدّين الأدنى كي يتوقّع النموذج approved بالنسبة إلى نسبة مئوية مشابهة من مقدمي الطلبات في كلتا الشرائح. ما تأثير ذلك في الدقة والنتائج الموجبة الخاطئة والنتائج السالبة الخاطئة لكل شريحة؟

الخطوة 6: استكشاف توزيع الميزات

أخيرًا، انتقِل إلى علامة التبويب الميزات في "أداة ماذا لو". يعرض لك ذلك توزيع القيم لكلّ سمة في مجموعة البيانات:

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

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

8. نشر النموذج في Vertex AI

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

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

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

# Update the variables below to your own Google Cloud project ID and GCS bucket name. You can leave the model name we've specified below:
GCP_PROJECT = 'your-gcp-project'
MODEL_BUCKET = 'gs://storage_bucket_name'
MODEL_NAME = 'xgb_mortgage'

نحن الآن جاهزون لإنشاء حزمة تخزين لتخزين ملف نموذج XGBoost. سنشير إلى Vertex AI إلى هذا الملف عند النشر.

شغِّل الأمر gsutil هذا من داخل دفتر ملاحظاتك لإنشاء حزمة مساحة تخزين على مستوى منطقة معيّنة:

!gsutil mb -l us-central1 $MODEL_BUCKET

الخطوة 2: نسخ ملف التصميم إلى Cloud Storage

بعد ذلك، سننسخ ملف نموذج XGBoost المحفوظ إلى Cloud Storage. نفِّذ الأمر gsutil التالي:

!gsutil cp ./model.bst $MODEL_BUCKET

انتقِل إلى متصفِّح مساحة التخزين في Cloud Console للتأكّد من نسخ الملف:

الخطوة 3: إنشاء النموذج ونشره على نقطة نهاية

نحن على وشك نشر النموذج في السحابة الإلكترونية. في Vertex AI، يمكن أن يتضمّن النموذج نقاط نهاية متعددة. سننشئ أولاً نموذجًا، ثم سننشئ نقطة نهاية ضمن هذا النموذج وننشرها.

أولاً، استخدِم واجهة سطر الأوامر gcloud لإنشاء النموذج:

!gcloud beta ai models upload \
--display-name=$MODEL_NAME \
--artifact-uri=$MODEL_BUCKET \
--container-image-uri=us-docker.pkg.dev/cloud-aiplatform/prediction/xgboost-cpu.1-2:latest \
--region=us-central1

ستشير المَعلمة artifact-uri إلى موقع التخزين الذي حفظت فيه نموذج XGBoost. تُخبر المَعلمة container-image-uri Vertex AI الحاوية المُنشأة مسبقًا المطلوب استخدامها للعرض. بعد اكتمال هذا الأمر، انتقِل إلى قسم النماذج في وحدة تحكّم Vertex للحصول على رقم تعريف النموذج الجديد. يمكنك العثور عليه هنا:

الحصول على رقم تعريف النموذج من وحدة التحكّم

انسخ هذا المعرّف واحفظه في متغيّر:

MODEL_ID = "your_model_id"

حان الوقت الآن لإنشاء نقطة نهاية ضمن هذا النموذج. يمكننا القيام بذلك باستخدام الأمر gcloud التالي:

!gcloud beta ai endpoints create \
--display-name=xgb_mortgage_v1 \
--region=us-central1

عند اكتمال ذلك، من المفترض أن يظهر لك الموقع الجغرافي لنقطة النهاية المسجّلة في إخراج دفتر الملاحظات. ابحث عن السطر الذي يشير إلى أنّه تم إنشاء نقطة النهاية باستخدام مسار يبدو على النحو التالي: projects/project_ID/locations/us-central1/endpoints/endpoint_ID. بعد ذلك، استبدِل القيم الواردة أدناه بأرقام تعريف نقطة النهاية التي تم إنشاؤها أعلاه:

ENDPOINT_ID = "your_endpoint_id"

لنشر نقطة النهاية، نفِّذ الأمر gcloud أدناه:

!gcloud beta ai endpoints deploy-model $ENDPOINT_ID \
--region=us-central1 \
--model=$MODEL_ID \
--display-name=xgb_mortgage_v1 \
--machine-type=n1-standard-2 \
--traffic-split=0=100

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

عند اكتمال عملية النشر بنجاح، ستظهر علامة اختيار خضراء في مكان مؤشر التحميل.

الخطوة 4: اختبار النموذج المنشور

للتأكّد من أنّ النموذج الذي تم نشره يعمل بشكل صحيح، اختبِره باستخدام gcloud لإجراء توقّع. أولاً، احفظ ملف JSON يتضمّن مثالاً من مجموعة الاختبار:

%%writefile predictions.json
{
  "instances": [
    [2016.0, 1.0, 346.0, 27.0, 211.0, 4530.0, 86700.0, 132.13, 1289.0, 1408.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0]
  ]
}

اختبِر النموذج من خلال تنفيذ الأمر gcloud التالي:

!gcloud beta ai endpoints predict $ENDPOINT_ID \
--json-request=predictions.json \
--region=us-central1

من المفترض أن يظهر لك توقّع النموذج في الإخراج. تمت الموافقة على هذا المثال بالتحديد، لذا من المفترض أن تظهر لك قيمة قريبة من 1.

9. تنظيف

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

إذا أردت حذف جميع الموارد التي أنشأتها في هذا البرنامج التدريبي، ما عليك سوى حذف مثيل دفتر البيانات بدلاً من إيقافه.

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

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