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
, anexeuse_nvidia_mps
ao parâmetroworker_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:
- 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.
- Ative o crescimento de memória chamando
- Use dispositivos lógicos com os limites de memória adequados.
- 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
- Para analisar mais práticas recomendadas, consulte GPUs e paralelismo de worker.