La funzionalità di adattamento giusto utilizza Suggerimenti per le risorse Apache Beam per personalizzare le risorse worker di una pipeline. La possibilità di indirizzare le risorse passaggi specifici della pipeline forniscono ulteriore flessibilità e capacità, e 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 usi la vestibilità corretta, non usare
worker_accelerator
opzione di servizio.
Abilita adattamento corretto
Per attivare il raccordo corretto, utilizza una o più delle indizi delle risorse disponibili nella tua pipeline. Quando utilizzi un hint di risorse nella pipeline, l'adattamento corretto è abilitato automaticamente. Per ulteriori informazioni, consulta Sezione Utilizza i suggerimenti delle risorse di questo documento.
Suggerimenti sulle risorse disponibili
Sono disponibili i seguenti hint delle 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 Worker Dataflow come parametri per il 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
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 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
da
min_ram
a 16 GB e il suggerimento di trasformazione esterna nella gerarchia impostamin_ram
su 32 GB, il suggerimento di 32 GB viene utilizzato per tutte 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
da
accelerator
: il valore più interno nella gerarchia della trasformazione ha la precedenza.- Esempio: se un hint
accelerator
di trasformazione interna è diverso da un hintaccelerator
di trasformazione esterna in una gerarchia, l'hint di trasformazione internaaccelerator
viene utilizzato per la trasformazione interna.
- Esempio: se un hint
Suggerimenti impostati per l'intero vengono trattate come se fossero impostate su una trasformazione più 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 i hint delle risorse per l'intera pipeline quando la esegui dalla riga di comando.
Per configurare il tuo ambiente Python, consulta 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 (trasformazioni) della pipeline in modo programmatico.
Java
Per installare l'SDK Apache Beam per Java, consulta Installa l'SDK Apache Beam.
Puoi impostare i hint delle risorse in modo programmatico sulle trasformazioni della pipeline utilizzando il metodo
ResourceHints
corso.
L'esempio seguente mostra come impostare in modo programmatico i hint delle risorse 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 il metodo
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 il metodo
PTransforms.with_resource_hints
corso.
Per ulteriori informazioni, consulta
ResourceHint
corso.
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 che soddisfi l'unione di hint delle risorse impostati sulle trasformazioni.
Quando non è possibile unire gli indizi delle risorse, l'unione non viene eseguita. Ad esempio, le risorse I suggerimenti per GPU diverse non sono unibili, quindi queste trasformazioni non sono unite.
Puoi anche impedire la fusione aggiungendo un'operazione alla pipeline che forzi Dataflow a materializzare un PCollection
intermedio. Per apprendere
vedi altro
Prevenzione della fusione.
Risolvere i problemi relativi alla vestibilità corretta
Questa sezione fornisce istruzioni per la risoluzione dei problemi comuni relativi alla misura giusta.
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.