Adattabilità

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
  • Sostituisci NUMBER con il valore minimo della memoria worker richiesto dalla pipeline o dal passaggio della pipeline.
  • min_ram è una specifica aggregata per worker. Non è una specifica per vCPU. Ad esempio, se imposti min_ram=15GB, Dataflow imposta la memoria aggregata disponibile in tutte le vCPU nel worker ad almeno 15 GB.
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"
  • 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 maggiori dettagli sui tipi di GPU e sui relativi tipi di macchine compatibili, vedi Piattaforme GPU.
    • Se specifichi un tipo di macchina sia nel suggerimento per le risorse accelerator sia nell'opzione pipeline del 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 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 suggerimento min_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 imposta min_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 imposta min_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.
  • 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 interna accelerator in una gerarchia, il hint di trasformazione interna accelerator viene utilizzato per la 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.