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

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. ويتيح هذا الإطار لعلماء البيانات الاتصال بخدمات بيانات Google Cloud Platform وتحليل مجموعات البيانات وتجربة تقنيات نمذجة مختلفة ونشر النماذج المدربة في مرحلة الإنتاج وإدارة عمليات MLOps خلال دورة حياة النموذج.

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

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

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

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

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

انتقِل إلى 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 وحدات معالجة مركزية وذاكرة وصول عشوائي (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، انتقِل إلى "مساحة التخزين" واختَر الحزمة وانقر على "حذف":

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