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
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.
3. Adım: Vertex AI Workbench örneği oluşturun
Cloud Console'un Vertex AI bölümünde Workbench'i tıklayın:
Henüz etkinleştirilmemişse Notebooks API'yi etkinleştirin.
Etkinleştirdikten sonra YÖNETİLEN NOT KİTAPLARI'nı tıklayın:
Ardından YENİ NOT DEFTERİ'ni seçin.
Not defterinize bir ad verin ve Gelişmiş Ayarlar'ı tıklayın.
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.
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.
Yeni bir örneği ilk kez kullandığınızda kimlik doğrulamanız istenir.
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.
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.
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.
Ç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.
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.
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.
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.
Yürütme adını tıkladığınızda not defterinizin çalıştığı Vertex AI Training işine yönlendirilirsiniz.
İşiniz tamamlandığında SONUCU GÖSTER'i tıklayarak çıkış not defterini görebilirsiniz.
Çıkış not defterinde, çalışma zamanında iletilen değerin feature_extractor_model
değerinin üzerine yazıldığını görürsünüz.
🎉 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.
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: