Sobre a ML do Dataflow

É possível usar as habilidades de processamento de dados em escala da ML do Dataflow para pipelines de previsão e inferência e para preparação de dados para treinamento.

Diagrama do fluxo de trabalho de ML do Dataflow.

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

Requisitos e limitações

  • A ML do Dataflow é compatível com pipelines em lote e de streaming.
  • A API RunInference é compatível com o Apache Beam 2.40.0 e versões mais recentes.
  • A API MLTransform é compatível com o Apache Beam 2.53.0 e versões mais recentes.
  • Os gerenciadores de modelos estão disponíveis para PyTorch, scikit-learn, TensorFlow, ONNX e TensorRT. Para frameworks incompatíveis, use um gerenciador de modelos personalizado.

Preparação de dados para treinamento

Pipelines de previsão e inferência

A ML do Dataflow combina a capacidade do Dataflow com a API RunInference do Apache Beam. Com a API RunInference, você define as características e propriedades do modelo e transmite essa configuração para a transformação do RunInference. Esse recurso permite que os usuários executem o modelo nos pipelines do Dataflow sem que precisem conhecer os detalhes de implementação do modelo. Escolha o framework mais adequado aos seus dados, como o TensorFlow e o PyTorch.

Executar vários modelos em um pipeline

Use a transformação RunInference para adicionar vários modelos de inferência ao pipeline do Dataflow. Para mais informações, incluindo detalhes de código, consulte Pipelines de vários modelos na documentação do Apache Beam.

Criar um pipeline em várias linguagens

Para usar o RunInference com um pipeline do Java, crie uma transformação do Python entre linguagens. O pipeline chama a transformação, que faz o pré-processamento, o pós-processamento e a inferência.

Para instruções detalhadas e um pipeline de amostra, consulte Como usar o RunInference do SDK do Java.

Usar GPUs com o Dataflow

Para pipelines em lote ou de streaming que exigem o uso de aceleradores, é possível executar pipelines do Dataflow em dispositivos GPU NVIDIA. Para mais informações, consulte Executar um pipeline do Dataflow com GPUs.

Resolver problemas na ML do Dataflow

Nesta seção, você verá estratégias de solução de problemas e links que podem ser úteis ao usar a ML do Dataflow.

A pilha espera que cada tensor seja do mesmo tamanho

Se você fornecer imagens de diferentes tamanhos ou embeddings de palavras de tamanhos diferentes ao usar a API RunInference, poderá 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)']

Esse erro ocorre porque a API RunInference não pode agrupar elementos do tensor de tamanhos diferentes. Para soluções alternativas, consulte Não é possível agrupar elementos do tensor na documentação do Apache Beam.

A seguir