Anda dapat menggunakan kemampuan pemrosesan data skala besar Dataflow ML untuk pipeline prediksi dan inferensi serta untuk persiapan data untuk pelatihan.
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
Gunakan fitur
MLTransform
untuk menyiapkan data Anda guna melatih model ML. Untuk mengetahui informasi selengkapnya, lihat Memproses data sebelumnya denganMLTransform
.Gunakan Dataflow dengan framework ML-OPS, seperti Kubeflow Pipelines (KFP) atau TensorFlow Extended (TFX). Untuk mempelajari lebih lanjut, lihat Dataflow ML dalam alur kerja ML.
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 Jika Anda mem-build pengendali model kustom, ganti parameter
|
Anda perlu mengonfigurasi jumlah persis model yang dimuat ke komputer. |
Untuk mengontrol jumlah model yang dimuat secara akurat, gunakan parameter
Jika Anda mem-build pengendali model kustom, ganti parameter |
Untuk informasi selengkapnya tentang pengelolaan memori dengan Dataflow, lihat Memecahkan masalah error kehabisan memori Dataflow.
Langkah selanjutnya
- Pelajari notebook Dataflow ML di GitHub.
- Dapatkan informasi mendalam tentang penggunaan ML dengan Apache Beam dalam dokumentasi pipeline AI/ML Apache Beam.
- Pelajari
RunInference
API lebih lanjut. - Pelajari metrik yang dapat Anda gunakan untuk memantau transformasi
RunInference
.