Puoi utilizzare le funzionalità di elaborazione dei dati scalabili di Dataflow ML per pipeline di previsione e inferenza e per preparazione dei dati per l'addestramento.
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. - Gli handler dei modelli sono disponibili per PyTorch, scikit-learn, TensorFlow, ONNX e TensorRT. Per i framework non supportati, puoi utilizzare un gestore del modello personalizzato.
Preparazione dei dati per l'addestramento
Utilizza la funzionalità
MLTransform
per preparare i dati per l'addestramento dei modelli ML. Per maggiori informazioni, consulta Pre-elaborare i dati conMLTransform
.Utilizza Dataflow con framework ML-OPS, come Kubeflow Pipelines (KFP) o TensorFlow Extended (TFX). Per scoprire di più, consulta Dataflow ML nei flussi di lavoro ML.
Pipeline di previsione e inferenza
Dataflow ML combina la potenza di Dataflow con l'API RunInference
di Apache Beam.
Con l'API RunInference
, definisci le caratteristiche e le proprietà del modello
e passi 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.
Eseguire più modelli in una pipeline
Utilizza la trasformazione RunInference
per aggiungere più modelli di inferenza alla
pipeline Dataflow. Per ulteriori informazioni, inclusi i dettagli del codice, consulta Pipeline multimodello nella documentazione di Apache Beam.
Creare 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, consulta Utilizzare RunInference dall'SDK Java.
Utilizzare le GPU con Dataflow
Per le pipeline batch o in streaming che richiedono l'utilizzo di acceleratori, puoi eseguire le pipeline Dataflow su dispositivi GPU NVIDIA. Per ulteriori informazioni, consulta Eseguire una pipeline Dataflow con GPU.
Risolvere i problemi di Dataflow ML
Questa sezione fornisce strategie e link per la risoluzione dei problemi che potresti trovare utili quando utilizzi Dataflow ML.
La funzione Stack si aspetta che ogni tensore abbia le stesse dimensioni
Se fornisci immagini di dimensioni diverse o embedding 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 tensori di dimensioni diverse. Per le soluzioni alternative, consulta
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 di ML medio o grande, la tua macchina potrebbe esaurire la memoria. Dataflow fornisce strumenti per aiutarti a evitare errori di OOM (out-of-memory) durante il caricamento dei modelli di ML. Utilizza la tabella seguente per determinare l'approccio appropriato per il tuo scenario.
Scenario | Soluzione |
---|---|
I modelli sono abbastanza piccoli da rientrare in memoria. |
Utilizza la trasformazione RunInference senza configurazioni aggiuntive. La trasformazione RunInference condivide i modelli tra i thread. Se puoi inserire un modello per core della CPU sulla tua macchina, la pipeline può utilizzare la configurazione predefinita.
|
Più modelli addestrati in modo diverso eseguono la stessa attività. | Utilizza chiavi per modello. Per ulteriori informazioni, consulta Eseguire l'inferenza ML con più modelli addestrati in modo diverso. |
Un modello viene caricato nella memoria e tutti i processi lo condividono. |
Utilizza il parametro Se stai creando un gestore del modello personalizzato, anziché utilizzare il
parametro |
Devi configurare il numero esatto di modelli caricati sulla tua macchina. |
Per controllare esattamente quanti modelli vengono caricati, utilizza il parametro
Se stai creando un gestore del modello personalizzato, sostituisci il parametro
|
Per ulteriori informazioni sulla gestione della memoria con Dataflow, consulta Risolvere gli errori di esaurimento della memoria di Dataflow.
Passaggi successivi
- Esplora i notebook Dataflow ML su GitHub.
- Consulta la documentazione relativa alle pipeline di AI/ML di Apache Beam per informazioni dettagliate sull'utilizzo dell'apprendimento automatico con Apache Beam.
- Scopri di più sull'API
RunInference
. - Scopri le
metriche
che puoi utilizzare per monitorare la trasformazione
RunInference
.