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, anexeuse_nvidia_mpsao parâmetroworker_accelerator. - Defina o valor
countcomo 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:
- 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_GROWTHcomo true.
- Ative o crescimento da memória chamando
- Use dispositivos lógicos com limites de memória adequados.
- 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?
- Para rever mais práticas recomendadas, consulte o artigo GPUs e paralelismo de trabalhadores.