Penyesuaian yang tepat

Fitur penyesuaian yang tepat menggunakan petunjuk resource Apache Beam untuk menyesuaikan resource pekerja untuk pipeline. Kemampuan untuk menargetkan resource ke langkah pipeline tertentu memberikan fleksibilitas dan kemampuan pipeline tambahan, serta potensi penghematan biaya. Anda dapat menerapkan resource yang lebih mahal ke langkah-langkah pipeline yang memerlukannya, dan resource yang lebih murah ke langkah pipeline lainnya. Gunakan kecocokan yang tepat untuk menentukan persyaratan resource untuk seluruh pipeline atau untuk langkah pipeline tertentu.

Dukungan dan batasan

  • Petunjuk resource didukung dengan Apache Beam Java dan Python SDK, versi 2.31.0 dan yang lebih baru.
  • Penyesuaian yang tepat didukung dengan pipeline batch. Pipeline streaming tidak didukung.
  • Penyesuaian yang tepat mendukung Dataflow Prime.
  • Pasang yang tepat tidak mendukung FlexRS.
  • Saat Anda menggunakan pemasangan yang tepat, jangan gunakan opsi layanan worker_accelerator.

Mengaktifkan penyesuaian yang tepat

Untuk mengaktifkan pemasangan yang tepat, gunakan satu atau beberapa petunjuk resource yang tersedia di pipeline Anda. Saat Anda menggunakan petunjuk resource di pipeline, pemasangan yang tepat akan otomatis diaktifkan. Untuk mengetahui informasi selengkapnya, lihat bagian Menggunakan petunjuk resource dalam dokumen ini.

Petunjuk referensi yang tersedia

Petunjuk resource berikut tersedia.

Petunjuk resource Deskripsi
min_ram

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

Contoh:

min_ram=NUMBERGB
  • Ganti NUMBER dengan nilai minimum memori pekerja yang diperlukan pipeline atau langkah pipeline Anda.
  • 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 di pekerja setidaknya sebesar 15 GB.
accelerator

Alokasi GPU yang disediakan pengguna yang memungkinkan Anda mengontrol penggunaan dan biaya GPU dalam pipeline dan langkah-langkahnya. Tentukan jenis dan jumlah GPU yang akan dilampirkan ke pekerja Dataflow sebagai parameter ke flag.

Contoh:

accelerator="type:GPU_TYPE;count:GPU_COUNT;machine_type:MACHINE_TYPE;CONFIGURATION_OPTIONS"
  • Ganti GPU_TYPE dengan jenis GPU yang akan digunakan. Untuk daftar jenis GPU yang didukung dengan Dataflow, lihat Dukungan Dataflow untuk GPU.
  • Ganti GPU_COUNT dengan jumlah GPU yang akan digunakan.
  • Opsional: Ganti MACHINE_TYPE dengan jenis mesin yang akan digunakan dengan GPU Anda.
    • Jenis mesin harus kompatibel dengan jenis GPU yang dipilih. Untuk mengetahui detail tentang jenis GPU dan jenis mesin yang kompatibel, lihat platform GPU.
    • Jika Anda menentukan jenis mesin di petunjuk resource accelerator dan di opsi pipeline jenis mesin pekerja, opsi pipeline akan diabaikan selama penyesuaian yang tepat.
  • Untuk menggunakan GPU NVIDIA dengan Dataflow, tetapkan opsi konfigurasi install-nvidia-driver.

Untuk informasi selengkapnya tentang penggunaan GPU, lihat GPU dengan Dataflow.

Penyusunan bertingkat petunjuk resource

Petunjuk resource diterapkan ke hierarki transformasi pipeline sebagai berikut:

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

Petunjuk yang ditetapkan untuk seluruh pipeline diperlakukan seolah-olah ditetapkan pada transformasi terluar yang terpisah.

Menggunakan petunjuk resource

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

Petunjuk resource pipeline

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

Untuk menyiapkan lingkungan Python, lihat panduan memulai Python.

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

Untuk menginstal Apache Beam SDK untuk Java, lihat Menginstal Apache Beam SDK.

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

Contoh berikut menunjukkan cara menetapkan petunjuk resource secara terprogram pada transformasi 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")))

Untuk menetapkan petunjuk resource secara terprogram di seluruh pipeline, gunakan antarmuka ResourceHintsOptions.

Python

Untuk menginstal Apache Beam SDK untuk Python, lihat Menginstal Apache Beam SDK.

Anda dapat menetapkan petunjuk resource secara terprogram pada transformasi pipeline menggunakan class PTransforms.with_resource_hints. Untuk informasi selengkapnya, lihat class ResourceHint.

Contoh berikut menunjukkan cara menetapkan petunjuk resource secara terprogram pada transformasi 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")

Untuk menetapkan petunjuk resource di seluruh pipeline, gunakan opsi pipeline --resource_hints saat Anda menjalankan pipeline. Sebagai contoh, lihat Petunjuk resource pipeline.

Go

Petunjuk resource tidak didukung di Go.

Penyesuaian dan penggabungan yang tepat

Dalam beberapa kasus, transformasi yang ditetapkan dengan petunjuk resource yang berbeda dapat dijalankan pada pekerja di kumpulan pekerja yang sama, sebagai bagian dari proses pengoptimalan penggabungan. Saat transformasi digabungkan, Dataflow akan menjalankannya 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 penggabungan dengan menambahkan operasi ke pipeline yang memaksa Dataflow untuk mewujudkan PCollection perantara. Untuk mempelajari lebih lanjut, lihat Mencegah penggabungan.

Memecahkan masalah penyesuaian yang tepat

Bagian ini memberikan petunjuk untuk memecahkan masalah umum terkait penyesuaian yang tepat.

Konfigurasi tidak valid

Saat Anda mencoba menggunakan pemasangan yang tepat, error berikut akan terjadi:

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'.'.

Error ini terjadi jika jenis GPU yang dipilih tidak kompatibel dengan jenis mesin yang dipilih. Untuk mengatasi error ini, pilih jenis GPU dan jenis mesin yang kompatibel. Untuk mengetahui detail kompatibilitas, lihat platform GPU.