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 pipeline yang memerlukannya, dan resource yang lebih murah ke langkah pipeline lainnya. Gunakan pencocokan yang tepat untuk menentukan persyaratan resource pada 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.
  • Pencocokan kanan mendukung Dataflow Prime.
  • Penyetelan yang tepat tidak mendukung FlexRS.
  • Saat Anda menggunakan pencocokan yang tepat, jangan gunakan opsi layanan worker_accelerator.

Aktifkan pengepasan kanan

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

Petunjuk resource yang tersedia

Petunjuk resource berikut tersedia.

Petunjuk referensi Deskripsi
min_ram

Jumlah minimum RAM dalam gigabyte untuk 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 oleh 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 dalam worker setidaknya 15 GB.
accelerator

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

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 dalam petunjuk resource accelerator dan dalam 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 mengetahui informasi selengkapnya tentang penggunaan GPU, lihat GPU dengan Dataflow.

Penyusunan petunjuk resource

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 menyetel min_ram ke 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 ke 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 diprioritaskan.
    • Contoh: Jika petunjuk accelerator transformasi dalam berbeda dengan petunjuk accelerator transformasi luar dalam hierarki, petunjuk accelerator transformasi dalam akan digunakan untuk transformasi dalam.

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

Menggunakan petunjuk resource

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.

Untuk menyiapkan lingkungan Python Anda, 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-k80;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-k80;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. Untuk contoh, lihat Petunjuk resource pipeline.

Go

Petunjuk resource tidak didukung di Go.

Penggabungan dan penggabungan yang tepat

Dalam beberapa kasus, transformasi yang ditetapkan dengan petunjuk resource yang berbeda dapat dijalankan pada pekerja dalam 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 menyatu.

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

Memecahkan masalah pemasangan yang tepat

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

Konfigurasi tidak valid

Saat Anda mencoba menggunakan pemasangan yang tepat, kesalahan 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.