É 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
MLTransform
para 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 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
- Confira os notebooks do caso de uso.
- 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
métricas
que podem ser usadas para monitorar a transformação do
RunInference
.