Puedes usar las capacidades de procesamiento de datos a gran escala de Dataflow ML para las 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
para preparar tus 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 multilingüe
Para usar RunInference con una canalización de Java, crea una transformación de Python multilenguaje. 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 ejemplo, consulta Cómo usar RunInference desde el SDK de Java.
Usa GPU con Dataflow
En el caso de las canalizaciones por lotes o de transmisión que requieren el uso de aceleradores, puedes ejecutar canalizaciones de Dataflow en dispositivos de GPU NVIDIA. Para obtener más información, consulta Ejecuta una canalización de Dataflow con GPUs.
Soluciona problemas de Dataflow ML
En esta sección, se proporcionan estrategias y vínculos para solucionar problemas que pueden resultarte útiles cuando usas el AA de Dataflow.
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.
Evita errores de memoria insuficiente con modelos grandes
Cuando cargas un modelo de AA mediano o grande, es posible que tu máquina se quede sin memoria. Dataflow proporciona herramientas para evitar errores de memoria insuficiente (OOM) cuando se cargan modelos de AA. Usa la siguiente tabla para determinar el enfoque adecuado para tu caso.
Situación | Solución |
---|---|
Los modelos son lo suficientemente pequeños como para caber en la memoria. |
Usa la transformación RunInference sin ninguna configuración adicional. La transformación RunInference comparte los modelos entre los subprocesos. Si puedes ajustar un modelo por núcleo de CPU en tu máquina, entonces
tu canalización puede usar la configuración predeterminada.
|
Varios modelos entrenados de forma diferente realizan la misma tarea. | Usa claves por modelo. Para obtener más información, consulta Ejecuta la inferencia de AA con varios modelos entrenados de forma diferente. |
Se carga un modelo en la memoria y todos los procesos lo comparten. |
Usa el parámetro Si compilas un controlador de modelos personalizado, en lugar de usar el parámetro |
Debes configurar la cantidad exacta de modelos cargados en tu máquina. |
Para controlar exactamente cuántos modelos se cargan, usa el parámetro Si compilas un controlador de modelos personalizado, anula el parámetro
|
Para obtener más información sobre la administración de memoria con Dataflow, consulta Cómo solucionar problemas de errores de memoria insuficiente de Dataflow.
¿Qué sigue?
- Explora los notebooks de Dataflow ML en GitHub.
- 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
.