Acerca de Dataflow ML

Puedes usar las capacidades de procesamiento de datos a escala de Dataflow ML para canalizaciones de inferencia y predicción y para la preparación de datos para el entrenamiento.

Diagrama del flujo de trabajo de Dataflow ML.

Figure 1. El flujo de trabajo completo de Dataflow ML.

Requisitos y limitaciones

  • Dataflow ML admite canalizaciones por lotes y de transmisión.
  • La API de RunInference es compatible con Apache Beam 2.40.0 y versiones posteriores.
  • La API de MLTransform es compatible con Apache Beam 2.53.0 y versiones posteriores.
  • Los controladores de modelos están disponibles para PyTorch, scikit-learn, TensorFlow, ONNX y TensorRT. Para los frameworks no compatibles, puedes usar un controlador de modelo personalizado.

Preparación de datos para el entrenamiento

Canalizaciones de predicción y de inferencia

Dataflow ML combina la potencia de Dataflow con la API de RunInference de Apache Beam. Con la API de RunInference, defines las características y propiedades del modelo y pasas esa configuración a la transformación RunInference. Esta característica permite a los usuarios ejecutar el modelo dentro de 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.

Ejecuta varios modelos en una canalización

Usa la transformación RunInference para agregar varios modelos de inferencia a tu canalización de Dataflow. Para obtener más información, incluidos los detalles de código, consulta Canalizaciones de varios modelos en la documentación de Apache Beam.

Compila una canalización en varios lenguajes

Para usar RunInference con una canalización de Java, crea una transformación de Python entre lenguajes. La canalización llama a la transformación, que realiza el procesamiento previo, el procesamiento posterior y la inferencia.

Para obtener instrucciones detalladas y una canalización de muestra, consulta Usa RunInference desde el SDK de Java.

Usa GPU con Dataflow

Para las canalizaciones por lotes o de transmisión que requieren el uso de aceleradores, puedes ejecutar canalizaciones de Dataflow en dispositivos de GPU de NVIDIA. Para obtener más información, consulta Ejecuta una canalización de Dataflow con GPU.

Soluciona problemas de Dataflow ML

En esta sección, se proporcionan estrategias y vínculos de solución de problemas que pueden resultarte útiles cuando usas Dataflow ML.

La pila espera que cada tensor tenga el mismo tamaño

Si proporcionas imágenes de diferentes tamaños o incorporaciones de palabras de diferentes longitudes cuando usas la API de RunInference, puede ocurrir 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 de RunInference no puede agrupar elementos de tensores de diferentes tamaños. Para obtener soluciones alternativas, consulta No se pueden agrupar los elementos de tensores en la documentación de Apache Beam.

¿Qué sigue?