Vertex AI:استخدِم سلاسل إجراءات التوقّع المخصّصة مع Sklearn لمعالجة بيانات العملية مسبقًا ونشرها للحصول على التوقّعات.

1. مقدمة

في هذا الدرس التطبيقي، ستتعرّف على كيفية استخدام إجراءات التوقّع المخصّصة على Vertex AI لكتابة منطق مخصّص للمعالجة المُسبقة واللاحقة. على الرغم من أنّ هذا النموذج يستخدم Scikit-learn، يمكن أن تعمل إجراءات التوقّع المخصّصة مع أُطر عمل أخرى لتعلُّم الآلة في Python، مثل XGBoost وPyTorch وTensorFlow.

ما ستتعلمه

  • كتابة منطق توقّع مخصّص باستخدام إجراءات توقّع مخصّصة
  • اختبار حاوية العرض المخصّصة والنموذج محليًا
  • اختبار حاوية العرض المخصّصة على Vertex AI Predictions

2. مقدمة عن Vertex AI

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

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

440e66b5fde4cee7.png

3- نظرة عامة على حالة الاستخدام

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

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

مقدّمة عن إجراءات التوقّع المخصّصة

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

يتطلّب إنشاء حاوية عرض مخصّصة كتابة خادم HTTP يغلّف النموذج المدرَّب ويحوّل طلبات HTTP إلى مدخلات النموذج ويحوّل مخرجات النموذج إلى استجابات.

باستخدام إجراءات التوقّع المخصّصة، توفّر لك Vertex AI المكوّنات ذات الصلة بالتقديم، ما يتيح لك التركيز على نموذجك وعمليات تحويل البيانات.

ما ستنشئه

ستُعدّ شبكة VPC باسم aiml-vpc تتألف من شبكة فرعية خاصة بأداة Workbench تُستخدَم لنشر دفتر ملاحظات مُدار من قِبل المستخدم والوصول إلى نقطة نهاية التوقّع على الإنترنت ونقطة نهاية النموذج المنشورة في us-central1 كما هو موضّح في الشكل 1 أدناه.

                                                                            Figure1

6ce21c7fdae12b4f.png

4. تفعيل واجهات برمجة التطبيقات الخاصة بالبرامج التعليمية

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

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

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

انتقِل إلى Artifact Registry وانقر على "تفعيل" إذا لم يكن مفعّلاً. ستستخدم هذا المعرّف لإنشاء حاوية عرض مخصّصة.

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

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

الخطوة 4: إنشاء مثيل Vertex AI Workbench

فعِّل واجهة برمجة التطبيقات الخاصة بدفاتر الملاحظات إذا لم تكن مفعَّلة بعد.

5- إنشاء aiml-vpc

يستفيد هذا البرنامج التعليمي من $variables للمساعدة في تنفيذ عملية إعداد gcloud في Cloud Shell.

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

إنشاء aiml-vpc

داخل Cloud Shell، اتّبِع الخطوات التالية:

gcloud compute networks create aiml-vpc --project=$projectid --subnet-mode=custom

إنشاء الشبكة الفرعية لدفتر الملاحظات المُدارة من قِبل المستخدم

داخل Cloud Shell، أنشئ workbench-subnet.

gcloud compute networks subnets create workbench-subnet --project=$projectid --range=172.16.10.0/28 --network=aiml-vpc --region=us-central1 --enable-private-ip-google-access

إعداد Cloud Router وNAT

يتم استخدام Cloud NAT في البرنامج التعليمي لتنزيل حِزم البرامج لأنّ دفتر الملاحظات المُدار من قِبل المستخدم ليس لديه عنوان IP خارجي. توفّر خدمة Cloud NAT إمكانات NAT للخروج، ما يعني أنّه لا يُسمح لمضيفي الإنترنت ببدء التواصل مع دفتر ملاحظات يديره المستخدم، ما يجعله أكثر أمانًا.

داخل Cloud Shell، أنشئ موجّه السحابة الإقليمي us-central1.

gcloud compute routers create cloud-router-us-central1-aiml-nat --network aiml-vpc --region us-central1

داخل Cloud Shell، أنشئ بوابة NAT السحابية الإقليمية us-central1.

gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-us-central1-aiml-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1

6. إنشاء دفتر ملاحظات يديره المستخدم

إنشاء حساب خدمة مُدار من قِبل المستخدم (دفتر ملاحظات)

في القسم التالي، ستنشئ حساب خدمة يديره المستخدم وسيتم ربطه بـ Vertex Workbench (Notebook) المستخدَم في البرنامج التعليمي.

في البرنامج التعليمي، سيتم تطبيق القواعد التالية على حساب الخدمة:

داخل Cloud Shell، أنشئ حساب الخدمة.

gcloud iam service-accounts create user-managed-notebook-sa \
    --display-name="user-managed-notebook-sa"

داخل Cloud Shell، عدِّل حساب الخدمة باستخدام دور "مشرف التخزين".

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/storage.admin"

داخل Cloud Shell، عدِّل حساب الخدمة باستخدام دور "مستخدم Vertex AI".

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"

في Cloud Shell، عدِّل حساب الخدمة باستخدام دور "مشرف Artifact Registry".

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/artifactregistry.admin"

داخل Cloud Shell، أدرِج حساب الخدمة واحتفِظ بعنوان البريد الإلكتروني الذي سيتم استخدامه عند إنشاء دفتر ملاحظات يديره المستخدم.

gcloud iam service-accounts list

إنشاء دفتر ملاحظات يديره المستخدم

في القسم التالي، أنشئ دفتر ملاحظات مُدارًا من قِبل المستخدم يتضمّن حساب الخدمة الذي تم إنشاؤه سابقًا، user-managed-notebook-sa.

داخل Cloud Shell، أنشئ مثيل العميل الخاص.

gcloud notebooks instances create workbench-tutorial \
      --vm-image-project=deeplearning-platform-release \
      --vm-image-family=common-cpu-notebooks \
      --machine-type=n1-standard-4 \
      --location=us-central1-a \
      --shielded-secure-boot \
      --subnet-region=us-central1 \
      --subnet=workbench-subnet \
      --no-public-ip    --service-account=user-managed-notebook-sa@$projectid.iam.gserviceaccount.com

7. كتابة رمز التدريب

الخطوة 1: إنشاء حزمة في خدمة التخزين في السحابة الإلكترونية

ستخزِّن النموذج وعناصر المعالجة المُسبقة في حزمة Cloud Storage. إذا كان لديك حزمة في مشروعك تريد استخدامها، يمكنك تخطّي هذه الخطوة.

من مشغّل التطبيقات، افتح جلسة وحدة طرفية جديدة.

84a53a5b528f2507.png

من نافذة الجهاز، نفِّذ ما يلي لتحديد متغيّر بيئة لمشروعك، مع الحرص على استبدال your-cloud-project بمعرّف مشروعك:

PROJECT_ID='your-cloud-project'

بعد ذلك، شغِّل ما يلي في "الوحدة الطرفية" لإنشاء حزمة جديدة في مشروعك.

BUCKET="gs://${PROJECT_ID}-cpr-bucket"
gsutil mb -l us-central1 $BUCKET

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

من نافذة الوحدة الطرفية، أنشئ دليلاً جديدًا باسم cpr-codelab وانتقِل إليه.

mkdir cpr-codelab
cd cpr-codelab

في متصفِّح الملفات، انتقِل إلى دليل cpr-codelab الجديد، ثم استخدِم المشغّل لإنشاء ورقة ملاحظات جديدة بلغة Python 3 باسم task.ipynb.

f230930e0b79650c.png

يجب أن يبدو دليل cpr-codelab الآن على النحو التالي:

+ cpr-codelab/
    + task.ipynb

في دفتر الملاحظات، الصِق الرمز التالي.

أولاً، أنشئ ملف requirements.txt.

%%writefile requirements.txt
fastapi
uvicorn==0.17.6
joblib~=1.1.1
numpy>=1.17.3, <1.24.0
scikit-learn~=1.0.0
pandas
google-cloud-storage>=2.2.1,<3.0.0dev
google-cloud-aiplatform[prediction]>=1.18.2

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

تثبِّت Pip الموارد التابعة في دفتر الملاحظات.

!pip install -U --user -r requirements.txt

يُرجى العِلم أنّه عليك إعادة تشغيل النواة بعد اكتمال عملية التثبيت باستخدام pip.

بعد ذلك، أنشئ الأدلة التي ستخزّن فيها النموذج وعناصر المعالجة المُسبقة.

USER_SRC_DIR = "src_dir"
!mkdir $USER_SRC_DIR
!mkdir model_artifacts

# copy the requirements to the source dir
!cp requirements.txt $USER_SRC_DIR/requirements.txt

يجب أن يبدو دليل cpr-codelab الآن على النحو التالي:

+ cpr-codelab/
    + model_artifacts/
    + scr_dir/
        + requirements.txt
    + task.ipynb
    + requirements.txt

بعد إعداد بنية الدليل، حان الوقت لتدريب نموذج.

أولاً، استورِد المكتبات.

import seaborn as sns
import numpy as np
import pandas as pd

from sklearn import preprocessing
from sklearn.ensemble import RandomForestRegressor
from sklearn.pipeline import make_pipeline
from sklearn.compose import make_column_transformer

import joblib
import logging

# set logging to see the docker container logs
logging.basicConfig(level=logging.INFO)

بعد ذلك، حدِّد المتغيّرات التالية. احرص على استبدال PROJECT_ID برقم تعريف مشروعك وBUCKET_NAME بالحزمة التي أنشأتها في الخطوة السابقة.

REGION = "us-central1"
MODEL_ARTIFACT_DIR = "sklearn-model-artifacts"
REPOSITORY = "diamonds"
IMAGE = "sklearn-image"
MODEL_DISPLAY_NAME = "diamonds-cpr"

# Replace with your project
PROJECT_ID = "{PROJECT_ID}"

# Replace with your bucket
BUCKET_NAME = "gs://{BUCKET_NAME}"

حمِّل البيانات من مكتبة seaborn ثم أنشئ إطارَي بيانات، أحدهما يتضمّن الميزات والآخر يتضمّن التصنيف.

data = sns.load_dataset('diamonds', cache=True, data_home=None)

label = 'price'

y_train = data['price']
x_train = data.drop(columns=['price'])

لنلقِ نظرة على بيانات التدريب. يمكنك ملاحظة أنّ كل صف يمثّل ماسة.

x_train.head()

والتصنيفات، وهي الأسعار المقابلة

y_train.head()

الآن، حدِّد تحويلاً للأعمدة في sklearn لترميز الميزات الفئوية باستخدام الترميز الأحادي الساخن وتوسيع نطاق الميزات الرقمية.

column_transform = make_column_transformer(
    (preprocessing.OneHotEncoder(sparse=False), [1,2,3]),
    (preprocessing.StandardScaler(), [0,4,5,6,7,8]))

تحديد نموذج الغابة العشوائية

regr = RandomForestRegressor(max_depth=10, random_state=0)

بعد ذلك، أنشئ مسارًا في sklearn. وهذا يعني أنّه سيتم أولاً ترميز/توسيع البيانات التي يتم إدخالها إلى مسار المعالجة هذا، ثم سيتم تمريرها إلى النموذج.

my_pipeline = make_pipeline(column_transform, regr)

تطابق خط البيانات مع بيانات التدريب

my_pipeline.fit(x_train, y_train)

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

my_pipeline.predict([[0.23, 'Ideal', 'E', 'SI2', 61.5, 55.0, 3.95, 3.98, 2.43]])

يمكننا الآن حفظ مسار العرض في الدليل model_artifacts ونسخه إلى حزمة Cloud Storage.

joblib.dump(my_pipeline, 'model_artifacts/model.joblib')

!gsutil cp model_artifacts/model.joblib {BUCKET_NAME}/{MODEL_ARTIFACT_DIR}/

الخطوة 3: حفظ عنصر معالجة مسبقة

بعد ذلك، عليك إنشاء عنصر معالجة مسبقة. سيتم تحميل هذا العنصر في الحاوية المخصّصة عند بدء تشغيل خادم النموذج. يمكن أن يكون عنصر المعالجة المُسبَقة بأي شكل تقريبًا (مثل ملف pickle)، ولكن في هذه الحالة، ستكتب قاموسًا في ملف JSON.

clarity_dict={"Flawless": "FL",
              "Internally Flawless": "IF",
              "Very Very Slightly Included": "VVS1",
              "Very Slightly Included": "VS2",
              "Slightly Included": "S12",
              "Included": "I3"}

كانت ميزة الوضوح في بيانات التدريب دائمًا في شكلها المختصر (مثل "FL" بدلاً من "Flawless"). عند عرض الإعلانات، نريد التأكّد من أنّ بيانات هذه الميزة مختصرة أيضًا. ويرجع ذلك إلى أنّ نموذجنا يعرف كيفية ترميز "FL" باستخدام الترميز الساخن، ولكنّه لا يعرف كيفية ترميز "Flawless". ستكتب منطق المعالجة المُسبقة المخصّص هذا لاحقًا. في الوقت الحالي، ما عليك سوى حفظ جدول البحث هذا في ملف json ثم كتابته في حزمة Cloud Storage.

import json
with open("model_artifacts/preprocessor.json", "w") as f:
    json.dump(clarity_dict, f)

!gsutil cp model_artifacts/preprocessor.json {BUCKET_NAME}/{MODEL_ARTIFACT_DIR}/

يجب أن يبدو دليل cpr-codelab المحلي الآن على النحو التالي:

+ cpr-codelab/
    + model_artifacts/
        + model.joblib
        + preprocessor.json
    + scr_dir/
        + requirements.txt
    + task.ipynb
    + requirements.txt

8. إنشاء حاوية عرض مخصّصة باستخدام خادم نموذج CPR

بعد تدريب النموذج وحفظ عنصر المعالجة المُسبقة، حان الوقت لإنشاء حاوية العرض المخصّصة. يتطلّب إنشاء حاوية عرض كتابة رمز خادم النموذج. ومع ذلك، باستخدام إجراءات التوقّع المخصّصة، تنشئ خدمة "توقّعات Vertex AI" خادم نماذج وتصمّم لك صورة حاوية مخصّصة.

يحتوي حاوية العرض المخصّصة على أجزاء الرموز الثلاثة التالية:

  1. خادم النموذج (سيتم إنشاؤه تلقائيًا بواسطة حزمة تطوير البرامج (SDK) وتخزينه في scr_dir/)
  • خادم HTTP يستضيف النموذج
  • المسؤول عن إعداد المسارات/المنافذ/إلخ.
  1. معالج الطلبات
  • مسؤول عن جوانب خادم الويب المتعلقة بمعالجة الطلب، مثل إلغاء تسلسل نص الطلب وتسلسل الاستجابة وتحديد عناوين الاستجابة وما إلى ذلك
  • في هذا المثال، ستستخدِم المعالج التلقائي، google.cloud.aiplatform.prediction.handler.PredictionHandler، المتوفّر في حزمة تطوير البرامج (SDK).
  1. المتوقّع
  • مسؤول عن منطق تعلُّم الآلة لمعالجة طلب توقّع.

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

يكون المتوقّع مسؤولاً عن منطق تعلُّم الآلة لمعالجة طلب التوقّع، مثل المعالجة المُسبقة والمعالجة اللاحقة المخصّصة. لكتابة منطق توقّع مخصّص، عليك إنشاء فئة فرعية من واجهة Vertex AI Predictor.

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

يمكنك الاطّلاع أدناه على مثال على أداة التوقّع Sklearn. هذا هو كل الرمز الذي ستحتاج إلى كتابته من أجل إنشاء خادم النموذج المخصّص هذا.

262df1246b28657e.png

في دفتر الملاحظات، ألصِق الرمز التالي أدناه لتصنيف SklearnPredictor وكتابته في ملف Python في src_dir/. يُرجى العِلم أنّه في هذا المثال، نخصّص طرق التحميل والمعالجة المسبقة والمعالجة اللاحقة فقط، وليس طريقة التوقّع.

%%writefile $USER_SRC_DIR/predictor.py

import joblib
import numpy as np
import json

from google.cloud import storage
from google.cloud.aiplatform.prediction.sklearn.predictor import SklearnPredictor


class CprPredictor(SklearnPredictor):

    def __init__(self):
        return

    def load(self, artifacts_uri: str) -> None:
        """Loads the sklearn pipeline and preprocessing artifact."""

        super().load(artifacts_uri)

        # open preprocessing artifact
        with open("preprocessor.json", "rb") as f:
            self._preprocessor = json.load(f)


    def preprocess(self, prediction_input: np.ndarray) -> np.ndarray:
        """Performs preprocessing by checking if clarity feature is in abbreviated form."""

        inputs = super().preprocess(prediction_input)

        for sample in inputs:
            if sample[3] not in self._preprocessor.values():
                sample[3] = self._preprocessor[sample[3]]
        return inputs

    def postprocess(self, prediction_results: np.ndarray) -> dict:
        """Performs postprocessing by rounding predictions and converting to str."""

        return {"predictions": [f"${value}" for value in np.round(prediction_results)]}

لنتعرّف على كل طريقة من هذه الطرق بالتفصيل.

  • تحمّل الدالة load عنصر المعالجة المُسبقة، وهو في هذه الحالة قاموس يربط قيم درجة نقاء الألماس باختصاراتها.
  • تستخدم طريقة المعالجة المسبقة هذا العنصر لضمان أنّ ميزة الوضوح تكون بتنسيقها المختصر في وقت العرض. إذا لم يكن كذلك، يتم تحويل السلسلة الكاملة إلى اختصارها.
  • تعرض طريقة postprocess القيمة المتوقّعة كسلسلة تتضمّن علامة الدولار، كما تقرّب القيمة.

بعد ذلك، استخدِم حزمة تطوير البرامج (SDK) الخاصة بلغة Python في Vertex AI لإنشاء الصورة. باستخدام إجراءات التوقّع المخصّصة، سيتم إنشاء Dockerfile وإنشاء صورة لك.

from google.cloud import aiplatform

aiplatform.init(project=PROJECT_ID, location=REGION)

import os

from google.cloud.aiplatform.prediction import LocalModel

from src_dir.predictor import CprPredictor  # Should be path of variable $USER_SRC_DIR

local_model = LocalModel.build_cpr_model(
    USER_SRC_DIR,
    f"{REGION}-docker.pkg.dev/{PROJECT_ID}/{REPOSITORY}/{IMAGE}",
    predictor=CprPredictor,
    requirements_path=os.path.join(USER_SRC_DIR, "requirements.txt"),
)

اكتب ملف اختبار يتضمّن عينتَين للتنبؤ. يحتوي أحد المثالين على اسم الوضوح المختصر، ولكن يجب تحويل المثال الآخر أولاً.

import json

sample = {"instances": [
  [0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
  [0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}

with open('instances.json', 'w') as fp:
    json.dump(sample, fp)

اختبِر الحاوية محليًا من خلال نشر نموذج محلي.

with local_model.deploy_to_local_endpoint(
    artifact_uri = 'model_artifacts/', # local path to artifacts
) as local_endpoint:
    predict_response = local_endpoint.predict(
        request_file='instances.json',
        headers={"Content-Type": "application/json"},
    )

    health_check_response = local_endpoint.run_health_check()

يمكنك الاطّلاع على نتائج التوقّعات باستخدام:

predict_response.content

9- تفعيل النموذج في Vertex AI

بعد اختبار الحاوية محليًا، حان الوقت لنقل الصورة إلى Artifact Registry وتحميل النموذج إلى سجلّ نماذج Vertex AI.

أولاً، اضبط إعدادات Docker للوصول إلى Artifact Registry.

!gcloud artifacts repositories create {REPOSITORY} --repository-format=docker \
--location=us-central1 --description="Docker repository"

!gcloud auth configure-docker {REGION}-docker.pkg.dev --quiet

بعد ذلك، ادفع الصورة.

local_model.push_image()

وحمِّل النموذج.

model = aiplatform.Model.upload(local_model = local_model,
                                display_name=MODEL_DISPLAY_NAME,
                                artifact_uri=f"{BUCKET_NAME}/{MODEL_ARTIFACT_DIR}",)

بعد تحميل النموذج، من المفترض أن يظهر في وحدة التحكّم:

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

بعد ذلك، ادفع الصورة.

endpoint = model.deploy(machine_type="n1-standard-2")

أخيرًا، اختبِر النموذج الذي تم نشره من خلال الحصول على نتيجة توقّعية.

endpoint.predict(instances=[[0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43]])

🎉 تهانينا! 🎉

تعرّفت على كيفية استخدام Vertex AI من أجل:

  • كتابة منطق مخصّص للمعالجة المسبقة واللاحقة باستخدام إجراءات توقّع مخصّصة

تعتقد Cosmopup أنّ الدروس التطبيقية حول الترميز رائعة!!

e6d3675ca7c6911f.jpeg

ما هي الخطوات التالية؟

مزيد من المعلومات والفيديوهات

المستندات المرجعية