É 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.

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
Use o recurso
MLTransformpara preparar seus dados para o treinamento de modelos de ML. Para mais informações, consulte Pré-processar dados comMLTransform.Use o Dataflow com frameworks de ML-OPS, como o Kubeflow Pipelines (KFP) ou o TensorFlow Extended (TFX). Para saber mais, consulte Dataflow ML em fluxos de trabalho de ML.
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 precisar 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.
Evitar erros de falta de memória com modelos grandes
Ao carregar um modelo de ML médio ou grande, sua máquina pode ficar sem memória.
O Dataflow oferece ferramentas para ajudar a evitar erros de falta de memória (OOM) ao carregar modelos de ML. Para mais informações, consulte as práticas recomendadas de transformação do RunInference.
A seguir
- Confira os notebooks do Dataflow ML para ver casos de uso específicos.
- Consulte informações detalhadas sobre como usar o ML com o Apache Beam na documentação de pipelines de IA/ML do Apache Beam.
- Saiba mais sobre a API
RunInference. - Saiba mais sobre as práticas recomendadas do
RunInference. - Saiba mais sobre as métricas
que podem ser usadas para monitorar a transformação do
RunInference.