Como adicionar ou remover GPUs

O Google Compute Engine fornece unidades de processamento gráfico (GPUs, na sigla em inglês) que podem ser adicionadas a instâncias de máquina virtual. Use essas GPUs para acelerar cargas de trabalho específicas nas instâncias, como aprendizado de máquina e processamento de dados.

Para mais informações sobre o que pode ser feito com as GPUs e que tipos de hardware de GPU estão disponíveis, leia GPUs no Compute Engine.

Antes de começar

Como criar uma instância com uma GPU

Antes de criar uma instância com uma GPU, selecione a imagem de disco de inicialização que você quer usar para a instância e verifique se o driver apropriado da GPU está instalado.

Se você estiver usando GPUs para o machine learning, poderá utilizar uma imagem de VM de aprendizado profundo para sua instância. As imagens de VM de aprendizado profundo têm drivers de GPU pré-instalados e incluem pacotes como o TensorFlow e o PyTorch. Você também pode usar as imagens de VM de aprendizado profundo para cargas de trabalho gerais de GPU. Para mais informações sobre as imagens disponíveis e os pacotes instalados nelas, consulte a documentação sobre VM de aprendizado profundo.

Use qualquer imagem pública ou personalizada, mas algumas podem exigir um driver exclusivo ou processo de instalação não abordado neste guia. É preciso identificar quais drivers são apropriados para as imagens.

Consulte Como instalar drivers de GPU para conhecer as etapas de instalação.

Durante a criação de uma instância com uma ou mais GPUs, é necessário configurá-la para que seja encerrada na manutenção do host. Não é possível migrar em tempo real as instâncias com GPUs porque elas estão atribuídas a dispositivos de hardware específicos. Consulte detalhes em Restrições da GPU.

Para criar uma instância com uma ou mais GPUs, use o Console do Google Cloud Platform, a ferramenta de linha de comando da gcloud ou a API.

Console

  1. Acesse a página "Instâncias de VMs".

    Acessar a página "Instâncias de VM"

  2. Clique em Criar instância.
  3. Selecione uma zona em que as GPUs estejam disponíveis. Consulte a lista de zonas disponíveis com GPUs.
  4. Na seção Configuração da máquina, selecione o tipo de máquina que você quer usar nessa instância. Se preferir, é possível especificar configurações de tipo de máquina personalizado.
  5. Na seção Configuração da máquina, clique em Plataforma de CPU e GPU para ver as opções avançadas de tipo de máquina e as GPUs disponíveis.
  6. Clique em GPUs para ver a lista de GPUs disponíveis.
  7. Especifique o tipo e o número de GPUs necessárias.
  8. Se necessário, ajuste o tipo de máquina para acomodar as configurações de GPU que você quer. Se você deixar essas configurações como estão, a instância usará o tipo de máquina predefinido que você especificou antes de abrir a tela de personalização do tipo de máquina.
  9. Para configurar o disco de inicialização, clique em Alterar na seção Disco de inicialização.
  10. Na guia Imagens do SO, escolha uma imagem.
  11. Clique em Selecionar para confirmar as opções do disco de inicialização.
  12. Se quiser, inclua um script de inicialização para instalar o driver da GPU enquanto a instância é iniciada. Na seção Automação, inclua o conteúdo do script de inicialização em Script de inicialização. Consulte Como instalar drivers de GPU para ver scripts de exemplo.
  13. Defina quaisquer outras configurações de instância necessárias. Por exemplo, altere as configurações de Preempção para definir a instância como preemptiva. Isso reduz o custo da instância e das GPUs anexadas. Leia GPUs em instâncias preemptivas para saber mais.
  14. Na parte inferior da página, clique em Criar para criar a instância.

gcloud

Use o comando regions describe para verificar se a cota de GPU é suficiente na região em que você quer criar as instâncias.

gcloud compute regions describe [REGION]

em que [REGION] é a região em que você quer verificar a cota da GPU.

Inicie uma instância com a imagem mais recente de uma família de imagens:

gcloud compute instances create [INSTANCE_NAME] \
    --machine-type [MACHINE_TYPE] --zone [ZONE] \
    --accelerator type=[ACCELERATOR_TYPE],count=[ACCELERATOR_COUNT] \
    --image-family [IMAGE_FAMILY] --image-project [IMAGE_PROJECT] \
    --maintenance-policy TERMINATE --restart-on-failure \
    --metadata startup-script='[STARTUP_SCRIPT]' \
    [--preemptible]

em que:

  • [INSTANCE_NAME] é o nome da nova instância;
  • [MACHINE_TYPE] é o tipo de máquina selecionado para a instância. Consulte GPUs no Compute Engine para ver quais tipos de máquinas estão disponíveis com base na quantidade de GPUs que você quer;
  • [ZONE] é a zona da instância;
  • [IMAGE_FAMILY] é uma das famílias de imagens disponíveis;
  • [ACCELERATOR_COUNT] é o número de GPUs que você quer adicionar à instância. Consulte GPUs no Compute Engine para ver uma lista de limites de GPUs com base no tipo de máquina da instância;
  • [ACCELERATOR_TYPE] é o modelo da GPU que você quer usar. Use um dos valores a seguir:

    • NVIDIA® Tesla® T4: nvidia-tesla-t4
    • NVIDIA® Tesla® T4 Virtual Workstation com NVIDIA® GRID®: nvidia-tesla-t4-vws
    • NVIDIA® Tesla® P4: nvidia-tesla-p4
    • NVIDIA® Tesla® P4 Virtual Workstation com NVIDIA® GRID®: nvidia-tesla-p4-vws
    • NVIDIA® Tesla® P100: nvidia-tesla-p100
    • NVIDIA® Tesla® P100 Virtual Workstation com NVIDIA® GRID®: nvidia-tesla-p100-vws
    • NVIDIA® Tesla® V100: nvidia-tesla-v100
    • NVIDIA® Tesla® K80: nvidia-tesla-k80

    Consulte GPUs no Compute Engine para ver uma lista de modelos da GPU disponíveis.

  • [IMAGE_PROJECT] é o projeto de imagem a que a família de imagens pertence.

  • [STARTUP_SCRIPT] é um script de inicialização opcional que pode ser usado para instalar o driver da GPU enquanto a instância está inicializando. Consulte Como instalar drivers de GPU para ver exemplos.

  • --preemptible é uma sinalização opcional que configura a instância como preemptiva. Isso reduz o custo da instância e das GPUs anexadas. Leia GPUs em instâncias preemptivas para saber mais.

Por exemplo, é possível usar o comando gcloud a seguir para iniciar uma instância Ubuntu 16.04 com uma GPU NVIDIA® Tesla® K80 e duas vCPUs na zona us-east1-d. Os metadados startup-script instruem a instância a instalar o Kit de ferramentas do CUDA (em inglês) com a versão de driver recomendada.

gcloud compute instances create gpu-instance-1 \
    --machine-type n1-standard-2 --zone us-east1-d \
    --accelerator type=nvidia-tesla-k80,count=1 \
    --image-family ubuntu-1604-lts --image-project ubuntu-os-cloud \
    --maintenance-policy TERMINATE --restart-on-failure \
    --metadata startup-script='#!/bin/bash
    echo "Checking for CUDA and installing."
    # Check for CUDA and try to install.
    if ! dpkg-query -W cuda-10-0; then
      curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
      dpkg -i ./cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
      apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
      apt-get update
      apt-get install cuda-10-0 -y
    fi'

Esse exemplo de comando inicia a instância, mas o CUDA e o driver levarão vários minutos para concluir a instalação.

API

Identifique o tipo de GPU que você quer adicionar à instância. Envie uma solicitação GET para listar os tipos de GPU disponíveis para o projeto em uma zona específica.

GET https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/acceleratorTypes

em que:

  • [PROJECT_ID] é o código do projeto;
  • [ZONE] é a zona em que você quer listar os tipos de GPU disponíveis.

Na API, crie uma solicitação POST para criar uma nova instância. Inclua o parâmetro acceleratorType para especificar o tipo de GPU a ser usado e o parâmetro acceleratorCount para determinar quantas GPUs você quer adicionar. Além disso, configure o parâmetro onHostMaintenance como TERMINATE.

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances?key={YOUR_API_KEY}
{
  "machineType": "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/machineTypes/n1-highmem-2",
  "disks":
  [
    {
      "type": "PERSISTENT",
      "initializeParams":
      {
        "diskSizeGb": "[DISK_SIZE]",
        "sourceImage": "https://www.googleapis.com/compute/v1/projects/[IMAGE_PROJECT]/global/images/family/[IMAGE_FAMILY]"
      },
      "boot": true
    }
  ],
  "name": "[INSTANCE_NAME]",
  "networkInterfaces":
  [
    {
      "network": "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/networks/[NETWORK]"
    }
  ],
  "guestAccelerators":
  [
    {
      "acceleratorCount": [ACCELERATOR_COUNT],
      "acceleratorType": "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/acceleratorTypes/[ACCELERATOR_TYPE]"
    }
  ],
  "scheduling":
  {
    "onHostMaintenance": "terminate",
    "automaticRestart": true,
    ["preemptible": true]
  },
  "metadata":
  {
    "items":
    [
      {
        "key": "startup-script",
        "value": "[STARTUP_SCRIPT]"
      }
    ]
  }
}

em que:

  • [INSTANCE_NAME] é o nome da instância;
  • [PROJECT_ID] é o código do projeto;
  • [ZONE] é a zona da instância;
  • [MACHINE_TYPE] é o tipo de máquina selecionado para a instância. Consulte GPUs no Compute Engine para ver quais tipos de máquinas estão disponíveis com base na quantidade de GPUs que você quer;
  • [IMAGE_PROJECT] é o projeto de imagem a que a imagem pertence;
  • [IMAGE_FAMILY] é uma imagem de disco de inicialização para a instância. Selecione uma família de imagens na lista de imagens públicas disponíveis;
  • [DISK_SIZE] é o tamanho do disco de inicialização em GB;
  • [NETWORK] é a rede VPC que você quer usar para essa instância. Especifique default para usar a rede padrão;
  • [ACCELERATOR_COUNT] é o número de GPUs que você quer adicionar à instância. Consulte GPUs no Compute Engine para ver uma lista de limites de GPUs com base no tipo de máquina da instância;
  • [ACCELERATOR_TYPE] é o modelo da GPU que você quer usar. Consulte GPUs no Compute Engine para ver uma lista de modelos da GPU disponíveis.
  • [STARTUP_SCRIPT] é um script de inicialização opcional que pode ser usado para instalar o driver da GPU enquanto a instância está inicializando. Consulte Como instalar drivers de GPU para ver exemplos.
  • "preemptible": true é um parâmetro opcional que configura sua instância como preemptiva. Isso reduz o custo da instância e das GPUs anexadas. Leia GPUs em instâncias preemptivas para saber mais.

Se você usar um script de inicialização para realizar a instalação automática do driver do dispositivo da GPU, verifique se ele foi instalado corretamente.

Se você não usar um script de inicialização para instalar o driver da GPU durante a criação da instância, instale-o manualmente na instância para que o sistema possa usar o dispositivo.

Como adicionar ou remover GPUs de instâncias existentes

É possível adicionar ou remover GPUs de instâncias existentes. Mas antes, pare a instância e altere a configuração de manutenção do host para que ela seja encerrada em vez de fazer a migração em tempo real. Não é possível migrar em tempo real as instâncias com GPUs porque elas estão atribuídas a dispositivos de hardware específicos. Consulte detalhes em Restrições da GPU.

É necessário instalar drivers de GPU nessa instância depois de adicionar uma GPU. A imagem do disco de inicialização usada para criar a instância determina os drivers necessários. Identifique os drivers apropriados para o sistema operacional nas imagens do disco de inicialização persistentes da instância. Para saber mais, leia Como instalar drivers de GPU.

Para adicionar ou remover GPUs de uma instância, use o Console do Google Cloud Platform ou a API.

Console

Para adicionar ou remover GPUs da instância, basta interrompê-la e editar a configuração dela.

  1. Verifique se todos os aplicativos críticos estão parados na instância. É necessário interromper a instância para adicionar uma GPU.

  2. Acesse a página "Instâncias de VMs" para ver a lista de instâncias.

    Acessar a página "Instâncias de VM"

  3. Na lista de instâncias, clique no nome da instância à qual quer adicionar GPUs. A página de detalhes da instância será aberta.

  4. Para interromper a instância, clique em Parar na parte superior da página de detalhes da instância.

  5. Com a execução da instância interrompida, clique em Editar para alterar as propriedades da instância.

  6. Se a instância tiver um tipo de máquina com núcleo compartilhado, altere o tipo de máquina para ter uma ou mais vCPUs. Não é possível adicionar aceleradores a instâncias que tenham tipos de máquina com núcleo compartilhado.

  7. Na seção Configuração da máquina, clique em Plataforma de CPU e GPU para ver as opções avançadas de tipo de máquina e as GPUs disponíveis.

  8. Clique em GPUs para ver a lista de GPUs disponíveis.

  9. Selecione o número de GPUs e o modelo que você quer adicionar à instância. Se preferir, defina o número de GPUs como Nenhum para remover GPUs atuais da instância.

  10. Se você adicionar GPUs a uma instância, defina a configuração de manutenção do host como Encerrar. Se remover GPUs da instância, será possível retornar a definição da configuração de manutenção do host para Migrar instância da VM.

  11. Na parte inferior da página de detalhes da instância, clique em Salvar para aplicar as alterações.

  12. Quando as configurações da instância estiverem salvas, clique em Iniciar na parte superior da página de detalhes da instância para iniciá-la novamente.

API

Para adicionar ou remover GPUs da instância, basta interrompê-la e alterar a configuração dela por meio da API.

  1. Verifique se todos os aplicativos importantes estão parados na instância. Depois, crie um comando POST para interrompê-la. Assim, ela pode ser movida para um sistema host em que as GPUs estejam disponíveis.

    POST https://www.googleapis.com/compute/v1/projects/compute/zones/[ZONE]/instances/[INSTANCE_NAME]/stop
    

    em que:

    • [INSTANCE_NAME] é o nome da instância em que você quer adicionar GPUs;
    • [ZONE] é a zona em que a instância está localizada.
  2. Identifique o tipo de GPU que você quer adicionar à instância. Envie uma solicitação GET para listar os tipos de GPU disponíveis para o projeto em uma zona específica.

    GET https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/acceleratorTypes
    

    em que:

    • [PROJECT_ID] é o código do projeto;
    • [ZONE] é a zona em que você quer listar os tipos de GPU disponíveis.
  3. Se a instância tiver um tipo de máquina com núcleo compartilhado, altere o tipo de máquina para ter uma ou mais vCPUs. Não é possível adicionar aceleradores a instâncias com tipos de máquinas com núcleo compartilhado.

  4. Após a parada da instância, crie uma solicitação POST para adicionar ou remover uma ou mais GPUs da instância.

    POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/setMachineResources
    
    {
     "guestAccelerators": [
      {
        "acceleratorCount": [ACCELERATOR_COUNT],
        "acceleratorType": "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/acceleratorTypes/[ACCELERATOR_TYPE]"
      }
     ]
    }
    

    em que:

    • [INSTANCE_NAME] é o nome da instância;
    • [PROJECT_ID] é o código do projeto;
    • [ZONE] é a zona da instância;
    • [ACCELERATOR_COUNT] é o número de GPUs que você quer na instância. Consulte GPUs no Compute Engine para ver uma lista de limites de GPUs com base no tipo de máquina da instância;
    • [ACCELERATOR_TYPE] é o modelo da GPU que você quer usar. Consulte GPUs no Compute Engine para ver uma lista de modelos da GPU disponíveis.
  5. Crie um comando POST para definir as opções de programação da instância. Se for adicionar GPUs a uma instância, especifique "onHostMaintenance": "TERMINATE". Se quiser, especifique "onHostMaintenance": "MIGRATE" para remover GPUs de uma instância.

    POST https://www.googleapis.com/compute/v1/projects/compute/zones/[ZONE]/instances/[INSTANCE_NAME]/setScheduling
    
    {
     "onHostMaintenance": "[MAINTENANCE_TYPE]",
     "automaticRestart": true
    }
    

    em que:

    • [INSTANCE_NAME] é o nome da instância em que você quer adicionar GPUs;
    • [ZONE] é a zona em que a instância está localizada;
    • [MAINTENANCE_TYPE] é a ação que você quer que a instância execute quando a manutenção do host for necessária. Especifique TERMINATE se estiver adicionando GPUs à instância. Se preferir, especifique "onHostMaintenance": "MIGRATE" se tiver removido todas as GPUs da instância e quiser que ela retome a migração nos eventos de manutenção do host.
  6. Inicie a instância.

    POST https://www.googleapis.com/compute/v1/projects/compute/zones/[ZONE]/instances/[INSTANCE_NAME]/start
    

    em que:

    • [INSTANCE_NAME] é o nome da instância em que você quer adicionar GPUs;
    • [ZONE] é a zona em que a instância está localizada.

Em seguida, instale o driver da GPU na instância para que o sistema possa usar o dispositivo.

Como criar grupos de instâncias de GPU usando modelos de instância

Use modelos de instância para criar grupos de instâncias gerenciadas com GPUs adicionadas a cada uma delas. Os grupos de instâncias gerenciadas usam o modelo para criar várias instâncias idênticas. Expanda o número de instâncias no grupo para que correspondam à carga de trabalho.

Leia Como criar modelos de instância para saber as etapas de criação.

Se você criar o modelo de instância usando o Console, personalize o tipo de máquina e selecione o tipo e o número de GPUs que quer adicionar ao modelo de instância.

Se você estiver usando a ferramenta de linha de comando gcloud, inclua as sinalizações --accelerators e --maintenance-policy TERMINATE. Se quiser, inclua a sinalização --metadata startup-script e especifique um script de inicialização para instalar o driver da GPU enquanto a instância é iniciada. Para scripts de amostra que funcionam em instâncias de GPU, consulte a Como instalar drivers da GPU.

O exemplo a seguir cria um modelo de instância com dois vCPUs, um disco de inicialização de 250 GB com o Ubuntu 16.04, uma GPU NVIDIA® Tesla® K80 e um script de inicialização. O script de inicialização instala o Kit de ferramentas do CUDA com a versão de driver recomendada.

gcloud beta compute instance-templates create gpu-template \
    --machine-type n1-standard-2 \
    --boot-disk-size 250GB \
    --accelerator type=nvidia-tesla-k80,count=1 \
    --image-family ubuntu-1604-lts --image-project ubuntu-os-cloud \
    --maintenance-policy TERMINATE --restart-on-failure \
    --metadata startup-script='#!/bin/bash
    echo "Checking for CUDA and installing."
    # Check for CUDA and try to install.
    if ! dpkg-query -W cuda-10-0; then
      curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
      dpkg -i ./cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
      apt-get update
      apt-get install cuda-10-0 -y
    fi'

Crie o modelo e use-o para criar um grupo de instâncias. Sempre que você adiciona uma instância ao grupo, ele usa as configurações no modelo da instância para iniciá-la.

Se você estiver criando um grupo de instâncias gerenciadas regionais, selecione zonas especificamente compatíveis com o modelo de GPU que você quer. Para ver uma lista de modelos de GPU e zonas disponíveis, consulte GPUs no Compute Engine. O exemplo a seguir cria um grupo de instâncias gerenciadas regional em duas zonas compatíveis com o modelo nvidia-tesla-k80.

gcloud beta compute instance-groups managed create example-rmig \
    --template gpu-template --base-instance-name example-instances \
    --size 30 --zones us-east1-c,us-east1-d

Observação: se você estiver escolhendo zonas específicas, use o componente gcloud beta, porque o recurso de seleção de zona atualmente está na versão Beta.

Para saber mais sobre como gerenciar e expandir grupos de instâncias, leia Como criar grupos de instâncias gerenciadas.

Como instalar drivers de GPU

Depois que você criar uma instância com uma ou mais GPUs, o sistema precisará de drivers para que os aplicativos possam acessar o dispositivo. Neste guia, mostramos as maneiras de instalar drivers proprietários da NVIDIA em instâncias com imagens públicas.

É possível instalar drivers de GPU com uma das seguintes opções:

Como instalar drivers de GPU usando scripts

Cada versão do CUDA requer uma versão mínima do driver da GPU ou uma versão posterior. Para verificar o driver mínimo necessário para sua versão do CUDA, consulte Kit de ferramentas CUDA e versões compatíveis do driver.

Nas GPUs NVIDIA em execução no Google Compute Engine, as seguintes versões do driver precisam ser utilizadas:

  • Instâncias do Linux:

    • Driver NVIDIA 410.79 ou superior
  • Instâncias do Windows Server:

    • Driver NVIDIA 411.98 ou superior

Geralmente, para conseguir esses drivers, basta instalar o Kit de ferramentas CUDA do NVIDIA.

Em algumas imagens, você pode usar scripts para simplificar o processo de instalação de drivers. Especifique-os como scripts de inicialização ou copie-os nas instâncias e execute-os no terminal como um usuário com privilégios sudo.

É preciso preparar o script para que ele funcione com a imagem selecionada do disco de inicialização. Se você importou uma imagem de disco de inicialização personalizada para as instâncias, pode ser necessário personalizar o script de inicialização para que funcione corretamente com a imagem personalizada.

Para instâncias do Windows Server e SLES 12, em que não é possível automatizar o processo de instalação do driver, instale-o manualmente.

Os exemplos a seguir são scripts de inicialização que instalam o CUDA e os drivers associados para GPUs NVIDIA® em imagens públicas. Se o software que você está usando requer uma versão específica do CUDA, modifique o script para fazer o download da versão necessária.

Para informações sobre suporte e etapas para modificar sua instalação do CUDA, consulte a documentação do Kit de ferramentas CUDA.

Para verificar se um script de inicialização foi concluído, analise os registros ou verifique o console serial.

CentOS

Estes scripts de exemplo verificam a existência de uma instalação do CUDA e instala o pacote completo do CUDA 10 e o driver proprietário associado.

CentOS 7 - CUDA 10:

#!/bin/bash
# Install kernel headers and development packages
echo "Installing kernel headers and development packages."
yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r) -y
echo "Checking for CUDA and installing."
# Check for CUDA and try to install.
if ! rpm -q cuda-10-0; then
  curl -O http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-repo-rhel7-10.0.130-1.x86_64.rpm
  rpm -i --force ./cuda-repo-rhel7-10.0.130-1.x86_64.rpm
  yum clean all
  rm -rf /var/cache/yum
  # Install Extra Packages for Enterprise Linux (EPEL) for dependencies
  yum install epel-release -y
  yum update -y
  yum install cuda-10-0 -y
fi
# Verify that CUDA installed; retry if not.
if ! rpm -q cuda-10-0; then
  yum install cuda-10-0 -y
fi
# Enable persistence mode
nvidia-smi -pm 1

Em instâncias com imagens do CentOS 7, talvez seja necessário reiniciar a instância depois que o script terminar de instalar os pacotes CUDA e os drivers. Reinicie a instância se o script for concluído e o comando nvidia-smi retornar o seguinte erro:

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA
driver. Make sure that the latest NVIDIA driver is installed and
running.

CentOS 6 - CUDA 10:

#!/bin/bash
# Install kernel headers and development packages
echo "Installing kernel headers and development packages."
yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r) -y
echo "Checking for CUDA and installing."
# Check for CUDA and try to install.
if ! rpm -q cuda-10-0; then
  curl -O http://developer.download.nvidia.com/compute/cuda/repos/rhel6/x86_64/cuda-repo-rhel6-10.0.130-1.x86_64.rpm
  rpm -i --force ./cuda-repo-rhel6-10.0.130-1.x86_64.rpm
  yum clean all
  # Install Extra Packages for Enterprise Linux (EPEL) for dependencies
  yum install epel-release -y
  yum update -y
  yum install cuda-10-0 -y
fi
# Verify that CUDA installed; retry if not.
if ! rpm -q cuda-10-0; then
  yum install cuda-10-0 -y
fi
# Enable persistence mode
nvidia-smi -pm 1

No caso de instâncias com imagens CentOS 6, talvez seja necessário reiniciá-las depois que o script terminar a instalação dos drivers e pacotes do CUDA. Reinicie a instância se o script for concluído e o comando nvidia-smi retornar o seguinte erro:

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA
driver. Make sure that the latest NVIDIA driver is installed and
running.

RHEL

Estes scripts de exemplo verificam a existência de uma instalação do CUDA e instala o pacote completo do CUDA 10 e o driver proprietário associado.

RHEL 7 - CUDA 10:

#!/bin/bash
# Install kernel headers and development packages
echo "Installing kernel headers and development packages."
yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r) -y
echo "Checking for CUDA and installing."
# Check for CUDA and try to install.
if ! rpm -q cuda-10-0; then
  curl -O http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-repo-rhel7-10.0.130-1.x86_64.rpm
  rpm -i --force ./cuda-repo-rhel7-10.0.130-1.x86_64.rpm
  yum clean all
  rm -rf /var/cache/yum
  # Install Extra Packages for Enterprise Linux (EPEL) for dependencies
  yum install epel-release -y
  yum update -y
  yum install cuda-10-0 -y
fi
# Verify that CUDA installed; retry if not.
if ! rpm -q cuda-10-0; then
  yum install cuda-10-0 -y
fi
# Enable persistence mode
nvidia-smi -pm 1

Em instâncias com imagens do RHEL 7, talvez seja necessário reiniciar a instância depois que o script terminar de instalar os pacotes CUDA e os drivers. Reinicie a instância se o script for concluído e o comando nvidia-smi retornar o seguinte erro:

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA
driver. Make sure that the latest NVIDIA driver is installed and
running.

RHEL 6 - CUDA 10:

#!/bin/bash
# Install kernel headers and development packages
echo "Installing kernel headers and development packages."
yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r) -y
echo "Checking for CUDA and installing."
# Check for CUDA and try to install.
if ! rpm -q cuda-10-0; then
  curl -O http://developer.download.nvidia.com/compute/cuda/repos/rhel6/x86_64/cuda-repo-rhel6-10.0.130-1.x86_64.rpm
  rpm -i --force ./cuda-repo-rhel6-10.0.130-1.x86_64.rpm
  yum clean all
  # Install Extra Packages for Enterprise Linux (EPEL) for dependencies
  yum install epel-release -y
  yum update -y
  yum install cuda-10-0 -y
fi
# Verify that CUDA installed; retry if not.
if ! rpm -q cuda-10-0; then
  yum install cuda-10-0 -y
fi
# Enable persistence mode
nvidia-smi -pm 1

Em instâncias com imagens do RHEL 6, talvez seja necessário reiniciar a instância depois que o script terminar de instalar os pacotes CUDA e os drivers. Reinicie a instância se o script for concluído e o comando nvidia-smi retornar o seguinte erro:

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA
driver. Make sure that the latest NVIDIA driver is installed and
running.

Para verificar se o script foi concluído, verifique o console serial.

SLES

SLES 15 - CUDA 10:

Este script de exemplo verifica a existência de uma instalação do CUDA e instala o pacote completo do CUDA 10 e o driver proprietário associado.

#!/bin/bash
echo "Checking for CUDA and installing."
# Check for CUDA and try to install.
if ! rpm -q cuda-10-0; then
  curl -O http://developer.download.nvidia.com/compute/cuda/repos/sles15/x86_64/cuda-repo-sles15-10.0.130-1.x86_64.rpm
  rpm -i --force ./cuda-repo-sles15-10.0.130-1.x86_64.rpm
  zypper --gpg-auto-import-keys refresh
  zypper install -ny cuda-10-0
fi
# Verify that CUDA installed; retry if not.
if ! rpm -q cuda-10-0; then
  zypper install -ny cuda-10-0
fi
# Enable persistence mode
nvidia-smi -pm 1

SLES 12 Service Pack 3 - CUDA 9.1:

Este script de amostra verifica a existência de uma instalação do CUDA e instala o pacote completo do CUDA 9.1 e o driver proprietário associado.

#!/bin/bash
echo "Checking for CUDA and installing."
# Check for CUDA and try to install.
if ! rpm -q cuda-9-1; then
  curl -O http://developer.download.nvidia.com/compute/cuda/repos/sles123/x86_64/cuda-repo-sles123-9.1.85-1.x86_64.rpm
  rpm -i --force ./cuda-repo-sles123-9.1.85-1.x86_64.rpm
  zypper --gpg-auto-import-keys refresh
  zypper install -ny cuda-9-1
fi
# Verify that CUDA installed; retry if not.
if ! rpm -q cuda-9-1; then
  zypper install -ny cuda-9-1
fi
# Enable persistence mode
nvidia-smi -pm 1

SLES 12:

Em outras instâncias SLES 12, instale o driver manualmente.

Ubuntu

Ubuntu 18.04 - Cuda 10:

Este script de exemplo verifica a existência de uma instalação do CUDA e instala o pacote completo do CUDA 10 e o driver proprietário associado.

 #!/bin/bash
 echo "Checking for CUDA and installing."
 # Check for CUDA and try to install.
 if ! dpkg-query -W cuda-10-0; then
   curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
   dpkg -i ./cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
   apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
   apt-get update
   apt-get install cuda-10-0 -y
 fi
# Enable persistence mode
nvidia-smi -pm 1

Ubuntu 17.04 e 17.10 — CUDA 9:

Este script de amostra verifica a existência de uma instalação do CUDA e instala o pacote completo do CUDA 9 e o driver proprietário associado.

#!/bin/bash
echo "Checking for CUDA and installing."
# Check for CUDA and try to install.
if ! dpkg-query -W cuda-9-0; then
  # The 17.04 installer works with 17.10.
  curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1704_9.0.176-1_amd64.deb
  dpkg -i ./cuda-repo-ubuntu1704_9.0.176-1_amd64.deb
  apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
  apt-get update
  apt-get install cuda-9-0 -y
fi
# Enable persistence mode
nvidia-smi -pm 1

Ubuntu 16.04 LTS - CUDA 10:

Este script de exemplo verifica a existência de uma instalação do CUDA e instala o pacote completo do CUDA 10 e o driver proprietário associado.

#!/bin/bash
echo "Checking for CUDA and installing."
# Check for CUDA and try to install.
if ! dpkg-query -W cuda-10-0; then
  # The 16.04 installer works with 16.10.
  curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
  dpkg -i ./cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
  apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
  apt-get update
  apt-get install cuda-10-0 -y
fi
# Enable persistence mode
nvidia-smi -pm 1

Windows Server

Em instâncias do Windows Server, é preciso instalar o driver manualmente.

Quando a execução do script for concluída, você poderá verificar se o driver da GPU foi instalado.

Como instalar drivers de GPU manualmente

Se não for possível usar um script para instalar o driver das GPUs, instale-o manualmente. Você é responsável por selecionar a versão do instalador e do driver que melhor funciona com os seus aplicativos. Use esse método de instalação se for necessário utilizar um driver específico ou instalar o driver em uma imagem personalizada ou pública que não funcione com um dos scripts de instalação.

Use este processo para instalar manualmente drivers em instâncias com a maioria das imagens públicas. Para imagens personalizadas, pode ser preciso modificar o processo para que funcione em seu ambiente único.

CentOS

  1. Conecte-se à instância em que você quer instalar o driver.

  2. Instale cabeçalhos de kernel e pacotes de desenvolvimento.

    yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r) -y
    
  3. Selecione um repositório de drivers e adicione-o à instância. Por exemplo, use o curl para fazer o download do Kit de ferramentas do CUDA (em inglês). Em seguida, use o comando rpm para adicionar o repositório ao sistema:

    • CentOS 7

      $ curl -O http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-repo-rhel7-10.0.130-1.x86_64.rpm
      
      $ sudo rpm -i cuda-repo-rhel7-10.0.130-1.x86_64.rpm
      
    • CentOS 6

      $ curl -O http://developer.download.nvidia.com/compute/cuda/repos/rhel6/x86_64/cuda-repo-rhel6-10.0.130-1.x86_64.rpm
      
      $ sudo rpm -i cuda-repo-rhel6-10.0.130-1.x86_64.rpm
      
  4. Instale o repositório epel-release. Esse repositório inclui os pacotes DKMS, que são necessários para instalar drivers da NVIDIA no CentOS.

    $ sudo yum install epel-release
    
  5. Limpe o cache do Yum:

    $ sudo yum clean all
    
  6. Instale o CUDA 10, que inclui o driver da NVIDIA.

    $ sudo yum install cuda-10-0
    
  7. No caso de instâncias com imagens CentOS, talvez seja necessário reiniciá-las depois de instalar os drivers e pacotes do CUDA. Reinicie a instância se o script for concluído e o comando nvidia-smi retornar o seguinte erro:

    NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA
    driver. Make sure that the latest NVIDIA driver is installed and
    running.
    
  8. Ative o modo de persistência.

    $ sudo nvidia-smi -pm 1
    Enabled persistence mode for GPU 00000000:00:04.0.
    Enabled persistence mode for GPU 00000000:00:05.0.
    All done.
    

RHEL

  1. Conecte-se à instância em que você quer instalar o driver.

  2. Instale cabeçalhos de kernel e pacotes de desenvolvimento.

    yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r) -y
    
  3. Selecione um repositório de drivers e adicione-o à instância. Por exemplo, use o curl para fazer o download do Kit de ferramentas do CUDA (em inglês). Em seguida, use o comando rpm para adicionar o repositório ao sistema:

    • RHEL 7

      $ curl -O http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-repo-rhel7-10.0.130-1.x86_64.rpm
      
      $ sudo rpm -i cuda-repo-rhel7-10.0.130-1.x86_64.rpm
      
    • RHEL 6

      $ curl -O http://developer.download.nvidia.com/compute/cuda/repos/rhel6/x86_64/cuda-repo-rhel6-10.0.130-1.x86_64.rpm
      
      $ sudo rpm -i cuda-repo-rhel6-10.0.130-1.x86_64.rpm
      
  4. Instale o repositório epel-release. Este repositório inclui os pacotes DKMS, necessários para instalar drivers da NVIDIA. No RHEL, é preciso fazer o download do .rpm desse repositório de fedoraproject.org e adicioná-lo ao sistema.

    • RHEL 7

      $ curl -O https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
      
      $ sudo rpm -i epel-release-latest-7.noarch.rpm
      
    • RHEL 6

      $ curl -O https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
      
      $ sudo rpm -i epel-release-latest-6.noarch.rpm
      
  5. Limpe o cache do Yum:

    $ sudo yum clean all
    
  6. Instale o CUDA 10, que inclui o driver da NVIDIA.

    $ sudo yum install cuda-10-0
    
  7. No caso de instâncias com imagens RHEL, talvez seja necessário reiniciá-las depois de instalar os drivers e pacotes do CUDA. Reinicie a instância se o script for concluído e o comando nvidia-smi retornar o seguinte erro:

    NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA
    driver. Make sure that the latest NVIDIA driver is installed and
    running.
    
  8. Ative o modo de persistência.

    $ sudo nvidia-smi -pm 1
    Enabled persistence mode for GPU 00000000:00:04.0.
    Enabled persistence mode for GPU 00000000:00:05.0.
    All done.
    

SLES

  1. Conecte-se à instância em que você quer instalar o driver.

  2. Selecione um repositório de drivers e adicione-o à instância. Por exemplo, use o curl para fazer o download do Kit de ferramentas do CUDA (em inglês). Em seguida, use o comando rpm para adicionar o repositório ao sistema:

    • SLES 15

      $ curl -O https://developer.download.nvidia.com/compute/cuda/repos/sles15/x86_64/cuda-repo-sles15-10.0.130-1.x86_64.rpm
      
      $ sudo rpm -i cuda-repo-sles15-10.0.130-1.x86_64.rpm
      
    • SLES 12 com Service Pack 3

      $ curl -O https://developer.download.nvidia.com/compute/cuda/repos/sles123/x86_64/cuda-repo-sles123-9.1.85-1.x86_64.rpm
      
      $ sudo rpm -i cuda-repo-sles123-9.1.85-1.x86_64.rpm
      
    • SLES 12 com Service Pack 2

      $ curl -O https://developer.download.nvidia.com/compute/cuda/repos/sles122/x86_64/cuda-repo-sles122-9.0.176-1.x86_64.rpm
      
      $ sudo rpm -i cuda-repo-sles122-9.0.176-1.x86_64.rpm
      
  3. Atualize o Zypper:

    $ sudo zypper refresh
    
  4. Instale o CUDA, que inclui o driver NVIDIA.

    $ zypper install cuda
    
  5. Ative o modo de persistência.

    $ sudo nvidia-smi -pm 1
    Enabled persistence mode for GPU 00000000:00:04.0.
    Enabled persistence mode for GPU 00000000:00:05.0.
    All done.
    

Ubuntu

  1. Conecte-se à instância em que você quer instalar o driver.

  2. Selecione um repositório de drivers e adicione-o à instância. Por exemplo, use o curl para fazer o download do Kit de ferramentas do CUDA (em inglês). Em seguida, use o comando dpkg para adicionar o repositório ao sistema. Depois, use o comando apt-key para autenticar o download:

    • Ubuntu 18.04

      $ curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
      
      $ sudo dpkg -i cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
      $ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1704/x86_64/7fa2af80.pub
      
    • Ubuntu 17.04 e 17.10

      $ curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1704/x86_64/cuda-repo-ubuntu1704_9.0.176-1_amd64.deb
      
      $ sudo dpkg -i cuda-repo-ubuntu1704_9.0.176-1_amd64.deb
      $ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1704/x86_64/7fa2af80.pub
      
    • Ubuntu 16.04 e 16.10 LTS

      $ curl -O http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
      
      $ sudo dpkg -i cuda-repo-ubuntu1604_10.0.130-1_amd64.deb
      $ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
      
  3. Atualize as listas de pacotes:

    $ sudo apt-get update
    
  4. Instale o CUDA, que inclui o driver NVIDIA.

    • Ubuntu 16.04, 16.10 e 18.04

      $ sudo apt-get install cuda-10-0
      
    • Ubuntu 17.04 e 17.10

      $ sudo apt-get install cuda-9-0
      
  5. Ative o modo de persistência.

    $ sudo nvidia-smi -pm 1
    Enabled persistence mode for GPU 00000000:00:04.0.
    Enabled persistence mode for GPU 00000000:00:05.0.
    All done.
    

Windows Server

  1. Conecte-se à instância em que você quer instalar o driver.

  2. Faça o download do arquivo de instalação .exe na instância que contém o branch R384: driver NVIDIA 386.07 ou versão posterior. Para a maioria das instâncias do Windows Server, é possível usar uma das seguintes opções:

    Por exemplo, no Windows Server 2016, você pode abrir um terminal do PowerShell como administrador e usar o comando wget para fazer o download do instalador do driver de que precisa.

    PS C:\> wget https://developer.nvidia.com/compute/cuda/10.0/Prod/network_installers/cuda_10.0.130_win10_network -o cuda_10.0.130_win10_network.exe
  3. Execute o instalador .exe. Por exemplo, abra um terminal do PowerShell como administrador e execute o seguinte comando:

    PS C:\> .\\cuda_10.0.130_win10_network.exe
    

Quando a execução do instalador for concluída, verifique se o driver da GPU foi instalado.

Como verificar a instalação do driver da GPU

Quando a instalação do driver for concluída, verifique se ele foi instalado e inicializado corretamente.

Linux

Conecte-se à instância do Linux e use o comando nvidia-smi para verificar se o driver está sendo executado corretamente.

$ nvidia-smi

Wed Jan  2 19:51:51 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.79       Driver Version: 410.79       CUDA Version: 10.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla P4            Off  | 00000000:00:04.0 Off |                    0 |
| N/A   42C    P8     7W /  75W |     62MiB /  7611MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

Windows Server

Conecte-se à instância do Windows Server e use a ferramenta nvidia-smi.exe para verificar se o driver está sendo executado corretamente.

PS C:\> & 'C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi.exe'

Fri Jan 04 16:47:42 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 411.31                 Driver Version: 411.31                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name            TCC/WDDM | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla P4            TCC  | 00000000:00:04.0 Off |                    0 |
| N/A   31C    P8     6W /  75W |      0MiB /  7611MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

Se o driver não está funcionando e você usou um script para instalá-lo, verifique os registros do script de inicialização para garantir que o script terminou e não apresentou falha durante o processo de instalação.

Como instalar drivers GRID® para estações de trabalho virtuais

Para ver a lista completa de drivers NVIDIA que você pode usar no Compute Engine, consulte o conteúdo do intervalo do Cloud Storage de drivers NVIDIA.

Linux

  1. Faça o download do driver GRID com o comando a seguir:

    curl -O https://storage.googleapis.com/nvidia-drivers-us-public/GRID/GRID7.1/NVIDIA-Linux-x86_64-410.92-grid.run
    
  2. Use o comando a seguir para iniciar o instalador:

    sudo bash NVIDIA-Linux-x86_64-410.92-grid.run
    
  3. Durante a instalação, escolha as opções a seguir:

    • Se você for solicitado a instalar binários de 32 bits, selecione Sim.
    • Se você for solicitado a modificar o arquivo x.org, selecione Não.

Windows Server

  1. Dependendo da versão do Windows Server, faça o download de um dos seguintes drivers NVIDIA GRID:

  2. Execute o instalador e escolha a modalidade expressa de instalação.

  3. Após a conclusão da instalação, reinicie a VM. Você estará desconectado da sessão.

  4. Reconecte-se à instância por meio de RDP ou um cliente PCoIP.

Como verificar se o driver GRID foi instalado

Linux

Execute os seguintes comandos:

sudo nvidia-smi --persistence-mode=1
nvidia-smi

A saída do comando será semelhante a esta:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.92                Driver Version: 410.92                     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla P100-PCIE...  On   | 00000000:00:04.0 Off |                    0 |
| N/A   34C    P0    26W / 250W |      0MiB / 16276MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

Windows Server

  1. Conecte-se à sua instância do Windows por meio de RDP ou um cliente PCoIP.

  2. Clique com o botão direito do mouse na área de trabalho e selecione o Painel de controle da NVIDIA.

  3. No menu “Ajuda” do Painel de Controle da NVIDIA, selecione Informações do sistema. Será exibida a GPU que a VM está usando e a versão do driver.

Como otimizar o desempenho da GPU

Em geral, você pode otimizar o desempenho de seus dispositivos GPU em instâncias do Linux usando as seguintes configurações:

  • Ative o modo de persistência. Essa configuração serve para todas as GPUs da sua instância.

    $ sudo nvidia-smi -pm 1
    Enabled persistence mode for GPU 00000000:00:04.0.
    Enabled persistence mode for GPU 00000000:00:05.0.
    All done.
    

  • Em instâncias com GPUs NVIDIA® Tesla® K80, desabilite a inicialização automática:

    $ sudo nvidia-smi --auto-boost-default=DISABLED
    All done.
    

Como lidar com eventos de manutenção do host

As instâncias de GPU não podem ser migradas em tempo real. As instâncias de GPU precisam ser encerradas em eventos de manutenção do host, mas podem ser reiniciadas automaticamente. Esses eventos normalmente ocorrem uma vez por semana, mas a frequência pode ser intensificada quando necessário.

Para lidar com os eventos de manutenção, use os seguintes processos:

  • Para evitar as interrupções, reinicie regularmente as instâncias de acordo com a programação que seja mais conveniente para seus aplicativos.
  • Identifique quando a instância está programada para manutenção do host e prepare sua carga de trabalho para a transição por meio do reinício do sistema.

Para receber aviso antecipado de eventos de manutenção do host, monitore o valor de metadados /computeMetadata/v1/instance/maintenance-event. Se a solicitação ao servidor de metadados retornar NONE, a instância não está programada para ser encerrada. Por exemplo, execute o comando a seguir em uma instância:

$ curl http://metadata.google.internal/computeMetadata/v1/instance/maintenance-event -H "Metadata-Flavor: Google"

NONE

Se o servidor de metadados retornar TERMINATE_ON_HOST_MAINTENANCE, a instância será programada para ser encerrada. O Compute Engine dá às instâncias com GPU um aviso de encerramento com uma hora de antecedência, enquanto que instâncias normais recebem um aviso apenas 60 segundos antes. Configure seu aplicativo para a transição durante o evento de manutenção. Por exemplo, é possível usar uma das seguintes técnicas:

  • Configure o aplicativo para migrar temporariamente o trabalho em andamento para um intervalo do Google Cloud Storage e, em seguida, recuperar os dados após o reinício da instância.

  • Grave os dados em um disco permanente secundário. Quando a instância reiniciar automaticamente, o disco permanente poderá ser reanexado e o aplicativo continuará com o trabalho.

Além disso, é possível receber avisos sobre alterações nesse valor de metadados sem a necessidade de pesquisá-lo. Para ver alguns exemplos de como receber avisos sobre eventos de manutenção do host com antecedência, sem a necessidade de fazer pesquisas, leia sobre como receber notificações de migração em tempo real.

Próximas etapas

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Compute Engine