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 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
  • Sostituisci NUMBER con il valore minimo di worker richiesta dalla pipeline o dal passaggio della pipeline.
  • min_ram è una specifica aggregata per lavoratore. 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 essere di 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 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 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 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 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

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'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 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 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: 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 per la trasformazione interna.

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.