Créer une ressource persistante

Lorsque vous créez une ressource persistante, le service d'entraînement recherche d'abord les ressources du pool de ressources Compute Engine en fonction des spécifications que vous avez fournies, puis provisionne un cluster de longue durée. Cette page explique comment créer une ressource persistante pour exécuter vos tâches d'entraînement personnalisées à l'aide de la console Google Cloud, de Google Cloud CLI, du SDK Vertex AI pour Python et de l'API REST.

Rôles requis

Pour obtenir l'autorisation dont vous avez besoin pour créer une ressource persistante, demandez à votre administrateur de vous accorder le rôle IAM Administrateur Vertex AI (roles/aiplatform.admin) sur votre projet. Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Ce rôle prédéfini contient l'autorisation aiplatform.persistentResources.create, qui est requise pour créer une ressource persistante.

Vous pouvez également obtenir cette autorisation avec des rôles personnalisés ou d'autres rôles prédéfinis.

Créer une ressource persistante

Sélectionnez l'un des onglets suivants pour obtenir des instructions sur la création d'une ressource persistante.

Console

Pour créer une ressource persistante à l'aide de la console Google Cloud, procédez comme suit:

  1. Dans la console Google Cloud, accédez à la page Ressources persistantes.

    Accéder à la page Ressources persistantes

  2. Cliquez sur Créer un cluster.

  3. Configurez le cluster comme suit:

    • Nom: saisissez un nom pour le cluster.
    • Description: (facultatif) saisissez une description du cluster.
    • Région: sélectionnez la région dans laquelle vous souhaitez créer le cluster.
  4. Cliquez sur Continuer.

  5. Configurez les ressources de calcul pour le cluster comme suit:

    1. Cliquez sur Pool de nœuds de calcul 1.
    2. Sélectionnez l'onglet de la famille de machines que vous souhaitez utiliser et configurez le pool de nœuds de calcul comme suit:

      Usage général

      Les VM à usage général offrent le meilleur rapport performances-prix pour diverses charges de travail.

      • Série: sélectionnez une série de machines.
      • Type de machine: sélectionnez un type de machine.
      • Type de disque: sélectionnez Disque standard ou Disque SSD.
      • Taille de disque: saisissez la taille de disque souhaitée.
      • Nombre minimal d'instances dupliquées: saisissez le nombre minimal d'instances dupliquées que doit avoir le pool de nœuds de calcul.
      • Nombre maximal d'instances dupliquées: (facultatif) saisissez le nombre maximal d'instances dupliquées autorisées dans le pool de nœuds de calcul. Si spécifié, le pool de nœuds de calcul effectue un scaling automatique du nombre d'instances dupliquées jusqu'au nombre maximal configuré si nécessaire.

      Optimisé pour le calcul

      Les VM optimisées pour le calcul offrent les meilleures performances par cœur et sont optimisées pour les charges de travail exigeantes en calculs.

      • Série: sélectionnez une série de machines.
      • Type de machine: sélectionnez un type de machine.
      • Type de disque: sélectionnez Disque standard ou Disque SSD.
      • Taille de disque: saisissez la taille de disque souhaitée.
      • Nombre minimal d'instances dupliquées: saisissez le nombre minimal d'instances dupliquées que doit avoir le pool de nœuds de calcul.
      • Nombre maximal d'instances dupliquées: (facultatif) saisissez le nombre maximal d'instances dupliquées autorisées dans le pool de nœuds de calcul. Si spécifié, le pool de nœuds de calcul effectue un scaling automatique du nombre d'instances dupliquées jusqu'au nombre maximal configuré si nécessaire.

      Mémoire optimisée

      Les VM à mémoire optimisée sont idéales pour les charges de travail exigeantes en mémoire, offrant plus de mémoire par cœur que les autres familles de machines (jusqu'à 12 To).

      • Série: sélectionnez une série de machines.
      • Type de machine: sélectionnez un type de machine.
      • Type de disque: sélectionnez Disque standard ou Disque SSD.
      • Taille de disque: saisissez la taille de disque souhaitée.
      • Nombre minimal d'instances dupliquées: saisissez le nombre minimal d'instances dupliquées que doit avoir le pool de nœuds de calcul.
      • Nombre maximal d'instances dupliquées: (facultatif) saisissez le nombre maximal d'instances dupliquées autorisées dans le pool de nœuds de calcul. Si spécifié, le pool de nœuds de calcul effectue un scaling automatique du nombre d'instances dupliquées jusqu'au nombre maximal configuré si nécessaire.

      GPU

      Ces VM optimisées pour les accélérateurs sont idéales pour les charges de travail de calcul CUDA (Compute Unified Device Architecture) soumises à un traitement en parallèle massif, telles que le machine learning (ML) et le calcul hautes performances (HPC, High Performance Computing). Cette famille est la meilleure option pour les charges de travail qui nécessitent des GPU.

      • Type de GPU: sélectionnez le type de GPU que vous souhaitez utiliser.
      • Nombre de GPU: saisissez le nombre de GPU que vous souhaitez utiliser.
      • Série: sélectionnez une série de machines.
      • Type de machine: sélectionnez un type de machine.
      • Type de disque: sélectionnez Disque standard ou Disque SSD.
      • Taille de disque: saisissez la taille de disque souhaitée.
      • Nombre minimal d'instances dupliquées: saisissez le nombre minimal d'instances dupliquées que doit avoir le pool de nœuds de calcul.
      • Nombre maximal d'instances dupliquées: (facultatif) saisissez le nombre maximal d'instances dupliquées autorisées dans le pool de nœuds de calcul. Si spécifié, le pool de nœuds de calcul effectue un scaling automatique du nombre d'instances dupliquées jusqu'au nombre maximal configuré si nécessaire.
    3. Cliquez sur OK.

    4. (Facultatif) Pour ajouter d'autres pools de nœuds de calcul, cliquez sur Ajouter un pool de nœuds de calcul.

  6. Cliquez sur Créer.

gcloud

Une ressource persistante peut avoir un ou plusieurs pools de ressources. Pour créer plusieurs pools de ressources dans une ressource persistante, spécifiez plusieurs options --resource-pool-spec.

L'autoscaling peut être activé ou désactivé pour chaque pool de ressources. Pour activer l'autoscaling, spécifiez min_replica_count et max_replica_count.

Vous pouvez spécifier toutes les configurations de pool de ressources dans la ligne de commande ou utiliser l'option --config pour spécifier le chemin d'accès à un fichier YAML contenant les configurations.

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : ID du projet Google Cloud dans lequel vous souhaitez créer la ressource persistante.
  • LOCATION : région dans laquelle vous souhaitez créer la ressource persistante. Pour obtenir la liste des régions disponibles, consultez la section Disponibilité des fonctionnalités.
  • PERSISTENT_RESOURCE_ID : ID de la ressource persistante.
  • DISPLAY_NAME : (facultatif) nom à afficher de la ressource persistante.
  • MACHINE_TYPE : type de VM à utiliser. Pour obtenir la liste des VM compatibles, consultez la section Types de machines. Ce champ correspond au champ machineSpec.machineType du message de l'API ResourcePool.
  • ACCELERATOR_TYPE : (facultatif) type de GPU à associer à chaque VM du pool de ressources. Pour obtenir la liste des GPU compatibles, consultez la section GPU. Ce champ correspond au champ machineSpec.acceleratorType du message de l'API ResourcePool.
  • ACCELERATOR_COUNT : (facultatif) nombre de GPU à associer à chaque VM du pool de ressources. La valeur par défaut est 1. Ce champ correspond au champ machineSpec.acceleratorCount du message de l'API ResourcePool.
  • REPLICA_COUNT : nombre d'instances répliquées à créer lors de la création de ce pool de ressources. Ce champ correspond au champ replicaCount du message de l'API ResourcePool. Ce champ est obligatoire si vous ne spécifiez pas MIN_REPLICA_COUNT et MAX_REPLICA_COUNT.
  • MIN_REPLICA_COUNT : (facultatif) nombre minimal d'instances répliquées jusqu'auquel l'autoscaling peut descendre pour ce pool de ressources. MIN_REPLICA_COUNT et MAX_REPLICA_COUNT sont tous deux requis pour activer l'autoscaling sur ce pool de ressources.
  • MAX_REPLICA_COUNT : (facultatif) nombre maximal d'instances répliquées jusqu'auquel l'autoscaling peut monter pour ce pool de ressources. MIN_REPLICA_COUNT et MAX_REPLICA_COUNT sont tous deux requis pour activer l'autoscaling sur ce pool de ressources.
  • BOOT_DISK_TYPE : (facultatif) type de disque à utiliser comme disque de démarrage de chaque VM du pool de ressources. Ce champ correspond au champ diskSpec.bootDiskType du message de l'API ResourcePool. Les valeurs acceptées sont les suivantes :
    • pd-standard (par défaut)
    • pd-ssd
  • BOOT_DISK_SIZE_GB : (facultatif) taille du disque en Gio pour le disque de démarrage de chaque VM du pool de ressources. Les valeurs acceptées sont comprises entre 100 (par défaut) et 64000. Ce champ correspond au champ diskSpec.bootDiskSizeGb du message de l'API ResourcePool.
  • CONFIG : chemin d'accès au fichier de configuration YAML de la ressource persistante. Ce fichier doit contenir une liste de ResourcePool. Si une option est spécifiée à la fois dans le fichier de configuration et dans les arguments de ligne de commande, les arguments de ligne de commande prévalent sur le fichier de configuration. Notez que les clés avec des traits de soulignement ne sont pas valides.

    Exemple de fichier de configuration YAML :

    resourcePoolSpecs:
      machineSpec:
        machineType: n1-standard-4
      replicaCount: 1
        

Exécutez la commande suivante :

Linux, macOS ou Cloud Shell

gcloud ai persistent-resources create \
    --persistent-resource-id=PERSISTENT_RESOURCE_ID \
    --display-name=DISPLAY_NAME \
    --project=PROJECT_ID \
    --region=LOCATION \
    --resource-pool-spec="replica-count=REPLICA_COUNT,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT,machine-type=MACHINE_TYPE,accelerator-type=ACCELERATOR_TYPE,accelerator-count=ACCELERATOR_COUNT,disk-type=BOOT_DISK_TYPE,disk-size=BOOT_DISK_SIZE_GB"

Windows (PowerShell)

gcloud ai persistent-resources create `
    --persistent-resource-id=PERSISTENT_RESOURCE_ID `
    --display-name=DISPLAY_NAME `
    --project=PROJECT_ID `
    --region=LOCATION `
    --resource-pool-spec="replica-count=REPLICA_COUNT,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT,machine-type=MACHINE_TYPE,accelerator-type=ACCELERATOR_TYPE,accelerator-count=ACCELERATOR_COUNT,disk-type=BOOT_DISK_TYPE,disk-size=BOOT_DISK_SIZE_GB"

Windows (cmd.exe)

gcloud ai persistent-resources create ^
    --persistent-resource-id=PERSISTENT_RESOURCE_ID ^
    --display-name=DISPLAY_NAME ^
    --project=PROJECT_ID ^
    --region=LOCATION ^
    --resource-pool-spec="replica-count=REPLICA_COUNT,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT,machine-type=MACHINE_TYPE,accelerator-type=ACCELERATOR_TYPE,accelerator-count=ACCELERATOR_COUNT,disk-type=BOOT_DISK_TYPE,disk-size=BOOT_DISK_SIZE_GB"

Vous devriez obtenir un résultat semblable à celui-ci :

Using endpoint [http://us-central1-aiplatform.googleapis.com/]
Operation to create PersistentResource [projects/123456789012/locations/us-central1/persistentResources/mypersistentresource/operations/1234567890123456789] is submitted successfully.

You may view the status of your PersistentResource create operation with the command

  $ gcloud ai operations describe projects/sample-project/locations/us-central1/operations/1234567890123456789

Exemple de commande gcloud :

gcloud ai persistent-resources create \
    --persistent-resource-id=my-persistent-resource \
    --region=us-central1 \
    --resource-pool-spec="min-replica-count=4,max-replica-count=12,machine-type=n1-highmem-2,accelerator-type=NVIDIA_TESLA_K80,accelerator-count=1,disk-type=pd-standard,disk-size=200" \
    --resource-pool-spec="replica-count=4,machine-type=n1-standard-4"

Configurations gcloud avancées

Si vous souhaitez spécifier des options de configuration qui ne sont pas disponibles dans les exemples précédents, vous pouvez utiliser l'indicateur --config pour spécifier le chemin d'accès à un fichier config.yaml de votre environnement local contenant les champs persistentResources. Par exemple :

gcloud ai persistent-resources create \
    --persistent-resource-id=PERSISTENT_RESOURCE_ID \
    --project=PROJECT_ID \
    --region=LOCATION \
    --config=CONFIG

Python

Avant d'essayer cet exemple, suivez les instructions de configuration pour Python décrites dans le guide de démarrage rapide de Vertex AI à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Python.

Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.

# Create the persistent resource. This method returns the created resource.
# Setting `sync` to `FALSE` makes the method is non-blocking and the resource
# object returned syncs when the method completes.
my_example_resource = persistent_resource.PersistentResource.create(
    persistent_resource_id=EXAMPLE_PERSISTENT_RESOURCE_ID,
    display_name=EXAMPLE_PERSISTENT_RESOURCE_NAME,
    resource_pools=[
        EXAMPLE_RESOURCE_POOL # EXAMPLE_AUTOSCALED_RESOURCE_POOL
    ],
    labels=EXAMPLE_LABELS,
    sync=SYNC,
)

if not SYNC:
    my_example_resource.wait()

REST

Une ressource persistante peut avoir un ou plusieurs pools de ressources (machine_spec), et l'autoscaling peut être activé ou désactivé pour chaque pool de ressources.

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

  • PROJECT_ID : ID du projet Google Cloud dans lequel vous souhaitez créer la ressource persistante.
  • LOCATION : région dans laquelle vous souhaitez créer la ressource persistante. Pour obtenir la liste des régions disponibles, consultez la section Disponibilité des fonctionnalités.
  • PERSISTENT_RESOURCE_ID : ID de la ressource persistante.
  • DISPLAY_NAME : (facultatif) nom à afficher de la ressource persistante.
  • MACHINE_TYPE : type de VM à utiliser. Pour obtenir la liste des VM compatibles, consultez la section Types de machines. Ce champ correspond au champ machineSpec.machineType du message de l'API ResourcePool.
  • ACCELERATOR_TYPE : (facultatif) type de GPU à associer à chaque VM du pool de ressources. Pour obtenir la liste des GPU compatibles, consultez la section GPU. Ce champ correspond au champ machineSpec.acceleratorType du message de l'API ResourcePool.
  • ACCELERATOR_COUNT : (facultatif) nombre de GPU à associer à chaque VM du pool de ressources. La valeur par défaut est 1. Ce champ correspond au champ machineSpec.acceleratorCount du message de l'API ResourcePool.
  • REPLICA_COUNT : nombre d'instances répliquées à créer lors de la création de ce pool de ressources. Ce champ correspond au champ replicaCount du message de l'API ResourcePool. Ce champ est obligatoire si vous ne spécifiez pas MIN_REPLICA_COUNT et MAX_REPLICA_COUNT.
  • MIN_REPLICA_COUNT : (facultatif) nombre minimal d'instances répliquées jusqu'auquel l'autoscaling peut descendre pour ce pool de ressources. MIN_REPLICA_COUNT et MAX_REPLICA_COUNT sont tous deux requis pour activer l'autoscaling sur ce pool de ressources.
  • MAX_REPLICA_COUNT : (facultatif) nombre maximal d'instances répliquées jusqu'auquel l'autoscaling peut monter pour ce pool de ressources. MIN_REPLICA_COUNT et MAX_REPLICA_COUNT sont tous deux requis pour activer l'autoscaling sur ce pool de ressources.
  • BOOT_DISK_TYPE : (facultatif) type de disque à utiliser comme disque de démarrage de chaque VM du pool de ressources. Ce champ correspond au champ diskSpec.bootDiskType du message de l'API ResourcePool. Les valeurs acceptées sont les suivantes :
    • pd-standard (par défaut)
    • pd-ssd
  • BOOT_DISK_SIZE_GB : (facultatif) taille du disque en Gio pour le disque de démarrage de chaque VM du pool de ressources. Les valeurs acceptées sont comprises entre 100 (par défaut) et 64000. Ce champ correspond au champ diskSpec.bootDiskSizeGb du message de l'API ResourcePool.

Méthode HTTP et URL :

POST http://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/persistentResources?persistent_resource_id=PERSISTENT_RESOURCE_ID

Corps JSON de la requête :

{
  "display_name": "DISPLAY_NAME",
  "resource_pools": [
    {
      "machine_spec": {
        "machine_type": "MACHINE_TYPE",
        "accelerator_type": "ACCELERATOR_TYPE",
        "accelerator_count": ACCELERATOR_COUNT
      },
      "replica_count": REPLICA_COUNT,
      "autoscaling_spec": {
        "min_replica_count": MIN_REPLICA_COUNT,
        "max_replica_count": MAX_REPLICA_COUNT
      },
      "disk_spec": {
        "boot_disk_type": "BOOT_DISK_TYPE",
        "boot_disk_size_gb": BOOT_DISK_SIZE_GB
      }
    }
  ]
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

{
  "name": "projects/123456789012/locations/us-central1/persistentResources/mypersistentresource/operations/1234567890123456789",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreatePersistentResourceOperationMetadata",
    "genericMetadata": {
      "createTime": "2023-02-08T21:17:15.009668Z",
      "updateTime": "2023-02-08T21:17:15.009668Z"
    }
  }
}

Rupture de ressources

Il peut y avoir des ruptures de ressources rares (comme les GPU A100), ce qui peut entraîner l'échec de la création de ressources persistantes lorsqu'aucune ressource n'est disponible dans la région spécifiée. Dans ce cas, vous pouvez essayer de réduire le nombre d'instances dupliquées, passer à un type d'accélérateur différent, réessayer pendant les heures creuses ou essayer une autre région.

Étapes suivantes