Prototipten Üretime: Vertex AI hakkında dağıtılmış eğitim

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

Vertex ürününe genel bakış

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.

Not defterinde terminali açma

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şlevinde MirroredStrategy nesnesi 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_sync ile ö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.

new_notebook

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.

multigpu_job

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:

Not defterinde terminali açma

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şlevinde MultiWorkerMirroredStrategy nesnesi 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_sync ile ö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ıra main() 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.

new_notebook

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.

multi_worker_job

🎉 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.

Örneği durdur

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:

Depolama alanını silme