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, 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 aşağıdaki video serisini izleyebilirsiniz:

.

Öğrenecekleriniz

Öğrenecekleriniz:

  • Birden fazla GPU'ya sahip tek bir makinede dağıtılmış eğitim çalıştırma
  • Birden çok makinede dağıtılmış eğitim ç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'daki en yeni AI ürün teklifi kullanılmaktadır. Vertex AI, Google Cloud'daki makine öğrenimi tekliflerini sorunsuz bir geliştirme deneyimiyle entegre eder. Önceden, AutoML ve özel modellerle eğitilen 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.

Vertex AI, uçtan uca makine öğrenimi iş akışlarını destekleyen birçok farklı ürün içerir. Bu laboratuvarda, aşağıda vurgulanan ürünlere odaklanılmaktadır: training ve Workbench

Vertex ürününe genel bakış

3. Dağıtılmış eğitime genel bakış

Tek bir GPU'nuz varsa TensorFlow, herhangi bir ek işlem yapmanıza gerek kalmadan model eğitimini hızlandırmak için bu hızlandırıcıyı kullanır. Ancak, birden fazla GPU kullanarak ek artış elde etmek istiyorsanız TensorFlow'un birden fazla cihazda işlem yapmaya yönelik modülü olan tf.distribute kullanmanız gerekir.

Bu laboratuvarın ilk bölümünde tf.distribute.MirroredStrategy kullanılmaktadır. Bu özelliği, 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ı bir şekilde gerçekleşir. Bu, her bir GPU'nun ileri ve geri verileri hesapladığı, giriş verilerinin farklı bir dilimdeki modelden geçtiği anlamına gelir. Bu dilimlerin her birinden hesaplanan renk geçişleri, daha sonra tüm GPU'lar genelinde toplanır ve tüm azaltma adı verilen bir işlemin ortalaması alınır. Model parametreleri bu ortalama değerdeki renk geçişleri kullanılarak güncellenir.

Laboratuvarın sonundaki isteğe bağlı bölümde MirroredStrategy işlevine benzer olan tf.distribute.MultiWorkerMirroredStrategy kullanılır. Tek fark, birden çok makinede çalışmasıdır. Bu makinelerin her birinde de birden fazla GPU olabilir. Örneğin MirroredStrategy, MultiWorkerMirroredStrategy, yalnızca birkaç kod değişikliğiyle kullanabileceğiniz eşzamanlı bir veri paralelliği stratejisidir. Bir makinede eşzamanlı veri paralelliğinden birden çok makineye geçiş yaparken temel fark, her adımın sonundaki renk geçişlerinin artık bir makinedeki tüm GPU'larda ve kümedeki tüm makinelerde senkronize edilmesi gerekmesidir.

Bu laboratuvarı tamamlamak için ayrıntıları bilmeniz gerekmez ancak dağıtılmış eğitimin TensorFlow'da nasıl çalıştığı hakkında daha fazla bilgi edinmek isterseniz aşağıdaki videoya göz atın:

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 makineli, çoklu GPU eğitimi

Eğitim uygulama kodunuzu bir Docker container'ına yerleştirip bu container'ı Google Artifact Registry'ye aktararak dağıtılmış eğitim işinizi Vertex AI'a göndereceksiniz. 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.

Terminali not defterinde aç

1. Adım: Eğitim kodunu yazın

flowers-multi-gpu adında yeni bir dizin oluşturun ve cd'ye ekleyin:

mkdir flowers-multi-gpu
cd flowers-multi-gpu

Eğitim kodu için bir dizin ve aşağıdaki kodu ekleyeceğiniz Python dosyası oluşturmak için aşağıdaki komutu çalıştırın.

mkdir trainer
touch trainer/task.py

Artık flowers-multi-gpu/ dizininizde aşağıdakilerin olması gerekir:

+ trainer/
    + task.py

Sonra, az önce oluşturduğunuz task.py dosyasını açın ve aşağıdaki kodu kopyalayın.

BUCKET_ROOT içindeki {your-gcs-bucket} yerine, Lab 1'de çiçek veri kümesini depoladığınız Cloud Storage paketiyle değiştirmeniz 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()

Container'ı derlemeden önce koda daha yakından bakalım. Dağıtılmış eğitimin kullanımına özgü birkaç bileşen vardır.

  • main() işlevinde MirroredStrategy nesnesi oluşturulur. Daha sonra, model değişkenlerinizi oluşturma sürecini stratejinin kapsamında sarmalayın. Bu adım, TensorFlow'a hangi değişkenlerin GPU'lar genelinde yansıtılması gerektiğini bildirir.
  • Grup boyutu num_replicas_in_sync oranında artırılır. TensorFlow'da eşzamanlı veri paralelliği stratejilerini kullanırken grup boyutunu ölçeklendirmek en iyi uygulamadır. Buradan daha fazla bilgi edinebilirsiniz.

2. Adım: Dockerfile oluşturun

Kodunuzu container mimarisine almak için bir Dockerfile oluşturmanız gerekir. Dockerfile'a görüntüyü çalıştırmak için gereken tüm komutları eklersiniz. Gerekli tüm kitaplıkları yükler ve eğitim kodu için giriş noktasını ayarlar.

Terminal'inizden çiçek dizininizin kök dizininde boş bir Dockerfile oluşturun:

touch Dockerfile

Artık flowers-multi-gpu/ dizininizde aşağıdakilerin olması gerekir:

+ Dockerfile
+ trainer/
    + task.py

Dockerfile'ı açın ve aşağıdakini bu dosyaya 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 env değişkeni tanımlamak üzere aşağıdaki komutu çalıştırın. your-cloud-project kısmına projenizin kimliğini girdiğinizden emin olun:

PROJECT_ID='your-cloud-project'

Artifact Registry'de depo oluşturun. Oluşturduğumuz depoyu ilk laboratuvarda kullanacağız.

REPO_NAME='flower-app'

Artifact Registry'de container görüntünüzün URI'sıyla 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 dizininden aşağıdaki komutu çalıştırarak container'ı oluşturun:

docker build ./ -t $IMAGE_URI

Son olarak, dosyayı Artifact Registry'ye aktarın:

docker push $IMAGE_URI

Container, Artifact Registry'ye aktarıldığında bir eğitim işi 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.

Launcher'dan bir TensorFlow 2 not defteri oluşturun.

new_notebook

Vertex AI SDK'sını içe aktarın.

from google.cloud import aiplatform

Daha sonra, bir CustomContainerTrainingJob tanımlayın.

container_uri içinde {PROJECT_ID} ve staging_bucket içinde {YOUR_BUCKET} yerlerini değiştirmeniz 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 işi çalıştırabilirsiniz. Hızlandırıcı sayısını 2 olacak şekilde ayarlarsınız. Yalnızca 1 GPU kullanmış olsaydık bu durum dağıtılmış eğitim olarak değerlendirilmez. Tek bir makinede dağıtılmış eğitimde 2 veya daha fazla hızlandırıcı kullanılır.

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 çalışanlı eğitim

Artık birden fazla GPU'ya sahip tek bir makinede dağıtılmış eğitimler denediniz. Artık birden fazla makinede eğitim yaparak dağıtılmış eğitim becerilerinizi bir üst seviyeye taşıyabilirsiniz. Maliyetleri azaltmak için bu makinelere GPU eklemeyeceğiz ancak dilerseniz GPU ekleyerek denemeler yapabilirsiniz.

Not defteri örneğinizde yeni bir terminal penceresi açın:

Terminali not defterinde aç

1. Adım: Eğitim kodunu yazın

flowers-multi-machine adında yeni bir dizin oluşturun ve cd'ye ekleyin:

mkdir flowers-multi-machine
cd flowers-multi-machine

Eğitim kodu için bir dizin ve aşağıdaki kodu ekleyeceğiniz Python dosyası oluşturmak için aşağıdaki komutu çalıştırın.

mkdir trainer
touch trainer/task.py

Artık flowers-multi-machine/ dizininizde aşağıdakilerin olması gerekir:

+ trainer/
    + task.py

Sonra, az önce oluşturduğunuz task.py dosyasını açın ve aşağıdaki kodu kopyalayın.

BUCKET_ROOT içindeki {your-gcs-bucket} yerine, Lab 1'de çiçek veri kümesini depoladığınız Cloud Storage paketiyle değiştirmeniz 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()

Container'ı derlemeden önce koda daha yakından bakalım. Kodda, eğitim uygulamanızın MultiWorkerMirroredStrategy ile çalışması için gereken birkaç bileşen vardır.

  • main() işlevinde MultiWorkerMirroredStrategy nesnesi oluşturulur. Daha sonra, model değişkenlerinizi oluşturma sürecini stratejinin kapsamında sarmalayın. Bu önemli adım, TensorFlow'a hangi değişkenlerin replikalar genelinde yansıtılması gerektiğini bildirir.
  • Grup boyutu num_replicas_in_sync oranında artırılır. TensorFlow'da eşzamanlı veri paralelliği stratejilerini kullanırken grup boyutunu ölçeklendirmek en iyi uygulamadır.
  • Hedefin her çalışan için farklı olması gerektiğinden, çok çalışanlı bir durumda modelinizi kaydetmek biraz daha karmaşıktır. Baş çalışan 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. Tasarruf hep birlikte yürütülebilir. Yani sadece amiri değil, tüm çalışanların da kurtarması gerekir. _is_chief(), _get_temp_dir(), write_filepath() işlevleri ve main() işlevinin tümü, modelin kaydedilmesine yardımcı olan ortak kod içerir.

2. Adım: Dockerfile oluşturun

Kodunuzu container mimarisine almak için bir Dockerfile oluşturmanız gerekir. Dockerfile'a görüntüyü çalıştırmak için gereken tüm komutları eklersiniz. Gerekli tüm kitaplıkları yükler ve eğitim kodu için giriş noktasını ayarlar.

Terminal'inizden çiçek dizininizin kök dizininde boş bir Dockerfile oluşturun:

touch Dockerfile

Artık flowers-multi-machine/ dizininizde aşağıdakilerin olması gerekir:

+ Dockerfile
+ trainer/
    + task.py

Dockerfile'ı açın ve aşağıdakini bu dosyaya 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 env değişkeni tanımlamak üzere aşağıdaki komutu çalıştırın. your-cloud-project kısmına projenizin kimliğini girdiğinizden emin olun:

PROJECT_ID='your-cloud-project'

Artifact Registry'de 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'sıyla 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 dizininden aşağıdaki komutu çalıştırarak container'ı oluşturun:

docker build ./ -t $IMAGE_URI

Son olarak, dosyayı Artifact Registry'ye aktarın:

docker push $IMAGE_URI

Container, Artifact Registry'ye aktarıldığında bir eğitim işi 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.

Launcher'dan bir TensorFlow 2 not defteri oluşturun.

new_notebook

Vertex AI SDK'sını içe aktarın.

from google.cloud import aiplatform

Daha sonra, worker_pool_specs tanımlayın.

Vertex AI, farklı makine görevi türlerini kapsayan 4 çalışan havuzu sağlar.

Çalışan havuzu 0 birincil, şef, planlayıcı veya "ana" verilerini yapılandırır. MultiWorkerMirroredStrategy ürününde tüm makineler, çalışan olarak tanımlanmıştır. Çalışanlar, bunlar üzerinde çoğaltılan hesaplamanın yürütüldüğü fiziksel makinelerdir. Her makinenin bir çalışan olmasına ek olarak, kontrol noktalarını kaydetme ve TensorBoard'a özet dosyaları yazma gibi ek işler gerektiren bir çalışana ihtiyaç vardır. Bu makine şef olarak bilinir. Yalnızca bir baş çalışan vardır. Bu nedenle 0 numaralı çalışan havuzu için ç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 havuzunu 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 Çalışan havuzu 1'e daha fazla çalışan ekleyebilirsiniz. GPU eklemek istiyorsanız her iki çalışan havuzu için machine_spec öğesine accelerator_type ve accelerator_count bağımsız değişkenlerini 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çindeki {PROJECT_ID} dosyasını değiştirmeniz 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 bir CustomJob oluşturup çalıştırın. Bu komutta, staging_bucket içindeki {YOUR_BUCKET} yerine hazırlık için projenizdeki bir paket kullanılır.

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ı öğrendiniz:

  • TensorFlow ile dağıtılmış eğitim işleri çalıştırma

Vertex'in farklı bölümleri hakkında daha fazla bilgi edinmek için dokümanlara göz atın.

7. Temizleme

Not defterini 60 dakika boşta kalma dakikasının sonunda zaman aşımına uğrayacak şekilde yapılandırdığımızdan örneği kapatma konusunda endişelenmemize gerek yoktur. Örneği manuel olarak kapatmak isterseniz 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

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