Vertex AI Workbench: ساخت یک مدل طبقه بندی تصویر با آموزش انتقال و اجرای نوت بوک

1. بررسی اجمالی

در این آزمایشگاه، نحوه پیکربندی و راه‌اندازی اجراهای نوت‌بوک با Vertex AI Workbench را خواهید آموخت.

چیزی که یاد می گیرید

شما یاد خواهید گرفت که چگونه:

  • از پارامترها در دفترچه یادداشت استفاده کنید
  • اجراهای نوت بوک را از Vertex AI Workbench UI پیکربندی و راه اندازی کنید

کل هزینه اجرای این آزمایشگاه در Google Cloud حدود 2 دلار است.

2. مقدمه ای بر Vertex AI

این آزمایشگاه از جدیدترین محصول هوش مصنوعی موجود در Google Cloud استفاده می کند. Vertex AI پیشنهادات ML را در سراسر Google Cloud در یک تجربه توسعه یکپارچه ادغام می کند. پیش از این، مدل‌های آموزش دیده با AutoML و مدل‌های سفارشی از طریق سرویس‌های جداگانه قابل دسترسی بودند. پیشنهاد جدید هر دو را به همراه سایر محصولات جدید در یک API واحد ترکیب می کند. همچنین می توانید پروژه های موجود را به Vertex AI منتقل کنید. اگر بازخوردی دارید، لطفاً صفحه پشتیبانی را ببینید.

Vertex AI شامل بسیاری از محصولات مختلف برای پشتیبانی از گردش کار ML سرتاسر است. این آزمایشگاه بر روی Vertex AI Workbench تمرکز خواهد کرد.

Vertex AI Workbench به کاربران کمک می‌کند تا از طریق یکپارچه‌سازی عمیق با سرویس‌های داده (مانند Dataproc، Dataflow، BigQuery، و Dataplex) و Vertex AI، به سرعت جریان‌های کاری مبتنی بر نوت‌بوک سرتاسر بسازند. این دانشمندان داده را قادر می سازد تا به سرویس های داده GCP متصل شوند، مجموعه داده ها را تجزیه و تحلیل کنند، با تکنیک های مدل سازی مختلف آزمایش کنند، مدل های آموزش دیده را در تولید مستقر کنند و MLOps را از طریق چرخه عمر مدل مدیریت کنند.

3. از نمای کلی مورد استفاده کنید

در این آزمایشگاه، از آموزش انتقال برای آموزش یک مدل طبقه‌بندی تصویر بر روی مجموعه داده DeepWeeds از TensorFlow Datasets استفاده خواهید کرد. از TensorFlow Hub برای آزمایش بردارهای ویژگی استخراج‌شده از معماری‌های مدل مختلف، مانند ResNet50 ، Inception ، و MobileNet استفاده می‌کنید که همگی در مجموعه داده‌های معیار ImageNet از قبل آموزش داده شده‌اند. با استفاده از اجراکننده نوت بوک از طریق Vertex AI Workbench UI، کارهایی را در Vertex AI Training راه اندازی می کنید که از این مدل های از پیش آموزش دیده استفاده می کنند و آخرین لایه را برای شناسایی کلاس ها از مجموعه داده DeepWeeds دوباره آموزش می دهید.

4. محیط خود را تنظیم کنید

برای اجرای این کد لبه به یک پروژه Google Cloud Platform با فعال بودن صورتحساب نیاز دارید. برای ایجاد یک پروژه، دستورالعمل های اینجا را دنبال کنید.

مرحله 1: Compute Engine API را فعال کنید

به Compute Engine بروید و اگر قبلاً فعال نشده است Enable را انتخاب کنید.

مرحله ۲: Vertex AI API را فعال کنید

به بخش Vertex AI در Cloud Console خود بروید و روی Enable Vertex AI API کلیک کنید.

داشبورد Vertex AI

مرحله 3: یک نمونه Vertex AI Workbench ایجاد کنید

از بخش Vertex AI در Cloud Console خود، روی Workbench کلیک کنید:

منوی Vertex AI

اگر قبلاً API Notebooks وجود ندارد، آن را فعال کنید.

Notebook_api

پس از فعال شدن، روی دفترچه یادداشت مدیریت شده کلیک کنید:

Notebooks_UI

سپس NEW NOTEBOOK را انتخاب کنید.

نوت بوک

نوت بوک خود را نامی بگذارید و سپس روی تنظیمات پیشرفته کلیک کنید.

create_notebook

در قسمت تنظیمات پیشرفته، خاموش شدن بی‌حرکت را فعال کنید و تعداد دقیقه‌ها را روی 60 دقیقه تنظیم کنید. این بدان معناست که نوت بوک شما در صورت عدم استفاده به طور خودکار خاموش می‌شود تا هزینه‌های غیرضروری متحمل نشوید.

idle_timeout

شما می توانید تمام تنظیمات پیشرفته دیگر را به همین صورت رها کنید.

بعد، روی ایجاد کلیک کنید.

پس از ایجاد نمونه، Open 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 Datasets دانلود کنید و تعداد کلاس ها و اندازه مجموعه را استخراج کنید.

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 ارسال کنید.

ابتدا سلول را انتخاب کرده و در پنل سمت راست بر روی بازرس ملک کلیک کنید.

دارایی_بازرس

برچسب ها روشی ساده برای افزودن متادیتا به نوت بوک شما هستند. در کادر Add Tag "parameters" را تایپ کرده و 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. نوت بوک را اجرا کنید

روی نماد Executor در بالای نوت بوک کلیک کنید.

مجری

مرحله 1: کار آموزشی را پیکربندی کنید

به اجرای خود یک نام بدهید و یک سطل ذخیره در پروژه خود تهیه کنید.

executor_config

نوع ماشین را روی 4 CPU، 15 گیگابایت رم تنظیم کنید.

و 1 GPU NVIDIA اضافه کنید.

محیط را روی TensorFlow Enterprise 2.6 (GPU) تنظیم کنید.

یک بار اجرا را انتخاب کنید.

مرحله 2: پارامترها را پیکربندی کنید

برای تنظیم پارامتر خود، روی منوی کشویی ADVANCED OPTIONs کلیک کنید. در کادر، feature_extractor_model=resnet_v2_50 را تایپ کنید. با این کار inception_v3 ، مقدار پیش‌فرضی که برای این پارامتر در نوت بوک تنظیم کرده‌اید، با resnet_v2_50 لغو می‌شود.

پیشرفته_گزینه ها

می‌توانید کادر «استفاده از خدمات پیش‌فرض» را علامت بزنید.

سپس روی SUBMIT کلیک کنید

مرحله 3: نتایج را بررسی کنید

در تب Executions در رابط کاربری کنسول، می‌توانید وضعیت اجرای نوت‌بوک خود را ببینید.

executions_UI

اگر روی نام اجرا کلیک کنید، به شغل Vertex AI Training جایی که نوت بوک شما در حال اجرا است هدایت می شوید.

رئوس_آموزش

وقتی کار شما کامل شد، می‌توانید دفترچه یادداشت خروجی را با کلیک کردن روی مشاهده نتیجه ببینید.

view_result

در نوت بوک خروجی، خواهید دید که مقدار feature_extractor_model با مقداری که در زمان اجرا ارسال کرده اید، بازنویسی شده است.

param_cells

🎉 تبریک می گویم! 🎉

شما یاد گرفته اید که چگونه از Vertex AI Workbench برای موارد زیر استفاده کنید:

  • از پارامترها در دفترچه یادداشت استفاده کنید
  • اجراهای نوت بوک را از Vertex AI Workbench UI پیکربندی و راه اندازی کنید

برای کسب اطلاعات بیشتر در مورد بخش‌های مختلف Vertex AI، مستندات را بررسی کنید.

7. پاکسازی

به طور پیش فرض، نوت بوک های مدیریت شده پس از 180 دقیقه عدم فعالیت به طور خودکار خاموش می شوند. اگر می خواهید نمونه را به صورت دستی خاموش کنید، روی دکمه Stop در بخش Vertex AI Workbench کنسول کلیک کنید. اگر می خواهید نوت بوک را به طور کامل حذف کنید، روی دکمه Delete کلیک کنید.

حذف کنید

برای حذف Storage Bucket، با استفاده از منوی Navigation در Cloud Console خود، به Storage بروید، سطل خود را انتخاب کنید و روی Delete کلیک کنید:

ذخیره سازی را حذف کنید