1. نظرة عامة
في هذا الدرس التطبيقي، ستستخدم Vertex AI للحصول على توقّعات على الإنترنت وبشكل مجمّع من نموذج مخصّص تم تدريبه.
هذه التجربة هي جزء من سلسلة الفيديوهات من النموذج الأوّلي إلى الإنتاج. احرص على إكمال الجلسة السابقة في المختبر قبل تجربة هذه الجلسة. يمكنك مشاهدة الفيديو المصاحب لمزيد من المعلومات:
.
ما ستتعرّف عليه
ستتعرّف على كيفية:
- تحميل النماذج إلى "سجلّ نماذج Vertex AI"
- نشر نموذج في نقطة نهاية
- الحصول على توقّعات على الإنترنت وعلى مستوى المجموعة باستخدام واجهة المستخدم وحزمة تطوير البرامج (SDK)
تبلغ التكلفة الإجمالية لتشغيل هذا التمرين على Google Cloud حوالي $1.
2. مقدمة عن Vertex AI
يستخدم هذا المختبر أحدث منتجات الذكاء الاصطناعي المتاحة على Google Cloud. تدمج Vertex AI عروض تعلُّم الآلة في Google Cloud في تجربة تطوير سلسة. في السابق، كان بالإمكان الوصول إلى النماذج المدربة باستخدام AutoML والنماذج المخصّصة من خلال خدمات منفصلة. ويدمج العرض الجديد كلاً من واجهة برمجة تطبيقات واحدة مع منتجات جديدة أخرى. يمكنك أيضًا نقل المشاريع الحالية إلى Vertex AI.
تتضمّن Vertex AI العديد من المنتجات المختلفة لدعم سير عمل تعلُّم الآلة من البداية إلى النهاية. سيركّز هذا الدرس التطبيقي على المنتجات المميّزة أدناه: التوقّعات وWorkbench.
3- إعداد البيئة
أكمِل الخطوات الواردة في مختبر تدريب النماذج المخصّصة باستخدام Vertex AI لإعداد بيئتك.
4. تحميل النموذج إلى السجلّ
قبل أن نتمكّن من استخدام النموذج للحصول على توقّعات، علينا تحميله إلى سجلّ نماذج Vertex AI، وهو مستودع يمكنك من خلاله إدارة دورة حياة نماذج تعلُّم الآلة.
يمكنك تحميل نماذج عند ضبط مهمة تدريب مخصّصة، كما هو موضّح أدناه.
أو يمكنك استيراد النماذج بعد اكتمال مهمة التدريب طالما أنّك تخزِّن عناصر النموذج المحفوظة في حزمة Cloud Storage. هذا هو الخيار الذي سنستخدمه في هذا الدرس التطبيقي.
انتقل إلى قسم النماذج داخل وحدة التحكم.
انقر على استيراد.
اختَر استيراد كنموذج جديد، ثم أدخِل اسمًا للنموذج.
ضمن إعدادات النموذج، استورِد النموذج باستخدام حاوية تم إنشاؤها مسبقًا واستخدِم 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- الحصول على توقّعات
التوقعات على الإنترنت
عند نشر النموذج في نقطة نهاية، يمكنك الوصول إليه مثل أي نقطة نهاية أخرى من خلال واجهة برمجة التطبيقات REST، ما يعني أنّه يمكنك الاتصال به من خلال وظيفة في السحابة الإلكترونية أو برنامج محادثة مبرمَج أو تطبيق ويب أو غير ذلك.
لأغراض العرض التوضيحي، سنطلب هذه النهاية من Workbench.
ارجع إلى دفتر البيانات الذي أنشأته في الدرس التطبيقي السابق. من مشغّل التطبيقات، أنشِئ ورقة ملاحظات جديدة من TensorFlow 2.
استيراد حزمة تطوير برامج Vertex AI Python SDK ومكتبة Numpy ومكتبة PIL
from google.cloud import aiplatform
import numpy as np
from PIL import Image
نزِّل الصورة أدناه وحمِّلها إلى مثيل "مساحة العمل". سنختبر النموذج على هذه الصورة لنبات الهندباء.
أولاً، حدِّد نقطة النهاية. عليك استبدال {PROJECT_NUMBER}
و{ENDPOINT_ID}
أدناه.
endpoint = aiplatform.Endpoint(
endpoint_name="projects/{PROJECT_NUMBER}/locations/us-central1/endpoints/{ENDPOINT_ID}")
يمكنك العثور على نقطة النهاية_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 للانتقال إلى "مساحة التخزين"، واختَر الحزمة، ثم انقر على "حذف":