Mengonfigurasi resource komputasi untuk pelatihan kustom

Saat Anda melakukan pelatihan kustom, kode pelatihan Anda akan berjalan pada satu atau beberapa instance mesin virtual (VM). Anda dapat mengonfigurasi jenis VM yang akan digunakan untuk pelatihan: menggunakan VM dengan resource komputasi yang lebih banyak dapat mempercepat pelatihan dan memungkinkan Anda bekerja dengan set data yang lebih besar, tetapi hal tersebut juga dapat menimbulkan biaya pelatihan yang lebih besar.

Dalam beberapa kasus, Anda juga dapat menggunakan GPU untuk mempercepat pelatihan. GPU dikenai biaya tambahan.

Anda juga dapat menyesuaikan jenis dan ukuran boot disk VM pelatihan Anda (opsional).

Dokumen ini menjelaskan berbagai resource komputasi yang dapat Anda gunakan untuk pelatihan kustom dan cara mengonfigurasinya.

Mengelola biaya dan ketersediaan

Untuk membantu mengelola biaya atau memastikan ketersediaan resource VM, Vertex AI menyediakan hal berikut:

  • Untuk memastikan bahwa resource VM tersedia saat tugas pelatihan Anda membutuhkannya, Anda dapat menggunakan reservasi Compute Engine. Pemesanan memberikan tingkat jaminan yang tinggi dalam mendapatkan kapasitas untuk resource Compute Engine. Untuk mengetahui informasi selengkapnya, lihat Menggunakan reservasi dengan pelatihan.

  • Untuk mengurangi biaya menjalankan tugas pelatihan, Anda dapat menggunakan VM Spot. Spot VM adalah instance virtual machine (VM) yang merupakan kapasitas Compute Engine berlebih. Spot VM memiliki diskon yang signifikan, tetapi Compute Engine dapat menghentikan atau menghapus Spot VM secara preemptive untuk mengklaim kembali kapasitas kapan saja. Untuk mengetahui informasi selengkapnya, lihat Menggunakan Spot VM dengan pelatihan.

  • Untuk tugas pelatihan kustom yang meminta resource GPU, Dynamic Workload Scheduler memungkinkan Anda menjadwalkan tugas berdasarkan kapan resource GPU yang diminta tersedia. Untuk mengetahui informasi selengkapnya, lihat Menjadwalkan tugas pelatihan berdasarkan ketersediaan resource.

Tempat menentukan resource komputasi

Tentukan detail konfigurasi dalam WorkerPoolSpec. Bergantung pada cara Anda melakukan pelatihan kustom, masukkan WorkerPoolSpec ini di salah satu kolom API berikut:

Jika melakukan pelatihan terdistribusi, Anda dapat menggunakan setelan yang berbeda untuk setiap pool worker.

Jenis mesin

Di WorkerPoolSpec, Anda harus menentukan salah satu jenis mesin berikut di kolom machineSpec.machineType. Setiap replika dalam pool worker berjalan di VM terpisah yang memiliki jenis mesin tertentu.

  • a3-highgpu-1g*
  • a3-highgpu-2g*
  • a3-highgpu-4g*
  • a3-highgpu-8g*
  • a2-ultragpu-1g*
  • a2-ultragpu-2g*
  • a2-ultragpu-4g*
  • a2-ultragpu-8g*
  • a2-highgpu-1g*
  • a2-highgpu-2g*
  • a2-highgpu-4g*
  • a2-highgpu-8g*
  • a2-megagpu-16g*
  • e2-standard-4
  • e2-standard-8
  • e2-standard-16
  • e2-standard-32
  • e2-highmem-2
  • e2-highmem-4
  • e2-highmem-8
  • e2-highmem-16
  • e2-highcpu-16
  • e2-highcpu-32
  • n2-standard-4
  • n2-standard-8
  • n2-standard-16
  • n2-standard-32
  • n2-standard-48
  • n2-standard-64
  • n2-standard-80
  • n2-highmem-2
  • n2-highmem-4
  • n2-highmem-8
  • n2-highmem-16
  • n2-highmem-32
  • n2-highmem-48
  • n2-highmem-64
  • n2-highmem-80
  • n2-highcpu-16
  • n2-highcpu-32
  • n2-highcpu-48
  • n2-highcpu-64
  • n2-highcpu-80
  • n1-standard-4
  • n1-standard-8
  • n1-standard-16
  • n1-standard-32
  • n1-standard-64
  • n1-standard-96
  • n1-highmem-2
  • n1-highmem-4
  • n1-highmem-8
  • n1-highmem-16
  • n1-highmem-32
  • n1-highmem-64
  • n1-highmem-96
  • n1-highcpu-16
  • n1-highcpu-32
  • n1-highcpu-64
  • n1-highcpu-96
  • c2-standard-4
  • c2-standard-8
  • c2-standard-16
  • c2-standard-30
  • c2-standard-60
  • ct5lp-hightpu-1t*
  • ct5lp-hightpu-4t*
  • ct5lp-hightpu-8t*
  • m1-ultramem-40
  • m1-ultramem-80
  • m1-ultramem-160
  • m1-megamem-96
  • g2-standard-4*
  • g2-standard-8*
  • g2-standard-12*
  • g2-standard-16*
  • g2-standard-24*
  • g2-standard-32*
  • g2-standard-48*
  • g2-standard-96*
  • cloud-tpu*

* Jenis mesin yang ditandai dengan tanda bintang dalam daftar sebelumnya harus digunakan dengan GPU atau TPU tertentu. Lihat bagian berikutnya dalam panduan ini.

Untuk mempelajari spesifikasi teknis setiap jenis mesin, baca Dokumentasi Compute Engine tentang jenis mesin. Untuk mempelajari biaya penggunaan setiap jenis mesin untuk pelatihan kustom, baca Harga.

Contoh berikut menyoroti tempat Anda menentukan jenis mesin saat membuat CustomJob:

Konsol

Di Konsol Google Cloud, Anda tidak dapat membuat CustomJob secara langsung. Namun, Anda dapat membuat TrainingPipeline yang akan membuat CustomJob. Saat Anda membuatTrainingPipeline di Konsol Google Cloud, tentukan jenis mesin untuk setiap pool worker di langkah Compute and pricing, dalam kolom Machine type.

gcloud

gcloud ai custom-jobs create \
  --region=LOCATION \
  --display-name=JOB_NAME \
  --worker-pool-spec=machine-type=MACHINE_TYPE,replica-count=REPLICA_COUNT,container-image-uri=CUSTOM_CONTAINER_IMAGE_URI

Java

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai Vertex AI menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Java Vertex AI.

Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.


import com.google.cloud.aiplatform.v1.AcceleratorType;
import com.google.cloud.aiplatform.v1.ContainerSpec;
import com.google.cloud.aiplatform.v1.CustomJob;
import com.google.cloud.aiplatform.v1.CustomJobSpec;
import com.google.cloud.aiplatform.v1.JobServiceClient;
import com.google.cloud.aiplatform.v1.JobServiceSettings;
import com.google.cloud.aiplatform.v1.LocationName;
import com.google.cloud.aiplatform.v1.MachineSpec;
import com.google.cloud.aiplatform.v1.WorkerPoolSpec;
import java.io.IOException;

// Create a custom job to run machine learning training code in Vertex AI
public class CreateCustomJobSample {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String project = "PROJECT";
    String displayName = "DISPLAY_NAME";

    // Vertex AI runs your training application in a Docker container image. A Docker container
    // image is a self-contained software package that includes code and all dependencies. Learn
    // more about preparing your training application at
    // https://cloud.google.com/vertex-ai/docs/training/overview#prepare_your_training_application
    String containerImageUri = "CONTAINER_IMAGE_URI";
    createCustomJobSample(project, displayName, containerImageUri);
  }

  static void createCustomJobSample(String project, String displayName, String containerImageUri)
      throws IOException {
    JobServiceSettings settings =
        JobServiceSettings.newBuilder()
            .setEndpoint("us-central1-aiplatform.googleapis.com:443")
            .build();
    String location = "us-central1";

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (JobServiceClient client = JobServiceClient.create(settings)) {
      MachineSpec machineSpec =
          MachineSpec.newBuilder()
              .setMachineType("n1-standard-4")
              .setAcceleratorType(AcceleratorType.NVIDIA_TESLA_T4)
              .setAcceleratorCount(1)
              .build();

      ContainerSpec containerSpec =
          ContainerSpec.newBuilder().setImageUri(containerImageUri).build();

      WorkerPoolSpec workerPoolSpec =
          WorkerPoolSpec.newBuilder()
              .setMachineSpec(machineSpec)
              .setReplicaCount(1)
              .setContainerSpec(containerSpec)
              .build();

      CustomJobSpec customJobSpecJobSpec =
          CustomJobSpec.newBuilder().addWorkerPoolSpecs(workerPoolSpec).build();

      CustomJob customJob =
          CustomJob.newBuilder()
              .setDisplayName(displayName)
              .setJobSpec(customJobSpecJobSpec)
              .build();
      LocationName parent = LocationName.of(project, location);
      CustomJob response = client.createCustomJob(parent, customJob);
      System.out.format("response: %s\n", response);
      System.out.format("Name: %s\n", response.getName());
    }
  }
}

Node.js

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai Vertex AI menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Node.js Vertex AI.

Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

/**
 * TODO(developer): Uncomment these variables before running the sample.\
 * (Not necessary if passing values as arguments)
 */

// const customJobDisplayName = 'YOUR_CUSTOM_JOB_DISPLAY_NAME';
// const containerImageUri = 'YOUR_CONTAINER_IMAGE_URI';
// const project = 'YOUR_PROJECT_ID';
// const location = 'YOUR_PROJECT_LOCATION';

// Imports the Google Cloud Job Service Client library
const {JobServiceClient} = require('@google-cloud/aiplatform');

// Specifies the location of the api endpoint
const clientOptions = {
  apiEndpoint: 'us-central1-aiplatform.googleapis.com',
};

// Instantiates a client
const jobServiceClient = new JobServiceClient(clientOptions);

async function createCustomJob() {
  // Configure the parent resource
  const parent = `projects/${project}/locations/${location}`;
  const customJob = {
    displayName: customJobDisplayName,
    jobSpec: {
      workerPoolSpecs: [
        {
          machineSpec: {
            machineType: 'n1-standard-4',
            acceleratorType: 'NVIDIA_TESLA_K80',
            acceleratorCount: 1,
          },
          replicaCount: 1,
          containerSpec: {
            imageUri: containerImageUri,
            command: [],
            args: [],
          },
        },
      ],
    },
  };
  const request = {parent, customJob};

  // Create custom job request
  const [response] = await jobServiceClient.createCustomJob(request);

  console.log('Create custom job response:\n', JSON.stringify(response));
}
createCustomJob();

Python

Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi Python API.

from google.cloud import aiplatform


def create_custom_job_sample(
    project: str,
    display_name: str,
    container_image_uri: str,
    location: str = "us-central1",
    api_endpoint: str = "us-central1-aiplatform.googleapis.com",
):
    # The AI Platform services require regional API endpoints.
    client_options = {"api_endpoint": api_endpoint}
    # Initialize client that will be used to create and send requests.
    # This client only needs to be created once, and can be reused for multiple requests.
    client = aiplatform.gapic.JobServiceClient(client_options=client_options)
    custom_job = {
        "display_name": display_name,
        "job_spec": {
            "worker_pool_specs": [
                {
                    "machine_spec": {
                        "machine_type": "n1-standard-4",
                        "accelerator_type": aiplatform.gapic.AcceleratorType.NVIDIA_TESLA_K80,
                        "accelerator_count": 1,
                    },
                    "replica_count": 1,
                    "container_spec": {
                        "image_uri": container_image_uri,
                        "command": [],
                        "args": [],
                    },
                }
            ]
        },
    }
    parent = f"projects/{project}/locations/{location}"
    response = client.create_custom_job(parent=parent, custom_job=custom_job)
    print("response:", response)

Untuk konteks selengkapnya, baca panduan untuk membuat CustomJob.

GPU

Jika telah menulis kode pelatihan untuk menggunakan GPU, Anda dapat mengonfigurasi pool worker untuk menggunakan satu atau beberapa GPU di setiap VM. Untuk menggunakan GPU, Anda harus menggunakan jenis mesin A2, N1, atau G2. Selain itu, penggunaan jenis mesin yang lebih kecil seperti n1-highmem-2 dengan GPU dapat menyebabkan logging gagal untuk beberapa beban kerja karena batasan CPU. Jika tugas pelatihan Anda berhenti menampilkan log, pertimbangkan untuk memilih jenis mesin yang lebih besar.

Vertex AI mendukung jenis GPU berikut untuk pelatihan kustom:

  • NVIDIA_H100_80GB
  • NVIDIA_A100_80GB
  • NVIDIA_TESLA_A100 (NVIDIA A100 40GB)
  • NVIDIA_TESLA_P4
  • NVIDIA_TESLA_P100
  • NVIDIA_TESLA_T4
  • NVIDIA_TESLA_V100
  • NVIDIA_L4

Untuk mempelajari lebih lanjut spesifikasi teknis setiap jenis GPU, baca Dokumentasi singkat Compute Engine tentang GPU untuk beban kerja komputasi. Guna mempelajari biaya penggunaan setiap jenis mesin untuk pelatihan kustom, baca Harga.

Dalam WorkerPoolSpec, tentukan jenis GPU yang ingin Anda gunakan di kolom machineSpec.acceleratorType dan jumlah GPU yang Anda inginkan untuk setiap VM dalam pool pekerja untuk digunakan di kolom machineSpec.acceleratorCount. Namun, pilihan Anda untuk kolom ini harus memenuhi batasan berikut:

  • Jenis GPU yang Anda pilih harus tersedia di lokasi tempat Anda melakukan pelatihan kustom. Tidak semua jenis GPU tersedia di semua region. Pelajari ketersediaan regional.

  • Anda hanya dapat menggunakan jumlah GPU tertentu dalam konfigurasi. Misalnya, Anda dapat menggunakan 2 atau 4 GPU NVIDIA_TESLA_T4 di VM, tetapi tidak dapat menggunakan 3. Untuk mengetahui nilai acceleratorCount yang valid untuk setiap jenis GPU, lihat tabel kompatibilitas berikut.

  • Anda harus memastikan bahwa konfigurasi GPU menyediakan CPU dan memori virtual yang memadai untuk jenis mesin yang Anda gunakan. Misalnya, jika Anda menggunakan jenis mesin n1-standard-32 dalam pool worker, setiap VM memiliki 32 CPU virtual dan memori sebesar 120 GB. Karena setiap GPU NVIDIA_TESLA_V100 dapat menyediakan hingga 12 CPU virtual dan memori sebesar 76 GB, Anda harus menggunakan minimal 4 GPU untuk setiap VM n1-standard-32 guna mendukung persyaratannya. (2 GPU memberikan resource yang tidak memadai, dan Anda tidak dapat menentukan 3 GPU.)

    Tabel kompatibilitas berikut memperhitungkan persyaratan ini.

    Perhatikan batasan tambahan berikut terkait penggunaan GPU untuk pelatihan kustom yang berbeda dengan penggunaan GPU dengan Compute Engine:

    • Konfigurasi dengan 4 GPU NVIDIA_TESLA_P100 hanya menyediakan hingga 64 CPU virtual dan memori hingga 208 GB di semua region dan zona.
  • Untuk tugas yang menggunakan Dynamic Workload Scheduler atau Spot VM, perbarui kolom scheduling.strategy dari CustomJob ke strategi yang dipilih.

Tabel kompatibilitas berikut mencantumkan nilai yang valid untuk machineSpec.acceleratorCount, bergantung pada pilihan Anda untuk machineSpec.machineType dan machineSpec.acceleratorType:

Jumlah GPU yang valid untuk setiap jenis mesin
Jenis mesin NVIDIA_H100_80GB NVIDIA_A100_80GB NVIDIA_TESLA_A100 NVIDIA_TESLA_P4 NVIDIA_TESLA_P100 NVIDIA_TESLA_T4 NVIDIA_TESLA_V100 NVIDIA_L4
a3-highgpu-1g 1*
a3-highgpu-2g 2*
a3-highgpu-4g 4*
a3-highgpu-8g 8
a2-ultragpu-1g 1
a2-ultragpu-2g 2
a2-ultragpu-4g 4
a2-ultragpu-8g 8
a2-highgpu-1g 1
a2-highgpu-2g 2
a2-highgpu-4g 4
a2-highgpu-8g 8
a2-megagpu-16g 16
n1-standard-4 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-standard-8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-standard-16 1, 2, 4 1, 2, 4 1, 2, 4 2, 4, 8
n1-standard-32 2, 4 2, 4 2, 4 4, 8
n1-standard-64 4 4 8
n1-standard-96 4 4 8
n1-highmem-2 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-highmem-4 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-highmem-8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-highmem-16 1, 2, 4 1, 2, 4 1, 2, 4 2, 4, 8
n1-highmem-32 2, 4 2, 4 2, 4 4, 8
n1-highmem-64 4 4 8
n1-highmem-96 4 4 8
n1-highcpu-16 1, 2, 4 1, 2, 4 1, 2, 4 2, 4, 8
n1-highcpu-32 2, 4 2, 4 2, 4 4, 8
n1-highcpu-64 4 4 4 8
n1-highcpu-96 4 4 8
g2-standard-4 1
g2-standard-8 1
g2-standard-12 1
g2-standard-16 1
g2-standard-24 2
g2-standard-32 1
g2-standard-48 4
g2-standard-96 8

* Jenis mesin yang ditentukan hanya tersedia saat menggunakan Dynamic Workload Scheduler atau Spot VM.

Contoh berikut menyoroti tempat Anda dapat menentukan GPU saat membuat CustomJob:

Konsol

Di Konsol Google Cloud, Anda tidak dapat membuat CustomJob secara langsung. Namun, Anda dapat membuat TrainingPipeline yang akan membuat CustomJob. Saat membuat TrainingPipeline di Konsol Google Cloud, Anda dapat menentukan GPU untuk setiap pool worker pada langkah Compute and pricing. Pertama, tentukan Machine type. Kemudian, Anda dapat menentukan detail GPU di kolom Accelerator type dan Accelerator count.

gcloud

Untuk menentukan GPU menggunakan alat Google Cloud CLI, Anda harus menggunakan file config.yaml. Contoh:

config.yaml

workerPoolSpecs:
  machineSpec:
    machineType: MACHINE_TYPE
    acceleratorType: ACCELERATOR_TYPE
    acceleratorCount: ACCELERATOR_COUNT
  replicaCount: REPLICA_COUNT
  containerSpec:
    imageUri: CUSTOM_CONTAINER_IMAGE_URI

Lalu, jalankan perintah seperti berikut:

gcloud ai custom-jobs create \
  --region=LOCATION \
  --display-name=JOB_NAME \
  --config=config.yaml

Node.js

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai Vertex AI menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Node.js Vertex AI.

Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

/**
 * TODO(developer): Uncomment these variables before running the sample.\
 * (Not necessary if passing values as arguments)
 */

// const customJobDisplayName = 'YOUR_CUSTOM_JOB_DISPLAY_NAME';
// const containerImageUri = 'YOUR_CONTAINER_IMAGE_URI';
// const project = 'YOUR_PROJECT_ID';
// const location = 'YOUR_PROJECT_LOCATION';

// Imports the Google Cloud Job Service Client library
const {JobServiceClient} = require('@google-cloud/aiplatform');

// Specifies the location of the api endpoint
const clientOptions = {
  apiEndpoint: 'us-central1-aiplatform.googleapis.com',
};

// Instantiates a client
const jobServiceClient = new JobServiceClient(clientOptions);

async function createCustomJob() {
  // Configure the parent resource
  const parent = `projects/${project}/locations/${location}`;
  const customJob = {
    displayName: customJobDisplayName,
    jobSpec: {
      workerPoolSpecs: [
        {
          machineSpec: {
            machineType: 'n1-standard-4',
            acceleratorType: 'NVIDIA_TESLA_K80',
            acceleratorCount: 1,
          },
          replicaCount: 1,
          containerSpec: {
            imageUri: containerImageUri,
            command: [],
            args: [],
          },
        },
      ],
    },
  };
  const request = {parent, customJob};

  // Create custom job request
  const [response] = await jobServiceClient.createCustomJob(request);

  console.log('Create custom job response:\n', JSON.stringify(response));
}
createCustomJob();

Python

Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi Python API.

from google.cloud import aiplatform


def create_custom_job_sample(
    project: str,
    display_name: str,
    container_image_uri: str,
    location: str = "us-central1",
    api_endpoint: str = "us-central1-aiplatform.googleapis.com",
):
    # The AI Platform services require regional API endpoints.
    client_options = {"api_endpoint": api_endpoint}
    # Initialize client that will be used to create and send requests.
    # This client only needs to be created once, and can be reused for multiple requests.
    client = aiplatform.gapic.JobServiceClient(client_options=client_options)
    custom_job = {
        "display_name": display_name,
        "job_spec": {
            "worker_pool_specs": [
                {
                    "machine_spec": {
                        "machine_type": "n1-standard-4",
                        "accelerator_type": aiplatform.gapic.AcceleratorType.NVIDIA_TESLA_K80,
                        "accelerator_count": 1,
                    },
                    "replica_count": 1,
                    "container_spec": {
                        "image_uri": container_image_uri,
                        "command": [],
                        "args": [],
                    },
                }
            ]
        },
    }
    parent = f"projects/{project}/locations/{location}"
    response = client.create_custom_job(parent=parent, custom_job=custom_job)
    print("response:", response)

Untuk konteks selengkapnya, baca panduan untuk membuat CustomJob.

TPU

Agar dapat menggunakan Tensor Processing Unit (TPU) untuk pelatihan kustom pada Vertex AI, Anda dapat mengonfigurasi pool worker untuk menggunakan TPU VM.

Saat menggunakan VM TPU di Vertex AI, Anda hanya boleh menggunakan satu pool worker untuk pelatihan kustom, dan Anda harus mengonfigurasi pool worker ini agar menggunakan satu replika saja.

TPU v2 dan v3

Untuk menggunakan VM TPU v2 atau v3 di pool pekerja, Anda harus menggunakan salah satu konfigurasi berikut:

  • Untuk mengonfigurasi VM TPU dengan TPU v2, tentukan kolom berikut di WorkerPoolSpec:

    • Tetapkan machineSpec.machineType ke cloud-tpu.
    • Tetapkan machineSpec.acceleratorType ke TPU_V2.
    • Tetapkan machineSpec.acceleratorCount ke 8 untuk satu TPU atau 32 or multiple of 32 untuk Pod TPU.
    • Tetapkan replicaCount ke 1.
  • Untuk mengonfigurasi VM TPU dengan TPU v3, tentukan kolom berikut di WorkerPoolSpec:

    • Tetapkan machineSpec.machineType ke cloud-tpu.
    • Tetapkan machineSpec.acceleratorType ke TPU_V3.
    • Tetapkan machineSpec.acceleratorCount ke 8 untuk satu TPU atau 32+ untuk Pod TPU.
    • Tetapkan replicaCount ke 1.

TPU v5e

TPU v5e memerlukan JAX 0.4.6+, TensorFlow 2.15+, atau PyTorch 2.1+. Untuk mengonfigurasi VM TPU dengan TPU v5e, tentukan kolom berikut di WorkerPoolSpec:

  • Tetapkan machineSpec.machineType ke ct5lp-hightpu-1t, ct5lp-hightpu-4t, atau ct5lp-hightpu-8t.
  • Tetapkan machineSpec.tpuTopology ke topologi yang didukung untuk jenis mesin. Untuk mengetahui detailnya, lihat tabel berikut.
  • Tetapkan replicaCount ke 1.

Tabel berikut menunjukkan jenis dan topologi mesin TPU v5e yang didukung untuk pelatihan kustom:

Machine Type Topologi Jumlah TPU chip Jumlah VM Kasus penggunaan yang direkomendasikan
ct5lp-hightpu-1t 1x1 1 1 Pelatihan skala kecil hingga menengah
ct5lp-hightpu-4t 2x2 4 1 Pelatihan skala kecil hingga menengah
ct5lp-hightpu-8t 2x4 8 1 Pelatihan skala kecil hingga menengah
ct5lp-hightpu-4t 2x4 8 2 Pelatihan skala kecil hingga menengah
ct5lp-hightpu-4t 4x4 16 4 Pelatihan berskala besar
ct5lp-hightpu-4t 4x8 32 8 Pelatihan berskala besar
ct5lp-hightpu-4t 8x8 64 16 Pelatihan berskala besar
ct5lp-hightpu-4t 8x16 128 32 Pelatihan berskala besar
ct5lp-hightpu-4t 16x16 256 64 Pelatihan berskala besar

Tugas pelatihan kustom yang berjalan di VM TPU v5e dioptimalkan untuk throughput dan ketersediaan. Untuk informasi selengkapnya, lihat Jenis akselerator Pelatihan v5e.

Mesin TPU v5e tersedia di us-west1 dan us-west4 untuk pelatihan kustom Vertex AI. Untuk informasi selengkapnya tentang TPU v5e, lihat Pelatihan Cloud TPU v5e.

Perbandingan jenis mesin:

Machine Type ct5lp-hightpu-1t ct5lp-hightpu-4t ct5lp-hightpu-8t
Jumlah chip v5e 1 4 8
Jumlah vCPU 24 112 224
RAM (GB) 48 192 384
Jumlah node NUMA 1 1 2
Kemungkinan preemption Tinggi Sedang Rendah

Contoh CustomJob yang menentukan VM TPU

Contoh berikut menyoroti cara menentukan VM TPU saat Anda membuat CustomJob:

gcloud

Untuk menentukan VM TPU menggunakan alat gcloud CLI, Anda harus menggunakan file config.yaml. Pilih salah satu tab berikut untuk melihat contoh:

TPU v2/v3

workerPoolSpecs:
  machineSpec:
    machineType: cloud-tpu
    acceleratorType: TPU_V2
    acceleratorCount: 8
  replicaCount: 1
  containerSpec:
    imageUri: CUSTOM_CONTAINER_IMAGE_URI

TPU v5e

workerPoolSpecs:
  machineSpec:
    machineType: ct5lp-hightpu-4t
    tpuTopology: 4x4
  replicaCount: 1
  containerSpec:
    imageUri: CUSTOM_CONTAINER_IMAGE_URI

Lalu, jalankan perintah seperti berikut:

gcloud ai custom-jobs create \
  --region=LOCATION \
  --display-name=JOB_NAME \
  --config=config.yaml

Python

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai Vertex AI menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Python Vertex AI.

Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Untuk menentukan VM TPU menggunakan Vertex AI SDK untuk Python, lihat contoh berikut:

from google.cloud.aiplatform import aiplatform

job = aiplatform.CustomContainerTrainingJob(
    display_name='DISPLAY_NAME',
    location='us-west1',
    project='PROJECT_ID',
    staging_bucket="gs://CLOUD_STORAGE_URI",
    container_uri='CONTAINER_URI')

job.run(machine_type='ct5lp-hightpu-4t', tpu_topology='2x2')

Untuk informasi selengkapnya tentang cara membuat tugas pelatihan kustom, lihat Membuat tugas pelatihan kustom.

Opsi boot disk

Anda dapat menyesuaikan boot disk untuk VM pelatihan (opsional). Semua VM di pool worker menggunakan jenis dan ukuran boot disk yang sama.

  • Untuk menyesuaikan jenis boot disk yang digunakan oleh setiap VM pelatihan, tentukan kolom diskSpec.bootDiskType dalam WorkerPoolSpec Anda.

    Anda dapat menetapkan kolom ini ke pd-standard untuk menggunakan persistent disk standar yang didukung oleh hard drive standar, atau Anda dapat menyetelnya ke pd-ssd untuk menggunakan persistent disk SSD yang didukung oleh Solid State Drive. Nilai defaultnya adalah pd-ssd.

    Menggunakan pd-ssd dapat meningkatkan performa jika kode pelatihan Anda membaca dan menulis ke disk. Pelajari jenis disk.

  • Untuk menyesuaikan ukuran (dalam GB) boot disk yang digunakan oleh setiap VM pelatihan, tentukan kolom diskSpec.bootDiskSizeGb di WorkerPoolSpec Anda.

    Anda dapat menetapkan kolom ini ke bilangan bulat antara 100 dan 64.000, inklusif. Nilai defaultnya adalah 100.

    Anda mungkin ingin menambah ukuran boot disk jika kode pelatihan Anda menulis banyak data sementara ke disk. Perlu diketahui bahwa data apa pun yang Anda tulis ke boot disk bersifat sementara, dan Anda tidak dapat mengambilnya setelah pelatihan selesai.

Mengubah jenis dan ukuran boot disk akan memengaruhi harga pelatihan kustom.

Contoh berikut menyoroti tempat Anda dapat menentukan opsi boot disk saat membuat CustomJob:

Konsol

Di Konsol Google Cloud, Anda tidak dapat membuat CustomJob secara langsung. Namun, Anda dapat membuat TrainingPipeline yang akan membuat CustomJob. Saat membuat TrainingPipeline di Konsol Google Cloud, Anda dapat menentukan opsi boot disk untuk setiap pool worker pada langkah Compute and pricing, di menu drop-down Disk type dan kolom Disk size (GB).

gcloud

Untuk menentukan opsi boot disk menggunakan alat Google Cloud CLI, Anda harus menggunakan file config.yaml. Contoh:

config.yaml

workerPoolSpecs:
  machineSpec:
    machineType: MACHINE_TYPE
  diskSpec:
    bootDiskType: DISK_TYPE
    bootDiskSizeGb: DISK_SIZE
  replicaCount: REPLICA_COUNT
  containerSpec:
    imageUri: CUSTOM_CONTAINER_IMAGE_URI

Lalu, jalankan perintah seperti berikut:

gcloud ai custom-jobs create \
  --region=LOCATION \
  --display-name=JOB_NAME \
  --config=config.yaml

Untuk konteks selengkapnya, baca panduan untuk membuat CustomJob.

Langkah berikutnya