Adattabilità

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
  • Sostituisci NUMBER con il valore minimo della memoria del worker necessaria per la pipeline o il passaggio della pipeline.
  • min_ram è una specifica aggregata per lavoratore. Non è una specifica per vCPU. Ad esempio, se imposti min_ram=15GB, Dataflow imposta la memoria aggregata disponibile su tutte le vCPU del 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 del 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 relativi tipi di macchine compatibili, consulta Piattaforme GPU.
    • Se specifichi un tipo di macchina sia nel accelerator suggerimento della risorsa sia nell'opzione pipeline per il tipo di macchina del worker, l'opzione pipeline viene ignorata durante l'adattamento corretto.
  • Per utilizzare le GPU NVIDIA con Dataflow, imposta la install-nvidia-driver opzione di configurazione.

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'istruzione min_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 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 il suggerimento di trasformazione esterna nella gerarchia imposta min_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.
  • 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 esterna accelerator in una gerarchia, viene utilizzato il suggerimento per la trasformazione interna accelerator 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.