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.

Anforderungen und Einschränkungen
- Dataflow ML unterstützt Batch- und Streamingpipelines.
- Die
RunInferenceAPI wird in Apache Beam 2.40.0 und höheren Versionen unterstützt. - Die
MLTransformAPI 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
Verwenden Sie das Feature
MLTransform, um Ihre Daten für das Training von ML-Modellen vorzubereiten. Weitere Informationen finden Sie unter Daten mitMLTransformvorverarbeiten.Verwenden Sie Dataflow mit ML-OPS-Frameworks wie Kubeflow Pipelines (KFP) oder TensorFlow Extended (TFX). Weitere Informationen finden Sie unter Dataflow ML in ML-Workflows.
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
Mit der RunInference-Transformation können Sie Ihrer Dataflow-Pipeline mehrere Inferenzmodelle hinzufü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, Nachbearbeitung und Inferenz durchführt.
Eine ausführliche Anleitung und eine Beispielpipeline finden Sie unter RunInference über das Java SDK verwenden.
GPUs mit Dataflow verwenden
Für Batch- oder Streamingpipelines, für die Beschleuniger erforderlich sind, 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
In diesem Abschnitt finden Sie Strategien zur Fehlerbehebung und Links, die bei der Verwendung von Dataflow ML hilfreich sein können.
Für „Stack“ müssen alle Tensoren dieselbe Größe haben.
Wenn Sie bei der Verwendung der RunInference API Bilder unterschiedlicher Größe oder Wort-Embeddings 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. Informationen zu Problemumgehungen finden Sie in der Apache Beam-Dokumentation unter Unable to batch tensor elements.
Fehler wegen unzureichenden Arbeitsspeichers bei großen Modellen vermeiden
Wenn Sie ein mittelgroßes oder großes ML-Modell laden, kann es sein, dass auf Ihrem Computer nicht genügend Arbeitsspeicher vorhanden ist.
Dataflow bietet Tools, mit denen Sie OOM-Fehler („Out Of Memory“) beim Laden von ML-Modellen vermeiden können. Weitere Informationen finden Sie unter Best Practices für RunInference-Transformationen.
Nächste Schritte
- Dataflow ML-Notebooks mit spezifischen Anwendungsfällen
- Ausführliche Informationen zur Verwendung von ML mit Apache Beam finden Sie in der Dokumentation zu KI/ML-Pipelines von Apache Beam.
- Weitere Informationen zur
RunInferenceAPI RunInference-Best Practices- Messwerte, mit denen Sie die
RunInference-Transformation überwachen können.