Tentang Dataflow ML

Anda dapat menggunakan kemampuan pemrosesan data skala Dataflow ML untuk pipeline prediksi dan inferensi serta untuk penyiapan 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 versi 2.40.0 dan yang lebih baru.
  • API MLTransform didukung di Apache Beam versi 2.53.0 dan yang lebih baru.
  • Handler model tersedia untuk PyTorch, scikit-learn, TensorFlow, ONNX, dan TensorRT. Untuk framework yang tidak didukung, Anda dapat menggunakan handler model kustom.

Persiapan data untuk pelatihan

Pipeline prediksi dan inferensi

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

Menjalankan beberapa model dalam satu 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.

Membangun pipeline lintas bahasa

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

Untuk mengetahui petunjuk mendetail dan pipeline contoh, 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 mengetahui informasi selengkapnya, lihat Menjalankan pipeline Dataflow dengan GPU.

Memecahkan masalah Dataflow ML

Bagian ini menyediakan strategi dan link pemecahan masalah yang mungkin berguna saat menggunakan Dataflow ML.

Stack mengharapkan setiap tensor memiliki ukuran yang sama

Jika Anda memberikan gambar dengan ukuran berbeda atau penyematan kata dengan panjang 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 API RunInference tidak dapat mengelompokkan elemen tensor dengan ukuran yang berbeda. Untuk mengetahui 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, komputer Anda mungkin kehabisan memori. Dataflow menyediakan alat untuk membantu menghindari error kehabisan memori (OOM) saat memuat model ML. Untuk mengetahui informasi selengkapnya, lihat praktik terbaik transformasi RunInference.

Langkah berikutnya