1. Genel Bakış
Bu laboratuvarda, TensorFlow kullanarak Vertex AI Training'de dağıtılmış bir eğitim işi çalıştırmak için Vertex AI'ı kullanacaksınız.
Bu laboratuvar, Prototype to Production (Prototipten Üretime) video serisinin bir parçasıdır. Bu laboratuvarı denemeden önce önceki laboratuvarları tamamladığınızdan emin olun. Daha fazla bilgi edinmek için ilgili video serisini izleyebilirsiniz:
.
Öğrenecekleriniz
Öğrenecekleriniz:
- Birden fazla GPU'ya sahip tek bir makinede dağıtılmış eğitim çalıştırma
- Dağıtılmış eğitimi birden fazla makinede çalıştırma
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'da sunulan en yeni yapay zeka ürünü kullanılmaktadır. Vertex AI, Google Cloud'daki makine öğrenimi tekliflerini sorunsuz bir geliştirme deneyimi için entegre eder. Daha önce, AutoML ile eğitilmiş modeller ve özel modeller ayrı hizmetler üzerinden erişilebiliyordu. Yeni teklif, diğer yeni ürünlerle birlikte bu iki ürünü tek bir API'de birleştirir. Mevcut projeleri de Vertex AI'a taşıyabilirsiniz.
Vertex AI, uçtan uca makine öğrenimi iş akışlarını desteklemek için birçok farklı ürün içerir. Bu laboratuvarda, aşağıda vurgulanan ürünlere odaklanılacaktır: Training ve Workbench

3. Dağıtılmış eğitime genel bakış
Tek bir GPU'nuz varsa TensorFlow, model eğitimini hızlandırmak için bu hızlandırıcıyı kullanır ve sizin tarafınızdan ek bir işlem yapılması gerekmez. Ancak birden fazla GPU kullanarak ek bir artış elde etmek istiyorsanız TensorFlow'un birden fazla cihazda hesaplama çalıştırma modülü olan tf.distribute'yı kullanmanız gerekir.
Bu laboratuvarın ilk bölümünde tf.distribute.MirroredStrategy kullanılmaktadır. Bu kitaplığı, yalnızca birkaç kod değişikliğiyle eğitim uygulamalarınıza ekleyebilirsiniz. Bu strateji, makinenizdeki her GPU'da modelin bir kopyasını oluşturur. Sonraki gradyan güncellemeleri eşzamanlı olarak gerçekleşir. Bu, her GPU'nun giriş verilerinin farklı bir bölümünde model üzerinden ileri ve geri geçişleri hesapladığı anlamına gelir. Bu dilimlerin her birinden hesaplanan gradyanlar daha sonra tüm GPU'larda toplanır ve all-reduce olarak bilinen bir süreçte ortalaması alınır. Model parametreleri, bu ortalama gradyanlar kullanılarak güncellenir.
Laboratuvarın sonundaki isteğe bağlı bölümde, birden fazla makinede çalışması dışında MirroredStrategy ile benzer olan tf.distribute.MultiWorkerMirroredStrategy kullanılır. Bu makinelerin her birinde birden fazla GPU da olabilir. Örneğin, MirroredStrategy, MultiWorkerMirroredStrategy, yalnızca birkaç kod değişikliğiyle kullanabileceğiniz eşzamanlı veri paralelliği stratejisidir. Tek bir makinede eşzamanlı veri paralelliğinden çoklu makineye geçiş yaparken temel fark, her adımın sonunda gradyanların artık bir makinedeki tüm GPU'lar ve kümedeki tüm makineler arasında senkronize edilmesi gerekmesidir.
Bu laboratuvarı tamamlamak için ayrıntıları bilmeniz gerekmez. Ancak TensorFlow'da dağıtılmış eğitimin işleyiş şekli hakkında daha fazla bilgi edinmek istiyorsanız aşağıdaki videoyu izleyin:
4. Ortamınızı ayarlama
Ortamınızı ayarlamak için Vertex AI ile özel modelleri eğitme laboratuvarındaki adımları tamamlayın.
5. Tek makine, çoklu GPU eğitimi
Eğitim uygulaması kodunuzu bir Docker container'ına yerleştirip bu container'ı Google Artifact Registry'ye göndererek dağıtılmış eğitim işinizi Vertex AI'a gönderirsiniz. Bu yaklaşımı kullanarak herhangi bir çerçeveyle oluşturulmuş bir modeli eğitebilirsiniz.
Başlamak için önceki laboratuvarlarda oluşturduğunuz Workbench not defterinin Başlatıcı menüsünden bir terminal penceresi açın.

1. adım: Eğitim kodu yazın
flowers-multi-gpu adlı yeni bir dizin oluşturun ve bu dizine gidin:
mkdir flowers-multi-gpu
cd flowers-multi-gpu
Eğitim kodu için bir dizin ve aşağıdaki kodu ekleyeceğiniz bir Python dosyası oluşturmak üzere aşağıdaki komutu çalıştırın.
mkdir trainer
touch trainer/task.py
flowers-multi-gpu/ dizininizde artık şunlar olmalıdır:
+ trainer/
+ task.py
Ardından, yeni oluşturduğunuz task.py dosyasını açın ve aşağıdaki kodu kopyalayın.
BUCKET_ROOT içindeki {your-gcs-bucket} yerine, 1. Laboratuvar'da çiçek veri kümesini depoladığınız Cloud Storage paketini girmeniz gerekir.
import tensorflow as tf
import numpy as np
import os
## Replace {your-gcs-bucket} !!
BUCKET_ROOT='/gcs/{your-gcs-bucket}'
# Define variables
NUM_CLASSES = 5
EPOCHS=10
BATCH_SIZE = 32
IMG_HEIGHT = 180
IMG_WIDTH = 180
DATA_DIR = f'{BUCKET_ROOT}/flower_photos'
def create_datasets(data_dir, batch_size):
'''Creates train and validation datasets.'''
train_dataset = tf.keras.utils.image_dataset_from_directory(
data_dir,
validation_split=0.2,
subset="training",
seed=123,
image_size=(IMG_HEIGHT, IMG_WIDTH),
batch_size=batch_size)
validation_dataset = tf.keras.utils.image_dataset_from_directory(
data_dir,
validation_split=0.2,
subset="validation",
seed=123,
image_size=(IMG_HEIGHT, IMG_WIDTH),
batch_size=batch_size)
train_dataset = train_dataset.cache().shuffle(1000).prefetch(buffer_size=tf.data.AUTOTUNE)
validation_dataset = validation_dataset.cache().prefetch(buffer_size=tf.data.AUTOTUNE)
return train_dataset, validation_dataset
def create_model():
'''Creates model.'''
model = tf.keras.Sequential([
tf.keras.layers.Resizing(IMG_HEIGHT, IMG_WIDTH),
tf.keras.layers.Rescaling(1./255, input_shape=(IMG_HEIGHT, IMG_WIDTH, 3)),
tf.keras.layers.Conv2D(16, 3, padding='same', activation='relu'),
tf.keras.layers.MaxPooling2D(),
tf.keras.layers.Conv2D(32, 3, padding='same', activation='relu'),
tf.keras.layers.MaxPooling2D(),
tf.keras.layers.Conv2D(64, 3, padding='same', activation='relu'),
tf.keras.layers.MaxPooling2D(),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(NUM_CLASSES, activation='softmax')
])
return model
def main():
# Create distribution strategy
strategy = tf.distribute.MirroredStrategy()
# Get data
GLOBAL_BATCH_SIZE = BATCH_SIZE * strategy.num_replicas_in_sync
train_dataset, validation_dataset = create_datasets(DATA_DIR, BATCH_SIZE)
# Wrap model creation and compilation within scope of strategy
with strategy.scope():
model = create_model()
model.compile(optimizer=tf.keras.optimizers.Adam(),
loss=tf.keras.losses.SparseCategoricalCrossentropy(),
metrics=['accuracy'])
history = model.fit(
train_dataset,
validation_data=validation_dataset,
epochs=EPOCHS
)
model.save(f'{BUCKET_ROOT}/model_output')
if __name__ == "__main__":
main()
Kapsayıcıyı oluşturmadan önce koda daha yakından bakalım. Dağıtılmış eğitim kullanmaya özgü birkaç bileşen vardır.
main()işlevindeMirroredStrategynesnesi oluşturulur. Ardından, model değişkenlerinizi stratejinin kapsamına dahil edersiniz. Bu adım, TensorFlow'a hangi değişkenlerin GPU'lar arasında yansıtılması gerektiğini söyler.- Grup boyutu
num_replicas_in_syncile ölçeklendirilir. TensorFlow'da eşzamanlı veri paralelliği stratejileri kullanırken grup boyutunu ölçeklendirmek en iyi uygulamadır. Daha fazla bilgiyi buradan edinebilirsiniz.
2. adım: Dockerfile oluşturun
Kodunuzu kapsüllemek için bir Dockerfile oluşturmanız gerekir. Dockerfile'da, görüntüyü çalıştırmak için gereken tüm komutları eklersiniz. Bu işlem, gerekli tüm kitaplıkları yükler ve eğitim kodu için giriş noktasını ayarlar.
Terminalinizden, çiçekler dizininizin kök dizininde boş bir Dockerfile oluşturun:
touch Dockerfile
flowers-multi-gpu/ dizininizde artık şunlar olmalıdır:
+ Dockerfile
+ trainer/
+ task.py
Dockerfile'ı açın ve aşağıdakileri kopyalayın:
FROM gcr.io/deeplearning-platform-release/tf2-gpu.2-8
WORKDIR /
# Copies the trainer code to the docker image.
COPY trainer /trainer
# Sets up the entry point to invoke the trainer.
ENTRYPOINT ["python", "-m", "trainer.task"]
3. adım: Kapsayıcıyı oluşturun
Terminalinizde, projeniz için bir ortam değişkeni tanımlamak üzere aşağıdakileri çalıştırın. your-cloud-project yerine projenizin kimliğini yazdığınızdan emin olun:
PROJECT_ID='your-cloud-project'
Artifact Registry'de bir depo oluşturun. İlk laboratuvarda oluşturduğumuz depoyu kullanacağız.
REPO_NAME='flower-app'
Artifact Registry'deki container görüntünüzün URI'siyle bir değişken tanımlayın:
IMAGE_URI=us-central1-docker.pkg.dev/$PROJECT_ID/$REPO_NAME/flower_image_distributed:single_machine
Docker'ı yapılandırma
gcloud auth configure-docker \
us-central1-docker.pkg.dev
Ardından, flowers-multi-gpu dizininizin kökünden aşağıdaki komutu çalıştırarak kapsayıcıyı oluşturun:
docker build ./ -t $IMAGE_URI
Son olarak, Artifact Registry'ye aktarın:
docker push $IMAGE_URI
Kapsayıcı Artifact Registry'ye aktarıldığına göre artık eğitim işini başlatmaya hazırsınız.
4. adım: İşi SDK ile çalıştırın
Bu bölümde, Vertex AI Python SDK'yı kullanarak dağıtılmış eğitim işini nasıl yapılandırıp başlatacağınızı öğreneceksiniz.
Başlatıcı'dan TensorFlow 2 not defteri oluşturun.

Vertex AI SDK'yı içe aktarın.
from google.cloud import aiplatform
Ardından bir CustomContainerTrainingJob tanımlayın.
container_uri içinde {PROJECT_ID}, staging_bucket içinde ise {YOUR_BUCKET} yerine kendi değerlerinizi girmeniz gerekir.
job = aiplatform.CustomContainerTrainingJob(display_name='flowers-multi-gpu',
container_uri='us-central1-docker.pkg.dev/{PROJECT_ID}/flower-app/flower_image_distributed:single_machine',
staging_bucket='gs://{YOUR_BUCKET}')
İş tanımlandıktan sonra çalıştırabilirsiniz. Hızlandırıcı sayısını 2 olarak ayarlarsınız. Yalnızca 1 GPU kullanırsak bu, dağıtılmış eğitim olarak kabul edilmez. Tek bir makinede dağıtılmış eğitim, 2 veya daha fazla hızlandırıcı kullandığınızda gerçekleşir.
my_custom_job.run(replica_count=1,
machine_type='n1-standard-4',
accelerator_type='NVIDIA_TESLA_V100',
accelerator_count=2)
Konsolda işinizin ilerleme durumunu görebilirsiniz.

6. [İsteğe bağlı] Çok işçili eğitim
Birden fazla GPU'ya sahip tek bir makinede dağıtılmış eğitimi denediğinize göre artık birden fazla makinede eğitim yaparak dağıtılmış eğitim becerilerinizi bir sonraki seviyeye taşıyabilirsiniz. Maliyetleri düşük tutmak için bu makinelere GPU eklemeyeceğiz ancak isterseniz GPU ekleyerek deneme yapabilirsiniz.
Not defteri örneğinizde yeni bir terminal penceresi açın:

1. adım: Eğitim kodu yazın
flowers-multi-machine adlı yeni bir dizin oluşturun ve bu dizine gidin:
mkdir flowers-multi-machine
cd flowers-multi-machine
Eğitim kodu için bir dizin ve aşağıdaki kodu ekleyeceğiniz bir Python dosyası oluşturmak üzere aşağıdaki komutu çalıştırın.
mkdir trainer
touch trainer/task.py
flowers-multi-machine/ dizininizde artık şunlar olmalıdır:
+ trainer/
+ task.py
Ardından, yeni oluşturduğunuz task.py dosyasını açın ve aşağıdaki kodu kopyalayın.
BUCKET_ROOT içindeki {your-gcs-bucket} yerine, 1. Laboratuvar'da çiçek veri kümesini depoladığınız Cloud Storage paketini girmeniz gerekir.
import tensorflow as tf
import numpy as np
import os
## Replace {your-gcs-bucket} !!
BUCKET_ROOT='/gcs/{your-gcs-bucket}'
# Define variables
NUM_CLASSES = 5
EPOCHS=10
BATCH_SIZE = 32
IMG_HEIGHT = 180
IMG_WIDTH = 180
DATA_DIR = f'{BUCKET_ROOT}/flower_photos'
SAVE_MODEL_DIR = f'{BUCKET_ROOT}/multi-machine-output'
def create_datasets(data_dir, batch_size):
'''Creates train and validation datasets.'''
train_dataset = tf.keras.utils.image_dataset_from_directory(
data_dir,
validation_split=0.2,
subset="training",
seed=123,
image_size=(IMG_HEIGHT, IMG_WIDTH),
batch_size=batch_size)
validation_dataset = tf.keras.utils.image_dataset_from_directory(
data_dir,
validation_split=0.2,
subset="validation",
seed=123,
image_size=(IMG_HEIGHT, IMG_WIDTH),
batch_size=batch_size)
train_dataset = train_dataset.cache().shuffle(1000).prefetch(buffer_size=tf.data.AUTOTUNE)
validation_dataset = validation_dataset.cache().prefetch(buffer_size=tf.data.AUTOTUNE)
return train_dataset, validation_dataset
def create_model():
'''Creates model.'''
model = tf.keras.Sequential([
tf.keras.layers.Resizing(IMG_HEIGHT, IMG_WIDTH),
tf.keras.layers.Rescaling(1./255, input_shape=(IMG_HEIGHT, IMG_WIDTH, 3)),
tf.keras.layers.Conv2D(16, 3, padding='same', activation='relu'),
tf.keras.layers.MaxPooling2D(),
tf.keras.layers.Conv2D(32, 3, padding='same', activation='relu'),
tf.keras.layers.MaxPooling2D(),
tf.keras.layers.Conv2D(64, 3, padding='same', activation='relu'),
tf.keras.layers.MaxPooling2D(),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(NUM_CLASSES, activation='softmax')
])
return model
def _is_chief(task_type, task_id):
'''Helper function. Determines if machine is chief.'''
return task_type == 'chief'
def _get_temp_dir(dirpath, task_id):
'''Helper function. Gets temporary directory for saving model.'''
base_dirpath = 'workertemp_' + str(task_id)
temp_dir = os.path.join(dirpath, base_dirpath)
tf.io.gfile.makedirs(temp_dir)
return temp_dir
def write_filepath(filepath, task_type, task_id):
'''Helper function. Gets filepath to save model.'''
dirpath = os.path.dirname(filepath)
base = os.path.basename(filepath)
if not _is_chief(task_type, task_id):
dirpath = _get_temp_dir(dirpath, task_id)
return os.path.join(dirpath, base)
def main():
# Create distribution strategy
strategy = tf.distribute.MultiWorkerMirroredStrategy()
# Get data
GLOBAL_BATCH_SIZE = BATCH_SIZE * strategy.num_replicas_in_sync
train_dataset, validation_dataset = create_datasets(DATA_DIR, BATCH_SIZE)
# Wrap variable creation within strategy scope
with strategy.scope():
model = create_model()
model.compile(optimizer=tf.keras.optimizers.Adam(),
loss=tf.keras.losses.SparseCategoricalCrossentropy(),
metrics=['accuracy'])
history = model.fit(
train_dataset,
validation_data=validation_dataset,
epochs=EPOCHS
)
# Determine type and task of the machine from
# the strategy cluster resolver
task_type, task_id = (strategy.cluster_resolver.task_type,
strategy.cluster_resolver.task_id)
# Based on the type and task, write to the desired model path
write_model_path = write_filepath(SAVE_MODEL_DIR, task_type, task_id)
model.save(write_model_path)
if __name__ == "__main__":
main()
Kapsayıcıyı oluşturmadan önce koda daha yakından bakalım. Eğitim uygulamanızın MultiWorkerMirroredStrategy ile çalışması için kodda birkaç bileşen gereklidir.
main()işlevindeMultiWorkerMirroredStrategynesnesi oluşturulur. Ardından, model değişkenlerinizi stratejinin kapsamına dahil edersiniz. Bu önemli adım, TensorFlow'a hangi değişkenlerin kopyalar arasında yansıtılması gerektiğini bildirir.- Grup boyutu
num_replicas_in_syncile ölçeklendirilir. TensorFlow'da eşzamanlı veri paralelliği stratejileri kullanırken grup boyutunu ölçeklendirmek en iyi uygulamadır. - Modelinizi kaydetme işlemi, çoklu çalışan durumunda biraz daha karmaşıktır. Bunun nedeni, hedef konumun her çalışan için farklı olmasıdır. Ana çalışan, modeli istenen model dizinine kaydederken diğer çalışanlar modeli geçici dizinlere kaydeder. Birden fazla çalışanın aynı konuma yazmasını önlemek için bu geçici dizinlerin benzersiz olması önemlidir. Kaydetme işlemi, toplu işlemleri içerebilir. Bu durumda, yalnızca şefin değil tüm çalışanların kaydetmesi gerekir.
_is_chief(),_get_temp_dir(),write_filepath()işlevlerinin yanı sıramain()işlevi de modeli kaydetmeye yardımcı olan ortak metin kodu içerir.
2. adım: Dockerfile oluşturun
Kodunuzu kapsüllemek için bir Dockerfile oluşturmanız gerekir. Dockerfile'da, görüntüyü çalıştırmak için gereken tüm komutları eklersiniz. Bu işlem, gerekli tüm kitaplıkları yükler ve eğitim kodu için giriş noktasını ayarlar.
Terminalinizden, çiçekler dizininizin kök dizininde boş bir Dockerfile oluşturun:
touch Dockerfile
flowers-multi-machine/ dizininizde artık şunlar olmalıdır:
+ Dockerfile
+ trainer/
+ task.py
Dockerfile'ı açın ve aşağıdakileri kopyalayın:
FROM gcr.io/deeplearning-platform-release/tf2-gpu.2-8
WORKDIR /
# Copies the trainer code to the docker image.
COPY trainer /trainer
# Sets up the entry point to invoke the trainer.
ENTRYPOINT ["python", "-m", "trainer.task"]
3. adım: Kapsayıcıyı oluşturun
Terminalinizde, projeniz için bir ortam değişkeni tanımlamak üzere aşağıdakileri çalıştırın. your-cloud-project yerine projenizin kimliğini yazdığınızdan emin olun:
PROJECT_ID='your-cloud-project'
Artifact Registry'de bir depo oluşturun. İlk laboratuvarda oluşturduğumuz depoyu kullanacağız.
REPO_NAME='flower-app'
Google Artifact Registry'deki container görüntünüzün URI'siyle bir değişken tanımlayın:
IMAGE_URI=us-central1-docker.pkg.dev/$PROJECT_ID/$REPO_NAME/flower_image_distributed:multi_machine
Docker'ı yapılandırma
gcloud auth configure-docker \
us-central1-docker.pkg.dev
Ardından, flowers-multi-machine dizininizin kökünden aşağıdaki komutu çalıştırarak kapsayıcıyı oluşturun:
docker build ./ -t $IMAGE_URI
Son olarak, Artifact Registry'ye aktarın:
docker push $IMAGE_URI
Kapsayıcı Artifact Registry'ye aktarıldığına göre artık eğitim işini başlatmaya hazırsınız.
4. adım: İşi SDK ile çalıştırın
Bu bölümde, Vertex AI Python SDK'yı kullanarak dağıtılmış eğitim işini nasıl yapılandırıp başlatacağınızı öğreneceksiniz.
Başlatıcı'dan TensorFlow 2 not defteri oluşturun.

Vertex AI SDK'yı içe aktarın.
from google.cloud import aiplatform
Ardından worker_pool_specs değerini tanımlayın.
Vertex AI, farklı makine görevlerini kapsayacak 4 çalışan havuzu sağlar.
Çalışan havuzu 0, birincil, baş, planlayıcı veya "ana"yı yapılandırır. MultiWorkerMirroredStrategy'da tüm makineler, tekrarlanan hesaplamanın yürütüldüğü fiziksel makineler olan çalışanlar olarak belirlenir. Her makinenin bir çalışan olmasının yanı sıra, kontrol noktalarını kaydetme ve TensorBoard'a özet dosyaları yazma gibi bazı ek işleri üstlenen bir çalışan da olmalıdır. Bu makine, şef olarak bilinir. Her zaman yalnızca bir baş çalışan olduğundan, 0 numaralı çalışan havuzundaki çalışan sayınız her zaman 1 olur.
1. çalışan havuzu, kümeniz için ek çalışanları yapılandırdığınız yerdir.
worker_pool_specs listesindeki ilk sözlük, çalışan havuzu 0'ı, ikinci sözlük ise çalışan havuzu 1'i temsil eder. Bu örnekte, iki yapılandırma aynıdır. Ancak 3 makinede eğitim yapmak istiyorsanız replica_count değerini 2 olarak ayarlayarak 1. çalışan havuzuna ek çalışanlar eklemeniz gerekir. GPU eklemek istiyorsanız her iki çalışan havuzu için de accelerator_type ve accelerator_count bağımsız değişkenlerini machine_spec'ye eklemeniz gerekir. MultiWorkerMirroredStrategy ile GPU kullanmak istiyorsanız kümedeki her makinenin aynı sayıda GPU'ya sahip olması gerektiğini unutmayın. Aksi takdirde iş başarısız olur.
image_uri içinde {PROJECT_ID} yerine kendi değerinizi girmeniz gerekir.
# The spec of the worker pools including machine type and Docker image
# Be sure to replace PROJECT_ID in the "image_uri" with your project.
worker_pool_specs=[
{
"replica_count": 1,
"machine_spec": {
"machine_type": "n1-standard-4",
},
"container_spec": {"image_uri": "us-central1-docker.pkg.dev/{PROJECT_ID}/flower-app/flower_image_distributed:multi_machine"}
},
{
"replica_count": 1,
"machine_spec": {
"machine_type": "n1-standard-4",
},
"container_spec": {"image_uri": "us-central1-docker.pkg.dev/{PROJECT_ID}/flower-app/flower_image_distributed:multi_machine"}
}
]
Ardından, CustomJob oluşturup çalıştırın. staging_bucket içindeki {YOUR_BUCKET} kısmını, projenizdeki hazırlama için kullanılan bir paketle değiştirin.
my_custom_job = aiplatform.CustomJob(display_name='flowers-multi-worker',
worker_pool_specs=worker_pool_specs,
staging_bucket='gs://{YOUR_BUCKET}')
my_custom_job.run()
Konsolda işinizin ilerleme durumunu görebilirsiniz.

🎉 Tebrikler! 🎉
Vertex AI'ı kullanarak şunları yapmayı öğrendiniz:
- TensorFlow ile dağıtılmış eğitim işlerini çalıştırma
Vertex'in farklı bölümleri hakkında daha fazla bilgi edinmek için belgelere göz atın.
7. Temizleme
Not defterini 60 dakika boşta kaldıktan sonra zaman aşımına uğrayacak şekilde yapılandırdığımız için örneği kapatmamız gerekmez. Örneği manuel olarak kapatmak istiyorsanız konsolun Vertex AI Workbench bölümündeki Durdur düğmesini tıklayın. Not defterini tamamen silmek isterseniz Sil düğmesini tıklayın.

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