La funzionalità di adattamento utilizza suggerimenti sulle risorse Apache Beam per personalizzare le risorse dei worker per una pipeline. La possibilità di scegliere come target le risorse per determinate fasi della pipeline offre maggiore flessibilità e funzionalità alla pipeline, nonché potenziali risparmi sui costi. Puoi applicare risorse più costose ai passaggi della pipeline che le richiedono e risorse meno costose ad altri passaggi della pipeline. Utilizza la giusta approssimazione per specificare i requisiti delle risorse per un'intera pipeline o per passaggi specifici della pipeline.
Supporto e limitazioni
- Gli indicatori delle risorse sono supportati con gli SDK Apache Beam Java e Python, versioni 2.31.0 e successive.
- L'adattabilità è supportata con le pipeline batch. Le pipeline di flusso non sono supportate.
- L'adattabilità supporta Dataflow Prime.
- La misura giusta non supporta FlexRS.
- Quando utilizzi la misura giusta, non utilizzare l'
worker_accelerator
opzione di servizio.
Regolare l'indossabilità
Per attivare la giusta adattabilità, utilizza uno o più suggerimenti sulle risorse disponibili nella pipeline. Quando utilizzi un indicazione della risorsa nella pipeline, la funzionalità di adattamento corretto viene attivata automaticamente. Per maggiori informazioni, consulta la sezione Utilizzare gli indicatori delle risorse di questo documento.
Suggerimenti sulle risorse disponibili
Sono disponibili i seguenti suggerimenti per le risorse.
Suggerimento sulla risorsa | Descrizione |
---|---|
min_ram |
La quantità minima di RAM in gigabyte da allocare ai worker. Dataflow utilizza questo valore come limite inferiore per l'allocazione della memoria ai nuovi worker (scalabilità orizzontale) o ai worker esistenti (scalabilità verticale). Ad esempio: min_ram=NUMBERGB
|
accelerator |
Un'allocazione di GPU fornita dall'utente che ti consente di controllare l'utilizzo e il costo delle GPU nella pipeline e nei relativi passaggi. Specifica il tipo e il numero di GPU da collegare ai worker Dataflow come parametri del flag. Ad esempio: accelerator="type:GPU_TYPE;count:GPU_COUNT;machine_type:MACHINE_TYPE;CONFIGURATION_OPTIONS"
Per ulteriori informazioni sull'utilizzo delle GPU, consulta GPU con Dataflow. |
Nidificazione di suggerimenti sulle risorse
I suggerimenti sulle risorse vengono applicati alla gerarchia di trasformazione della pipeline come segue:
min_ram
: il valore di una trasformazione viene valutato come il valore dell'istruzionemin_ram
suggerimento più grande tra i valori impostati sulla trasformazione stessa e su tutti i suoi elementi principali nella gerarchia della trasformazione.- Esempio: se un suggerimento di trasformazione interna imposta
min_ram
su 16 GB e il suggerimento di trasformazione esterna nella gerarchia impostamin_ram
su 32 GB, viene utilizzato un suggerimento di 32 GB per tutti i passaggi dell'intera trasformazione. - Esempio: se un suggerimento di trasformazione interna imposta
min_ram
su 16 GB e il suggerimento di trasformazione esterna nella gerarchia impostamin_ram
su 8 GB, viene utilizzato un suggerimento di 8 GB per tutti i passaggi della trasformazione esterna che non sono nella trasformazione interna e un suggerimento di 16 GB per tutti i passaggi della trasformazione interna.
- Esempio: se un suggerimento di trasformazione interna imposta
accelerator
: ha la precedenza il valore più interno nella gerarchia della trasformazione.- Esempio: se un suggerimento per la trasformazione interna
accelerator
è diverso da un suggerimento per la trasformazione esternaaccelerator
in una gerarchia, viene utilizzato il suggerimento per la trasformazione internaaccelerator
per la trasformazione interna.
- Esempio: se un suggerimento per la trasformazione interna
I suggerimenti impostati per l'intera pipeline vengono trattati come se fossero impostati su una trasformazione esterna separata.
Utilizzare i suggerimenti per le risorse
Puoi impostare gli indizi sulle risorse sull'intera pipeline o sui singoli passaggi.
Suggerimenti per le risorse della pipeline
Puoi impostare gli indizi sulle risorse nell'intera pipeline quando la esegui dalla riga di comando.
Per configurare l'ambiente Python, consulta la guida rapida di Python.
Esempio:
python my_pipeline.py \
--runner=DataflowRunner \
--resource_hints=min_ram=numberGB \
--resource_hints=accelerator="type:type;count:number;install-nvidia-driver" \
...
Suggerimenti per le risorse dei passaggi della pipeline
Puoi impostare gli indizi sulle risorse nei passaggi (trasformazioni) della pipeline in modo programmatico.
Java
Per installare l'SDK Apache Beam per Java, consulta Installa l'SDK Apache Beam.
Puoi impostare gli indizi sulle risorse in modo programmatico sulle trasformazioni della pipeline utilizzando la classe ResourceHints
.
L'esempio seguente mostra come impostare gli indizi sulle risorse in modo programmatico sulle trasformazioni della pipeline.
pcoll.apply(MyCompositeTransform.of(...)
.setResourceHints(
ResourceHints.create()
.withMinRam("15GB")
.withAccelerator(
"type:nvidia-tesla-l4;count:1;install-nvidia-driver")))
pcoll.apply(ParDo.of(new BigMemFn())
.setResourceHints(
ResourceHints.create().withMinRam("30GB")))
Per impostare in modo programmatico gli indizi delle risorse nell'intera pipeline, utilizza
l'interfaccia ResourceHintsOptions
.
Python
Per installare l'SDK Apache Beam per Python, consulta Installare l'SDK Apache Beam.
Puoi impostare gli indizi sulle risorse in modo programmatico sulle trasformazioni della pipeline utilizzando la classe PTransforms.with_resource_hints
.
Per ulteriori informazioni, consulta la
classe ResourceHint
.
L'esempio seguente mostra come impostare gli indizi sulle risorse in modo programmatico sulle trasformazioni della pipeline.
pcoll | MyPTransform().with_resource_hints(
min_ram="4GB",
accelerator="type:nvidia-tesla-l4;count:1;install-nvidia-driver")
pcoll | beam.ParDo(BigMemFn()).with_resource_hints(
min_ram="30GB")
Per impostare gli indizi sulle risorse nell'intera pipeline, utilizza l'opzione --resource_hints
pipeline quando esegui la pipeline. Per un esempio, consulta
Suggerimenti per le risorse della pipeline.
Vai
Gli indizi sulle risorse non sono supportati in Go.
Adattamento e fusione giusti
In alcuni casi, le trasformazioni impostate con diversi suggerimenti sulle risorse possono essere eseguite sui worker nello stesso pool di worker, nell'ambito del processo di ottimizzazione della fusione. Quando le trasformazioni vengono fuse, Dataflow le esegue in un ambiente che soddisfa l'unione degli indizi delle risorse impostati sulle trasformazioni.
Quando non è possibile unire gli indizi delle risorse, l'unione non viene eseguita. Ad esempio, i suggerimenti per le risorse per GPU diverse non sono unibili, pertanto queste trasformazioni non vengono fuse.
Puoi anche impedire la fusione aggiungendo un'operazione alla pipeline che forzi Dataflow a materializzare un PCollection
intermedio. Per scoprire di più, consulta Impedire la fusione.
Risolvere i problemi di adattabilità
Questa sezione fornisce istruzioni per la risoluzione dei problemi comuni relativi all'adattamento corretto.
Configurazione non valida
Quando provi a utilizzare la misura giusta, si verifica il seguente errore:
Workflow failed. Causes: One or more operations had an error: 'operation-OPERATION_ID':
[UNSUPPORTED_OPERATION] 'NUMBER vCpus with NUMBER MiB memory is
an invalid configuration for NUMBER count of 'GPU_TYPE' in family 'MACHINE_TYPE'.'.
Questo errore si verifica quando il tipo di GPU selezionato non è compatibile con il tipo di macchina selezionato. Per risolvere questo errore, seleziona un tipo di GPU e un tipo di macchina compatibili. Per i dettagli sulla compatibilità, vedi Piattaforme GPU.