Melhore o desempenho numa GPU partilhada através do NVIDIA MPS

Se executar vários processos de SDK numa GPU do Dataflow partilhada, pode melhorar a eficiência e a utilização da GPU ativando o serviço multiprocessos (MPS) da NVIDIA. O MPS suporta o processamento concorrente numa GPU, permitindo que os processos partilhem contextos CUDA e recursos de agendamento. O MPS pode reduzir os custos de mudança de contexto, aumentar o paralelismo e reduzir os requisitos de armazenamento.

Os fluxos de trabalho de destino são pipelines Python executados em trabalhadores com mais de um vCPU.

O MPS é uma tecnologia da NVIDIA que implementa a API CUDA, uma plataforma da NVIDIA que suporta a computação de GPU de uso geral. Para mais informações, consulte o manual do utilizador do serviço multiprocessos da NVIDIA.

Vantagens

  • Melhora o processamento paralelo e o débito geral para pipelines de GPU, especialmente para cargas de trabalho com baixa utilização de recursos da GPU.
  • Melhora a utilização da GPU, o que pode reduzir os seus custos.

Apoio técnico e limitações

  • O MPS só é suportado em trabalhadores do Dataflow que usam uma única GPU.
  • O pipeline não pode usar opções de pipeline que restrinjam o paralelismo.
  • Evite exceder a memória da GPU disponível, especialmente para exemplos de utilização que envolvam o carregamento de modelos de aprendizagem automática grandes. Equilibre o número de CPUs virtuais e processos do SDK com a memória da GPU disponível de que estes processos precisam.
  • O MPS não afeta a simultaneidade das operações não relacionadas com a GPU.
  • O Dataflow Prime não suporta MPS.

Ative o MPS

Quando executa um pipeline com GPUs, ative o MPS da seguinte forma:

  • Na opção de pipeline --dataflow_service_options, anexe use_nvidia_mps ao parâmetro worker_accelerator.
  • Defina o valor count como 1.
  • Não use a opção de pipeline --experiments=no_use_multiple_sdk_containers.

A opção de pipeline --dataflow_service_options tem o seguinte aspeto:

--dataflow_service_options="worker_accelerator=type:GPU_TYPE;count:1;install-nvidia-driver;use_nvidia_mps"

Se usar o TensorFlow e ativar o MPS, faça o seguinte:

  1. Ative a atribuição dinâmica de memória na GPU. Use uma das seguintes opções do TensorFlow:
    • Ative o crescimento da memória chamando tf.config.experimental.set_memory_growth(gpu, True).
    • Defina a variável de ambiente TF_FORCE_GPU_ALLOW_GROWTH como true.
  2. Use dispositivos lógicos com limites de memória adequados.
  3. Para um desempenho ideal, aplique a utilização da GPU sempre que possível através da colocação de dispositivos flexível ou da colocação manual.

O que se segue?