À propos de Dataflow ML

Vous pouvez utiliser les fonctionnalités de traitement des données à échelle de Dataflow ML pour les pipelines de prédiction et d'inférence et pour la préparation des données pour l'entraînement.

Schéma du workflow Dataflow ML

Figure 1. Workflow complet de Dataflow ML.

Conditions requises et limites

  • Dataflow ML est compatible avec les pipelines de traitement par lot et par flux.
  • L'API RunInference est compatible avec Apache Beam 2.40.0 et versions ultérieures.
  • L'API MLTransform est compatible avec Apache Beam 2.53.0 et versions ultérieures.
  • Les gestionnaires de modèles sont disponibles pour PyTorch, scikit-learn, TensorFlow, ONNX et TensorRT. Pour les frameworks non compatibles, vous pouvez utiliser un gestionnaire de modèles personnalisés.

Préparation des données pour l'entraînement

Pipelines de prédiction et d'inférence

Dataflow ML combine la puissance de Dataflow avec l'API RunInference d'Apache Beam. L'API RunInference vous permet de définir les caractéristiques et les propriétés du modèle et de transmettre cette configuration à la transformation RunInference. Cette fonctionnalité permet aux utilisateurs d'exécuter le modèle dans leurs pipelines Dataflow sans avoir à connaître les détails de mise en œuvre du modèle. Vous pouvez choisir le framework qui convient le mieux à vos données, tel que TensorFlow et PyTorch.

Exécuter plusieurs modèles dans un pipeline

Utilisez la transformation RunInference pour ajouter plusieurs modèles d'inférence à votre pipeline Dataflow. Pour en savoir plus, y compris sur le code, consultez la page Pipelines multi-modèles dans la documentation Apache Beam.

Créer un pipeline multilingue

Pour utiliser RunInference avec un pipeline Java, créez une transformation Python multilingue. Le pipeline appelle la transformation, qui effectue les opérations de prétraitement, de post-traitement et d'inférence.

Pour obtenir des instructions détaillées et un exemple de pipeline, consultez la page Utiliser RunInference à partir du SDK Java.

Utiliser des GPU avec Dataflow

Pour les pipelines par lot ou par flux qui nécessitent l'utilisation d'accélérateurs, vous pouvez exécuter des pipelines Dataflow sur des appareils GPU NVIDIA. Pour en savoir plus, consultez la page Exécuter un pipeline Dataflow avec des GPU.

Résoudre les problèmes liés à Dataflow ML

Cette section fournit des stratégies de dépannage et des liens qui peuvent vous être utiles lors de l'utilisation de Dataflow ML.

La pile s'attend à ce que chaque Tensor ait la même taille

Si vous fournissez des images de différentes tailles ou des représentations vectorielles continues de mots de différentes longueurs lorsque vous utilisez l'API RunInference, l'erreur suivante peut se produire :

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)']

Cette erreur se produit car l'API RunInference ne peut pas regrouper les éléments de Tensor de tailles différentes. Pour contourner les problèmes, consultez la section Impossible de regrouper les éléments de Tensor dans la documentation Apache Beam.

Étapes suivantes