Acerca do Dataflow ML

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 formação.

Diagrama do fluxo de trabalho de ML do Dataflow.

Figura 1. O fluxo de trabalho de ML do Dataflow completo.

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

Pipelines de previsão e inferência

O Dataflow ML combina o poder do Dataflow com a RunInferenceAPI 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 seu 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 multilíngue

Para usar o RunInference com um pipeline Java, crie uma transformação Python multilingue. 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 RunInference a partir do SDK Java.

Use GPUs com o Dataflow

Para pipelines de streaming ou em lote que requerem a utilização de aceleradores, pode executar pipelines do Dataflow em dispositivos de 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 usar 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 encontrar soluções alternativas, consulte o artigo Não é possível processar em lote elementos de tensores 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. Para mais informações, consulte as RunInference práticas recomendadas de transformação.

O que se segue?