Pode usar as capacidades de processamento de dados em grande escala do Dataflow ML para pipelines de previsão e inferência e para preparação de dados para preparação.
Requisitos e limitações
- O Dataflow ML suporta pipelines em lote e por streaming.
- A API
RunInference
é suportada no Apache Beam 2.40.0 e versões posteriores. - A API
MLTransform
é suportada no Apache Beam 2.53.0 e versões posteriores. - Os controladores de modelos estão disponíveis para PyTorch, scikit-learn, TensorFlow, ONNX e TensorRT. Para frameworks não suportados, pode usar um controlador de modelo personalizado.
Preparação de dados para a preparação
Use a funcionalidade
MLTransform
para preparar os seus dados para a preparação de modelos de AA. Para mais informações, consulte o artigo Pré-processe dados com oMLTransform
.Use o Dataflow com frameworks de ML-OPS, como o Kubeflow Pipelines (KFP) ou o TensorFlow Extended (TFX). Para saber mais, consulte o artigo Dataflow ML em fluxos de trabalho de ML.
Pipelines de previsão e inferência
O Dataflow ML combina o poder do Dataflow com a API
RunInference
do Apache Beam.
Com a API RunInference
, define as caraterísticas e as propriedades do modelo
e transmite essa configuração à transformação RunInference
. Esta funcionalidade permite aos utilizadores executar o modelo nos respetivos pipelines do Dataflow sem terem de conhecer os detalhes de implementação do modelo. Pode escolher a framework que melhor se
adapta aos seus dados, como o TensorFlow e o PyTorch.
Execute vários modelos num pipeline
Use a transformação RunInference
para adicionar vários modelos de inferência ao pipeline do Dataflow. Para mais informações, incluindo detalhes do código,
consulte o artigo Pipelines multimodelos
na documentação do Apache Beam.
Crie um pipeline multilingue
Para usar o RunInference com um pipeline Java, crie uma transformação Python multilíngue. O pipeline chama a transformação, que faz o pré-processamento, o pós-processamento e a inferência.
Para ver instruções detalhadas e um exemplo de pipeline, consulte o artigo Usar o RunInference a partir do SDK Java.
Use GPUs com o Dataflow
Para pipelines de processamento em lote ou streaming que requerem a utilização de aceleradores, pode executar pipelines do Dataflow em dispositivos com GPU NVIDIA. Para mais informações, consulte o artigo Execute um pipeline do Dataflow com GPUs.
Resolva problemas com o Dataflow ML
Esta secção fornece estratégias de resolução de problemas e links que pode considerar úteis quando usa o Dataflow ML.
A função Stack espera que cada tensor tenha o mesmo tamanho
Se fornecer imagens de tamanhos diferentes ou incorporações de palavras de comprimentos diferentes
quando usar a API RunInference
, pode ocorrer o seguinte erro:
File "/beam/sdks/python/apache_beam/ml/inference/pytorch_inference.py", line 232, in run_inference batched_tensors = torch.stack(key_to_tensor_list[key]) RuntimeError: stack expects each tensor to be equal size, but got [12] at entry 0 and [10] at entry 1 [while running 'PyTorchRunInference/ParDo(_RunInferenceDoFn)']
Este erro ocorre porque a API RunInference
não consegue processar em lote elementos de tensores de tamanhos diferentes. Para ver soluções alternativas, consulte o artigo
Não é possível processar em lote elementos de tensor
na documentação do Apache Beam.
Evite erros de falta de memória com modelos grandes
Quando carrega um modelo de ML médio ou grande, a sua máquina pode ficar sem memória. O Dataflow fornece ferramentas para ajudar a evitar erros de falta de memória (OOM) ao carregar modelos de ML. Use a tabela seguinte para determinar a abordagem adequada para o seu cenário.
Cenário | Solução |
---|---|
Os modelos são suficientemente pequenos para caberem na memória. |
Use a transformação RunInference sem configurações adicionais. A transformação RunInference partilha os modelos em vários
processos. Se conseguir ajustar um modelo por núcleo da CPU na sua máquina, então
o seu pipeline pode usar a configuração predefinida.
|
Vários modelos preparados de forma diferente estão a realizar a mesma tarefa. | Use chaves por modelo. Para mais informações, consulte o artigo Execute a inferência de ML com vários modelos preparados de forma diferente. |
Um modelo é carregado na memória e todos os processos partilham este modelo. |
Use o parâmetro Se estiver a criar um controlador de modelo personalizado, em vez de usar o parâmetro |
Tem de configurar o número exato de modelos carregados na sua máquina. |
Para controlar exatamente quantos modelos são carregados, use o parâmetro
Se estiver a criar um controlador de modelo personalizado, substitua o parâmetro
|
Para mais informações sobre a gestão de memória com o Dataflow, consulte o artigo Resolva problemas de erros de falta de memória do Dataflow.
O que se segue?
- Explore os blocos de notas de ML do Dataflow no GitHub.
- Obtenha informações detalhadas sobre a utilização da AA com o Apache Beam na documentação de pipelines de IA/AA do Apache Beam.
- Saiba mais acerca da API
RunInference
. - Saiba mais sobre as
métricas
que pode usar para monitorizar a sua transformação
RunInference
.