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
|
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"
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 petunjukmin_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 menetapkanmin_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 menetapkanmin_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.
- Contoh: Jika petunjuk transformasi bagian dalam menetapkan
accelerator
: Nilai terdalam dalam hierarki transformasi lebih diutamakan.- Contoh: Jika petunjuk
accelerator
transformasi dalam berbeda dari petunjukaccelerator
transformasi luar dalam hierarki, petunjukaccelerator
transformasi dalam digunakan untuk transformasi dalam.
- Contoh: Jika petunjuk
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.