Dalam arsitektur referensi ini, Anda akan mempelajari kasus penggunaan, alternatif desain, dan pertimbangan desain saat men-deploy pipeline Dataflow untuk memproses file gambar dengan Cloud Vision dan menyimpan hasil yang diproses di BigQuery. Anda dapat menggunakan hasil yang disimpan tersebut untuk analisis data skala besar dan untuk melatih model bawaan BigQuery ML.
Dokumen arsitektur referensi ini ditujukan untuk data engineer dan data scientist.
Arsitektur
Diagram berikut menggambarkan alur sistem untuk arsitektur referensi ini.
Seperti yang ditunjukkan dalam diagram sebelumnya, alur informasi adalah sebagai berikut:
Penyerapan dan pemicuan: Ini adalah tahap pertama alur sistem saat gambar pertama kali masuk ke sistem. Selama tahap ini, tindakan berikut terjadi:
- Klien mengupload file gambar ke bucket Cloud Storage.
- Untuk setiap upload file, Cloud Storage secara otomatis mengirimkan notifikasi input dengan memublikasikan pesan ke Pub/Sub.
Proses: Tahap ini segera mengikuti tahap penyerapan dan pemicuan. Untuk setiap notifikasi input baru, tindakan berikut akan terjadi:
- Pipeline Dataflow memproses notifikasi input file ini, mengekstrak metadata file dari pesan Pub/Sub, dan mengirim referensi file ke Vision API untuk diproses.
- Vision API membaca gambar dan membuat anotasi.
- Pipeline Dataflow menyimpan anotasi yang dihasilkan oleh Vision API dalam tabel BigQuery.
Menyimpan dan menganalisis: Ini adalah tahap terakhir dalam alur. Pada tahap ini, Anda dapat melakukan hal berikut dengan hasil yang disimpan:
- Buat kueri tabel BigQuery dan analisis anotasi yang disimpan.
- Gunakan BigQuery ML atau Vertex AI untuk membuat model dan menjalankan prediksi berdasarkan anotasi yang disimpan.
- Lakukan analisis tambahan di pipeline Dataflow (tidak ditampilkan pada diagram ini).
Produk yang digunakan
Arsitektur referensi ini menggunakan produk Google Cloud berikut:
Kasus penggunaan
Vision API mendukung beberapa fitur pemrosesan, termasuk pelabelan gambar, deteksi wajah dan tempat terkenal, pengenalan karakter optik, pemberian tag konten vulgar, dan lainnya. Setiap fitur ini memungkinkan beberapa kasus penggunaan yang berlaku untuk berbagai industri. Dokumen ini berisi beberapa contoh sederhana tentang kemungkinan yang dapat dilakukan saat menggunakan Vision API, tetapi spektrum kemungkinan aplikasi sangat luas.
Vision API juga menawarkan model machine learning terlatih yang andal melalui REST dan RPC API. Anda dapat menetapkan label ke gambar dan mengklasifikasikannya ke dalam jutaan kategori yang telah ditentukan. Alat ini membantu Anda mendeteksi objek, membaca teks tulisan tangan dan yang dicetak, serta membangun metadata berharga ke dalam katalog gambar Anda.
Arsitektur ini tidak memerlukan pelatihan model apa pun sebelum Anda dapat menggunakannya. Jika Anda memerlukan model kustom yang dilatih dengan data spesifik Anda, Vertex AI memungkinkan Anda melatih model AutoML atau model kustom untuk tujuan computer vision, seperti klasifikasi gambar dan deteksi objek. Atau, Anda dapat menggunakan Vertex AI Vision untuk lingkungan pengembangan aplikasi end-to-end yang memungkinkan Anda membangun, men-deploy, dan mengelola aplikasi computer vision.
Alternatif desain
Daripada menyimpan gambar di bucket Google Cloud Storage, proses yang menghasilkan gambar dapat memublikasikannya langsung ke sistem pesan—misalnya Pub/Sub—dan pipeline Dataflow dapat mengirim gambar langsung ke Vision API.
Alternatif desain ini dapat menjadi solusi yang baik untuk kasus penggunaan yang sensitif terhadap latensi dan memerlukan analisis gambar berukuran relatif kecil. Pub/Sub membatasi ukuran maksimum pesan hingga 10 MB.
Jika Anda perlu memproses sejumlah besar gambar dalam batch, Anda dapat menggunakan
asyncBatchAnnotate
API yang
didesain khusus.
Pertimbangan desain
Bagian ini menjelaskan pertimbangan desain untuk arsitektur referensi ini:
Keamanan, privasi, dan kepatuhan
Gambar yang diterima dari sumber yang tidak tepercaya dapat berisi malware. Karena Vision API tidak menjalankan apa pun berdasarkan gambar yang dianalisisnya, malware berbasis gambar tidak akan memengaruhi API. Jika Anda perlu memindai gambar, ubah pipeline Dataflow untuk menambahkan langkah pemindaian. Untuk mendapatkan hasil yang sama, Anda juga dapat menggunakan langganan terpisah ke topik Pub/Sub dan memindai gambar dalam proses terpisah.
Untuk mengetahui informasi selengkapnya, lihat Mengotomatiskan pemindaian malware untuk file yang diupload ke Cloud Storage.
Vision API menggunakan
Identity and Access Management (IAM)
untuk autentikasi. Untuk mengakses Vision API, akun utama keamanan memerlukan akses Cloud Storage > Storage object viewer (roles/storage.objectViewer
) ke bucket yang berisi file yang ingin Anda analisis.
Untuk mengetahui prinsip dan rekomendasi keamanan yang khusus untuk workload AI dan ML, lihat Perspektif AI dan ML: Keamanan dalam Framework yang Dirancang dengan Baik.
Pengoptimalan biaya
Dibandingkan dengan opsi lain yang dibahas, seperti pemrosesan latensi rendah dan pemrosesan batch asinkron, arsitektur referensi ini menggunakan cara yang hemat biaya untuk memproses gambar dalam pipeline streaming dengan membuat batch permintaan API. Streaming gambar langsung dengan latensi lebih rendah yang disebutkan di bagian Alternatif desain dapat lebih mahal karena biaya Pub/Sub dan Dataflow tambahan. Untuk pemrosesan gambar yang tidak perlu dilakukan dalam hitungan detik atau menit, Anda dapat menjalankan pipeline Dataflow dalam mode batch. Menjalankan pipeline dalam mode batch dapat memberikan penghematan tertentu jika dibandingkan dengan biaya untuk menjalankan pipeline streaming.
Vision API mendukung anotasi gambar batch asinkron offline untuk semua fitur. Permintaan asinkron mendukung hingga 2.000 gambar per batch. Sebagai respons, Vision API menampilkan file JSON yang disimpan di bucket Cloud Storage.
Vision API juga menyediakan serangkaian fitur untuk menganalisis gambar. Harga adalah per gambar per fitur. Untuk mengurangi biaya, hanya minta fitur spesifik yang Anda butuhkan untuk solusi Anda.
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga.
Untuk prinsip dan rekomendasi pengoptimalan biaya yang khusus untuk workload AI dan ML, lihat Perspektif AI dan ML: Pengoptimalan biaya dalam Well-Architected Framework.
Pengoptimalan performa
Vision API adalah API yang membutuhkan banyak resource. Oleh karena itu, pemrosesan gambar dalam skala besar memerlukan orkestrasi panggilan API yang cermat. Pipeline Dataflow menangani pengelompokan permintaan API, menangani pengecualian terkait pencapaian kuota dengan baik, dan menghasilkan metrik kustom penggunaan API. Metrik ini dapat membantu Anda memutuskan apakah peningkatan kuota API diperlukan, atau apakah parameter pipeline Dataflow harus disesuaikan untuk mengurangi frekuensi permintaan. Untuk mengetahui informasi selengkapnya tentang permintaan penambahan kuota untuk Vision API, lihat Kuota dan batas.
Pipeline Dataflow memiliki beberapa parameter yang dapat memengaruhi latensi pemrosesan. Untuk mengetahui informasi selengkapnya tentang parameter ini, lihat artikel Men-deploy solusi analisis ML vision dengan Dataflow dan Vision API.
Untuk prinsip dan rekomendasi pengoptimalan performa yang khusus untuk workload AI dan ML, lihat Perspektif AI dan ML: Pengoptimalan performa dalam Well-Architected Framework.
Deployment
Untuk men-deploy arsitektur ini, lihat Men-deploy solusi analisis visi ML dengan Dataflow dan Vision API.
Langkah berikutnya
- Pelajari Dataflow lebih lanjut.
- Pelajari BigQuery ML lebih lanjut.
- Pelajari lebih lanjut keandalan BigQuery dalam panduan Memahami keandalan BigQuery.
- Pelajari cara menyimpan data di Solusi Praktis: Data warehouse dengan BigQuery.
- Tinjau daftar fitur Vision API.
- Pelajari cara men-deploy solusi analisis ML vision dengan Dataflow dan Vision API.
- Untuk mengetahui ringkasan prinsip dan rekomendasi arsitektur yang khusus untuk workload AI dan ML di Google Cloud, lihat perspektif AI dan ML dalam Well-Architected Framework.
- Untuk mengetahui lebih banyak tentang arsitektur referensi, diagram, dan praktik terbaik lainnya, jelajahi Pusat Arsitektur Cloud.
Kontributor
Penulis:
- Masud Hasan | Site Reliability Engineering Manager
- Sergei Lilichenko | Solutions Architect
- Lakshmanan Sethu | Technical Account Manager
Kontributor lainnya:
- Jiyeon Kang | Customer Engineer
- Sunil Kumar Jang Bahadur | Customer Engineer