النموذج الأوّلي إلى الإنتاج: الحصول على توقّعات من نماذج مدرَّبة مخصّصة

1. نظرة عامة

في هذا الدرس التطبيقي، ستستخدم Vertex AI للحصول على توقّعات على الإنترنت وتجميعها من نموذج مدرَّب مخصّص.

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

.

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

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

  • تحميل النماذج إلى سجلّ نماذج Vertex AI
  • نشر نموذج إلى نقطة نهاية
  • عرض التوقعات على الإنترنت وتجميع التوقعات باستخدام واجهة المستخدم وحزمة تطوير البرامج (SDK)

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

2. مقدّمة عن Vertex AI

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

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

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

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

أكمِل الخطوات الواردة في الميزة الاختبارية تدريب النماذج المخصّصة باستخدام Vertex AI لإعداد بيئتك.

4. تحميل النموذج إلى قاعدة بيانات المسجّلين

قبل أن نتمكّن من استخدام نموذجنا للحصول على توقّعات، يجب تحميله إلى Vertex AI model Registry، وهو مستودع يمكنك من خلاله إدارة مراحل نشاط نماذج تعلُّم الآلة.

يمكنك تحميل نماذج عند ضبط مهمة تدريب مخصّصة، كما هو موضّح أدناه.

training_prediction

يمكنك أيضًا استيراد النماذج بعد اكتمال مهمة التدريب طالما أنك تخزِّن عناصر النموذج المحفوظة في حزمة على Cloud Storage. هذا هو الخيار الذي سنستخدمه في هذا التمرين.

انتقل إلى قسم النماذج داخل وحدة التحكم.

قائمة النماذج

اختيار استيراد

import_model

اختَر استيراد كنموذج جديد، ثم أدخِل اسمًا للنموذج.

new_model

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

بعد ذلك، قدِّم المسار إلى حزمة التخزين في السحابة الإلكترونية حيث حفظت عناصر النموذج في مهمة التدريب المخصّصة. من المفترض أن يظهر العنصر على النحو التالي: gs://{PROJECT_ID}-bucket/model_output.

سنتخطّى قسم "إمكانية التفسير"، ولكن إذا أردت الحصول على المزيد من المعلومات حول الذكاء الاصطناعي الموضَّح من خلال Vertex، يمكنك الاطّلاع على المستندات.

عند استيراد النموذج، سيظهر لك في السجل.

flower_model

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

from google.cloud import aiplatform

my_model = aiplatform.Model.upload(display_name='flower-model',
                                  artifact_uri='gs://{PROJECT_ID}-bucket/model_output',
                                  serving_container_image_uri='us-docker.pkg.dev/vertex-ai/prediction/tf2-cpu.2-8:latest')

5- نشر نموذج إلى نقطة النهاية

هناك نوعان من الوظائف التنبؤية التي يمكننا تنفيذها في Vertex AI: التجميع وعلى الإنترنت.

التوقع المجمَّع هو طلب غير متزامن. وهي مناسبة عندما لا تحتاج إلى رد فوري وتريد معالجة البيانات المتراكمة في طلب واحد.

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

والآن بعد أن أصبح النموذج في السجل، يمكننا استخدامه للتنبؤات المجمّعة.

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

للنشر في نقطة نهاية، اختَر النقاط الثلاث في أقصى يسار النموذج، ثم اختَر نشر إلى نقطة النهاية.

deploy_model

أدخِل اسمًا لنقطة النهاية، ثم اترك باقي الإعدادات كما هي وانقر على متابعة.

endpoint_name

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

بما أنّ هذه الميزة الاختبارية مصمّمة لغرض العرض فقط ولن نستخدم نقطة النهاية هذه لعدد كبير من الزيارات، يمكنك ضبط الحد الأقصى لعدد ملاحظات الحوسبة على 1 واختيار n1-standard-4 ليكون نوع الجهاز.

endpoint_compute

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

بعد ذلك، انقر على نشر.

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

إذا أردت نشر نموذج من خلال حزمة تطوير البرامج (SDK)، شغِّل الأمر أدناه.

my_model = aiplatform.Model("projects/{PROJECT_NUMBER}/locations/us-central1/models/{MODEL_ID}") 

endpoint = my_model.deploy(
     deployed_model_display_name='my-endpoint',
     traffic_split={"0": 100},
     machine_type="n1-standard-4",
     accelerator_count=0,
     min_replica_count=1,
     max_replica_count=1,
   )

6- الحصول على توقعات

التوقعات على الإنترنت

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

لأغراض التوضيح، سنسمي نقطة النهاية هذه من Workbench.

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

tf_kernel

استيراد حزمة تطوير البرامج (SDK) الخاصة بـ Vertex AI Python وnumpy وPIL

from google.cloud import aiplatform

import numpy as np
from PIL import Image

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

test_image

أولاً، حدد نقطة النهاية. عليك استبدال {PROJECT_NUMBER} و{ENDPOINT_ID} أدناه.

endpoint = aiplatform.Endpoint(
    endpoint_name="projects/{PROJECT_NUMBER}/locations/us-central1/endpoints/{ENDPOINT_ID}")

يمكنك العثور على End_id في قسم "نقاط النهاية" في Cloud Console.

endpoint_id

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

رقم_المشروع

يفتح الرمز أدناه ويغيّر حجم الصورة باستخدام PIL.

IMAGE_PATH = "test-image.jpg"
im = Image.open(IMAGE_PATH)

بعد ذلك، قم بتحويل بيانات numpy إلى النوع float32 وإلى قائمة. نحول إلى قائمة لأن بيانات numpy غير قابلة للتسلسل بتنسيق JSON، لذا لا يمكننا إرسالها في نص الطلب.

x_test = np.asarray(im).astype(np.float32).tolist()

وأخيرًا، اتصِل بالرقم endpoint.predict.

endpoint.predict(instances=x_test).predictions

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

التوقعات المجمّعة

هناك طرق مختلفة لتنسيق بياناتك من أجل التوقّع المجمَّع. للتبسيط، سننسخ بيانات numpy إلى ملف json ونحفظ الملف في Cloud Storage.

with open('test-data.json', 'w') as fp:
    json.dump(x_test, fp)

!gsutil cp test-data.json gs://{YOUR_BUCKET}

بعد ذلك، حدد النموذج. يشبه ذلك تحديد نقطة النهاية، إلا أنّك ستحتاج إلى تقديم MODEL_ID بدلاً من ENDPOINT_ID.

my_model=aiplatform.Model("projects/{PROJECT_NUMBER}/locations/us-central1/models/{MODEL_ID}") 

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

model_id

أخيرًا، يمكنك استخدام حزمة تطوير البرامج (SDK) لاستدعاء مهمة توقّع دفعة وتمرير مسار Cloud Storage حيث تم تخزين ملف json وتوفير موقع في Cloud Storage لتخزين نتائج التوقّع.

batch_prediction_job = my_model.batch_predict(
    job_display_name='flower_batch_predict',
    gcs_source='gs://{YOUR_BUCKET}/test-data.json',
    gcs_destination_prefix='gs://{YOUR_BUCKET}/prediction-results',
    machine_type='n1-standard-4',)

يمكنك تتبع تقدم المهمة في قسم "توقعات الدفعة" في وحدة التحكم. لاحظ أن تشغيل مهمة التنبؤ المجمّع لصورة واحدة ليس فعالاً.

batch_pred

الخطوات التالية

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

🎉 تهانينا. 🎉

لقد تعلمت كيفية استخدام Vertex AI لإجراء ما يلي:

  • تحميل النماذج إلى سجلّ نماذج Vertex AI
  • الحصول على توقعات مجمّعة وعلى الإنترنت

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

7. تنظيف

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

undeploy_model

تنتهي مهلة أوراق الملاحظات المُدارة على منضدة تلقائيًا بعد مرور 180 دقيقة في حال عدم النشاط، لذا لا داعي للقلق بشأن إيقاف المثيل. إذا أردت إيقاف المثيل يدويًا، انقر على زر "إيقاف" في قسم Vertex AI Workbench على وحدة التحكّم. إذا كنت ترغب في حذف الدفتر بالكامل، فانقر فوق الزر "Delete" (حذف).

إيقاف المثيل

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

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