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
|
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"
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 petunjukmin_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 menyetelmin_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 menetapkanmin_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.
- Contoh: Jika petunjuk transformasi dalam menetapkan
accelerator
: Nilai terdalam dalam hierarki transformasi diprioritaskan.- Contoh: Jika petunjuk
accelerator
transformasi dalam berbeda dengan petunjukaccelerator
transformasi luar dalam hierarki, petunjukaccelerator
transformasi dalam akan digunakan untuk transformasi dalam.
- Contoh: Jika petunjuk
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.