Fitur penyesuaian yang tepat menggunakan petunjuk resource Apache Beam untuk menyesuaikan resource pekerja untuk pipeline. Kemampuan untuk menargetkan beberapa resource berbeda ke langkah-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-langkah pipeline lainnya. Gunakan penyesuaian kanan untuk menentukan persyaratan resource bagi seluruh pipeline atau untuk langkah-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.
Penyesuaian yang tepat didukung dengan pipeline streaming yang mengaktifkan penskalaan otomatis horizontal.
- Anda dapat mengaktifkannya dengan menyetel opsi pipeline
--experiments=enable_streaming_rightfitting
.
- Anda dapat mengaktifkannya dengan menyetel opsi pipeline
Penyesuaian yang tepat mendukung Dataflow Prime.
Pengepasan kanan tidak mendukung FlexRS.
Saat Anda menggunakan pencocokan kanan, jangan gunakan
worker_accelerator
opsi layanan.
Mengaktifkan penyesuaian yang tepat
Untuk mengaktifkan penyesuaian kanan, gunakan satu atau beberapa petunjuk resource yang tersedia di pipeline Anda. Saat Anda menggunakan petunjuk resource di pipeline, penyesuaian yang tepat akan otomatis diaktifkan. Untuk mengetahui informasi selengkapnya, lihat bagian Menggunakan petunjuk resource dalam dokumen ini.
Petunjuk resource 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 dipasang ke worker Dataflow sebagai parameter ke flag. 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 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 akan digunakan untuk semua langkah dalam transformasi luar yang tidak ada dalam transformasi dalam, dan petunjuk 16 GB akan digunakan untuk semua langkah dalam transformasi dalam.
- Contoh: Jika petunjuk transformasi dalam menetapkan
accelerator
: Nilai paling dalam dalam hierarki transformasi lebih diutamakan.- Contoh: Jika petunjuk transformasi dalam
accelerator
berbeda dari petunjuk transformasi luaraccelerator
dalam hierarki, petunjuk transformasi dalamaccelerator
digunakan untuk transformasi dalam.
- Contoh: Jika petunjuk 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-langkah pipeline.
Petunjuk resource pipeline
Anda dapat menetapkan petunjuk resource di seluruh pipeline saat menjalankan pipeline dari command line.
Untuk menyiapkan lingkungan Python, lihat tutorial 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-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 menyetel petunjuk resource secara terprogram pada transformasi pipeline.
pcoll.apply(MyCompositeTransform.of(...)
.setResourceHints(
ResourceHints.create()
.withMinRam("15GB")
.withAccelerator(
"type:nvidia-l4;count:1;install-nvidia-driver")))
pcoll.apply(ParDo.of(new BigMemFn())
.setResourceHints(
ResourceHints.create().withMinRam("30GB")))
Untuk menyetel 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 mengetahui informasi selengkapnya, lihat
class ResourceHint
.
Contoh berikut menunjukkan cara menyetel 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.
Dukungan beberapa akselerator
Dalam pipeline, berbagai transformasi dapat memiliki konfigurasi akselerator yang berbeda. Hal ini mencakup konfigurasi yang memerlukan jenis mesin yang berbeda. Konfigurasi akselerator tingkat transformasi ini lebih diprioritaskan daripada konfigurasi tingkat pipeline jika ada.
Penyesuaian dan penggabungan yang tepat
Dalam beberapa kasus, transformasi yang ditetapkan dengan petunjuk resource yang berbeda dapat dieksekusi di pekerja dalam kumpulan pekerja yang sama, sebagai bagian dari proses pengoptimalan penggabungan. Saat transformasi digabungkan, Dataflow akan mengeksekusinya di lingkungan yang memenuhi gabungan petunjuk resource yang ditetapkan pada transformasi. Dalam beberapa kasus, hal ini mencakup seluruh pipeline.
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. Hal ini sangat berguna saat mencoba mengisolasi resource mahal seperti GPU atau mesin dengan memori tinggi dari langkah-langkah yang lambat atau mahal secara komputasi yang tidak memerlukan resource khusus tersebut. Dalam kasus tersebut, mungkin berguna untuk memaksakan jeda penggabungan
antara langkah-langkah yang terikat CPU lambat dan langkah-langkah yang memerlukan GPU
mahal atau mesin dengan memori tinggi, serta membayar biaya materialisasi yang terkait dengan
penghentian penggabungan. Untuk mempelajari lebih lanjut, lihat
Mencegah penggabungan.
Penyesuaian yang tepat untuk streaming
Untuk tugas streaming, Anda dapat mengaktifkan penyesuaian yang tepat dengan menetapkan opsi pipeline --experiments=enable_streaming_rightfitting
.
Pengepasan yang tepat dapat meningkatkan performa pipeline Anda jika melibatkan tahap dengan persyaratan resource yang berbeda.
Contoh: Pipeline dengan tahap yang intensif CPU dan tahap yang memerlukan GPU
Contoh pipeline yang mungkin diuntungkan dari penyesuaian yang tepat adalah pipeline yang menjalankan tahap intensif CPU, diikuti dengan tahap yang memerlukan GPU. Tanpa penyesuaian yang tepat, satu kumpulan worker GPU harus dikonfigurasi untuk mengeksekusi semua tahap pipeline, termasuk tahap yang intensif CPU. Hal ini dapat menyebabkan kurangnya pemanfaatan resource GPU saat kumpulan pekerja menjalankan tahap yang intensif CPU.
Jika penyesuaian yang tepat diaktifkan dan Petunjuk Resource diterapkan ke langkah yang memerlukan GPU, pipeline akan membuat dua kumpulan terpisah, sehingga tahap yang intensif CPU dieksekusi oleh kumpulan pekerja CPU, dan tahap yang memerlukan GPU dieksekusi oleh kumpulan pekerja GPU.
Untuk pipeline contoh ini, tabel penskalaan otomatis menunjukkan bahwa kumpulan pekerja yang menjalankan tahap intensif CPU, Pool 0
, awalnya di-upgrade menjadi 99 pekerja, dan kemudian di-downgrade menjadi 87 pekerja. Kumpulan pekerja yang menjalankan tahap yang memerlukan GPU, Pool 1
, di-upscale menjadi 13 pekerja:
Grafik Penggunaan CPU menunjukkan bahwa pekerja di kedua kumpulan pekerja menunjukkan penggunaan CPU tinggi secara keseluruhan:
Memecahkan masalah penyesuaian yang tepat
Bagian ini memberikan petunjuk untuk memecahkan masalah umum terkait kecocokan yang tepat.
Konfigurasi tidak valid
Saat Anda mencoba menggunakan pencocokan kanan, 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 saat 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.
Memverifikasi kecocokan yang tepat
Anda dapat memverifikasi bahwa penyesuaian yang tepat diaktifkan dengan melihat metrik penskalaan otomatis dan memverifikasi bahwa kolom Worker pool
terlihat dan mencantumkan berbagai pool:
Performa penyesuaian yang tepat untuk streaming
Pipeline streaming dengan pengoptimalan yang tepat diaktifkan mungkin tidak selalu berperforma lebih baik daripada pipeline tanpa pengoptimalan yang tepat diaktifkan. Contoh:
- Pipeline menggunakan lebih banyak pekerja
- Latensi sistem lebih tinggi, atau throughput lebih rendah
- Ukuran kumpulan pekerja berubah lebih sering, atau tidak stabil
Jika mengamati hal ini untuk pipeline Anda, Anda dapat menonaktifkan penyesuaian kanan dengan menghapus opsi pipeline --experiments=enable_streaming_rightfitting
. Selain itu, pipeline streaming dengan penyesuaian yang tepat diaktifkan menggunakan Petunjuk Resource akselerator mungkin menggunakan lebih banyak akselerator daripada yang diinginkan. Jika mengamati hal ini untuk pipeline, Anda dapat mengonfigurasi jumlah maksimum akselerator yang digunakan oleh pipeline dengan menyetel opsi pipeline --experiments=max_num_accelerators=NUM
.