Penyetelan Tepat Dataflow Prime

Ringkasan

Dataflow Prime adalah platform serverless yang menggunakan penskalaan horizontal dan vertikal untuk mengalokasikan resource pekerja dan pekerja. Anda tidak menentukan jumlah atau ukuran dan bentuk pekerja yang digunakan di pipeline. Untuk menyesuaikan resource pekerja, Anda dapat menggunakan petunjuk resource Apache Beam untuk menentukan persyaratan resource untuk seluruh pipeline atau untuk langkah pipeline tertentu. Fitur Right Fitting Dataflow Prime menggunakan petunjuk resource untuk menyesuaikan resource pekerja untuk pipeline.

Batasan dan persyaratan

  • Petunjuk resource didukung dengan SDK Apache Beam Java dan Python, versi 2.30.0 dan yang lebih baru.
  • Pemasangan Kanan hanya didukung dengan pipeline batch.

Petunjuk referensi yang tersedia

Petunjuk referensi berikut tersedia:

  1. min_ram="numberGB": Jumlah minimum RAM dalam gigabyte yang akan dialokasikan ke pekerja. Dataflow Prime menggunakan nilai ini sebagai batas bawah saat mengalokasikan memori ke pekerja baru (penskalaan horizontal) atau ke pekerja yang ada (penskalaan vertikal).

    • Tetapkan dengan nilai minimum memori pekerja yang diperlukan pipeline atau langkah pipeline.
    • min_ram adalah spesifikasi gabungan per pekerja. Ini bukan spesifikasi per-vCPU. Misalnya, jika Anda menetapkan min_ram=15GB, Dataflow akan menetapkan memori gabungan yang tersedia di semua vCPU dalam worker menjadi minimal 15 GB.
  2. accelerator="type:type;count:number;configuration-options": Jenis GPU, jumlah GPU, dan opsi konfigurasi GPU untuk digunakan. Untuk menggunakan GPU NVIDIA dengan Dataflow, tetapkan opsi konfigurasi install-nvidia-driver.

Penyusunan petunjuk resource secara bertingkat

Petunjuk resource diterapkan ke hierarki transformasi pipeline sebagai berikut:

  • min_ram: Nilai pada transformasi dievaluasi sebagai nilai petunjuk min_ram terbesar di antara nilai yang ditetapkan pada transformasi itu sendiri dan semua induknya dalam hierarki transformasi.
    • Contoh: Jika petunjuk transformasi dalam menetapkan min_ram ke 16 GB, dan petunjuk transformasi luar dalam hierarki menetapkan min_ram menjadi 32 GB, petunjuk 32 GB akan digunakan untuk semua langkah di seluruh transformasi.
    • Contoh: Jika petunjuk transformasi dalam menetapkan min_ram ke 16 GB, dan petunjuk transformasi luar dalam hierarki menetapkan min_ram menjadi 8 GB, petunjuk 8 GB akan digunakan untuk semua langkah di transformasi luar yang tidak ada di transformasi dalam, dan petunjuk 16 GB digunakan untuk semua langkah di transformasi dalam.
  • accelerator: Nilai terdalam dalam hierarki transformasi akan diprioritaskan.
    • Contoh: Jika petunjuk accelerator transformasi dalam berbeda dengan petunjuk accelerator transformasi luar dalam hierarki, petunjuk accelerator transformasi dalam digunakan untuk transformasi dalam.

Menggunakan petunjuk referensi

Anda dapat menetapkan petunjuk resource di seluruh pipeline atau pada langkah pipeline.

Petunjuk resource pipeline

Anda dapat menetapkan petunjuk resource di seluruh pipeline saat menjalankan pipeline dari command line.

Contoh:

    python my_pipeline.py \
        --runner=DataflowRunner \
        --resource_hints=min_ram=numberGB \
        --resource_hints=accelerator="type:type;count:number;install-nvidia-driver" \
        ...

Petunjuk resource langkah pipeline

Anda dapat menetapkan petunjuk resource pada langkah pipeline (transformasi) secara terprogram.

Java

Anda dapat menetapkan petunjuk resource secara terprogram pada transformasi pipeline menggunakan ResourceHints.

Contoh:

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")))

Python

Anda dapat menetapkan petunjuk resource secara terprogram pada transformasi pipeline menggunakan PTransforms.with_resource_hints (lihat juga ResourceHint).

Contoh:

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")

Go

Petunjuk resource tidak didukung di Go.

Penyambungan dan fusi Kanan

Pada beberapa kasus, transformasi yang ditetapkan dengan petunjuk resource yang berbeda dapat dijalankan pada pekerja di kumpulan pekerja yang sama, sebagai bagian dari proses pengoptimalan fusi. Saat transformasi digabungkan, Dataflow mengeksekusinya di lingkungan yang memenuhi gabungan petunjuk resource yang ditetapkan pada transformasi.

Jika petunjuk resource tidak dapat digabungkan, penggabungan tidak akan terjadi. Misalnya, petunjuk resource untuk GPU yang berbeda tidak dapat digabungkan, sehingga transformasi tersebut tidak digabungkan.

Anda juga dapat mencegah fusi dengan menambahkan operasi ke pipeline yang memaksa Dataflow agar mewujudkan PCollection perantara. Untuk mempelajari lebih lanjut, lihat Mencegah fusi.