Rechenressourcen für benutzerdefiniertes Training konfigurieren

Wenn Sie ein benutzerdefiniertes Training durchführen, wird der Trainingscode auf einer oder mehreren VM-Instanzen ausgeführt. Sie können konfigurieren, welche VM-Typen für das Training verwendet werden sollen: Wenn Sie VMs mit mehr Rechenressourcen verwenden, kann das Training beschleunigt werden und Sie können mit größeren Datasets arbeiten. Dies kann jedoch auch höhere Trainingskosten verursachen.

In einigen Fällen können Sie GPUs auch verwenden, um das Training zu beschleunigen. Für GPUs fallen zusätzliche Kosten an.

Sie können auch den Typ und die Größe der Bootlaufwerke Ihrer Trainings-VMs anpassen.

In diesem Dokument werden die verschiedenen Rechenressourcen beschrieben, die Sie für das benutzerdefinierte Training verwenden können, und wie diese konfiguriert werden.

Hier geben Sie Rechenressourcen an

Geben Sie die Konfigurationsdetails in einem WorkerPoolSpec an. Je nachdem, wie Sie das benutzerdefinierte Training durchführen, platzieren Sie diese WorkerPoolSpec in einem der folgenden API-Felder:

Wenn Sie ein verteiltes Training machen, können Sie für jeden Worker-Pool unterschiedliche Einstellungen verwenden.

Maschinentypen

In WorkerPoolSpec müssen Sie einen der folgenden Maschinentypen im Feld machineSpec.machineType angeben. Jedes Replikat im Worker-Pool wird auf einer separaten VM mit dem angegebenen Maschinentyp ausgeführt.

  • 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*
  • a3-highgpu-8g*
  • 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*
  • c2-standard-60
  • c2-standard-60
  • c2-standard-60
  • c2-standard-60
  • 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*

* Maschinentypen mit Sternchen in der vorherigen Liste müssen mit bestimmten GPUs oder TPUs verwendet werden. Weitere Informationen finden Sie in den folgenden Abschnitten dieses Leitfadens.

Weitere Informationen zu den technischen Spezifikationen jedes Maschinentyps finden Sie in der Compute Engine-Dokumentation zu Maschinentypen. Weitere Informationen zu den Kosten für die Verwendung der einzelnen Maschinentypen finden Sie unter Preise.

In den folgenden Beispielen wird gezeigt, wo Sie beim Erstellen eines CustomJob einen Maschinentyp angeben:

Console

In der Google Cloud Console können Sie einen CustomJob nicht direkt erstellen. Sie können jedoch eine TrainingPipeline erstellen, die einen CustomJob erstellt. Wenn Sie eine TrainingPipeline in der Google Cloud Console erstellen, geben Sie einen Maschinentyp für jeden Worker-Pool im Schritt Computing und Preise im Feld Maschinentyp ein.

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

Bevor Sie dieses Beispiel anwenden, folgen Sie den Java Schritten zur Einrichtung in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Java API.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


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

Bevor Sie dieses Beispiel anwenden, folgen Sie den Node.js-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Node.js API.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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

Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Referenzdokumentation zur 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)

Weitere Informationen finden Sie im Leitfaden zum Erstellen von CustomJob.

GPUs

Wenn Sie Ihren Trainingscode zur Verwendung von GPUs geschrieben haben, können Sie Ihren Worker-Pool so konfigurieren, dass auf jeder VM eine oder mehrere GPUs verwendet werden. Für die Verwendung von GPUs müssen Sie den Maschinentyp A2, N1 oder G2 verwenden. Außerdem können kleinere Maschinentypen wie n1-highmem-2 mit GPUs dazu führen, dass das Logging bei einigen Arbeitslasten aufgrund von CPU-Einschränkungen fehlschlägt. Wenn Ihr Trainingsjob keine Logs mehr zurückgibt, sollten Sie einen größeren Maschinentyp auszuwählen.

Vertex AI unterstützt die folgenden GPU-Typen für benutzerdefiniertes Training:

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

Weitere Informationen zur technischen Spezifikation für jeden GPU-Typ finden Sie in der kurzen Dokumentation zu Compute Engine für GPUs. Weitere Informationen zu den Kosten für die Verwendung der einzelnen Maschinentypen für benutzerdefiniertes Training finden Sie unter Preise.

Geben Sie in Ihrem WorkerPoolSpec den GPU-Typ an, den Sie im Feld machineSpec.acceleratorType verwenden möchten, sowie die Anzahl der GPUs, die jede VM des Worker-Pools im Feld machineSpec.acceleratorCount verwenden soll. Ihre Auswahl für diese Felder muss jedoch die folgenden Einschränkungen erfüllen:

  • Der ausgewählte GPU-Typ muss an dem Ort verfügbar sein, an dem Sie benutzerdefiniertes Training durchführen. Nicht alle GPU-Typen sind in allen Regionen verfügbar. Weitere Informationen zur regionalen Verfügbarkeit.

  • Sie können in der Konfiguration nur eine bestimmte Anzahl von GPUs verwenden. Sie können beispielsweise 2 oder 4 NVIDIA_TESLA_T4-GPUs auf einer VM verwenden, aber nicht 3. Die für die einzelnen GPU-Typen gültigen acceleratorCount-Werte finden Sie in der unten stehenden Kompatibilitätstabelle.

  • Achten Sie darauf, dass Ihre GPU-Konfiguration für den verwendeten Maschinentyp ausreichend virtuelle CPUs und genügend Arbeitsspeicher bietet. Wenn Sie beispielsweise in Ihrem Worker-Pool den Maschinentyp n1-standard-32 verwenden, hat jede VM 32 virtuelle CPUs und 120 GB Arbeitsspeicher. Da jede NVIDIA_TESLA_V100-GPU bis zu 12 virtuelle CPUs und 76 GB Arbeitsspeicher bereitstellen kann, müssen Sie mindestens 4 GPUs für jede n1-standard-32-VM verwenden, um die Anforderungen zu erfüllen. (2 GPUs bieten nicht genügend Ressourcen und Sie können nicht 3 GPUs angeben.)

    Diese Anforderung wird in der unten stehenden Kompatibilitätstabelle beschrieben.

    Beachten Sie die folgende zusätzliche Einschränkung bei der Verwendung von GPUs für benutzerdefiniertes Training, die sich von der Verwendung von GPUs mit Compute Engine unterscheidet:

    • Eine Konfiguration mit 4 NVIDIA_TESLA_P100-GPUs bietet in allen Regionen und Zonen nur bis zu 64 virtuelle CPUs und bis zu 208 GB Arbeitsspeicher.

Die folgende Kompatibilitätstabelle enthält die gültigen Werte für machineSpec.acceleratorCount, abhängig von Ihren Auswahlmöglichkeiten für machineSpec.machineType und machineSpec.acceleratorType:

Std.
Gültige GPU-Anzahl für Maschinentypen
Maschinentyp 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-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

In den folgenden Beispielen wird gezeigt, wo Sie GPUs angeben können, wenn Sie einen CustomJob erstellen:

Console

In der Google Cloud Console können Sie einen CustomJob nicht direkt erstellen. Sie können jedoch ein TrainingPipeline erstellen, das eine CustomJob erstellt. Wenn Sie eine TrainingPipeline in der Google Cloud Console erstellen, können Sie im Schritt Computing und Preise GPUs für jeden Worker-Pool angeben. Geben Sie zuerst einen Maschinentyp an. Anschließend können Sie GPU-Details in den Feldern Beschleunigertyp und Beschleunigeranzahl angeben.

gcloud

Wenn Sie GPUs mit der Google Cloud CLI angeben möchten, müssen Sie eine config.yaml-Datei verwenden. Beispiel:

config.yaml

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

Führen Sie dann einen Befehl wie den folgenden aus:

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

Node.js

Bevor Sie dieses Beispiel anwenden, folgen Sie den Node.js Schritten zur Einrichtung in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Node.js API.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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

Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der Referenzdokumentation zur 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)

Weitere Informationen finden Sie im Leitfaden zum Erstellen von CustomJob.

TPUs

Wenn Sie Tensor Processing Units (TPUs) für das benutzerdefinierte Training in Vertex AI verwenden möchten, können Sie einen Worker-Pool für die Verwendung einer TPU-VM konfigurieren.

Wenn Sie eine TPU-VM in Vertex AI verwenden, dürfen Sie nur einen einzelnen Worker-Pool für benutzerdefiniertes Training verwenden. Dieser Worker-Pool muss so konfiguriert werden, dass nur ein Replikat verwendet wird.

TPU v2 und v3

Zur Verwendung von TPU v2- oder v3-VMs in Ihrem Worker-Pool müssen Sie eine der folgenden Konfigurationen verwenden:

  • Geben Sie zum Konfigurieren einer TPU-VM mit TPU v2 die folgenden Felder in WorkerPoolSpec an:

    • Setzen Sie machineSpec.machineType auf cloud-tpu.
    • Setzen Sie machineSpec.acceleratorType auf TPU_V2.
    • Legen Sie machineSpec.acceleratorCount für einzelne TPUs auf 8 oder für TPU-Pods auf 32 or multiple of 32 fest.
    • Setzen Sie replicaCount auf 1.
  • Geben Sie zum Konfigurieren einer TPU-VM mit TPU v3 die folgenden Felder in WorkerPoolSpec an:

    • Setzen Sie machineSpec.machineType auf cloud-tpu.
    • Setzen Sie machineSpec.acceleratorType auf TPU_V3.
    • Legen Sie machineSpec.acceleratorCount für einzelne TPUs auf 8 oder für TPU-Pods auf 32+ fest.
    • Setzen Sie replicaCount auf 1.

TPU v5e

TPU v5e erfordert JAX 0.4.6 oder höher, TensorFlow 2.15+ oder PyTorch 2.1+. Um eine TPU-VM mit TPU v5e zu konfigurieren, geben Sie die folgenden Felder in WorkerPoolSpec an:

  • Legen Sie machineSpec.machineType auf ct5lp-hightpu-1t, ct5lp-hightpu-4t oder ct5lp-hightpu-8t fest.
  • Legen Sie für machineSpec.tpuTopology eine unterstützte Topologie für den Maschinentyp fest. Weitere Informationen finden Sie in der folgenden Tabelle.
  • Setzen Sie replicaCount auf 1.

In der folgenden Tabelle sind die TPU v5e-Maschinentypen und -Topologien aufgeführt, die für benutzerdefiniertes Training unterstützt werden:

Maschinentyp Topologie Anzahl der TPU-Chips Anzahl der VMs Empfohlener Anwendungsfall
ct5lp-hightpu-1t 1x1 1 1 Kleines bis mittelgroßes Training
ct5lp-hightpu-4t 2x2 4 1 Kleines bis mittelgroßes Training
ct5lp-hightpu-8t 2x4 8 1 Kleines bis mittelgroßes Training
ct5lp-hightpu-4t 2x4 8 2 Kleines bis mittelgroßes Training
ct5lp-hightpu-4t 4x4 16 4 Umfangreiches Training
ct5lp-hightpu-4t 4x8 32 8 Umfangreiches Training
ct5lp-hightpu-4t 8x8 64 16 Umfangreiches Training
ct5lp-hightpu-4t 8x16 128 32 Umfangreiches Training
ct5lp-hightpu-4t 16x16 256 64 Umfangreiches Training

Benutzerdefinierte Trainingsjobs, die auf TPU v5e-VMs ausgeführt werden, sind für Durchsatz und Verfügbarkeit optimiert. Weitere Informationen finden Sie unter Beschleunigertypen für v5e Training.

TPU v5e-Maschinen sind in us-west1 und us-west4 für Vertex AI für ein benutzerdefiniertes Training verfügbar. Weitere Informationen zu TPU v5e finden Sie unter Cloud TPU v5e-Training.

Vergleich der Maschinentypen:

Maschinentyp ct5lp-hightpu-1t ct5lp-hightpu-4t ct5lp-hightpu-8t
Anzahl der v5e-Chips 1 4 8
Anzahl der vCPUs 24 112 224
RAM (GB) 48 192 384
Anzahl der NUMA-Knoten 1 1 2
Wahrscheinlichkeit eines vorzeitigen Beendens Hoch Mittel Niedrig

Beispiel für CustomJob zum Angeben einer TPU-VM

Das folgende Beispiel zeigt, wie Sie beim Erstellen eines CustomJob eine TPU-VM angeben:

gcloud

Wenn Sie eine TPU-VM mit dem gcloud CLI-Tool angeben möchten, müssen Sie eine config.yaml-Datei verwenden. Wählen Sie einen der folgenden Tabs aus, um ein Beispiel aufzurufen:

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

Führen Sie dann einen Befehl wie den folgenden aus:

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

Python

Bevor Sie dieses Beispiel anwenden, folgen Sie den Python Schritten zur Einrichtung in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Python API.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

Informationen zum Angeben einer TPU-VM mit dem Vertex AI SDK für Python finden Sie im folgenden Beispiel:

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

Weitere Informationen zum Erstellen eines benutzerdefinierten Trainingsjobs finden Sie unter Benutzerdefinierte Trainingsjobs erstellen.

Bootlaufwerksoptionen

Sie können die Bootlaufwerke für Ihre Trainings-VMs optional anpassen. Alle VMs in einem Worker-Pool verwenden den gleichen Typ und die gleiche Größe wie das Bootlaufwerk.

  • Geben Sie das Feld diskSpec.bootDiskType in Ihrem WorkerPoolSpec an, um den Typ des von jeder Trainings-VM verwendeten Bootlaufwerks anzupassen.

    Sie können dieses Feld auf pd-standard festlegen, um einen nichtflüchtigen Standardspeicher zu verwenden, der von einer Standardfestplatte gesichert wird, oder Sie setzen auf pd-ssd, um einen nichtflüchtigen SSD-Speicher durch ein SSD zu ersetzen. Der Standardwert ist pd-ssd.

    Die Verwendung von pd-ssd kann die Leistung verbessern, wenn Ihr Trainingscode Daten auf das Laufwerk liest und schreibt. Weitere Informationen zu Laufwerkstypen.

  • Passen Sie die Größe (in GB) des von jeder Trainings-VM verwendeten Bootlaufwerks an. Geben Sie den Parameter im Feld diskSpec.bootDiskSizeGb in Ihrem WorkerPoolSpec an.

    Für dieses Feld können Sie eine Ganzzahl zwischen 100 und 64.000 (einschließlich) angeben. Der Standardwert ist 100.

    Sie können die Größe des Bootlaufwerks erhöhen, wenn Ihr Trainingscode viele temporäre Daten auf das Laufwerk schreibt. Alle Daten, die Sie auf das Bootlaufwerk schreiben, sind temporär und können nach Abschluss des Trainings nicht mehr abgerufen werden.

Die Änderung des Typs und der Größe Ihrer Bootlaufwerke wirkt sich auf die benutzerdefinierten Trainingspreise aus.

Die folgenden Beispiele zeigen, wo Sie beim Erstellen eines CustomJob Optionen für Bootlaufwerke angeben können:

Console

In der Google Cloud Console können Sie einen CustomJob nicht direkt erstellen. Sie können jedoch ein TrainingPipeline erstellen, das eine CustomJob erstellt. Wenn Sie eine TrainingPipeline in der Google Cloud Console erstellen, können Sie Optionen für Bootlaufwerke für jeden Worker-Pool im Schritt Computing und Preise in der Drop-down-Liste Laufwerkstyp und im Feld Laufwerksgröße (GB) festlegen.

gcloud

Wenn Sie Bootlaufwerksoptionen mit der Google Cloud CLI angeben möchten, müssen Sie eine config.yaml-Datei verwenden. Beispiel:

config.yaml

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

Führen Sie dann einen Befehl wie den folgenden aus:

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

Weitere Informationen finden Sie im Leitfaden zum Erstellen von CustomJob.

Nächste Schritte