Configurare le risorse di calcolo per l'addestramento personalizzato

Quando esegui l'addestramento personalizzato, il codice di addestramento viene eseguito su una o più istanze di macchine virtuali (VM). Puoi configurare i tipi di VM da utilizzare per l'addestramento: l'utilizzo di VM con più risorse di calcolo può velocizzare l'addestramento e consentirti di lavorare con set di dati più grandi, ma può anche comportare costi di addestramento maggiori.

In alcuni casi, puoi utilizzare anche le GPU per accelerare l'addestramento. Le GPU comportano costi aggiuntivi.

Se vuoi, puoi anche personalizzare il tipo e le dimensioni dei dischi di avvio delle VM di addestramento.

Questo documento descrive le diverse risorse di calcolo che puoi utilizzare per l'addestramento personalizzato e come configurarle.

Gestire il costo e la disponibilità

Per aiutarti a gestire i costi o garantire la disponibilità delle risorse VM, Vertex AI offre quanto segue:

  • Per assicurarti che le risorse VM siano disponibili quando i job di addestramento ne hanno bisogno, puoi utilizzare le prenotazioni di Compute Engine. Le prenotazioni offrono un alto livello di garanzia per l'ottenimento di capacità per le risorse Compute Engine. Per ulteriori informazioni, consulta la sezione Utilizzare le prenotazioni con la formazione.

  • Per ridurre il costo di esecuzione dei job di addestramento, puoi utilizzare le VM spot. Le VM spot sono istanze di macchine virtuali (VM) che rappresentano la capacità in eccesso di Compute Engine. Le VM spot hanno sconti significativi, ma Compute Engine potrebbe arrestare o eliminare prevedibilmente le VM spot per recuperare la capacità in qualsiasi momento. Per ulteriori informazioni, consulta Utilizzare le VM spot con la formazione.

  • Per i job di addestramento personalizzati che richiedono risorse GPU, la pianificazione dei workload dinamici consente di pianificare i job in base al momento in cui le risorse GPU richieste diventano disponibili. Per ulteriori informazioni, vedi Pianificare i job di addestramento in base alla disponibilità delle risorse.

Dove specificare le risorse di calcolo

Specifica i dettagli di configurazione all'interno di un WorkerPoolSpec. A seconda di come esegui l'addestramento personalizzato, inserisci questo WorkerPoolSpec in uno dei seguenti campi dell'API:

Se esegui l'addestramento distribuito, puoi utilizzare impostazioni diverse per ogni pool di worker.

Tipi di macchina

In WorkerPoolSpec, devi specificare uno dei seguenti tipi di macchine nel campo machineSpec.machineType. Ogni replica nel pool di worker viene eseguita su una VM separata con il tipo di macchina specificato.

  • 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*

* I tipi di macchine contrassegnati da asterischi nell'elenco precedente devono essere utilizzati con determinate GPU o TPU. Consulta le seguenti sezioni di questa guida.

Per conoscere le specifiche tecniche di ogni tipo di macchina, consulta la documentazione di Compute Engine sui tipi di macchina. Per informazioni sul costo dell'utilizzo di ogni tipo di macchina per l'addestramento personalizzato, consulta la sezione Prezzi.

Gli esempi seguenti mostrano dove specificare un tipo di macchina quando crei un CustomJob:

Console

Nella console Google Cloud non puoi creare direttamente un CustomJob. Tuttavia, puoi creare un TrainingPipeline che crea un CustomJob. Quando crei un TrainingPipeline nella console Google Cloud, specifica un tipo di macchina per ogni pool di worker nel passaggio Computing e prezzi, nel campo Tipo di macchina.

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

Prima di provare questo esempio, segui le istruzioni di configurazione Java riportate nella guida rapida all'utilizzo delle librerie client di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Java di Vertex AI.

Per autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.


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

Prima di provare questo esempio, segui le istruzioni di configurazione Node.js riportate nella guida rapida all'utilizzo delle librerie client di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Node.js di Vertex AI.

Per autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

/**
 * 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

Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.

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)

Per maggiori informazioni, consulta la guida alla creazione di un CustomJob.

GPU

Se hai scritto il codice di addestramento per l'utilizzo delle GPU, puoi configurare il pool di worker in modo da utilizzare una o più GPU su ogni VM. Per utilizzare le GPU, devi utilizzare un tipo di macchina A2, N1 o G2. Inoltre, l'utilizzo di tipi di macchine più piccole come n1-highmem-2 con GPU potrebbe causare l'errore di registrazione per alcuni carichi di lavoro a causa di limitazioni della CPU. Se il job di addestramento smette di restituire log, valuta la possibilità di selezionare un tipo di macchina più grande.

Vertex AI supporta i seguenti tipi di GPU per l'addestramento personalizzato:

  • 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

Per saperne di più sulle specifiche tecniche di ogni tipo di GPU, consulta la documentazione breve di Compute Engine sulle GPU per i carichi di lavoro di calcolo. Per informazioni sul costo dell'utilizzo di ciascun tipo di macchina per l'addestramento personalizzato, consulta la sezione Prezzi.

In WorkerPoolSpec, specifica il tipo di GPU che vuoi utilizzare nel campo machineSpec.acceleratorType e il numero di GPU che vuoi che ogni VM nel pool di worker utilizzi nel campo machineSpec.acceleratorCount. Tuttavia, le tue scelte per questi campi devono soddisfare le seguenti limitazioni:

  • Il tipo di GPU scelto deve essere disponibile nella località in cui stai eseguendo l'addestramento personalizzato. Non tutti i tipi di GPU sono disponibili in tutte le regioni. Scopri di più sulla disponibilità a livello regionale.

  • Nella configurazione puoi utilizzare solo un determinato numero di GPU. Ad esempio, puoi utilizzare 2 o 4 GPU NVIDIA_TESLA_T4 su una VM, ma non 3. Per sapere quali valori acceleratorCount sono validi per ogni tipo di GPU, consulta la seguente tabella di compatibilità.

  • Devi assicurarti che la configurazione della GPU fornisca CPU e memoria virtuali sufficienti al tipo di macchina con cui la utilizzi. Ad esempio, se utilizzi il tipo di macchina n1-standard-32 nel pool di worker, ogni VM ha 32 CPU virtuali e 120 GB di memoria. Poiché ogni GPU NVIDIA_TESLA_V100 può fornire fino a 12 CPU virtuali e 76 GB di memoria, devi utilizzare almeno 4 GPU per ogni VM n1-standard-32 per supportarne i requisiti. (2 GPU forniscono risorse insufficienti e non puoi specificare 3 GPU).

    La seguente tabella di compatibilità tiene conto di questo requisito.

    Tieni presente la seguente limitazione aggiuntiva sull'utilizzo delle GPU per l'addestramento personalizzato distinta dall'utilizzo delle GPU con Compute Engine:

    • Una configurazione con 4 GPU NVIDIA_TESLA_P100 fornisce solo fino a 64 vCPU e fino a 208 GB di memoria in tutte le regioni e le zone.
  • Per i job che utilizzano Dynamic Workload Scheduler o VM spot, aggiorna il campo scheduling.strategy di CustomJob in base alla strategia scelta.

La seguente tabella di compatibilità elenca i valori validi per machineSpec.acceleratorCount a seconda delle tue scelte per machineSpec.machineType e machineSpec.acceleratorType:

Numeri di GPU validi per ogni tipo di macchina
Tipo di macchina 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

* Il tipo di macchina specificato è disponibile solo se utilizzi Dynamic Workload Scheduler o VM Spot.

Gli esempi seguenti mostrano dove puoi specificare le GPU quando crei un CustomJob:

Console

Nella console Google Cloud non puoi creare direttamente un CustomJob. Tuttavia, puoi creare un TrainingPipeline che crea un CustomJob. Quando crei un TrainingPipeline nella console Google Cloud, puoi specificare le GPU per ogni pool di worker nel passaggio Computing e prezzi. Innanzitutto, specifica un tipo di macchina. Poi, puoi specificare i dettagli della GPU nei campi Accelerator type (Tipo di acceleratore) e Accelerator count (Numero di acceleratori).

gcloud

Per specificare le GPU utilizzando lo strumento Google Cloud CLI, devi utilizzare un config.yaml file. Ad esempio:

config.yaml

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

Quindi esegui un comando come il seguente:

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

Node.js

Prima di provare questo esempio, segui le istruzioni di configurazione Node.js riportate nella guida rapida all'utilizzo delle librerie client di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Node.js di Vertex AI.

Per autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

/**
 * 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

Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.

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)

Per maggiori informazioni, consulta la guida alla creazione di un CustomJob.

TPU

Per utilizzare le Tensor Processing Unit (TPU) per l'addestramento personalizzato su Vertex AI, puoi configurare un pool di worker per utilizzare una VM TPU.

Quando utilizzi una VM TPU in Vertex AI, devi utilizzare un solo pool di worker per l'addestramento personalizzato e devi configurare questo pool di worker in modo da utilizzare una sola replica.

TPU v2 e v3

Per utilizzare VM TPU v2 o v3 nel pool di worker, devi utilizzare una delle seguenti configurazioni:

  • Per configurare una VM TPU con TPU v2, specifica i seguenti campi in WorkerPoolSpec:

    • Imposta machineSpec.machineType su cloud-tpu.
    • Imposta machineSpec.acceleratorType su TPU_V2.
    • Imposta machineSpec.acceleratorCount su 8 per una singola TPU o su 32 or multiple of 32 per i pod di TPU.
    • Imposta replicaCount su 1.
  • Per configurare una VM TPU con TPU v3, specifica i seguenti campi in WorkerPoolSpec:

    • Imposta machineSpec.machineType su cloud-tpu.
    • Imposta machineSpec.acceleratorType su TPU_V3.
    • Imposta machineSpec.acceleratorCount su 8 per una singola TPU o su 32+ per i pod di TPU.
    • Imposta replicaCount su 1.

TPU v5e

TPU v5e richiede JAX 0.4.6 o versioni successive, TensorFlow 2.15 o versioni successive o PyTorch 2.1 o versioni successive. Per configurare una VM TPU con TPU v5e, specifica i seguenti campi in WorkerPoolSpec:

  • Imposta machineSpec.machineType su ct5lp-hightpu-1t, ct5lp-hightpu-4t o ct5lp-hightpu-8t.
  • Imposta machineSpec.tpuTopology su una topologia supportata per il tipo di macchina. Per maggiori dettagli consulta la tabella seguente.
  • Imposta replicaCount su 1.

La tabella seguente mostra i tipi di macchine e le topologie TPU v5e supportati per l'addestramento personalizzato:

Tipo di macchina Topologia Numero di chip TPU Numero di VM Caso d'uso consigliato
ct5lp-hightpu-1t 1x1 1 1 Formazione su piccola o media scala
ct5lp-hightpu-4t 2x2 4 1 Formazione su piccola/media scala
ct5lp-hightpu-8t 2x4 8 1 Formazione su piccola/media scala
ct5lp-hightpu-4t 2x4 8 2 Formazione su piccola/media scala
ct5lp-hightpu-4t 4x4 16 4 Addestramento su larga scala
ct5lp-hightpu-4t 4x8 32 8 Addestramento su larga scala
ct5lp-hightpu-4t 8x8 64 16 Addestramento su larga scala
ct5lp-hightpu-4t 8x16 128 32 Addestramento su larga scala
ct5lp-hightpu-4t 16x16 256 64 Addestramento su larga scala

I job di addestramento personalizzato eseguiti su VM TPU v5e sono ottimizzati per la velocità effettiva e la disponibilità. Per ulteriori informazioni, consulta Tipi di acceleratori di addestramento v5e.

Le macchine TPU v5e sono disponibili in us-west1 e us-west4 per l'addestramento personalizzato di Vertex AI. Per ulteriori informazioni su TPU v5e, consulta Addestramento per Cloud TPU v5e.

Confronto dei tipi di macchine:

Tipo di macchina ct5lp-hightpu-1t ct5lp-hightpu-4t ct5lp-hightpu-8t
Numero di chip v5e 1 4 8
Numero di vCPU 24 112 224
RAM (GB) 48 192 384
Numero di nodi NUMA 1 1 2
Probabilità di prerilascio Alta Medie Bassa

Esempio CustomJob che specifica una VM TPU

L'esempio seguente mostra come specificare una VM TPU quando crei un CustomJob:

gcloud

Per specificare una VM TPU utilizzando lo strumento gcloud CLI, devi utilizzare un file config.yaml. Seleziona una delle seguenti schede per visualizzare un esempio:

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

Quindi esegui un comando come il seguente:

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

Python

Prima di provare questo esempio, segui le istruzioni di configurazione Python riportate nella guida rapida all'utilizzo delle librerie client di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Python di Vertex AI.

Per autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

Per specificare una VM TPU utilizzando l'SDK Vertex AI per Python, consulta il seguente esempio:

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')

Per ulteriori informazioni sulla creazione di un job di addestramento personalizzato, consulta Creare job di addestramento personalizzati.

Opzioni del disco di avvio

Se vuoi, puoi personalizzare i dischi di avvio per le VM di addestramento. Tutte le VM in un pool di worker utilizzano lo stesso tipo e le stesse dimensioni del disco di avvio.

  • Per personalizzare il tipo di disco di avvio utilizzato da ogni VM di addestramento, specifica il campo diskSpec.bootDiskType in WorkerPoolSpec.

    Puoi impostare questo campo su pd-standard per utilizzare un disco permanente standard basato su un disco rigido standard oppure su pd-ssd per utilizzare un disco permanente SSD basato su un'unità a stato solido. Il valore predefinito è pd-ssd.

    L'utilizzo di pd-ssd potrebbe migliorare le prestazioni se il codice di addestramento legge e scrive sul disco. Scopri di più sui tipi di dischi.

  • Per personalizzare le dimensioni (in GB) del disco di avvio utilizzato da ogni VM di addestramento, specifica il diskSpec.bootDiskSizeGb campo in WorkerPoolSpec.

    Puoi impostare questo campo su un numero intero compreso tra 100 e 64.000, inclusi. Il valore predefinito è 100.

    Ti consigliamo di aumentare le dimensioni del disco di avvio se il codice di addestramento scrive molti dati temporanei sul disco. Tieni presente che tutti i dati scritti sul disco di avvio sono temporanei e non puoi recuperarli al termine dell'addestramento.

La modifica del tipo e delle dimensioni dei dischi di avvio influisce sui prezzi della formazione personalizzata.

I seguenti esempi mostrano dove puoi specificare le opzioni del disco di avvio quando crei un CustomJob:

Console

Nella console Google Cloud non puoi creare direttamente un CustomJob. Tuttavia, puoi creare un TrainingPipeline che crea un CustomJob. Quando crei un TrainingPipeline nella console Google Cloud, puoi specificare le opzioni del disco di avvio per ogni pool di worker nel passaggio Computing e prezzi, nell'elenco a discesa Tipo di disco e nel campo Dimensioni del disco (GB).

gcloud

Per specificare le opzioni del disco di avvio utilizzando lo strumento Google Cloud CLI, devi utilizzare un config.yaml file. Ad esempio:

config.yaml

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

Quindi, esegui un comando come il seguente:

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

Per maggiori informazioni, consulta la guida alla creazione di un CustomJob.

Passaggi successivi