Como otimizar o desempenho da GPU

Você pode usar as seguintes opções para melhorar o desempenho de GPUs em instâncias de máquina virtual (VM, na sigla em inglês):

Como desativar o autoboost

Quando você usa o recurso autoboost com as GPUs NVIDIA® Tesla® K80, o sistema ajusta automaticamente as velocidades de clock para encontrar a taxa ideal para um determinado aplicativo. No entanto, o ajuste constante das velocidades de clock também pode levar a uma redução no desempenho de suas GPUs. Para obter mais informações sobre o autoboost, consulte Increase Performance with GPU Boost e K80 Autoboost (em inglês).

Recomendamos que você desative o recurso autoboost ao executar GPUs NVIDIA® Tesla® K80 no Compute Engine.

Para desativar o autoboost em instâncias com GPUs NVIDIA® Tesla® K80 conectadas, execute o seguinte comando:

sudo nvidia-smi --auto-boost-default=DISABLED

A saída pode ser semelhante a esta:

All done.

Como configurar a velocidade do clock da GPU para a frequência máxima

Para definir a velocidade de clock da GPU para a frequência máxima em instâncias com GPUs NVIDIA® Tesla® K80 conectadas, execute o seguinte comando:

sudo nvidia-smi --applications-clocks=2505,875

Como usar larguras de banda de rede de até 100 Gbps

Como criar instâncias de VM que usam larguras de banda maiores

É possível usar larguras de banda de rede maiores para melhorar o desempenho de cargas de trabalho distribuídas em instâncias de VM em execução no Compute Engine que usam GPUs NVIDIA® Tesla® T4 ou V100.

Para mais informações sobre as larguras de banda de rede compatíveis com suas instâncias de GPU, consulte Larguras de banda de rede e GPUs.

Para criar uma instância de VM com GPUs anexadas e uma largura de banda de até 100 Gbps:

  1. Revise a configuração mínima de CPU, GPU e memória necessárias para obter a largura de banda máxima disponível.
  2. Crie sua instância de VM com GPUs T4 ou V100 anexadas, consulte Como adicionar ou remover GPUs .

    A imagem que você usa para criar a instância da VM deve ter a interface de rede virtual do Compute Engine (gVNIC) instalada. Para obter mais informações sobre como criar instâncias de VM compatíveis com a interface de rede virtual do Compute Engine, consulte Como criar instâncias de VM que usam a interface de rede virtual do Compute Engine.

    Como alternativa, você pode usar a imagem tf-latest-gpu-gvnic do catálogo de imagens de VM de aprendizado profundo do Google que já tem o driver da GPU, o software de aprendizado de máquina e o driver de rede do Compute Engine pré-instalados.

    Por exemplo, para criar uma instância de VM chamada test-instance que tenha uma largura de banda máxima de 100 Gbps, oito GPUs V100 anexadas e use a imagem de VM de aprendizado profundo, execute o seguinte comando:

    gcloud compute instances create test-instance \
       --custom-cpu 96 \
       --custom-memory 624 \
       --image-project=deeplearning-platform-release \
       --image-family=tf-latest-gpu-gvnic \
       --accelerator type=nvidia-tesla-v100,count=8 \
       --maintenance-policy TERMINATE \
       --metadata="install-nvidia-driver=True"  \
       --boot-disk-size 200GB \
       --zone=us-central1-f
    
  3. Depois de criar a instância da VM, você pode verificar a largura de banda da rede.

Como verificar a largura de banda da rede

Ao trabalhar com GPUs de largura de banda alta, você pode usar uma ferramenta de tráfego de rede, como iperf2, para medir a largura de banda da rede.

Para verificar as velocidades de largura de banda, é preciso pelo menos duas instâncias de VM que tenham GPUs anexadas e sejam compatíveis com a velocidade de largura de banda que você está testando.

Para medir a largura de banda da rede, conclua as seguintes etapas:

  1. Em uma instância de VM, execute o seguinte comando:

    iperf -s
  2. Em outra instância de VM, execute o comando a seguir. Substitua server_dns_or_internal_ip com o DNS ou endereço IP interno para sua instância de VM.

    iperf -c server_dns_or_internal_ip -P 16 -t 30

Ao usar a largura de banda máxima disponível de 100 Gbps, lembre-se do seguinte:

  • Devido às sobrecargas de cabeçalho para protocolos como Ethernet, IP e TCP na pilha de virtualização, a capacidade, medida por netperf, satura a cerca de 90 Gbps.

    O TCP é capaz de atingir a velocidade de rede de 100-Gbps. Outros protocolos, como o UDP, estão mais lentos no momento.

  • Devido a fatores como sobrecarga de protocolo e congestionamento da rede, o desempenho de ponta a ponta dos fluxos de dados pode ser um pouco menor do que 100 Gbps.

  • É necessário usar vários streams TCP para atingir o máximo de largura de banda entre instÂncias de VM. O Google recomenda de 4 a 16 streams. Com 16 fluxos, você maximizará a capacidade com frequência. Dependendo do aplicativo e da pilha de software, talvez seja necessário ajustar as configurações ou o código para configurar vários streams.

  • A largura de banda de rede 100 Gbps só pode ser alcançada unidirecionalmente. Você pode esperar que a soma de TX + RX seja de aproximadamente 100 Gbps.

A seguir