منصة Vertex AI Workbench: إنشاء نموذج لتصنيف الصور من خلال تعلُّم النقل وتطبيق دفتر الملاحظات

‫Vertex AI Workbench:
إنشاء نموذج لتصنيف الصور باستخدام تعلُّم الاستيعاب وبرنامج تنفيذ دفاتر البيانات

لمحة عن هذا الدرس التطبيقي حول الترميز

subjectتاريخ التعديل الأخير: مايو 23, 2022
account_circleتأليف: Nikita Namjoshi

1. نظرة عامة

في هذا الدرس التطبيقي، ستتعرّف على كيفية إعداد عمليات تنفيذ أوراق الملاحظات وإطلاقها باستخدام Vertex AI Workbench.

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

  • استخدام المَعلمات في دفتر ملاحظات
  • إعداد عمليات تنفيذ أوراق الملاحظات وإطلاقها من واجهة مستخدم Vertex AI Workbench

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

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

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

يتضمّن Vertex AI العديد من المنتجات المختلفة لدعم سير العمل الشامل لتعلُّم الآلة. سيركّز هذا التمرين المعملي على منصة Vertex AI Workbench.

تساعد Vertex AI Workbench المستخدمين في إنشاء مهام سير عمل مستنِدة إلى أجهزة الكمبيوتر الدفترية من خلال تكامل وثيق مع خدمات البيانات (مثل Dataproc وDataflow وBigQuery وDataplex) وVertex AI. وهو يتيح لعلماء البيانات الاتصال بخدمات بيانات GCP، وتحليل مجموعات البيانات، وتجربة أساليب نمذجة مختلفة، ونشر نماذج مدرَّبة في الإنتاج، وإدارة MLOps خلال دورة حياة النموذج.

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

في هذا التمرين المعملي، ستستخدم تعلّم النقل لتدريب نموذج لتصنيف الصور على مجموعة بيانات DeepWeeds من مجموعات بيانات TensorFlow. ستستخدم TensorFlow Hub لتجربة متّجهات الميزات المستخرَجة من بُنى نماذج مختلفة، مثل ResNet50 وInception وMobileNet، وجميعها مدرَّبة مسبقًا على مجموعة بيانات قياس الأداء في ImageNet. من خلال الاستفادة من أداة تنفيذ أجهزة الكمبيوتر الدفترية من خلال واجهة مستخدم Vertex AI Workbench، سيتم إطلاق وظائف في Vertex AI Training التي تستخدم هذه النماذج المدرَّبة مسبقًا وإعادة تدريب الطبقة الأخيرة للتعرّف على الفئات من مجموعة بيانات DeepWeeds.

4. إعداد البيئة

ستحتاج إلى مشروع Google Cloud Platform مع تفعيل الفوترة لتشغيل هذا الدرس التطبيقي حول الترميز. لإنشاء مشروع، يُرجى اتّباع التعليمات هنا.

الخطوة 1: تفعيل واجهة برمجة تطبيقات Compute Engine

انتقِل إلى Compute Engine واختَر تفعيل إذا لم يسبق لك تفعيله.

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

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

لوحة بيانات Vertex AI

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

من قسم Vertex AI في Cloud Console، انقر على Workbench:

قائمة Vertex AI

فعِّل Notebooks API إذا لم يسبق لك تفعيلها.

Notebook_api

بعد التفعيل، انقر على المفكرات المُدارة:

Notebooks_UI

بعد ذلك، اختَر دفتر ملاحظات جديد.

new_notebook

أدخِل اسمًا لدفتر الملاحظات، ثم انقر على الإعدادات المتقدمة.

create_notebook

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

idle_timeout

ويمكنك ترك جميع الإعدادات المتقدّمة الأخرى كما هي.

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

بعد إنشاء المثيل، اختَر فتح JupyterLab.

open_jupyterlab

عند استخدام مثيل جديد لأول مرة، سيُطلب منك المصادقة.

مصادقة

يتضمّن Vertex AI Workbench طبقة توافق حوسبة تتيح لك تشغيل نواة TensorFlow وPySpark وR وغيرها من خلال مثيل واحد لدفتر الملاحظات. بعد المصادقة، ستتمكن من اختيار نوع ورقة الملاحظات التي تريد استخدامها من مشغّل التطبيقات.

بالنسبة إلى هذه التجربة، اختَر نواة TensorFlow 2.

tf_kernel

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

تتكون مجموعة بيانات DeepWeeds من 17509 صورة تلتقط ثمانية أنواع مختلفة من الأعشاب الضارة في أستراليا. في هذا القسم، ستكتب التعليمات البرمجية للمعالجة المسبقة لمجموعة بيانات DeepWeeds وإنشاء نموذج لتصنيف الصور وتدريبه باستخدام متجهات الميزات التي تم تنزيلها من TensorFlow Hub.

ستحتاج إلى نسخ مقتطفات الرمز التالية إلى خلايا دفتر الملاحظات. يكون تنفيذ الخلايا اختياريًا.

الخطوة 1: تنزيل مجموعة البيانات ومعالجتها مسبقًا

أولاً، ثبِّت الإصدار الليلي من حِزم بيانات TensorFlow للتأكّد من الحصول على أحدث إصدار من حِزمة بيانات DeepWeeds.

!pip install tfds-nightly

بعد ذلك، استورِد المكتبات اللازمة:

import tensorflow as tf
import tensorflow_datasets as tfds
import tensorflow_hub as hub

نزِّل البيانات من مجموعات بيانات TensorFlow واستخرج عدد الفئات وحجم مجموعة البيانات.

data, info = tfds.load(name='deep_weeds', as_supervised=True, with_info=True)
NUM_CLASSES = info.features['label'].num_classes
DATASET_SIZE = info.splits['train'].num_examples

حدِّد دالة المعالجة المسبقة لتغيير حجم بيانات الصورة بمقدار 255.

def preprocess_data(image, label):
  image
= tf.image.resize(image, (300,300))
 
return tf.cast(image, tf.float32) / 255., label

لا تأتي مجموعة بيانات DeepWeeds مع تقسيمات التطبيق/التحقق. تأتي فقط مع مجموعة بيانات تدريبية. في التعليمة البرمجية أدناه، ستستخدم 80٪ من تلك البيانات للتدريب، والـ 20٪ المتبقية للتحقق.

# Create train/validation splits

# Shuffle dataset
dataset
= data['train'].shuffle(1000)

train_split
= 0.8
val_split
= 0.2
train_size
= int(train_split * DATASET_SIZE)
val_size = int(val_split * DATASET_SIZE)

train_data
= dataset.take(train_size)
train_data  
= train_data.map(preprocess_data)
train_data  
= train_data.batch(64)

validation_data
= dataset.skip(train_size)
validation_data  
= validation_data.map(preprocess_data)
validation_data  
= validation_data.batch(64)

الخطوة 2: إنشاء نموذج

الآن بعد أن أنشأت مجموعات بيانات التدريب والتحقق من الصحة، فأنت جاهز لإنشاء نموذجك. يوفر TensorFlow Hub متجهات الخصائص، وهي عبارة عن نماذج مدرَّبة مسبقًا بدون طبقة التصنيف العليا. ستنشئ أداة استخراج الميزات من خلال إحاطة النموذج المدرَّب مسبقًا باستخدام hub.KerasLayer، والذي يتضمّن TensorFlow savedModel كطبقة Keras. عليك بعد ذلك إضافة طبقة تصنيف وإنشاء نموذج باستخدام واجهة برمجة التطبيقات Keras Sequential API.

أولاً، حدِّد المَعلمة feature_extractor_model، وهي اسم مصفوفة ميزات TensorFlow Hub التي ستستخدمها كأساس لنموذجك.

feature_extractor_model = "inception_v3"

بعد ذلك، ستجعل هذه الخلية خلية مَعلمة، ما سيتيح لك تمرير قيمة للمَعلمة feature_extractor_model أثناء التشغيل.

أولاً، حدد الخلية وانقر فوق عارض الخصائص في اللوحة اليمنى.

property_inspector

تشكّل العلامات طريقة بسيطة لإضافة بيانات وصفية إلى دفتر ملاحظاتك. اكتب "المَعلمات" في المربع "إضافة علامة" واضغط على Enter. في وقت لاحق عند ضبط التنفيذ، ستمرر القيم المختلفة، وهو في هذه الحالة نموذج TensorFlow Hub الذي تريد اختباره. تجدر الإشارة إلى أنّه يجب كتابة كلمة "المَعلمات". (وليس أي كلمة أخرى) لأن هذه هي الطريقة التي يعرف بها منفذ تنفيذ دفتر الملاحظات الخلايا التي يجب تعيين معلمةها.

add_tag

يمكنك إغلاق عارض الخصائص بالنقر على رمز الترس المزدوج مرة أخرى.

أنشِئ خلية جديدة وحدِّد tf_hub_uri، حيث ستستخدم استقراء السلسلة لاستبدال اسم النموذج المدرَّب مسبقًا والذي تريد استخدامه كنموذج أساسي لعملية تنفيذ معيّنة لدفتر الملاحظات. لقد ضبطت feature_extractor_model تلقائيًا على "inception_v3"، إلا أنّ القيم الأخرى الصالحة هي "resnet_v2_50" أو "mobilenet_v1_100_224". يمكنك استكشاف خيارات إضافية في كتالوج TensorFlow Hub.

tf_hub_uri = f"https://tfhub.dev/google/imagenet/{feature_extractor_model}/feature_vector/5"

بعد ذلك، أنشئ أداة استخراج الميزات باستخدام hub.KerasLayer وأدخِل tf_hub_uri الذي حدّدته أعلاه. يمكنك ضبط الوسيطة trainable=False لتجميد المتغيّرات كي يعدِّل التدريب طبقة المصنِّف الجديدة التي ستضيفها في الأعلى فقط.

feature_extractor_layer = hub.KerasLayer(
    tf_hub_uri
,
    trainable
=False)

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

model = tf.keras.Sequential([
  feature_extractor_layer
,
  tf
.keras.layers.Dense(units=NUM_CLASSES)
])

أخيرًا، عليك تجميع النموذج وضبطه.

model.compile(
  optimizer
=tf.keras.optimizers.Adam(),
  loss
=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
  metrics
=['acc'])

model
.fit(train_data, validation_data=validation_data, epochs=3)

6. تنفيذ ورقة الملاحظات

انقر على رمز أداة التنفيذ في أعلى ورقة الملاحظات.

منفِّذ تنفيذ

الخطوة 1: ضبط مهمة التدريب

أدخِل اسمًا للتنفيذ وقدِّم حزمة مساحة تخزين في مشروعك.

executor_config

يجب ضبط نوع الجهاز على 4 وحدات معالجة مركزية (CPU) وذاكرة وصول عشوائي (RAM) بسعة 15 غيغابايت.

وأضِف وحدة معالجة رسومات NVIDIA واحدة.

اضبط البيئة على TensorFlow Enterprise 2.6 (وحدة معالجة الرسومات).

اختَر التنفيذ لمرة واحدة.

الخطوة 2: ضبط المَعلمات

انقر على القائمة المنسدلة خيارات متقدّمة لضبط المَعلمة. في المربّع، اكتب feature_extractor_model=resnet_v2_50. سيؤدي هذا الإجراء إلى إلغاء inception_v3، وهي القيمة التلقائية التي ضبطتها لهذه المَعلمة في ورقة الملاحظات، باستخدام resnet_v2_50.

advanced_options

يمكنك ترك مربّع استخدام حساب الخدمة التلقائي محدّدًا.

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

الخطوة 3: فحص النتائج

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

executions_UI

إذا نقرت على اسم عملية التنفيذ، سيتم نقلك إلى مهمة التدريب على Vertex AI حيث يتم تشغيل دفتر الملاحظات.

vertex_training

عند اكتمال المهمة، ستتمكن من الاطّلاع على ورقة الملاحظات الناتجة عن طريق النقر على عرض النتيجة.

view_result

ستلاحظ في ورقة الملاحظات الناتجة أنّ قيمة feature_extractor_model تم استبدالها بالقيمة التي ضبطتها في وقت التشغيل.

param_cells

🎉 تهانينا. 🎉

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

  • استخدام المَعلمات في دفتر ملاحظات
  • إعداد عمليات تنفيذ أوراق الملاحظات وإطلاقها من واجهة مستخدم Vertex AI Workbench

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

7. تنظيف

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

حذف

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

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