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

3- إعداد البيئة
أكمِل الخطوات الواردة في المختبر تدريب النماذج المخصّصة باستخدام Vertex AI لإعداد بيئتك.
4. تحميل النموذج إلى السجلّ
قبل أن نتمكّن من استخدام نموذجنا للحصول على توقّعات، علينا تحميله إلى سجلّ نماذج Vertex AI، وهو مستودع يمكنك من خلاله إدارة مراحل نشاط نماذج تعلُّم الآلة.
يمكنك تحميل النماذج عند إعداد مهمة تدريب مخصّصة، كما هو موضّح أدناه.

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

انقر على IMPORT.

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

ضمن إعدادات النموذج، استورِد النموذج باستخدام حاوية مُنشأة مسبقًا واستخدِم TensorFlow 2.8. يمكنك الاطّلاع على القائمة الكاملة لحاويات التوقّعات المُعدّة مسبقًا هنا.
بعد ذلك، قدِّم المسار إلى حزمة التخزين في السحابة الإلكترونية التي حفظت فيها عناصر النموذج في مهمة التدريب المخصّصة. من المفترض أن يظهر بالشكل التالي: gs://{PROJECT_ID}-bucket/model_output
سنتخطّى قسم "قابلية التفسير"، ولكن إذا أردت معرفة المزيد عن Vertex الذكاء الاصطناعي القابل للتفسير، يمكنك الاطّلاع على المستندات.
عند استيراد النموذج، سيظهر في السجلّ.

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

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

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

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

استيراد حزمة تطوير البرامج (SDK) من Vertex AI Python وnumpy وPIL
from google.cloud import aiplatform
import numpy as np
from PIL import Image
نزِّل الصورة أدناه وحمِّلها إلى مثيل Workbench. سنجرّب النموذج على هذه الصورة لنبات الهندباء.

أولاً، حدِّد نقطة النهاية. عليك استبدال {PROJECT_NUMBER} و{ENDPOINT_ID} أدناه.
endpoint = aiplatform.Endpoint(
endpoint_name="projects/{PROJECT_NUMBER}/locations/us-central1/endpoints/{ENDPOINT_ID}")
يمكنك العثور على endpoint_id في قسم "نقاط النهاية" في Cloud Console.

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

يفتح الرمز أدناه الصورة ويغيّر حجمها باستخدام 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}")
يمكنك العثور على رقم تعريف النموذج من خلال اختيار اسم النموذج وإصداره من قسم "النماذج" في وحدة التحكّم، ثم النقر على تفاصيل الإصدار.

أخيرًا، استخدِم حزمة تطوير البرامج (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',)
يمكنك تتبُّع مدى تقدّم المهمة في قسم "التوقّعات المجمّعة" في وحدة التحكّم. يُرجى العِلم أنّ تنفيذ مهمة توقّع مجمّعة لصورة واحدة ليس فعّالاً.

الخطوات التالية
في هذا المثال، حوّلنا صورة الاختبار إلى NumPy أولاً قبل إجراء طلب التوقّع. بالنسبة إلى حالات الاستخدام الأكثر واقعية، من المحتمل أنّك تريد إرسال الصورة نفسها وليس تحميلها في NumPy أولاً. لإجراء ذلك، عليك تعديل وظيفة عرض TensorFlow لفك ترميز وحدات بايت الصور. يتطلّب ذلك بعض الجهد الإضافي، ولكنّه سيكون أكثر فعالية للصور الكبيرة وإنشاء التطبيقات. يمكنك الاطّلاع على مثال في ورقة الملاحظات هذه.
🎉 تهانينا! 🎉
تعرّفت على كيفية استخدام Vertex AI من أجل:
- تحميل النماذج إلى "سجلّ نماذج Vertex AI"
- الحصول على تنبؤات مجمّعة وعلى الإنترنت
لمزيد من المعلومات عن الأجزاء المختلفة من Vertex، اطّلِع على المستندات.
7. تنظيف
عليك إلغاء نشر النماذج من نقطة النهاية إذا كنت لا تخطّط لاستخدامها. يمكنك أيضًا حذف نقطة النهاية بالكامل. يمكنك دائمًا إعادة نشر نموذج في نقطة نهاية إذا احتجت إلى ذلك.

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

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