Crear una VM de inicio flexible

En este documento se explica cómo crear una instancia de máquina virtual (VM) de inicio flexible. Las VMs de inicio flexible se ejecutan durante un máximo de siete días y te ayudan a adquirir recursos de alta demanda, como GPUs, a un precio con descuento. Estas funciones convierten a las VMs de inicio flexible en una solución rentable para ejecutar cargas de trabajo de corta duración, como el ajuste de modelos y la inferencia por lotes.

Para obtener más información sobre las características principales de las VMs de inicio flexible, incluidos los requisitos y las limitaciones que se aplican al crearlas, consulta el artículo Acerca de las VMs de inicio flexible.

Antes de empezar

  • En función del tipo de máquina que quieras usar, consulta uno de los siguientes requisitos de configuración:

  • Si aún no lo has hecho, configura la autenticación. La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

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

    gcloud

    1. Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    2. Set a default region and zone.

    REST

    Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.

      Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .

Roles obligatorios

Para obtener los permisos que necesitas para crear VMs de inicio flexible, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Administrador de instancias de Compute (v. 1) (roles/compute.instanceAdmin.v1) en el proyecto. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene los permisos necesarios para crear máquinas virtuales de inicio flexible. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:

Permisos obligatorios

Para crear VMs de inicio flexible, se necesitan los siguientes permisos:

  • compute.instances.create del proyecto
  • Para usar una imagen personalizada para crear la VM, sigue estos pasos: compute.images.useReadOnly en la imagen
  • Para usar una captura para crear la VM, sigue estos pasos: compute.snapshots.useReadOnly en la captura
  • Para usar una plantilla de instancia para crear la VM, haz lo siguiente: compute.instanceTemplates.useReadOnly en la plantilla de instancia
  • Para especificar una subred para tu VM, haz lo siguiente: compute.subnetworks.use en el proyecto o en la subred elegida
  • Para especificar una dirección IP estática para la máquina virtual, haz lo siguiente: compute.addresses.use en el proyecto
  • Para asignar una dirección IP externa a la VM cuando se usa una red de VPC, sigue estos pasos: compute.subnetworks.useExternalIp en el proyecto o en la subred elegida
  • Para asignar una red antigua a la VM, sigue estos pasos: compute.networks.use en el proyecto
  • Para asignar una dirección IP externa a la VM cuando se usa una red antigua, haz lo siguiente: compute.networks.useExternalIp en el proyecto
  • Para definir los metadatos de la instancia de VM: compute.instances.setMetadata en el proyecto
  • Para definir etiquetas en la VM, haz lo siguiente: compute.instances.setTags en la VM
  • Para definir etiquetas en la VM, sigue estos pasos: compute.instances.setLabels en la VM
  • Para definir una cuenta de servicio que pueda usar la VM, sigue estos pasos: compute.instances.setServiceAccount en la VM
  • Para crear un disco para la VM, sigue estos pasos: compute.disks.create en el proyecto
  • Para adjuntar un disco en modo de solo lectura o de lectura y escritura, sigue estos pasos: compute.disks.use en el disco
  • Para adjuntar un disco en modo de solo lectura, sigue estos pasos: compute.disks.useReadOnly en el disco

También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.

Crear una VM de inicio flexible

Para crear una VM de inicio flexible, selecciona una de las siguientes opciones:

gcloud

Para crear una VM de inicio flexible, usa el comando gcloud compute instances create con las siguientes marcas:

  • Bandera de --request-valid-for-duration

  • Bandera de --provisioning-model=FLEX_START

  • Bandera de --instance-termination-action

  • Bandera de --max-run-duration

  • Bandera de --maintenance-policy=TERMINATE

  • Bandera de --reservation-affinity=none

Para crear una VM de inicio flexible, ejecuta el siguiente comando:

gcloud compute instances create VM_NAME \
    --machine-type=MACHINE_TYPE \
    --zone=ZONE \
    --request-valid-for-duration=VALID_FOR_DURATION \
    --provisioning-model=FLEX_START \
    --instance-termination-action=TERMINATION_ACTION \
    --max-run-duration=RUN_DURATION \
    --maintenance-policy=TERMINATE \
    --reservation-affinity=none

Haz los cambios siguientes:

  • VM_NAME: el nombre de la nueva VM.

  • MACHINE_TYPE: el tipo de máquina que se va a usar en la máquina virtual de inicio flexible. Si especificas un tipo de máquina G2 o N1, ten en cuenta lo siguiente:

    • En los tipos de máquinas G2, puedes especificar de forma opcional una estación de trabajo virtual NVIDIA RTX (vWS) para cargas de trabajo con muchos gráficos. Para ello, incluye la marca --accelerator en el comando de la siguiente manera:

      --accelerator=count=VWS_ACCELERATOR_COUNT,type=nvidia-l4-vws
      

      Sustituye VWS_ACCELERATOR_COUNT por el número de NVIDIA RTX vWS que necesite tu carga de trabajo.

    • En el caso de los tipos de máquinas N1, debes especificar el número y el tipo de GPUs que quieres conectar a tu VM. De lo contrario, no se podrá crear la VM. Para adjuntar GPUs a una VM N1, incluye la marca --accelerator en el comando de la siguiente manera:

      --accelerator=count=NUMBER_OF_ACCELERATORS,type=ACCELERATOR_TYPE
      

      Haz los cambios siguientes:

  • ZONE: la zona en la que quieres crear la VM. Para comprobar que el tipo de máquina que has especificado está disponible en la zona en la que quieres crear la VM, consulta Regiones y zonas disponibles.

  • VALID_FOR_DURATION: el tiempo máximo que se debe esperar para aprovisionar los recursos solicitados, con el formato de un número seguido de una unidad (s, m, h o d). Por ejemplo, el valor 30m define un tiempo de 30 minutos y el valor 1h2m3s define un tiempo de una hora, dos minutos y tres segundos. En función de los requisitos zonales de tu carga de trabajo, te recomendamos que especifiques una de las siguientes duraciones para aumentar las probabilidades de que se cree tu máquina virtual:

    • Si tu carga de trabajo requiere que crees la VM en una zona específica, indica una duración de entre 90 segundos (90s) y dos horas (2h). Cuanto mayor sea la duración, más probabilidades tendrás de obtener recursos.

    • Si la VM puede ejecutarse en cualquier zona de la región, especifica una duración de cero segundos (0s). Este valor indica que Compute Engine solo asigna recursos si están disponibles de inmediato. Si la solicitud de creación falla porque los recursos no están disponibles, vuelve a intentarlo en otra zona.

  • TERMINATION_ACTION: si se debe detener o eliminar la máquina virtual al final de su duración. Especifica uno de los siguientes valores:

    • Para detener la VM, haz lo siguiente: STOP

    • Para eliminar la máquina virtual, haz lo siguiente: DELETE

  • RUN_DURATION: tiempo máximo que se ejecuta la VM antes de que Compute Engine la elimine. Se debe indicar como un número seguido de una unidad (s, m, h o d). El valor debe estar entre 10 minutos y 7 días.

REST

Para crear una VM de inicio flexible, envía una solicitud POST al método instances.insert. En el cuerpo de la solicitud, incluye los siguientes campos:

  • El campo params.requestValidForDuration.

  • El campo scheduling.provisioningModel se ha definido como FLEX_START.

  • El campo scheduling.instanceTerminationAction.

  • El campo scheduling.maxRunDuration.

  • El campo scheduling.onHostMaintenance se ha definido como TERMINATE.

  • El valor de reservationAffinity.consumeReservationType es NO_RESERVATION.

Para crear una VM de inicio flexible, haz una solicitud POST de la siguiente manera:

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

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks": [
    {
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      },
      "boot": true
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ],
  "params": {
    "requestValidForDuration": {
      "seconds": VALID_FOR_DURATION
    }
  },
  "scheduling": {
    "provisioningModel": "FLEX_START",
    "instanceTerminationAction": "TERMINATION_ACTION",
    "maxRunDuration": {
      "seconds": RUN_DURATION
    },
    "onHostMaintenance": "TERMINATE"
  },
  "reservationAffinity": {
    "consumeReservationType": "NO_RESERVATION"
  }
}

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto en el que se va a crear la VM.

  • ZONE: la zona en la que quieres crear la VM. Para comprobar si un tipo de máquina está disponible en la zona en la que quieres crear la VM, consulta las regiones y zonas disponibles.

  • VM_NAME: el nombre de la nueva VM.

  • MACHINE_TYPE: el tipo de máquina que se va a usar en la máquina virtual de inicio flexible. Si especificas un tipo de máquina G2 o N1, ten en cuenta lo siguiente:

    • En los tipos de máquinas G2, puedes especificar de forma opcional una estación de trabajo virtual NVIDIA RTX (vWS) para cargas de trabajo con muchos gráficos. Para ello, incluye el campo guestAccelerators en el cuerpo de la solicitud de la siguiente manera:

      "guestAccelerators": [
        {
          "acceleratorCount": VWS_ACCELERATOR_COUNT,
          "acceleratorType": "projects/PROJECT_ID/zones/ZONE/acceleratorTypes/nvidia-l4-vws"
        }
      ]
      

      Sustituye VWS_ACCELERATOR_COUNT por el número de NVIDIA RTX vWS que necesite tu carga de trabajo.

    • En el caso de los tipos de máquinas N1, debes especificar el número y el tipo de GPUs que quieres conectar a tu VM. De lo contrario, no se podrá crear la VM. Para adjuntar GPUs a una VM N1, incluye el campo guestAccelerators en el cuerpo de la solicitud de la siguiente manera:

      "guestAccelerators": [
        {
          "acceleratorCount": ACCELERATOR_COUNT,
          "acceleratorType": "projects/PROJECT_ID/zones/ZONE/acceleratorTypes/ACCELERATOR_TYPE"
        }
      ]
      

      Haz los cambios siguientes:

  • IMAGE_PROJECT: el proyecto de imagen que contiene la imagen (por ejemplo, debian-cloud). Para obtener más información sobre los proyectos de imágenes admitidos, consulta Imágenes públicas.

  • IMAGE: especifica una de las siguientes opciones:

    • Una versión específica de la imagen del SO, por ejemplo, debian-12-bookworm-v20240617.

    • Una familia de imágenes, que debe tener el formato family/IMAGE_FAMILY. Este valor especifica que se debe usar la imagen del SO más reciente que no esté obsoleta. Por ejemplo, si especificas family/debian-12, se usará la versión más reciente de la familia de imágenes de Debian 12. Para obtener más información sobre cómo usar familias de imágenes, consulta Prácticas recomendadas para familias de imágenes.

  • VALID_FOR_DURATION: tiempo máximo en segundos que se debe esperar a que se aprovisione la VM. En función de los requisitos zonales de tu carga de trabajo, te recomendamos que especifiques una de las siguientes duraciones para aumentar las probabilidades de que tu solicitud de creación de VM se complete correctamente:

    • Si tu carga de trabajo requiere que crees la VM en una zona específica, indica una duración de entre 90 segundos (90) y dos horas (7200). Cuanto mayor sea la duración, más probabilidades tendrás de obtener recursos.

    • Si la VM puede ejecutarse en cualquier zona de la región, especifica una duración de cero segundos (0). Este valor indica que Compute Engine solo asigna recursos si están disponibles de inmediato. Si la solicitud de creación falla porque no hay recursos disponibles, vuelve a intentarlo en otra zona.

  • TERMINATION_ACTION: si se debe detener o eliminar la máquina virtual al final de su duración. Especifica uno de los siguientes valores:

    • Para detener la VM, haz lo siguiente: STOP

    • Para eliminar la máquina virtual, haz lo siguiente: DELETE

  • RUN_DURATION: tiempo máximo en segundos que se ejecuta la máquina virtual antes de que Compute Engine la elimine. Este valor debe estar entre 600 segundos (10 minutos) y 604.800 segundos (7 días).

Siguientes pasos

Pruébalo

Si es la primera vez que utilizas Google Cloud, crea una cuenta para evaluar el rendimiento de Compute Engine en situaciones reales. Los nuevos clientes también reciben 300 USD en crédito gratuito para ejecutar, probar y desplegar cargas de trabajo.

Probar Compute Engine gratis