Créer une instance qui utilise Cloud RDMA


Cette page explique comment créer des instances HPC avec des interfaces réseau compatibles avec RDMA. Pour savoir comment créer des instances A4 ou A3 Ultra optimisées pour les accélérateurs et utilisant RDMA, consultez Créer une instance optimisée pour l'IA avec A4 ou A3 Ultra.

Pour créer une instance de calcul qui utilise l'accès direct à la mémoire à distance (RDMA), vous devez configurer au moins deux interfaces réseau (NIC) lors de la création de l'instance. Une carte d'interface réseau doit être une carte IRDMA qui se rattache à un réseau VPC avec un profil de réseau RDMA, et l'autre carte d'interface réseau doit utiliser GVNIC.

Utilisez le tableau Comparaison des séries de machines pour déterminer les séries de machines compatibles avec les interfaces réseau RDMA.

Avant de commencer

  • Si ce n'est pas déjà fait, configurez l'authentification. L'authentification permet de valider votre identité pour accéder aux services et aux API Google Cloud . Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine en sélectionnant l'une des options suivantes :

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Installez la Google Cloud CLI. Une fois que la Google Cloud CLI est installée, initialisez-la en exécutant la commande suivante :

      gcloud init

      Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

    2. Set a default region and zone.

    REST

    Pour utiliser les exemples API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à la gcloud CLI.

      Installez la Google Cloud CLI. Une fois que la Google Cloud CLI est installée, initialisez-la en exécutant la commande suivante :

      gcloud init

      Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

    Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud .

Rôles requis

Pour obtenir les autorisations nécessaires pour créer une instance compatible avec la communication RDMA, demandez à votre administrateur de vous accorder le rôle IAM Administrateur d'instances Compute (v1) (roles/compute.instanceAdmin.v1) sur le projet. Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Ce rôle prédéfini contient les autorisations requises pour créer une instance compatible avec la communication RDMA. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Les autorisations suivantes sont requises pour créer une instance compatible avec la communication RDMA :

  • compute.instances.create sur le projet
  • Pour créer la VM à l'aide d'une image personnalisée : compute.images.useReadOnly sur l'image
  • Pour créer la VM à l'aide d'un instantané : compute.snapshots.useReadOnly sur l'instantané
  • Pour créer la VM à l'aide d'un modèle d'instance : compute.instanceTemplates.useReadOnly sur le modèle d'instance
  • Pour spécifier un sous-réseau pour la VM : compute.subnetworks.use sur le projet ou sur le sous-réseau choisi
  • Pour spécifier une adresse IP statique pour la VM : compute.addresses.use sur le projet
  • Pour attribuer une adresse IP externe à la VM, en cas d'utilisation d'un réseau VPC : compute.subnetworks.useExternalIp sur le projet ou sur le sous-réseau choisi
  • Pour définir les métadonnées d'instance de VM pour la VM : compute.instances.setMetadata sur le projet
  • Pour définir des tags pour la VM : compute.instances.setTags sur la VM
  • Pour définir des libellés pour la VM : compute.instances.setLabels sur la VM
  • Pour définir un compte de service à utiliser avec la VM : compute.instances.setServiceAccount sur la VM
  • Pour créer un disque pour la VM : compute.disks.create sur le projet
  • Pour associer un disque existant en mode lecture seule ou en mode lecture-écriture : compute.disks.use sur le disque
  • Pour associer un disque existant en mode lecture seule : compute.disks.useReadOnly sur le disque

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

Conditions requises

Consultez les règles suivantes pour configurer une interface réseau pour une instance :

  • Chaque interface réseau doit se connecter à un réseau cloud privé virtuel différent.
  • Pour configurer une interface réseau IRDMA, vous devez d'abord créer un réseau VPC avec le profil réseau Falcon RDMA dans la même région et zone que l'instance.
  • Si vous ne spécifiez pas de réseau ni de sous-réseau, Compute Engine utilise le réseau VPC par défaut et le sous-réseau automatique situé dans la même région que l'instance.
  • Si vous spécifiez un sous-réseau, mais pas de réseau, Compute Engine déduit le réseau à partir du sous-réseau spécifié.
  • Si vous spécifiez un réseau, vous devez spécifier un sous-réseau et il doit appartenir au même réseau. Sinon, la création de l'instance échoue.

Limites

  • La mise en réseau Tier_1 pour la communication par adresse IP interne n'est compatible qu'avec les VM exécutant le pilote de réseau virtuel gVNIC.
  • Vous ne pouvez pas utiliser la migration à chaud avec des VM qui utilisent RDMA. Vous devez configurer l'instance pour qu'elle s'arrête lors des événements de maintenance.
  • Vous ne pouvez pas utiliser RDMA avec des groupes d'instances gérés (MIG) (gérés ou non gérés).
  • Vous ne pouvez utiliser que les types de pile réseau IPv4_ONLY avec une instance compatible RDMA.
  • Vous ne pouvez utiliser que la série de machines H4D pour créer une instance qui utilise Cloud RDMA.

Créer une instance compatible avec Cloud RDMA

Les instances compatibles avec Cloud RDMA nécessitent au moins deux interfaces réseau (NIC) :

  • Type de carte d'interface réseau GVNIC : utilise le pilote gve pour le trafic TCP/IP et Internet pour la communication normale entre VM et entre VM et Internet
  • Type de carte réseau IRDMA : utilise les pilotes IDPF/iRDMA pour la communication basée sur RDMA entre les instances

Une instance ne peut avoir qu'une seule interface IRDMA. Chaque instance peut comporter entre une et 10 interfaces réseau.

Pour créer une instance qui utilise IRDMA, suivez les étapes décrites dans les sections suivantes :

  1. Créez une stratégie d'emplacement si vous n'en avez pas déjà une qui vous convient.

  2. Créez un réseau VPC ou utilisez un réseau VPC existant compatible avec RDMA.

  3. Créez une instance compatible RDMA, qui dispose d'une interface réseau IRDMA, d'au moins une interface réseau GVNIC et qui utilise une stratégie d'emplacement compact.

Créer une règle d'emplacement pour les instances RDMA

Les instances qui communiquent à l'aide de RDMA doivent se trouver dans une seule zone et, plus précisément, dans un seul cluster. Vous pouvez créer une stratégie d'emplacement compact et spécifier une valeur de distance maximale pour définir la compacité minimale dans une zone. Lorsque vous spécifiez une valeur maximale de distance, le nombre d'instances auxquelles vous pouvez attribuer la stratégie de placement compact est limité. Cette limite varie en fonction de la valeur que vous choisissez.

  • Pour créer une stratégie de concentration à utiliser avec vos instances RDMA, suivez les étapes décrites dans Créer une stratégie de concentration et spécifiez une valeur de distance maximale de 3 ou moins.

Créer des réseaux de cloud privé virtuel

Pour configurer les réseaux, vous pouvez suivre les instructions de la documentation ou utiliser le script fourni.

Guides d'instructions

Pour créer les réseaux, vous pouvez suivre les instructions suivantes :

Script

Pour créer les réseaux, vous pouvez utiliser le script suivant.

  1. (Facultatif) Avant d'exécuter le script, listez les profils réseau RDMA pour vérifier qu'ils sont disponibles.

    gcloud beta compute network-profiles list
    
  2. Copiez le code suivant et exécutez-le dans une fenêtre de shell Linux.

#!/bin/bash

# Create standard VPC (network and subnet) for the GVNIC interface
  gcloud beta compute networks create GVNIC_NAME_PREFIX-net-0 \
    --subnet-mode=custom

  gcloud beta compute networks subnets create GVNIC_NAME_PREFIX-sub-0 \
    --network=GVNIC_NAME_PREFIX-net-0 \
    --region=REGION \
    --range=10.0.0.0/16

  gcloud beta compute firewall-rules create GVNIC_NAME_PREFIX-internal-0 \
    --network=GVNIC_NAME_PREFIX-net-0 \
    --action=ALLOW \
    --rules=tcp:0-65535,udp:0-65535,icmp \
    --source-ranges=10.0.0.0/8

# Create SSH firewall rules
gcloud beta compute firewall-rules create GVNIC_NAME_PREFIX-ssh \
  --network=GVNIC_NAME_PREFIX-net-0 \
  --action=ALLOW \
  --rules=tcp:22 \
  --source-ranges=IP_RANGE

# Optional: Create an external IP for only the GVNIC interface
gcloud beta compute firewall-rules create GVNIC_NAME_PREFIX-allow-ping-net-0 \
  --network=GVNIC_NAME_PREFIX-net-0 \
  --action=ALLOW \
  --rules=icmp \
  --source-ranges=IP_RANGE

# Create network for RDMA over Falcon transport
gcloud beta compute networks create RDMA_NAME_PREFIX-irdma \
  --network-profile=ZONE-vpc-falcon \
  --subnet-mode custom

# Create subnet for RDMA
gcloud beta compute networks subnets create RDMA_NAME_PREFIX-irdma-sub \
    --network=RDMA_NAME_PREFIX-irdma \
    --region=REGION \
    --range=10.1.0.0/16  # offset to avoid overlap with GVNIC network

Remplacez les éléments suivants :

  • GVNIC_NAME_PREFIX : préfixe de nom à utiliser pour le réseau et le sous-réseau standards du cloud privé virtuel qui utilisent un type de carte d'interface réseau gVNIC.
  • RDMA_NAME_PREFIX : préfixe de nom à utiliser pour le réseau et le sous-réseau du cloud privé virtuel qui utilisent le type de carte réseau IRDMA.
  • ZONE : zone dans laquelle vous souhaitez créer les réseaux et les instances de calcul. Utilisez us-central1-a ou europe-west4-b.
  • REGION : région dans laquelle vous souhaitez créer les réseaux. Il doit correspondre à la zone spécifiée. Par exemple, si votre zone est europe-west4-b, votre région est europe-west4.
  • IP_RANGE : plage d'adresses IP en dehors du réseau VPC à utiliser pour les règles de pare-feu SSH. Il est recommandé de spécifier les plages d'adresses IP spécifiques à partir desquelles vous devez autoriser l'accès, plutôt que toutes les sources IPv4 ou IPv6. N'utilisez pas 0.0.0.0/0 ni ::/0 comme plage source, car cela autorise le trafic provenant de toutes les sources IPv4 ou IPv6, y compris celles en dehors deGoogle Cloud.

Créer une instance compatible avec RDMA

Les étapes suivantes montrent comment créer une instance avec la première interface réseau configurée en tant qu'interface gVNIC et la deuxième interface réseau configurée en tant qu'interface réseau IRDMA :

Console

  1. Dans la console Google Cloud , accédez à la page Créer une instance.

    Accéder à la page Créer une instance

    Si vous y êtes invité(e), sélectionnez votre projet et cliquez sur Continuer.

    La page Créer une instance s'affiche et le volet Configuration de la machine s'ouvre.

  2. Dans le volet Configuration de la machine, procédez comme suit :

    1. Dans le champ Nom, spécifiez un nom pour votre instance. Pour en savoir plus, consultez Recommandation pour l'attribution de noms aux ressources.
    2. Facultatif : Dans le champ Zone, sélectionnez une zone pour cette instance.

      Choisissez la zone que vous avez utilisée pour configurer le profil réseau RDMA.

    3. Choisissez la famille de machines Optimisées pour le calcul.

    4. Dans la colonne Série, sélectionnez la série de machines H4D.

    5. Dans la section Type de machine, sélectionnez le type de machine pour votre instance.

  3. Dans le menu de navigation de gauche, cliquez sur OS et stockage. Dans le volet Système d'exploitation et stockage qui s'affiche, procédez comme suit :

    1. En bas de la section Système d'exploitation et stockage, cliquez sur Modifier.
    2. Dans les listes Système d'exploitation et Version, sélectionnez un type et une version d'OS compatibles avec RDMA.
    3. Assurez-vous que le Type de disque de démarrage est défini sur "Hyperdisk Balanced".
    4. Cliquez sur Sélectionner en bas du volet pour enregistrer les modifications.
  4. Dans le menu de navigation de gauche, cliquez sur Mise en réseau. Dans le volet Mise en réseau qui s'affiche, procédez comme suit :

    1. Accédez à la section Interfaces réseau. Une interface réseau, intitulée default, doit déjà être présente.
    2. Cliquez sur Ajouter une interface réseau. Dans la section Nouvelle interface réseau qui s'affiche, procédez comme suit :
      1. Dans la liste Carte d'interface réseau, sélectionnez IRDMA.
      2. Dans le champ Réseau, sélectionnez le réseau VPC avec un profil réseau RDMA.
      3. Facultatif : Dans la liste Sous-réseau, sélectionnez le sous-réseau que l'instance doit utiliser.
      4. Dans le champ Type de pile IP, assurez-vous qu'il est défini sur IPv4 uniquement.
      5. Dans la liste Adresse IPv4 externe, sélectionnez Aucune.
      6. Pour confirmer les détails de l'interface réseau, cliquez sur OK.
  5. Facultatif : Spécifiez d'autres options de configuration pour l'instance. Pour en savoir plus, consultez Options de configuration lors de la création d'une instance.

  6. Pour créer et démarrer l'instance, cliquez sur Créer.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Utilisez la commande gcloud compute instances create avec au moins deux options --network-interface, une pour l'interface GVNIC et une pour l'interface IRDMA. Vous pouvez personnaliser le reste des options de commande, si nécessaire.

    gcloud compute instances create INSTANCE_NAME \
        --zone=ZONE \
        --machine-type=MACHINE_TYPE \
        --create-disk=boot=yes, \
            image=projects/IMAGE_PROJECT/global/images/IMAGE, \
            size=SIZE \
        --maintenance-policy=TERMINATE \
        --network-interface \
            nic-type=GVNIC, \
            network=NETWORK_NAME,subnet=SUBNET_NAME, \
            stack-type=STACK_TYPE, \
            private-network-ip=INTERNAL_IPV4_ADDRESS, \
            address=EXTERNAL_IPV4_ADDRESS \
        --network-interface \
            nic-type=IRDMA, \
            network=RDMA_NETWORK_NAME,subnet=RDMA_SUBNET_NAME, \
            stack-type=IPV4_ONLY, \
            no-address \
    

    Remplacez les éléments suivants :

    • INSTANCE_NAME : nom de l'instance de calcul
    • ZONE : zone dans laquelle l'instance est créée, par exemple europe-west1-b. La région de l'instance est déduite de la zone.
    • MACHINE_TYPE : (facultatif) type de machine à utiliser pour l'instance.
    • IMAGE_PROJECT : projet d'image contenant l'image (facultatif). Pendant la période de preview, utilisez une image personnalisée ou l'image de VM HPC.
    • IMAGE (facultatif) : spécifiez l'une des options suivantes :
      • Version spécifique de l'image de l'OS. Exemple : hpc-rocky-linux-8-v20250721
      • Une famille d'images, qui doit être au format family/IMAGE_FAMILY. Cette action crée l'instance à partir de l'image d'OS la plus récente et non obsolète. Par exemple, si vous spécifiez family/hpc-rocky-linux-8, Compute Engine crée une instance à l'aide de la dernière version de l'image de l'OS dans la famille d'images HPC Rocky Linux 8. Pour en savoir plus sur l'utilisation des familles d'images, consultez la page Bonnes pratiques concernant les familles d'images.
    • SIZE (facultatif) : taille du nouveau disque. Cette valeur doit être un nombre entier. L'unité de mesure par défaut est le gibioctet.
    • NETWORK_NAME : nom du réseau (facultatif)
    • SUBNET_NAME : nom du sous-réseau à utiliser pour l'interface réseau. Pour afficher la liste des sous-réseaux du réseau, utilisez la commande gcloud compute networks subnets list.

      Pour l'interface réseau gVNIC, vous pouvez omettre les indicateurs network et subnet, et utiliser le réseau default à la place.

    • STACK_TYPE : (facultatif) type de pile pour l'interface réseau GVNIC. STACK_TYPE doit être défini sur l'une des valeurs suivantes : IPV4_ONLY, IPV4_IPV6 ou IPV6_ONLY. La valeur par défaut est IPV4_ONLY.

    • INTERNAL_IPV4_ADDRESS : facultatif : adresse IPv4 interne que vous souhaitez que l'instance de calcul utilise dans le sous-réseau cible. Omettez cette option si vous n'avez pas besoin d'une adresse IP spécifique.

      Pour spécifier une adresse IPv6 interne, utilisez plutôt l'option --internal-ipv6-address.

    • EXTERNAL_IPV4_ADDRESS : facultatif : adresse IPv4 externe statique à utiliser avec l'interface réseau. Vous devez avoir réservé une adresse IPv4 externe auparavant. Effectuez l'une des opérations suivantes :

      • Spécifiez une adresse IPv4 valide du sous-réseau.
      • Utilisez plutôt l'indicateur no-address si vous ne souhaitez pas que l'interface réseau ait une adresse IP externe.
      • Spécifiez address='' si vous souhaitez que l'interface reçoive une adresse IP externe éphémère.

      Pour spécifier une adresse IPv6 externe, utilisez plutôt l'option --external-ipv6-address.

    • RDMA_NETWORK_NAME : nom du réseau que vous avez créé avec un profil réseau RDMA.

    • RDMA_SUBNET_NAME : nom d'un sous-réseau dans le réseau RDMA.

REST

Pour créer une instance configurée pour utiliser RDMA, envoyez une requête POST à la méthode instances.insert. Incluez l'objet networkInterfaces avec au moins deux configurations réseau, une pour l'interface gVNIC et une pour l'interface IRDMA. Vous pouvez personnaliser le reste des propriétés de l'instance, si nécessaire.

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

  • PROJECT_ID : ID du projet dans lequel créer l'instance
  • ZONE est la zone dans laquelle créer l'instance.
  • MACHINE_TYPE : type de machine à utiliser, par exemple h4d-highmem-192-lssd
  • INSTANCE_NAME : nom de la nouvelle instance
  • IMAGE_PROJECT : projet d'image contenant l'image (facultatif).
  • IMAGE : facultatif, spécifiez l'une des options suivantes :

    • Version spécifique de l'image de l'OS. Exemple : debian-12-bookworm-v20250415
    • Une famille d'images, qui doit être au format family/IMAGE_FAMILY. Cette action crée l'instance à partir de l'image d'OS la plus récente et non obsolète. Par exemple, si vous spécifiez family/debian-12, Compute Engine crée une instance à l'aide de la dernière version de l'image de l'OS dans la famille d'images Debian 12. Pour en savoir plus sur l'utilisation des familles d'images, consultez Bonnes pratiques concernant les familles d'images.
  • NETWORK_NAME : nom facultatif du réseau à utiliser avec l'interface réseau gVNIC
  • SUBNET_NAME : nom du sous-réseau à utiliser avec l'interface réseau gVNIC

    Pour l'interface réseau gVNIC, vous pouvez omettre les propriétés network et subnet et utiliser le réseau default à la place.

  • INTERNAL_IPV4_ADDRESS : Facultatif : adresse IPv4 interne que vous souhaitez que l'instance de calcul utilise dans le sous-réseau cible. Omettez cette option si vous n'avez pas besoin d'une adresse IP spécifique.
  • EXTERNAL_IPV4_ADDRESS : Facultatif : adresse IPv4 externe statique à utiliser avec l'interface réseau. Vous devez avoir réservé une adresse IPv4 externe auparavant.
  • RDMA_NETWORK_NAME : nom du réseau que vous avez créé avec un profil réseau RDMA
  • RDMA_SUBNET_NAME : nom d'un sous-réseau dans le réseau RDMA

Méthode HTTP et URL :

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

Corps JSON de la requête :

{
    "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
    "name": "INSTANCE_NAME",
    "disks": [
      {
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        },
        "boot": true
      }
    ],
    "networkInterfaces": [
      {
        "network": "NETWORK_NAME",
        "subnetwork": "SUBNET_NAME",
        "networkIP": "INTERNAL_IPV4_ADDRESS",
        "accessConfigs": [
          {
            "type": "ONE_TO_ONE_NAT",
            "name": "External IP",
            "natIP": "EXTERNAL_IPV4_ADDRESS"
          }
        ],
        "stackType": "IPV4_ONLY",
        "nicType": "GVNIC",
      },
      {
        "network": "RDMA_NETWORK_NAME",
        "subnetwork": "RDMA_SUBNET_NAME",
        "stackType": "IPV4_ONLY",
        "nicType": "IRDMA",
      }
    ]
}

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

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

{
  "kind": "compute#operation",
  "id": "9216044482154695709",
  "name": "operation-1739207409646-62dccc7d7bc58-d1350b42-64fdb7f7",
  "zone": "https://www.googleapis.com/compute/v1/projects/`PROJECT_ID`/zones/`ZONE`",
  "operationType": "insert",
  "targetLink": "https://www.googleapis.com/compute/v1/projects/`PROJECT_ID`/zones/`ZONE`/instances/`INSTANCE_NAME`",
  "targetId": "2679381553616227357",
  "status": "RUNNING",
  "user": "USER_ID",
  "progress": 0,
  "insertTime": "2025-02-10T09:10:10.551-08:00",
  "startTime": "2025-02-10T09:10:10.551-08:00",
  "selfLink": "https://www.googleapis.com/compute/v1/projects/`PROJECT_ID`/zones/`ZONE`/operations/operation-1565289606387-58f9f62f5989c-e582f586-6d22f38"
 "kind": "compute#operation"
}

Étape suivante