Informationen zu Dataflow ML

Sie können die Verarbeitungsfunktionen für große Datenmengen von Dataflow ML für Vorhersage- und Inferenzpipelines sowie für die Datenvorbereitung für das Training verwenden.

Diagramm des Dataflow ML-Workflows.

Abbildung 1. Den gesamten Dataflow ML-Workflow.

Anforderungen und Einschränkungen

  • Dataflow ML unterstützt Batch- und Streamingpipelines.
  • Die RunInference API wird in Apache Beam 2.40.0 und höheren Versionen unterstützt.
  • Die MLTransform API wird in Apache Beam 2.53.0 und höheren Versionen unterstützt.
  • Modell-Handler sind für PyTorch, scikit-learn, TensorFlow, OnNX und TensorRT verfügbar. Für nicht unterstützte Frameworks können Sie einen benutzerdefinierten Modell-Handler verwenden.

Datenvorbereitung für das Training

Vorhersage- und Inferenzpipelines

Dataflow ML kombiniert die Leistungsfähigkeit von Dataflow mit der RunInference API von Apache Beam. Mit der RunInference API definieren Sie die Merkmale und Attribute des Modells und übergeben diese Konfiguration an die RunInference-Transformation. Mit diesem Feature können Nutzer das Modell in ihren Dataflow-Pipelines ausführen, ohne die Implementierungsdetails des Modells zu kennen. Sie können das Framework auswählen, das am besten zu Ihren Daten passt, z. B. TensorFlow und PyTorch.

Mehrere Modelle in einer Pipeline ausführen

Verwenden Sie die RunInference-Transformation, um Ihrer Dataflow-Pipeline mehrere Inferenzmodelle hinzuzufügen. Weitere Informationen und Codedetails finden Sie in der Apache Beam-Dokumentation unter Multi-Modell-Pipelines.

Sprachübergreifende Pipeline erstellen

Wenn Sie RunInference mit einer Java-Pipeline verwenden möchten, erstellen Sie eine sprachübergreifende Python-Transformation. Die Pipeline ruft die Transformation auf, die die Vorverarbeitung, Nachverarbeitung und Inferenz ausführt.

Eine ausführliche Anleitung und eine Beispielpipeline finden Sie unter RunInference aus dem Java SDK verwenden.

GPUs mit Dataflow verwenden

Für Batch- oder Streamingpipelines, die die Verwendung von Beschleunigern erfordern, können Sie Dataflow-Pipelines auf NVIDIA-GPU-Geräten ausführen. Weitere Informationen finden Sie unter Dataflow-Pipeline mit GPUs ausführen.

Fehlerbehebung für Dataflow ML

Dieser Abschnitt enthält Strategien zur Fehlerbehebung und Links, die bei der Verwendung von Dataflow ML hilfreich sein können.

Stack erwartet, dass jeder Tensor die gleiche Größe hat

Wenn Sie bei Verwendung der RunInference API Bilder unterschiedlicher Größe oder Worteinbettungen unterschiedlicher Länge bereitstellen, kann der folgende Fehler auftreten:

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

Dieser Fehler tritt auf, weil die RunInference API keine Tensor-Elemente unterschiedlicher Größe im Batch verarbeiten kann. Problemumgehungen finden Sie in der Apache Beam-Dokumentation unter Tensor-Elemente können nicht im Batch verarbeitet werden.

Nächste Schritte