Vertex AI Workbench: Öğrenme yöntemlerini ve not defteri yürütme aracını kullanarak görüntü sınıflandırma modeli oluşturma

Vertex AI Workbench:
Öğrenme yöntemlerini ve not defteri yürütme aracını kullanarak görüntü sınıflandırma modeli oluşturma

Bu codelab hakkında

subjectSon güncelleme May 23, 2022
account_circleYazan: Nikita Namjoshi

1. Genel Bakış

Bu laboratuvarda, Vertex AI Workbench ile not defteri yürütmelerini nasıl yapılandırıp başlatacağınızı öğreneceksiniz.

Öğrenecekleriniz

Öğrenecekleriniz:

  • Not defterinde parametreleri kullanma
  • Vertex AI Workbench kullanıcı arayüzünden not defteri yürütmelerini yapılandırma ve başlatma

Bu laboratuvarı Google Cloud'da çalıştırmanın toplam maliyeti yaklaşık 2 ABD dolarıdır.

2. Vertex AI'a giriş

Bu laboratuvarda, Google Cloud'daki en yeni AI ürün teklifi kullanılmaktadır. Vertex AI, Google Cloud'daki makine öğrenimi tekliflerini sorunsuz bir geliştirme deneyimine entegre eder. Daha önce, AutoML ile eğitilen modellere ve özel modellere ayrı hizmetler üzerinden erişilebiliyordu. Yeni teklif, her ikisi de tek bir API'de ve diğer yeni ürünlerle birleştirilir. Dilerseniz mevcut projeleri Vertex AI'a taşıyabilirsiniz. Geri bildiriminiz varsa lütfen destek sayfasını inceleyin.

Vertex AI, uçtan uca makine öğrenimi iş akışlarını destekleyen birçok farklı ürün içerir. Bu laboratuvar, Vertex AI Workbench'e odaklanacaktır.

Vertex AI Workbench, kullanıcıların veri hizmetleri (ör. Dataproc, Dataflow, BigQuery ve Dataplex) ve Vertex AI'la kapsamlı entegrasyon yaparak uçtan uca not defteri tabanlı iş akışlarını hızlıca oluşturmalarına yardımcı olur. Bu araç, veri bilimcilerin GCP veri hizmetlerine bağlanmasına, veri kümelerini analiz etmesine, farklı modelleme tekniklerini denemesine, eğitilmiş modelleri üretime dağıtmasına ve model yaşam döngüsü boyunca MLOps'i yönetmesine olanak tanır.

3. Kullanım alanına genel bakış

Bu laboratuvarda, TensorFlow Veri Kümeleri'ndeki DeepWeeds veri kümesinde bir görüntü sınıflandırma modeli eğitmek için aktarımla öğrenmeyi kullanacaksınız. Tümü ImageNet karşılaştırma veri kümesi üzerinde önceden eğitilmiş olan ResNet50, Inception ve MobileNet gibi farklı model mimarilerinden çıkarılan özellik vektörleriyle deneme yapmak için TensorFlow Hub'ı kullanacaksınız. Vertex AI Workbench kullanıcı arayüzünde not defteri yürütücüden yararlanarak Vertex AI Training'de, önceden eğitilmiş bu modelleri kullanan işler başlatacak ve son katmanı, DeepWeeds veri kümesindeki sınıfları tanıyacak şekilde yeniden eğiteceksiniz.

4. Ortamınızı ayarlama

Bu codelab'i çalıştırmak için faturalandırmanın etkin olduğu bir Google Cloud Platform projesine ihtiyacınız var. Proje oluşturmak için buradaki talimatları uygulayın.

1. Adım: Compute Engine API'yi etkinleştirin

Compute Engine'e gidin ve zaten etkinleştirilmemişse Etkinleştir'i seçin.

2. adım: Vertex AI API'yi etkinleştirin

Cloud Console'un Vertex AI bölümüne gidip Enable Vertex AI API'yi (Vertex AI API'yi etkinleştir) tıklayın.

Vertex AI kontrol paneli

3. Adım: Vertex AI Workbench örneği oluşturun

Cloud Console'un Vertex AI bölümünde Workbench'i tıklayın:

Vertex AI menüsü

Henüz etkinleştirilmemişse Notebooks API'yi etkinleştirin.

Notebook_api

Etkinleştirdikten sonra YÖNETİLEN NOT KİTAPLARI'nı tıklayın:

Notebooks_UI

Ardından YENİ NOT DEFTERİ'ni seçin.

new_notebook

Not defterinize bir ad verin ve Gelişmiş Ayarlar'ı tıklayın.

create_notebook

Gelişmiş Ayarlar altından boşta kalma özelliğini etkinleştirin ve dakika sayısını 60 olarak ayarlayın. Bu sayede not defteriniz kullanılmadığında otomatik olarak kapatılır, böylece gereksiz maliyetlere neden olmazsınız.

idle_timeout

Diğer gelişmiş ayarların tümünü olduğu gibi bırakabilirsiniz.

Ardından Oluştur'u tıklayın.

Örnek oluşturulduktan sonra JupyterLab'i aç'ı seçin.

open_jupyterlab

Yeni bir örneği ilk kez kullandığınızda kimlik doğrulamanız istenir.

kimlik doğrulamak

Vertex AI Workbench, TensorFlow, PySpark, R vb. çekirdeklerini tek bir not defteri örneğinden başlatmanıza olanak tanıyan bir işlem uyumluluğu katmanına sahiptir. Kimlik doğrulamasını yaptıktan sonra, kullanmak istediğiniz not defteri türünü başlatıcıdan seçebilirsiniz.

Bu laboratuvar için TensorFlow 2 çekirdeğini seçin.

tf_kernel

5. Eğitim kodunu yazma

DeepWeeds veri kümesi, Avustralya'ya özgü sekiz farklı ot türünün yer aldığı 17.509 görüntüden oluşur. Bu bölümde, DeepWeeds veri kümesini ön işleme alacak ve TensorFlow Hub'dan indirilen özellik vektörlerini kullanarak bir görüntü sınıflandırma modeli oluşturup eğitecek kodu yazacaksınız.

Aşağıdaki kod snippet'lerini not defterinizdeki hücrelere kopyalamanız gerekir. Hücreleri yürütmek isteğe bağlıdır.

1. adım: Veri kümesini indirip ön işleme alın

Öncelikle, DeepWeeds veri kümesinin en son sürümünü kullandığımızdan emin olmak için TensorFlow veri kümelerinin gecelik sürümünü yükleyin.

!pip install tfds-nightly

Ardından, gerekli kitaplıkları içe aktarın:

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

TensorFlow Veri Kümeleri'ndeki verileri indirip sınıf sayısı ve veri kümesi boyutunu ayıklama.

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

Resim verilerini 255 değerine göre ölçeklendirmek için bir ön işleme işlevi tanımlayın.

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

DeepWeeds veri kümesi, eğitim/doğrulama veri kümelerine ayrılmamıştır. Yalnızca eğitim veri kümesiyle birlikte gelir. Aşağıdaki kodda, bu verilerin %80'ini eğitim, kalan %20'sini ise doğrulama için kullanacaksınız.

# 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. Adım: Model oluşturun

Eğitim ve doğrulama veri kümelerini oluşturduğunuza göre artık modelinizi derlemeye hazırsınız. TensorFlow Hub, üst sınıflandırma katmanı olmayan önceden eğitilmiş modeller olan özellik vektörleri sağlar. Önceden eğitilmiş modeli hub.KerasLayer ile sarmalayarak bir özellik ayıklayıcı oluşturacaksınız. Bu, TensorFlow SavedModel'i bir Keras katmanı olarak sarmalar. Ardından, bir sınıflandırma katmanı ekleyecek ve Keras Sequential API ile bir model oluşturacaksınız.

Öncelikle, modelinizin temeli olarak kullanacağınız TensorFlow Hub özellik vektörünün adı olan feature_extractor_model parametresini tanımlayın.

feature_extractor_model = "inception_v3"

Daha sonra, bu hücreyi çalışma zamanında feature_extractor_model için bir değer iletmenize olanak tanıyan bir parametre hücresi yapacaksınız.

İlk olarak hücreyi seçin ve sağ paneldeki özellik denetleyicisini tıklayın.

property_inspector

Etiketler, not defterinize meta veri eklemenin basit bir yoludur. "parameters" yazın yazıp Enter'a basın. Daha sonra, yürütmenizi yapılandırırken test etmek istediğiniz farklı değerleri (bu durumda TensorFlow Hub modelini) iletirsiniz. "Parametreler" kelimesini yazmanız gerektiğini unutmayın (başka bir kelime olmadan) içerir.

add_tag

Çift dişli simgesini tekrar tıklayarak özellik denetleyicisini kapatabilirsiniz.

Yeni bir hücre oluşturun ve tf_hub_uri değerini tanımlayın. Burada, not defterinizin belirli bir yürütmesi için temel model olarak kullanmak istediğiniz önceden eğitilmiş modelin adını değiştirmek üzere dize interpolasyonunu kullanırsınız. Varsayılan olarak, feature_extractor_model değerini "inception_v3" olarak ayarladınız, ancak diğer geçerli değerler "resnet_v2_50" veya "mobilenet_v1_100_224"'dir. TensorFlow Hub kataloğunda ek seçenekleri keşfedebilirsiniz.

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

Daha sonra, hub.KerasLayer kullanarak ve yukarıda tanımladığınız tf_hub_uri öğesini ileterek özellik ayıklayıcıyı oluşturun. Eğitimin yalnızca en üste ekleyeceğiniz yeni sınıflandırıcı katmanını değiştirmesi için trainable=False bağımsız değişkenini değişkenleri dondurmak üzere ayarlayın.

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

Modeli tamamlamak için özellik ayıklayıcı katmanını bir tf.keras.Sequential modeliyle sarmalayın ve sınıflandırma için tamamen bağlı bir katman ekleyin. Bu sınıflandırma başlığındaki birim sayısı, veri kümesindeki sınıf sayısına eşit olmalıdır:

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

Son olarak, modeli derleyin ve sığdırın.

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. Not defteri yürütme

Not defterinin üst kısmındaki Yürütücü simgesini tıklayın.

vasiyet tenfizi

1. Adım: Eğitim işini yapılandırın

Yürütme işleminize bir ad verin ve projenize bir depolama paketi sağlayın.

executor_config

Makine türünü 4 CPU, 15 GB RAM olarak ayarlayın.

Ve 1 NVIDIA GPU ekleyin.

Ortamı TensorFlow Enterprise 2.6 (GPU) olarak ayarlayın.

Tek seferlik yürütme'yi seçin.

2. Adım: Parametreleri yapılandırın

Parametrenizi ayarlamak için GELİŞMİŞ SEÇENEKLER açılır menüsünü tıklayın. Kutuya feature_extractor_model=resnet_v2_50 yazın. Bu işlem, not defterinde bu parametre için ayarladığınız varsayılan değer olan inception_v3 değerini resnet_v2_50 ile geçersiz kılar.

advanced_options

Varsayılan hizmet hesabını kullan kutusunu işaretli bırakabilirsiniz.

Ardından GÖNDER'i tıklayın.

3. adım: Sonuçları inceleyin

Console kullanıcı arayüzündeki Yürütme İşlemleri sekmesinde not defterinizin yürütme durumunu görebilirsiniz.

executions_UI

Yürütme adını tıkladığınızda not defterinizin çalıştığı Vertex AI Training işine yönlendirilirsiniz.

vertex_training

İşiniz tamamlandığında SONUCU GÖSTER'i tıklayarak çıkış not defterini görebilirsiniz.

view_result

Çıkış not defterinde, çalışma zamanında iletilen değerin feature_extractor_model değerinin üzerine yazıldığını görürsünüz.

param_cells

🎉 Tebrikler. 🎉

Vertex AI Workbench'i kullanarak şunları yapmayı öğrendiniz:

  • Not defterinde parametreleri kullanma
  • Vertex AI Workbench kullanıcı arayüzünden not defteri yürütmelerini yapılandırma ve başlatma

Vertex AI'ın farklı bölümleri hakkında daha fazla bilgi edinmek için belgeleri inceleyin.

7. Temizleme

Varsayılan olarak, yönetilen not defterleri 180 dakika boyunca hiçbir işlem yapılmazsa otomatik olarak kapanır. Örneği manuel olarak kapatmak isterseniz konsolun Vertex AI Workbench bölümündeki Durdur düğmesini tıklayın. Not defterini tamamen silmek istiyorsanız Sil düğmesini tıklayın.

delete

Storage Paketini silmek için Cloud Console'unuzdaki gezinme menüsünü kullanarak Storage'a gidin, paketinizi seçin ve Sil'i tıklayın:

Depolama alanını sil