Configura la red y el acceso a una instancia de TPU

En esta página, se describe cómo configurar redes personalizadas y parámetros de configuración de acceso para una instancia de TPU, lo que incluye el siguiente contenido:

  • Cómo especificar una red y una subred personalizadas
  • Cómo especificar direcciones IP internas y externas
  • Cómo habilitar el acceso SSH a las TPU
  • Cómo conectar una cuenta de servicio personalizada a tu TPU
  • Cómo habilitar métodos SSH personalizados
  • Cómo usar los Controles del servicio de VPC

Requisitos previos

Antes de ejecutar estos procedimientos, debes instalar Google Cloud CLI, crear un Google Cloud proyecto y habilitar la API de Compute Engine. Para obtener instrucciones, consulta Configura un Google Cloud proyecto para las TPU.

Especifica una red y una subred personalizadas

Cuando creas una instancia de VM de TPU o una plantilla de instancias, puedes especificar de forma opcional la red y la subred que se usarán para la TPU. Si no especificas una red, la TPU estará en la red default. La subred debe estar en la misma región que la zona en la que se ejecuta la TPU.

  1. Para crear una red y una subred, sigue las instrucciones para crear una red de VPC.

  2. Crea una VM de TPU y especifica la red y la subred personalizadas:

    Para especificar la red y la subred, incluye las marcas de red que se muestran en el siguiente ejemplo cuando ejecutas el gcloud compute instances create comando:

    gcloud compute instances create TPU_NAME \
        --machine-type=MACHINE_TYPE \
        --image-family=IMAGE_FAMILY \
        --image-project=IMAGE_PROJECT \
        --zone=ZONE \
        --maintenance-policy=TERMINATE \
        --network=NETWORK_NAME \
        --subnet=SUBNET_NAME \
        --stack-type=STACK_TYPE \
        --private-network-ip=INTERNAL_IPV4_ADDRESS \
        --address=EXTERNAL_IPV4_ADDRESS
    

    Reemplaza los marcadores de posición que se indican más abajo:

    • TPU_NAME: Un nombre para la VM de TPU.
    • MACHINE_TYPE: El tipo de máquina para la VM de TPU (por ejemplo, ct6e-standard-8t).
    • IMAGE_FAMILY: La familia de imágenes del SO para la VM de TPU. Si deseas instalar una versión específica del SO, usa la marca --image. Para obtener más información sobre las imágenes del SO, consulta Imágenes del SO.
    • IMAGE_PROJECT: El proyecto que contiene la imagen del SO. Para las imágenes de TPU, es ubuntu-os-accelerator-images.
    • ZONE: La zona para la VM de TPU (por ejemplo, us-central1-b).
    • NETWORK_NAME: Opcional: Nombre de la red. Si especificas una red, debes especificar una subred y esta debe pertenecer a la misma red. Si no especificas una red, Compute Engine infiere la red desde la subred especificada.
    • SUBNET_NAME: Nombre de la subred que se usará con la instancia.

      Para ver una lista de subredes en la red, usa el gcloud compute networks subnets list comando.

    • STACK_TYPE: Opcional: El tipo de pila de red para la interfaz de red. STACK_TYPE debe ser uno de los siguientes: IPV4_ONLY, IPV4_IPV6 o IPV6_ONLY (vista previa). El valor predeterminado es IPV4_ONLY.

    • INTERNAL_IPV4_ADDRESS: Opcional: La dirección IPv4 interna que deseas que use la instancia de procesamiento en la subred de destino. Omite esta marca si no necesitas una dirección IP específica.

      Para especificar una dirección IPv6 interna, usa la marca --internal-ipv6-address en su lugar.

    • EXTERNAL_IPV4_ADDRESS: Opcional: La dirección IPv4 externa estática que se usará con la interfaz de red. Reemplaza EXTERNAL_IPV4_ADDRESS por una de las siguientes opciones:

      • Una dirección IPv4 válida de la subred especificada. Debes haber reservado previamente una dirección IPv4 externa.
      • '' (una cadena vacía) para usar una dirección IP externa efímera.

      Si no deseas que la VM tenga una dirección IP externa, reemplaza la marca --address por la marca --no-address.

      Para especificar una dirección IPv6 externa, usa la marca --external-ipv6-address en su lugar.

Información sobre las direcciones IP internas y externas

Cuando creas instancias de VM de TPU, estas siempre tienen direcciones IP internas. Si creas tus instancias de TPU con gcloud CLI, las direcciones IP externas se generan de forma predeterminada. Si las creas a través de las APIs de REST de Compute Engine (compute.googleapis.com), no se asigna una dirección IP externa de forma predeterminada. Puedes cambiar el comportamiento predeterminado en ambos casos.

Estos son algunos motivos para restringir tus VMs de TPU para que solo usen direcciones IP internas:

  • Seguridad mejorada: Solo se puede acceder a las direcciones IP internas desde los recursos que se encuentran dentro de la misma red de VPC, lo que puede mejorar la seguridad, ya que limita el acceso externo a las VMs de TPU. Esto es especialmente importante cuando trabajas con datos sensibles o cuando deseas restringir el acceso a las VMs de TPU a usuarios o sistemas específicos dentro de tu red.
  • Ahorro de costos: Cuando usas direcciones IP internas, puedes evitar los costos asociados a las direcciones IP externas, que pueden ser significativos para una gran cantidad de VMs de TPU.
  • Mejora del rendimiento de la red: Las direcciones IP internas pueden generar un mejor rendimiento de la red, ya que el tráfico permanece dentro de la red de Google, lo que evita la sobrecarga del enrutamiento en el Internet público. Esto es relevante sobre todo para las cargas de trabajo de aprendizaje automático a gran escala que necesitan comunicación de alto ancho de banda entre las VMs de TPU.

Crea una instancia de VM de TPU sin una dirección IP externa

Si deseas crear una instancia de VM de TPU sin una dirección IP externa, usa la marca --no-address cuando ejecutes el gcloud compute instances create comando:

gcloud compute instances create TPU_NAME \
    --machine-type=MACHINE_TYPE \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT \
    --zone=ZONE \
    --maintenance-policy=TERMINATE \
    --network=NETWORK_NAME \
    --subnet=SUBNET_NAME \
    --stack-type=STACK_TYPE \
    --private-network-ip=INTERNAL_IPV4_ADDRESS \
    --no-address

Reemplaza los marcadores de posición que se indican más abajo:

  • TPU_NAME: Un nombre para la VM de TPU.
  • MACHINE_TYPE: El tipo de máquina para la VM de TPU (por ejemplo, ct6e-standard-8t).
  • IMAGE_FAMILY: La familia de imágenes del SO para la VM de TPU. Si deseas instalar una versión específica del SO, usa la marca --image. Para obtener más información sobre las imágenes del SO, consulta Imágenes del SO.
  • IMAGE_PROJECT: El proyecto que contiene la imagen de SO. Para las imágenes de TPU, es ubuntu-os-accelerator-images.
  • ZONE: La zona para la VM de TPU (por ejemplo, us-central1-b).
  • NETWORK_NAME: Opcional: Nombre de la red. Si especificas una red, debes especificar una subred y esta debe pertenecer a la misma red. Si no especificas una red, Compute Engine infiere la red desde la subred especificada.
  • SUBNET_NAME: Nombre de la subred que se usará con la instancia.

    Para ver una lista de subredes en la red, usa el gcloud compute networks subnets list comando.

  • STACK_TYPE: Opcional: El tipo de pila de red para la interfaz de red. STACK_TYPE debe ser uno de los siguientes: IPV4_ONLY, IPV4_IPV6 o IPV6_ONLY (vista previa). El valor predeterminado es IPV4_ONLY.

  • INTERNAL_IPV4_ADDRESS: Opcional: la dirección IPv4 interna que deseas que use la instancia de procesamiento en la subred de destino. Omite esta marca si no necesitas una dirección IP específica.

    Para especificar una dirección IPv6 interna, usa la marca --internal-ipv6-address en su lugar.

Crea una instancia de VM de TPU con una dirección IP externa

Cuando creas una instancia de VM de TPU con gcloud CLI, la instancia obtiene una dirección IP externa efímera de forma predeterminada.

Para crear una VM de TPU con una dirección IP externa cuando usas la API de REST, realiza una POST solicitud al instances.insert método e incluye el accessConfigs campo en el array networkInterfaces en el cuerpo de la solicitud. Si el cuerpo de la solicitud no especifica el campo accessConfigs, la instancia no tendrá acceso externo a Internet.

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

{
    "machineType":"zones/ZONE/machineTypes/MACHINE_TYPE",
    "name":"TPU_NAME",
    "disks":[
        {
            "initializeParams":{
                "sourceImage":"projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
            },
            "boot":true
        }
    ],
    "networkInterfaces":[
        {
            "network":"global/networks/NETWORK_NAME",
            "subnetwork":"regions/REGION/subnetworks/SUBNET_NAME",
            "stackType":"STACK_TYPE",
            "accessConfigs":[
                {
                    "name": "external-nat",
                    "type": "ONE_TO_ONE_NAT"
                }
            ]
        }
    ],
    "scheduling": {
        "onHostMaintenance": "TERMINATE"
    }
}

Reemplaza los marcadores de posición que se indican más abajo:

  • PROJECT_ID: El ID del proyecto en el que deseas crear la VM de TPU.
  • ZONE: La zona para la VM de TPU (por ejemplo, us-central1-b).
  • MACHINE_TYPE: El tipo de máquina para la VM de TPU (por ejemplo, ct6e-standard-8t).
  • TPU_NAME: Un nombre para la VM de TPU.
  • IMAGE_PROJECT: El proyecto que contiene la imagen del SO. Para las imágenes de TPU, es ubuntu-os-accelerator-images.
  • IMAGE_FAMILY: La familia de imágenes del SO para la VM de TPU. Si deseas instalar una versión específica del SO, reemplaza todo el valor "sourceImage" por el nombre de la versión de la imagen en el siguiente formato: projects/IMAGE_PROJECT/global/images/IMAGE_NAME.

    Para obtener más información sobre las imágenes del SO, consulta Imágenes del SO.

  • NETWORK_NAME: Opcional: Nombre de la red. Si especificas una red, debes especificar una subred y esta debe pertenecer a la misma red. Si no especificas una red, Compute Engine infiere la red desde la subred especificada.

  • REGION: La región de la subred.

  • SUBNET_NAME: Nombre de la subred que se usará con la instancia.

    Para ver una lista de subredes en la red, usa el gcloud compute networks subnets list comando.

  • STACK_TYPE: Opcional: El tipo de pila para la interfaz de red. STACK_TYPE debe ser uno de los siguientes: IPV4_ONLY, IPV4_IPV6 o IPV6_ONLY (vista previa). El valor predeterminado es IPV4_ONLY.

Si ya reservaste una dirección IP externa estática, puedes asignarla a la instancia en el momento de la creación con la --address marca con la dirección IP estática o la --network-interface marca para configurar la red detallada. Para obtener más información, consulta Configura direcciones IP externas estáticas.

Habilita el acceso SSH a una instancia de VM de TPU

Para habilitar el acceso SSH a una instancia de VM de TPU, haz lo siguiente:

  • Se debe poder acceder a la instancia de TPU a través de una dirección IP externa o del Acceso privado a Google.
    • Si creas la instancia de TPU con gcloud CLI, la instancia obtiene una dirección IP externa efímera de forma predeterminada. Si creas la instancia de TPU con la API de REST, debes especificar que la instancia debe tener una dirección IP externa. Para obtener más información, consulta Crea una instancia de VM de TPU con una dirección IP externa.
    • Si tus instancias de TPU no tienen direcciones IP externas, puedes configurar el Acceso privado a Google. Para obtener más información, consulta Habilita el Acceso privado a Google.
  • La red que usa la instancia de TPU debe permitir el tráfico SSH. La red predeterminada permite automáticamente el tráfico SSH. Si usas una red personalizada o cambias la configuración de red predeterminada, debes habilitar SSH de forma explícita en la red.

Habilita el Acceso privado a Google

Las TPU que no tienen direcciones IP externas pueden usar el Acceso privado a Google para acceder a las APIs y los servicios de Google. Para obtener más información sobre el Acceso privado a Google, consulta Configura el Acceso privado a Google.

Después de configurar el Acceso privado a Google, conéctate a la VM con SSH.

Habilita el tráfico SSH en la red

La red predeterminada permite el acceso SSH a todas las VMs de TPU. Si usas una red personalizada o cambias la configuración de red predeterminada, debes habilitar de forma explícita el acceso SSH agregando una regla de firewall:

gcloud compute firewall-rules create \
    --network=NETWORK allow-ssh \
    --allow=tcp:22

Conecta una cuenta de servicio personalizada

Cada VM de TPU tiene una cuenta de servicio asociada que usa para hacer solicitudes a la API en tu nombre. Las VMs de TPU usan esta cuenta de servicio para llamar a las APIs de Compute Engine y acceder a Cloud Storage y otros servicios. De forma predeterminada, tu VM de TPU usa la cuenta de servicio predeterminada de Compute Engine.

Para obtener más información sobre las cuentas de servicio, consulta Cuentas de servicio.

Para especificar una cuenta de servicio personalizada cuando creas una instancia de VM de TPU, usa el gcloud compute instances create comando y proporciona el correo electrónico de la cuenta de servicio y el permiso de acceso cloud-platform a la instancia de VM:

gcloud compute instances create TPU_NAME \
    --machine-type=MACHINE_TYPE \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT \
    --zone=ZONE \
    --maintenance-policy=TERMINATE \
    --service-account=SERVICE_ACCOUNT_EMAIL \
    --scopes=https://www.googleapis.com/auth/cloud-platform

Reemplaza lo siguiente:

  • TPU_NAME: Un nombre para la VM de TPU.
  • MACHINE_TYPE: El tipo de máquina para la VM de TPU (por ejemplo, ct6e-standard-8t).
  • IMAGE_FAMILY: La familia de imágenes del SO para la VM de TPU. Si deseas instalar una versión específica del SO, usa la marca --image. Para obtener más información sobre las imágenes del SO, consulta Imágenes del SO.
  • IMAGE_PROJECT: El proyecto que contiene la imagen del SO. Para las imágenes de TPU, es ubuntu-os-accelerator-images.
  • ZONE: La zona para la VM de TPU (por ejemplo us-central1-b).
  • SERVICE_ACCOUNT_EMAIL: La dirección de correo electrónico de la cuenta de servicio que creaste. Por ejemplo: my-sa-123@my-project-123.iam.gserviceaccount.com. Para ver la dirección de correo electrónico, consulta Enumera cuentas de servicio.

Para usar una cuenta de servicio en un proyecto diferente de donde creas la VM de TPU, sigue las instrucciones de Usa una cuenta de servicio entre proyectos.

Integración con los Controles del servicio de VPC

Usa los Controles del servicio de VPC para definir perímetros de seguridad alrededor de tus recursos de TPU y controlar el movimiento de datos en el límite perimetral. Para obtener más información, consulta Descripción general de los Controles del servicio de VPC. Para obtener más información sobre las limitaciones en el uso de las TPU con los Controles del servicio de VPC, consulta la página sobre los productos admitidos y las limitaciones.