Adattabilità

La funzionalità di adattamento giusto utilizza gli suggerimenti di risorse Apache Beam per personalizzare le risorse worker per una pipeline. La possibilità di scegliere come target le risorse per passaggi specifici della pipeline fornisce flessibilità e capacità aggiuntive per la pipeline, oltre a potenziali risparmi sui costi. Puoi applicare risorse più costose ai passaggi della pipeline che le richiedono e risorse meno costose per altri passaggi della pipeline. Utilizza il giusto adattamento per specificare i requisiti delle risorse per un'intera pipeline o per passaggi specifici della pipeline.

Assistenza e limitazioni

  • Gli hint delle risorse sono supportati con gli SDK Apache Beam Java e Python, versioni 2.31.0 e successive.
  • Il adattamento ottimale è supportato con le pipeline in modalità batch. Le pipeline in modalità flusso non sono supportate.
  • Il adattamento a destra supporta Dataflow Prime.
  • La vestibilità corretta non supporta FlexRS.
  • Quando utilizzi l'adattamento corretto, non usare l'opzione di servizio worker_accelerator.

Attiva l'adattamento corretto

Per attivare il adattamento corretto, utilizza uno o più dei suggerimenti sulle risorse disponibili nella tua pipeline. Quando utilizzi un suggerimento sulle risorse nella pipeline, l'adattamento corretto viene abilitato automaticamente. Per ulteriori informazioni, consulta la sezione Utilizzare i suggerimenti sulle risorse di questo documento.

Suggerimenti sulle 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 quando assegna la memoria ai nuovi worker (scalabilità orizzontale) o ai worker esistenti (scalabilità verticale).

Ad esempio:

min_ram=NUMBERGB
  • Sostituisci NUMBER con il valore minimo della memoria worker richiesta dalla pipeline o dal passaggio della pipeline.
  • min_ram è una specifica aggregata per singolo lavoratore. Non è una specifica per vCPU. Ad esempio, se imposti min_ram=15GB, Dataflow imposta la memoria aggregata disponibile in tutte le vCPU nel worker su almeno 15 GB.
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 al flag.

Ad esempio:

accelerator="type:GPU_TYPE;count:GPU_COUNT;machine_type:MACHINE_TYPE;CONFIGURATION_OPTIONS"
  • Sostituisci GPU_TYPE con il tipo di GPU da utilizzare. Per un elenco dei tipi di GPU supportati con Dataflow, consulta Supporto di Dataflow per le GPU.
  • Sostituisci GPU_COUNT con il numero di GPU da utilizzare.
  • (Facoltativo) Sostituisci MACHINE_TYPE con il tipo di macchina da utilizzare con le GPU.
    • Il tipo di macchina deve essere compatibile con il tipo di GPU selezionato. Per informazioni dettagliate sui tipi di GPU e sui tipi di macchina compatibili, consulta il documento sulle piattaforme GPU.
    • Se specifichi un tipo di macchina sia nel hint della risorsa accelerator sia nell'opzione della pipeline per il tipo di macchina worker, l'opzione della pipeline viene ignorata durante il corretto adattamento.
  • Per utilizzare le GPU NVIDIA con Dataflow, imposta l'opzione di configurazione install-nvidia-driver.

Per ulteriori informazioni sull'utilizzo delle GPU, consulta GPU con Dataflow.

Nidificazione del suggerimento risorsa

Gli hint delle risorse vengono applicati alla gerarchia di trasformazione della pipeline come segue:

  • min_ram: il valore su una trasformazione viene valutato come il valore del suggerimento min_ram più grande tra i valori impostati sulla trasformazione stessa e su tutti i suoi elementi padre nella gerarchia della trasformazione.
    • Esempio: se un suggerimento di trasformazione interno imposta min_ram su 16 GB e il suggerimento di trasformazione esterno nella gerarchia imposta min_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 quello di trasformazione esterno nella gerarchia imposta min_ram su 8 GB, viene usato un suggerimento di 8 GB per tutti i passaggi della trasformazione outer che non sono nella trasformazione interna e per tutti i passaggi della trasformazione interna viene utilizzato un suggerimento di 16 GB.
  • accelerator: il valore più interno nella gerarchia della trasformazione ha la precedenza.
    • Esempio: se un suggerimento accelerator sulla trasformazione interna è diverso da un suggerimento accelerator sulla trasformazione esterna in una gerarchia, viene utilizzato l'hint della trasformazione interna accelerator.

I suggerimenti impostati per l'intera pipeline vengono trattati come se fossero impostati su una trasformazione più esterna separata.

Utilizza hint sulle risorse

Puoi impostare hint delle risorse sull'intera pipeline o sui passaggi della pipeline.

Suggerimenti delle risorse della pipeline

Puoi impostare hint delle risorse sull'intera pipeline quando esegui la pipeline 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 sulle risorse dei passaggi 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 Installare l'SDK Apache Beam.

Puoi impostare hint delle risorse in modo programmatico sulle trasformazioni della pipeline utilizzando la classe ResourceHints.

L'esempio seguente mostra come impostare hint delle risorse in modo programmatico sulle trasformazioni della pipeline.

pcoll.apply(MyCompositeTransform.of(...)
    .setResourceHints(
        ResourceHints.create()
            .withMinRam("15GB")
            .withAccelerator(
    "type:nvidia-tesla-k80;count:1;install-nvidia-driver")))

pcoll.apply(ParDo.of(new BigMemFn())
    .setResourceHints(
        ResourceHints.create().withMinRam("30GB")))

Per impostare in modo programmatico i suggerimenti sulle risorse per l'intera pipeline, utilizza l'interfaccia di ResourceHintsOptions.

Python

Per installare l'SDK Apache Beam per Python, consulta Installare l'SDK Apache Beam.

Puoi impostare 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 hint delle risorse in modo programmatico sulle trasformazioni della pipeline.

pcoll | MyPTransform().with_resource_hints(
    min_ram="4GB",
    accelerator="type:nvidia-tesla-k80;count:1;install-nvidia-driver")

pcoll | beam.ParDo(BigMemFn()).with_resource_hints(
    min_ram="30GB")

Per impostare hint delle risorse sull'intera pipeline, utilizza l'opzione della pipeline --resource_hints quando esegui la pipeline. Per un esempio, consulta Suggerimenti sulle risorse della pipeline.

Go

I suggerimenti delle risorse non sono supportati in Go.

Aderenza e fusione giusti

In alcuni casi, è possibile eseguire trasformazioni impostate con hint delle risorse diversi sui worker nello stesso pool di worker, nell'ambito del processo di ottimizzazione della fusione. Quando le trasformazioni sono unite, Dataflow le esegue in un ambiente che soddisfa l'unione dei hint delle risorse impostati sulle trasformazioni.

Quando non è possibile unire i suggerimenti sulle risorse, non viene eseguita la fusione. Ad esempio, i suggerimenti delle risorse per GPU diverse non sono unibili, per cui queste trasformazioni non sono unite.

Puoi anche impedire la fusione aggiungendo un'operazione alla pipeline che costringa Dataflow a materializzare un elemento PCollection intermedio. Per scoprire di più, consulta Impedire la fusione.

Risolvere i problemi relativi al posizionamento corretto

Questa sezione fornisce istruzioni per la risoluzione dei problemi più comuni relativi al corretto montaggio.

Configurazione non valida

Quando provi a utilizzare l'adattamento corretto, 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 informazioni sulla compatibilità, consulta l'articolo sulle piattaforme GPU.