Acerca de Dataflow ML

Puedes usar las funciones de procesamiento de datos a gran escala de Dataflow ML para flujos de procesamiento de predicción e inferencia y para preparar datos para el entrenamiento.

Diagrama del flujo de trabajo de Dataflow ML.

Imagen 1. Flujo de trabajo completo de Dataflow ML.

Requisitos y limitaciones

  • Dataflow ML admite flujos de procesamiento por lotes y de streaming.
  • La API RunInference es compatible con Apache Beam 2.40.0 y versiones posteriores.
  • La API MLTransform es compatible con Apache Beam 2.53.0 y versiones posteriores.
  • Hay controladores de modelos disponibles para PyTorch, scikit-learn, TensorFlow, ONNX y TensorRT. En el caso de los frameworks no compatibles, puedes usar un controlador de modelo personalizado.

Preparación de los datos para el entrenamiento

Flujos de procesamiento de predicción e inferencia

Dataflow ML combina la potencia de Dataflow con la RunInference API de Apache Beam. Con la API RunInference, defines las características y las propiedades del modelo y pasas esa configuración a la transformación RunInference. Esta función permite a los usuarios ejecutar el modelo en sus canalizaciones de Dataflow sin necesidad de conocer los detalles de implementación del modelo. Puedes elegir el framework que mejor se adapte a tus datos, como TensorFlow y PyTorch.

Ejecutar varios modelos en una canalización

Usa la transformación RunInference para añadir varios modelos de inferencia a tu flujo de procesamiento de Dataflow. Para obtener más información, incluidos los detalles del código, consulta Pipelines multimodelos en la documentación de Apache Beam.

Crear un flujo de procesamiento multilingüe

Para usar RunInference con una canalización de Java, crea una transformación de Python entre lenguajes. El flujo llama a la transformación, que realiza el preprocesamiento, el posprocesamiento y la inferencia.

Para obtener instrucciones detalladas y un ejemplo de flujo de procesamiento, consulta Usar RunInference desde el SDK de Java.

Usar GPUs con Dataflow

En el caso de las canalizaciones por lotes o de streaming que requieran el uso de aceleradores, puedes ejecutar canalizaciones de Dataflow en dispositivos con GPU NVIDIA. Para obtener más información, consulta el artículo sobre cómo ejecutar una canalización de Dataflow con GPUs.

Solucionar problemas de Dataflow ML

En esta sección se ofrecen estrategias y enlaces para solucionar problemas que pueden ser útiles al usar Dataflow ML.

Stack espera que cada tensor tenga el mismo tamaño

Si proporcionas imágenes de diferentes tamaños o representaciones de palabras de diferentes longitudes al usar la API RunInference, puede producirse el siguiente error:

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 error se produce porque la API RunInference no puede agrupar elementos de tensor de diferentes tamaños. Para obtener soluciones alternativas, consulta Unable to batch tensor elements en la documentación de Apache Beam.

Evitar errores de falta de memoria con modelos grandes

Cuando cargas un modelo de aprendizaje automático mediano o grande, es posible que tu máquina se quede sin memoria. Dataflow proporciona herramientas para evitar errores de falta de memoria (OOM) al cargar modelos de aprendizaje automático. Para obtener más información, consulta las RunInferenceprácticas recomendadas para las transformaciones.

Siguientes pasos