Melhorar o desempenho de uma GPU compartilhada usando o NVIDIA MPS

Se você executar vários processos do SDK em uma GPU compartilhada do Dataflow, ative o NVIDIA Multi-Process Service (MPS) para melhorar a eficiência e utilização da GPU. O MPS é compatível com o processamento simultâneo em uma GPU, permitindo que os processos compartilhem contextos CUDA e programem recursos. Os MPS podem reduzir os custos de alternância de contexto, aumentar o paralelismo e reduzir os requisitos de armazenamento.

Os fluxos de trabalho de destino são pipelines do Python executados em workers com mais de uma vCPU.

O MPS é uma tecnologia da NVIDIA que implementa a API CUDA, uma plataforma da NVIDIA compatível com a computação de GPU de uso geral. Para mais informações, consulte o guia do usuário do NVIDIA Multi-Process Service.

Benefícios

  • Melhora o processamento paralelo e a capacidade de processamento geral para pipelines de GPU, especialmente para cargas de trabalho com baixo uso de recursos da GPU.
  • Melhora a utilização da GPU, o que pode reduzir os custos.

Suporte e limitações

  • O MPS é compatível apenas com workers do Dataflow que usam uma única GPU.
  • O pipeline não pode usar opções de pipeline que restringem o paralelismo.
  • Evite exceder a memória disponível da GPU, especialmente para casos de uso que envolvem o carregamento de grandes modelos de machine learning. Equilibre o número de vCPUs e processos do SDK com a memória disponível da GPU necessária para esses processos.
  • O MPS não afeta a simultaneidade de operações não relativas à GPU.
  • O Dataflow Prime não é compatível com o MPS.

Ativar MPS

Ao executar 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 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 aspecto:

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

Se você usar o TensorFlow e ativar os MPS, faça isto:

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

A seguir