Utiliser les réservations avec l'entraînement

Pour vous assurer que des ressources de VM sont disponibles lorsque vos jobs d'entraînement personnalisés en ont besoin, vous pouvez utiliser des réservations Compute Engine. Les réservations offrent un niveau élevé d'assurance pour l'obtention de la capacité des ressources zonales Compute Engine. Pour en savoir plus, consultez la section Réservations de ressources zonales Compute Engine.

Présentation

Vos jobs d'entraînement et de prédiction personnalisés Vertex AI peuvent utiliser des réservations Compute Engine. Votre réservation doit spécifier un type de machine A2 ou A3. Si les ressources de ces réservations sont éligibles à des remises sur engagement d'utilisation, vous bénéficiez de ces remises lorsque vos VM consomment ces réservations. Consultez la section Remises sur engagement d'utilisation pour vos ressources réservées.

Limites et exigences

Tenez compte des limites et des exigences suivantes lorsque vous utilisez des réservations Compute Engine avec Vertex AI :

  • Vertex AI ne peut utiliser que les réservations avec les séries de machines suivantes :

    • A2
    • A3
  • L'utilisation de réservations Compute Engine avec Vertex AI n'est possible que pour l'entraînement et la prédiction personnalisés.
  • Assurez-vous que le quota disponible est suffisant pour vos jobs Vertex AI. Consultez la section Exigences supplémentaires relatives aux quotas pour les réservations partagées.
  • Pour permettre la mise à jour régulière de vos déploiements Vertex AI, nous vous recommandons d'augmenter le nombre de VM d'au moins une VM pour chaque déploiement simultané.
  • Assurez-vous que les contraintes de vos règles d'administration autorisent les réservations partagées. Consultez la section Autoriser et restreindre la création et la modification de réservations partagées pour des projets.
  • Pour utiliser la réservation, les propriétés de l'instance de VM de la réservation doivent correspondre exactement à celles de votre charge de travail Vertex AI. Par exemple, si une charge de travail Vertex AI utilise un type de machine a2-megagpu-16g, le type de machine de la réservation doit être identique. Consultez les conditions requises.
  • Les services et fonctionnalités suivants ne sont pas compatibles avec l'utilisation de réservations Compute Engine avec l'entraînement Vertex AI :

  • Votre job d'entraînement personnalisé doit utiliser un compte de service personnalisé. Consultez la section Utiliser un compte de service personnalisé.

Facturation

Lorsque vous utilisez des réservations Compute Engine, vous êtes facturé pour les éléments suivants :

Avant de commencer

Autoriser l'utilisation d'une réservation

Avant de consommer une réservation de VM A2 ou A3, vous devez définir sa règle de partage pour autoriser Vertex AI à consommer la réservation. Pour ce faire, utilisez l'une des méthodes suivantes :

Autoriser la consommation lors de la création d'une réservation

Lorsque vous créez une réservation à projet unique ou partagée de VM A2 ou A3, vous pouvez spécifier que Vertex AI peut utiliser la réservation comme suit :

  • Si vous utilisez la console Google Cloud, sélectionnez Partager la réservation dans la section Services Google Cloud.
  • Si vous utilisez Google Cloud CLI, incluez l'option --reservation-sharing-policy définie sur ALLOW_ALL.
  • Si vous utilisez l'API REST, incluez le champ serviceShareType défini sur ALLOW_ALL.

Autoriser la consommation dans une réservation existante

Pour autoriser Vertex AI à consommer une réservation existante de VM A2 ou A3, consultez la section Modifier la règle de partage d'une réservation.

Créer un job d'entraînement personnalisé avec une réservation

Vous pouvez créer un job d'entraînement personnalisé qui utilise une réservation Compute Engine à l'aide de l'API REST.

REST

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • LOCATION : région où le conteneur ou le package Python sera exécuté.
  • PROJECT_ID : l'ID de votre projet.
  • JOB_NAME : valeur obligatoire. nom à afficher pour CustomJob.
  • Définissez la tâche d'entraînement personnalisée :
    • MACHINE_TYPE : type de la machine. Consultez la section Types de machines disponibles pour l'entraînement.
    • RESERVATION_AFFINITY_TYPE : La valeur doit être ANY, SPECIFIC_RESERVATION ou NONE.

      • ANY signifie que les VM de votre customJob peuvent automatiquement utiliser toute réservation avec des propriétés correspondantes.
      • SPECIFIC_RESERVATION signifie que les VM de votre customJob ne peuvent consommer qu'une réservation que les VM ciblent spécifiquement par son nom.
      • NONE signifie que les VM de votre customJob ne peuvent utiliser aucune réservation. Spécifier NONE a le même effet que d'omettre une spécification d'affinité de réservation.
    • RESERVATION_NAME : nom de votre réservation.
    • DISK_TYPE : facultatif. Type de disque de démarrage à utiliser pour la tâche (pd-standard par défaut) ou pd-ssd. En savoir plus sur les types de disques
    • DISK_SIZE : facultatif. Taille en Go du disque de démarrage à utiliser pour la tâche. La valeur par défaut est 100.
    • REPLICA_COUNT : nombre d'instances dupliquées de nœuds de calcul à utiliser. Dans la plupart des cas, définissez cette valeur sur 1 pour votre premier pool de nœuds de calcul.
    • Si votre application d'entraînement s'exécute dans un conteneur personnalisé, spécifiez les éléments suivants :
      • CUSTOM_CONTAINER_IMAGE_URI : URI d'une image de conteneur dans Artifact Registry ou Docker Hub à exécuter sur chaque instance répliquée de nœud de calcul.
      • CUSTOM_CONTAINER_COMMAND : facultatif. Commande à appeler au démarrage du conteneur. Cette commande ignore le point d'entrée par défaut du conteneur.
      • CUSTOM_CONTAINER_ARGS : facultatif. Arguments à transmettre lors du démarrage du conteneur.
    • Si votre application d'entraînement est un package Python qui s'exécute dans un conteneur prédéfini, spécifiez les éléments suivants :
      • EXECUTOR_IMAGE_URI : URI de l'image de conteneur qui exécute le code fourni. Pour en savoir plus, consultez la liste des conteneurs prédéfinis disponibles pour l'entraînement.
      • PYTHON_PACKAGE_URIS : liste d'URI Cloud Storage séparés par une virgule spécifiant les fichiers de package Python correspondant au programme d'entraînement et ses packages dépendants. Le nombre maximal d'URI de package est de 100.
      • PYTHON_MODULE : nom du module Python à exécuter après l'installation des packages.
      • PYTHON_PACKAGE_ARGS : facultatif. Arguments de ligne de commande à transmettre au module Python.
    • TIMEOUT : facultatif. Durée d'exécution maximale pour la tâche.
  • Spécifiez les éléments LABEL_NAME et LABEL_VALUE pour tous les libellés que vous souhaitez appliquer à cette tâche personnalisée.

Méthode HTTP et URL :

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/customJobs

Corps JSON de la requête :

{
  "displayName": "JOB_NAME",
  "jobSpec": {
    "workerPoolSpecs": [
      {
        "machineSpec": {
          "machineType": "MACHINE_TYPE",
          "reservationAffinity": {
            "reservationAffinityType": "RESERVATION_AFFINITY_TYPE",
            "key": "compute.googleapis.com/reservation-name",
            "values": [
              "projects/PROJECT_ID/reservations/RESERVATION_NAME"
            ]
          }
        },
        "replicaCount": REPLICA_COUNT,
        "diskSpec": {
          "bootDiskType": DISK_TYPE,
          "bootDiskSizeGb": DISK_SIZE
        },

        // Union field task can be only one of the following:
        "containerSpec": {
          "imageUri": CUSTOM_CONTAINER_IMAGE_URI,
          "command": [
            CUSTOM_CONTAINER_COMMAND
          ],
          "args": [
            CUSTOM_CONTAINER_ARGS
          ]
        },
        "pythonPackageSpec": {
          "executorImageUri": EXECUTOR_IMAGE_URI,
          "packageUris": [
            PYTHON_PACKAGE_URIS
          ],
          "pythonModule": PYTHON_MODULE,
          "args": [
            PYTHON_PACKAGE_ARGS
          ]
        }
        // End of list of possible types for union field task.
      }
      // Specify one workerPoolSpec for single replica training, or multiple workerPoolSpecs
      // for distributed training.
    ],
    "scheduling": {
      "timeout": TIMEOUT
    }
  },
  "labels": {
    LABEL_NAME_1": LABEL_VALUE_1,
    LABEL_NAME_2": LABEL_VALUE_2
  }
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/customJobs"

PowerShell

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/customJobs" | Select-Object -Expand Content

La réponse contient des informations sur les spécifications, ainsi que sur TRAININGPIPELINE_ID.

Étape suivante