Tentang Dataflow ML

Anda dapat menggunakan kemampuan pemrosesan data skala besar Dataflow ML untuk pipeline prediksi dan inferensi serta untuk persiapan data untuk pelatihan.

Diagram alur kerja Dataflow ML.

Gambar 1. Alur kerja Dataflow ML yang lengkap.

Persyaratan dan batasan

  • Dataflow ML mendukung pipeline batch dan streaming.
  • API RunInference didukung di Apache Beam 2.40.0 dan versi yang lebih baru.
  • API MLTransform didukung di Apache Beam 2.53.0 dan versi yang lebih baru.
  • Pengendali model tersedia untuk PyTorch, scikit-learn, TensorFlow, ONNX, dan TensorRT. Untuk framework yang tidak didukung, Anda dapat menggunakan pengendali model kustom.

Persiapan data untuk pelatihan

Pipeline prediksi dan inferensi

Dataflow ML menggabungkan kecanggihan Dataflow dengan RunInference API Apache Beam. Dengan RunInference API, Anda menentukan karakteristik dan properti model, lalu meneruskan konfigurasi tersebut ke transformasi RunInference. Fitur ini memungkinkan pengguna menjalankan model dalam pipeline Dataflow tanpa perlu mengetahui detail implementasi model. Anda dapat memilih framework yang paling sesuai dengan data Anda, seperti TensorFlow dan PyTorch.

Menjalankan beberapa model dalam pipeline

Gunakan transformasi RunInference untuk menambahkan beberapa model inferensi ke pipeline Dataflow Anda. Untuk mengetahui informasi selengkapnya, termasuk detail kode, lihat Pipeline multi-model dalam dokumentasi Apache Beam.

Membuat pipeline lintas bahasa

Untuk menggunakan RunInference dengan pipeline Java, buat transformasi Python lintas bahasa. Pipeline memanggil transformasi, yang melakukan prapemrosesan, pascapemrosesan, dan inferensi.

Untuk petunjuk mendetail dan contoh pipeline, lihat Menggunakan RunInference dari Java SDK.

Menggunakan GPU dengan Dataflow

Untuk pipeline batch atau streaming yang memerlukan penggunaan akselerator, Anda dapat menjalankan pipeline Dataflow di perangkat GPU NVIDIA. Untuk informasi selengkapnya, lihat Menjalankan pipeline Dataflow dengan GPU.

Memecahkan masalah Dataflow ML

Bagian ini memberikan strategi pemecahan masalah dan link yang mungkin berguna bagi Anda saat menggunakan Dataflow ML.

Stack mengharapkan setiap tensor memiliki ukuran yang sama

Jika Anda memberikan gambar dengan ukuran yang berbeda atau penyematan kata dengan panjang yang berbeda saat menggunakan RunInference API, error berikut mungkin terjadi:

File "/beam/sdks/python/apache_beam/ml/inference/pytorch_inference.py", line 232, in run_inference batched_tensors = torch.stack(key_to_tensor_list[key]) RuntimeError: stack expects each tensor to be equal size, but got [12] at entry 0 and [10] at entry 1 [while running 'PyTorchRunInference/ParDo(_RunInferenceDoFn)']

Error ini terjadi karena RunInference API tidak dapat mengelompokkan elemen tensor dengan ukuran yang berbeda. Untuk solusinya, lihat Tidak dapat mengelompokkan elemen tensor dalam dokumentasi Apache Beam.

Menghindari error kehabisan memori dengan model besar

Saat Anda memuat model ML berukuran sedang atau besar, mesin Anda mungkin kehabisan memori. Dataflow menyediakan alat untuk membantu menghindari error kehabisan memori (OOM) saat memuat model ML. Gunakan tabel berikut untuk menentukan pendekatan yang sesuai untuk skenario Anda.

Skenario Solusi
Model ini cukup kecil untuk muat di memori. Gunakan transformasi RunInference tanpa konfigurasi tambahan. Transformasi RunInference membagikan model di seluruh thread. Jika Anda dapat menyesuaikan satu model per core CPU di komputer, pipeline Anda dapat menggunakan konfigurasi default.
Beberapa model yang dilatih secara berbeda melakukan tugas yang sama. Gunakan kunci per model. Untuk informasi selengkapnya, lihat Menjalankan inferensi ML dengan beberapa model yang dilatih secara berbeda.
Satu model dimuat ke dalam memori, dan semua proses berbagi model ini.

Gunakan parameter large_model. Untuk informasi selengkapnya, lihat Menjalankan inferensi ML dengan beberapa model yang dilatih secara berbeda.

Jika Anda mem-build pengendali model kustom, ganti parameter share_model_across_processes, bukan parameter large_model.

Anda perlu mengonfigurasi jumlah persis model yang dimuat ke komputer.

Untuk mengontrol jumlah model yang dimuat secara akurat, gunakan parameter model_copies.

Jika Anda mem-build pengendali model kustom, ganti parameter model_copies.

Untuk informasi selengkapnya tentang pengelolaan memori dengan Dataflow, lihat Memecahkan masalah error kehabisan memori Dataflow.

Langkah selanjutnya