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 کلیک کنید.
مرحله 3: یک نمونه Vertex AI Workbench ایجاد کنید
از بخش Vertex AI در Cloud Console خود، روی Workbench کلیک کنید:
اگر قبلاً API Notebooks وجود ندارد، آن را فعال کنید.
پس از فعال شدن، روی دفترچه یادداشت مدیریت شده کلیک کنید:
سپس NEW NOTEBOOK را انتخاب کنید.
نوت بوک خود را نامی بگذارید و سپس روی تنظیمات پیشرفته کلیک کنید.
در قسمت تنظیمات پیشرفته، خاموش شدن بیحرکت را فعال کنید و تعداد دقیقهها را روی 60 دقیقه تنظیم کنید. این بدان معناست که نوت بوک شما در صورت عدم استفاده به طور خودکار خاموش میشود تا هزینههای غیرضروری متحمل نشوید.
شما می توانید تمام تنظیمات پیشرفته دیگر را به همین صورت رها کنید.
بعد، روی ایجاد کلیک کنید.
پس از ایجاد نمونه، Open JupyterLab را انتخاب کنید.
اولین باری که از یک نمونه جدید استفاده می کنید، از شما خواسته می شود که احراز هویت کنید.
Vertex AI Workbench دارای یک لایه سازگاری محاسباتی است که به شما امکان می دهد هسته های TensorFlow، PySpark، R و غیره را از یک نمونه نوت بوک راه اندازی کنید. پس از احراز هویت، میتوانید نوع نوتبوک مورد نظر خود را از راهانداز انتخاب کنید.
برای این آزمایشگاه، هسته TensorFlow 2 را انتخاب کنید.
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 را پاس می کنید. توجه داشته باشید که باید کلمه "پارامترها" (و نه هیچ کلمه دیگری) را تایپ کنید زیرا اینگونه است که اجرا کننده نوت بوک می داند کدام سلول ها را باید پارامتر کند.
با کلیک مجدد روی نماد چرخ دنده دوتایی می توانید بازرس ملک را ببندید.
یک سلول جدید ایجاد کنید و 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: کار آموزشی را پیکربندی کنید
به اجرای خود یک نام بدهید و یک سطل ذخیره در پروژه خود تهیه کنید.
نوع ماشین را روی 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 در رابط کاربری کنسول، میتوانید وضعیت اجرای نوتبوک خود را ببینید.
اگر روی نام اجرا کلیک کنید، به شغل Vertex AI Training جایی که نوت بوک شما در حال اجرا است هدایت می شوید.
وقتی کار شما کامل شد، میتوانید دفترچه یادداشت خروجی را با کلیک کردن روی مشاهده نتیجه ببینید.
در نوت بوک خروجی، خواهید دید که مقدار feature_extractor_model
با مقداری که در زمان اجرا ارسال کرده اید، بازنویسی شده است.
🎉 تبریک می گویم! 🎉
شما یاد گرفته اید که چگونه از Vertex AI Workbench برای موارد زیر استفاده کنید:
- از پارامترها در دفترچه یادداشت استفاده کنید
- اجراهای نوت بوک را از Vertex AI Workbench UI پیکربندی و راه اندازی کنید
برای کسب اطلاعات بیشتر در مورد بخشهای مختلف Vertex AI، مستندات را بررسی کنید.
7. پاکسازی
به طور پیش فرض، نوت بوک های مدیریت شده پس از 180 دقیقه عدم فعالیت به طور خودکار خاموش می شوند. اگر می خواهید نمونه را به صورت دستی خاموش کنید، روی دکمه Stop در بخش Vertex AI Workbench کنسول کلیک کنید. اگر می خواهید نوت بوک را به طور کامل حذف کنید، روی دکمه Delete کلیک کنید.
برای حذف Storage Bucket، با استفاده از منوی Navigation در Cloud Console خود، به Storage بروید، سطل خود را انتخاب کنید و روی Delete کلیک کنید: