Informazioni su Dataflow ML

Puoi utilizzare le funzionalità di elaborazione dei dati su larga scala di Dataflow ML per le pipeline di previsione e inferenza e per la preparazione dei dati per l'addestramento.

Diagramma del flusso di lavoro
Dataflow ML.

Figura 1. Il flusso di lavoro Dataflow ML completo.

Requisiti e limitazioni

  • Dataflow ML supporta le pipeline in batch e in streaming.
  • L'API RunInference è supportata in Apache Beam 2.40.0 e versioni successive.
  • L'API MLTransform è supportata in Apache Beam 2.53.0 e versioni successive.
  • I gestori di modelli sono disponibili per PyTorch, scikit-learn, TensorFlow, ONNX e TensorRT. Per i framework non supportati, puoi utilizzare un gestore di modelli personalizzato.

Preparazione dei dati per l'addestramento

Pipeline di previsione e inferenza

Dataflow ML combina la potenza di Dataflow con l'RunInference API di Apache Beam. Con l'API RunInference, definisci le caratteristiche e le proprietà del modello e trasferisci la configurazione alla trasformazione RunInference. Questa funzionalità consente agli utenti di eseguire il modello all'interno delle pipeline Dataflow senza dover conoscere i dettagli di implementazione del modello. Puoi scegliere il framework più adatto ai tuoi dati, ad esempio TensorFlow e PyTorch.

Esegui più modelli in una pipeline

Utilizza la trasformazione RunInference per aggiungere più modelli di inferenza alla tua pipeline Dataflow. Per ulteriori informazioni, inclusi i dettagli del codice, consulta Pipeline multimodello nella documentazione di Apache Beam.

Crea una pipeline multilingue

Per utilizzare RunInference con una pipeline Java, crea una trasformazione Python cross-language. La pipeline chiama la trasformazione, che esegue la pre-elaborazione, la post-elaborazione e l'inferenza.

Per istruzioni dettagliate e una pipeline di esempio, vedi Utilizzo di RunInference dall'SDK Java.

Utilizzare le GPU con Dataflow

Per le pipeline batch o di streaming che richiedono l'utilizzo di acceleratori, puoi eseguire pipeline Dataflow su dispositivi GPU NVIDIA. Per saperne di più, consulta Esegui una pipeline Dataflow con GPU.

Risolvere i problemi relativi a Dataflow ML

Questa sezione fornisce strategie e link per la risoluzione dei problemi che potresti trovare utili quando utilizzi Dataflow ML.

Stack prevede che ogni tensore abbia le stesse dimensioni

Se fornisci immagini di dimensioni diverse o incorporamenti di parole di lunghezze diverse quando utilizzi l'API RunInference, potrebbe verificarsi il seguente errore:

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

Questo errore si verifica perché l'API RunInference non può raggruppare elementi tensore di dimensioni diverse. Per le soluzioni alternative, consulta la sezione Impossibile raggruppare gli elementi tensore nella documentazione di Apache Beam.

Evitare errori di esaurimento della memoria con modelli di grandi dimensioni

Quando carichi un modello ML medio o grande, la tua macchina potrebbe esaurire la memoria. Dataflow fornisce strumenti per evitare errori di memoria insufficiente (OOM) durante il caricamento dei modelli di ML. Per saperne di più, consulta le best practice per la trasformazione RunInference.

Passaggi successivi