La funzionalità di adattamento giusto utilizza i suggerimenti delle risorse Apache Beam per personalizzare le risorse worker per una pipeline. La possibilità di indirizzare le risorse a passaggi specifici della pipeline offre ulteriori flessibilità e capacità, oltre a 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 soluzione adatta per specificare i requisiti delle risorse per un'intera pipeline o per i passaggi specifici della pipeline.
Supporto e limitazioni
- I hint delle risorse sono supportati con gli SDK Java e Python di Apache Beam, versioni 2.31.0 e successive.
- Il adattamento corretto è supportato con le pipeline in modalità batch. Le pipeline di flusso non sono supportate.
- L'opzione adatta supporta Dataflow Prime.
- La vestibilità corretta non supporta FlexRS.
- Quando utilizzi l'adattamento corretto, non utilizzare l'opzione di servizio
worker_accelerator
.
Abilita adattamento corretto
Per attivare l'adattamento corretto, utilizza uno o più hint delle risorse disponibili nella tua pipeline. Quando utilizzi un hint delle risorse nella pipeline, viene abilitato automaticamente l'adattamento corretto. Per ulteriori informazioni, consulta la sezione Utilizza i suggerimenti delle risorse di questo documento.
Suggerimenti delle risorse disponibili
Sono disponibili i seguenti hint delle risorse.
Suggerimento risorsa | Descrizione |
---|---|
min_ram |
La quantità minima di RAM in gigabyte da allocare ai worker. Dataflow utilizza questo valore come limite inferiore nell'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 consente di controllare l'utilizzo e il costo delle GPU nella pipeline e nelle relative fasi. 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 dei suggerimenti delle risorse
Gli hint delle risorse vengono applicati alla gerarchia di trasformazione della pipeline come segue:
min_ram
: il valore di una trasformazione viene valutato come il valore del suggerimentomin_ram
più grande tra i valori impostati nella trasformazione stessa e in tutti gli elementi padre nella gerarchia della trasformazione.- Esempio: se un hint di trasformazione interno imposta
min_ram
su 16 GB e il hint di trasformazione esterna nella gerarchia impostamin_ram
su 32 GB, un hint di 32 GB viene utilizzato per tutti i passaggi dell'intera trasformazione. - Esempio: se un hint di trasformazione interno imposta
min_ram
su 16 GB e il hint di trasformazione esterna nella gerarchia impostamin_ram
su 8 GB, un hint di 8 GB viene utilizzato per tutti i passaggi della trasformazione esterna che non si trovano nella trasformazione interna e un hint di 16 GB viene utilizzato per tutti i passaggi nella trasformazione interna.
- Esempio: se un hint di trasformazione interno imposta
accelerator
: il valore più interno nella gerarchia della trasformazione ha la precedenza.- Esempio: se un hint di trasformazione interna
accelerator
è diverso da un hint di trasformazione internaaccelerator
in una gerarchia, il hint di trasformazione internaaccelerator
viene utilizzato per la trasformazione interna.
- Esempio: se un hint di trasformazione interna
I suggerimenti impostati per l'intera pipeline vengono trattati come se fossero impostati su una trasformazione più esterna separata.
Utilizza i suggerimenti delle risorse
Puoi impostare hint delle risorse per l'intera pipeline o per i passaggi della pipeline.
Suggerimenti delle risorse della pipeline
Puoi impostare hint delle risorse per l'intera pipeline quando la esegui dalla riga di comando.
Per configurare il tuo 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 delle risorse del passaggio della pipeline
Puoi impostare hint delle risorse sui passaggi della pipeline (trasformazioni) in modo programmatico.
Java
Per installare l'SDK Apache Beam per Java, consulta Installare l'SDK Apache Beam.
Puoi impostare i hint delle risorse in modo programmatico sulle trasformazioni della pipeline utilizzando la
classe ResourceHints
.
L'esempio seguente mostra come impostare i hint delle 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 i hint delle risorse nell'intera pipeline, utilizza
l'interfaccia di ResourceHintsOptions
.
Python
Per installare l'SDK Apache Beam per Python, consulta Installare l'SDK Apache Beam.
Puoi impostare i hint delle risorse in modo programmatico sulle trasformazioni della pipeline utilizzando la
classe PTransforms.with_resource_hints
.
Per ulteriori informazioni, consulta il corso ResourceHint
.
L'esempio seguente mostra come impostare i hint delle 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 hint delle risorse per l'intera pipeline, utilizza l'opzione --resource_hints
quando esegui la pipeline. Ad esempio, consulta Suggerimenti delle risorse della pipeline.
Go
I suggerimenti delle risorse non sono supportati in Go.
Adattamento e fusione giusti
In alcuni casi, è possibile eseguire trasformazioni impostate con diversi hint delle risorse 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 hint delle risorse impostati sulle trasformazioni.
Quando non è possibile unire i hint delle risorse, non viene eseguita la fusione. Ad esempio, i suggerimenti delle risorse per GPU diverse non sono unibili, quindi queste trasformazioni non sono unite.
Puoi anche impedire la fusione aggiungendo alla pipeline un'operazione che obbliga
Dataflow a materializzare un elemento PCollection
intermedio. Per scoprire
di più, consulta
Prevenire la fusione.
Risoluzione dei problemi relativi alla vestibilità corretta
Questa sezione fornisce istruzioni per la risoluzione dei problemi comuni relativi alla vestibilità perfetta.
Configurazione non valida
Quando provi a utilizzare la vestibilità corretta, 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.