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.
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
Usa la función
MLTransform
a fin de preparar los datos para entrenar modelos de AA. Para obtener más información, consulta Preprocesa datos conMLTransform
.Usa Dataflow con frameworks de ML-OPS, como Kubeflow Pipelines (KFP) o TensorFlow Extended (TFX). Para obtener más información, consulta Dataflow ML en flujos de trabajo de AA.
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?
- Explora los notebooks de casos de uso.
- Obtén información detallada sobre el uso del AA con Apache Beam en la documentación de canalizaciones de IA/AA de Apache Beam.
- Obtén más información sobre la API de
RunInference
. - Obtén más información sobre las métricas que puedes usar para supervisar tu transformación
RunInference
.