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

1. نظرة عامة

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

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

.

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

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

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

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

2. مقدمة عن Vertex AI

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

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

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

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

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

4. تحميل النموذج إلى السجلّ

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

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

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- الحصول على توقّعات

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

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

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

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

tf_kernel

استيراد حزمة تطوير برامج Vertex AI Python SDK ومكتبة 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}")

يمكنك العثور على نقطة النهاية_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

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

إيقاف المثيل

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

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