Adattabilità

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 alla pipeline passaggi che li richiedono e risorse meno costose per altre fasi della pipeline. Utilizza la soluzione adatta per specificare i requisiti delle risorse per un'intera pipeline per passaggi specifici della pipeline.

Supporto e limitazioni

  • Gli 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 supportati.
  • L'opzione adatta supporta Dataflow Prime.
  • La vestibilità corretta 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 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 durante l'allocazione ai nuovi worker (scalabilità orizzontale) o a worker esistenti (scalabilità verticale).

Ad esempio:

min_ram=NUMBERGB
  • Sostituisci NUMBER con il valore minimo di worker richiesta dalla pipeline o dal passaggio della pipeline.
  • min_ram è una specifica aggregata per worker. it non è una specifica per vCPU. Ad esempio, se imposti min_ram=15GB, set di Dataflow la memoria aggregata disponibile in tutte le vCPU nel worker almeno 15 GB.
accelerator

Un'allocazione di GPU fornite dall'utente che ti consente di controllare l'uso e il costo delle GPU nella pipeline e le relative fasi. 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"
  • Sostituisci GPU_TYPE con il tipo di GPU da utilizzare. Per una lista di 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 la GPU tipo selezionato. Per maggiori dettagli sui tipi di GPU e sulla relativa macchina compatibile di archiviazione, consulta le piattaforme GPU.
    • Se specifichi un tipo di macchina sia nel campo accelerator hint della risorsa e nel tipo di macchina worker opzione pipeline, l'opzione della pipeline viene ignorata durante il corretto adattamento.
  • Per utilizzare GPU NVIDIA con Dataflow, imposta la classe install-nvidia-driver opzione di configurazione.

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 su una trasformazione viene valutato come il valore min_ram più grande hint tra i valori impostati nella trasformazione stessa e tutti e i relativi padre 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 imposta min_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 da min_ram a 16 GB e il suggerimento di trasformazione esterna nella gerarchia imposta min_ram su 8 GB, il suggerimento di 8 GB viene utilizzato per tutte passaggi nella trasformazione esterna che non sono 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 accelerator di trasformazione interna è diverso da un hint accelerator di trasformazione esterna in una gerarchia, l'hint di trasformazione interna accelerator viene utilizzato la trasformazione interna.

Suggerimenti impostati per l'intero vengono trattate come se fossero impostate 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 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 della pipeline (trasformazioni) 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 nelle 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 Installa l'SDK Apache Beam.

Puoi impostare i hint delle risorse in modo programmatico nelle trasformazioni della pipeline utilizzando il metodo PTransforms.with_resource_hints corso. Per ulteriori informazioni, consulta ResourceHint corso.

L'esempio seguente mostra come impostare in modo programmatico i hint delle risorse 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 i hint delle risorse sull'intera pipeline, utilizza --resource_hints quando esegui la pipeline. Per un esempio, vedi Suggerimenti delle risorse della pipeline.

Vai

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 di worker nello stesso pool di worker, nell'ambito del processo ottimizzazione della fusione. Quando le trasformazioni vengono fuse, Dataflow le esegue che soddisfi l'unione di hint delle risorse impostati sulle trasformazioni.

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

Puoi anche impedire la fusione aggiungendo alla pipeline un'operazione che forza Dataflow per materializzare un PCollection intermedio. Per ulteriori informazioni vedi altro Prevenzione della fusione.

Risoluzione dei problemi relativi alla vestibilità corretta

Questa sezione fornisce istruzioni per la risoluzione di problemi comuni relativi a: la 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 una macchina compatibili di testo. Per i dettagli sulla compatibilità, vedi Piattaforme GPU.