Mengimplementasikan pengambilan dua menara untuk pembuatan kandidat berskala besar

Last reviewed 2025-01-16 UTC

Dokumen ini memberikan arsitektur referensi yang menunjukkan cara mengimplementasikan alur kerja pembuatan kandidat dua menara menyeluruh dengan Vertex AI. Framework pemodelan dua menara adalah teknik pengambilan yang efektif untuk kasus penggunaan personalisasi karena mempelajari kesamaan semantik antara dua entity yang berbeda, seperti kueri web dan item kandidat.

Dokumen ini ditujukan untuk praktisi teknis seperti data scientist dan engineer machine learning yang mengembangkan aplikasi rekomendasi berskala besar dengan persyaratan penayangan latensi rendah. Untuk informasi selengkapnya tentang teknik pemodelan, perumusan masalah, dan persiapan data untuk membuat model dua menara, lihat Menskalakan deep retrieval dengan Pemberi Rekomendasi TensorFlow dan Vector Search.

Arsitektur

Diagram berikut menunjukkan arsitektur untuk melatih model dua menara dan men-deploy setiap menara secara terpisah untuk tugas deployment dan penayangan yang berbeda:

Arsitektur untuk melatih model dua menara dan men-deploy setiap menara secara terpisah.

Arsitektur dalam diagram mencakup komponen berikut:

  • Data pelatihan: File pelatihan disimpan di Cloud Storage.
  • Pelatihan dua menara: Model gabungan dua menara dilatih secara offline menggunakan layanan Vertex AI Training; setiap menara disimpan secara terpisah dan digunakan untuk tugas yang berbeda.
  • Mendaftarkan kueri dan menara kandidat: Setelah menara dilatih, setiap menara akan diupload secara terpisah ke Vertex AI Model Registry.
  • Men-deploy menara kueri: Menara kueri terdaftar di-deploy ke endpoint online Vertex AI.
  • Memprediksi penyematan batch: Menara kandidat terdaftar digunakan dalam tugas prediksi batch untuk melakukan prakomputasi representasi penyematan semua item kandidat yang tersedia.
  • JSON Embed: Prediksi penyematan disimpan ke file JSON di Cloud Storage.
  • Indeks ANN: Vertex AI Vector Search digunakan untuk membuat indeks penayangan yang dikonfigurasi untuk penelusuran perkiraan tetangga terdekat (ANN).
  • Indeks yang di-deploy: Indeks ANN di-deploy ke endpoint indeks Vertex AI Vector Search.

Produk yang digunakan

Arsitektur referensi ini menggunakan produk Google Cloud berikut:

  • Vertex AI Training: Layanan pelatihan yang terkelola sepenuhnya yang memungkinkan Anda mengoperasikan pelatihan model skala besar.
  • Vector Search: Layanan pencocokan kemiripan vektor yang memungkinkan Anda menyimpan, mengindeks, dan menelusuri data yang terkait atau memiliki kemiripan semantik.
  • Vertex AI Model Registry: Repositori pusat tempat Anda dapat mengelola siklus proses model ML.
  • Cloud Storage: Penyimpanan objek berbiaya rendah tanpa batas untuk berbagai jenis data. Data dapat diakses dari dalam dan luar Google Cloud, dan direplikasi di seluruh lokasi untuk redundansi.

Kasus penggunaan

Untuk memenuhi persyaratan penayangan latensi rendah, perekomendasikan skala besar sering kali di-deploy ke produksi sebagai sistem dua tahap atau terkadang sebagai sistem multi-tahap. Tujuan tahap pertama, pembuatan kandidat, adalah menyaring kumpulan item kandidat yang besar dan mengambil subset yang relevan dari ratusan item untuk tugas pemfilteran dan pemeringkatan downstream. Untuk mengoptimalkan tugas pengambilan ini, pertimbangkan dua tujuan inti berikut:

  1. Selama pelatihan model, pelajari representasi terbaik dari masalah atau tugas yang akan dipecahkan, dan kompilasi representasi ini ke dalam penyematan <query, candidate>.
  2. Selama penyajian model, ambil item yang relevan dengan cukup cepat untuk memenuhi persyaratan latensi.

Diagram berikut menunjukkan komponen konseptual dari rekomendasi dua tahap:

Komponen konseptual dari perekomendasikan dua tahap.

Dalam diagram, pembuatan kandidat memfilter jutaan item kandidat. Peringkat kemudian memfilter ratusan item kandidat yang dihasilkan untuk menampilkan puluhan item yang direkomendasikan.

Arsitektur referensi dalam dokumen ini melatih model pengambilan berbasis dua menara. Dalam arsitektur, setiap menara adalah jaringan saraf yang memproses kueri atau fitur item kandidat, lalu menghasilkan representasi penyematan fitur tersebut. Setiap tower di-deploy secara terpisah, karena setiap tower akan digunakan untuk tugas yang berbeda dalam produksi:

  • Menara kandidat: Menara kandidat digunakan untuk melakukan prakomputasi penyematan untuk semua item kandidat. Embedding yang telah dikomputasi sebelumnya di-deploy ke endpoint indeks Vertex AI Vector Search yang dioptimalkan untuk pengambilan berlatensi rendah.
  • Menara yang di-deploy: Selama penayangan online, menara kueri yang di-deploy mengonversi kueri pengguna mentah menjadi representasi penyematan. Representasi penyematan kemudian digunakan untuk mencari penyematan item serupa dalam indeks yang di-deploy.

Arsitektur dua menara ideal untuk banyak tugas pengambilan karena arsitektur dua menara menangkap hubungan semantik antara kueri dan entitas kandidat, dan memetakan keduanya ke ruang penyematan bersama. Saat entitas dipetakan ke ruang penyematan bersama, entitas yang serupa secara semantik akan dikelompokkan lebih dekat. Oleh karena itu, jika Anda menghitung embedding vektor dari kueri tertentu, Anda dapat menelusuri ruang penyematan untuk menemukan item kandidat terdekat (paling mirip). Manfaat utama dari arsitektur tersebut adalah kemampuan untuk memisahkan inferensi representasi kueri dan kandidat. Manfaat pemisahan ini terutama ada dua:

  • Anda dapat menayangkan item baru (segar) tanpa melatih ulang kosakata item baru. Dengan memasukkan kumpulan fitur item ke menara item kandidat, Anda dapat menghitung penyematan item untuk kumpulan kandidat apa pun, bahkan yang tidak terlihat selama pelatihan. Melakukan komputasi ini membantu mengatasi masalah cold start.
    • Menara kandidat dapat mendukung kumpulan item kandidat arbitrer, termasuk item yang belum berinteraksi dengan sistem rekomendasi. Dukungan ini dimungkinkan karena arsitektur dua menara memproses fitur metadata dan konten kaya tentang setiap pasangan <query, candidate>. Jenis pemrosesan ini memungkinkan sistem menjelaskan item yang tidak diketahui dalam hal item yang diketahuinya.
  • Anda dapat mengoptimalkan inferensi pengambilan dengan melakukan prakomputasi semua penyematan item kandidat. Penyematan yang telah dikomputasi sebelumnya ini dapat diindeks dan di-deploy ke infrastruktur penayangan yang dioptimalkan untuk pengambilan latensi rendah.
    • Pembelajaran bersama menara memungkinkan Anda mendeskripsikan item dalam hal kueri dan sebaliknya. Jika Anda memiliki satu setengah pasangan, seperti kueri, dan Anda perlu mencari item lain yang sesuai, Anda dapat melakukan prakomputasi setengah dari persamaan terlebih dahulu. Prakomputasi memungkinkan Anda membuat keputusan lainnya secepat mungkin.

Pertimbangan desain

Bagian ini berisi panduan untuk membantu Anda mengembangkan arsitektur pembuatan kandidat di Google Cloud yang memenuhi kebutuhan keamanan dan performa Anda. Panduan di bagian ini tidak lengkap. Bergantung pada persyaratan tertentu, Anda dapat memilih untuk mempertimbangkan faktor desain dan kompromi tambahan.

Keamanan

Vertex AI Vector Search mendukung deployment endpoint publik dan Virtual Private Cloud (VPC). Jika Anda ingin menggunakan jaringan VPC, mulailah dengan mengikuti artikel Menyiapkan koneksi Peering Jaringan VPC. Jika indeks Vector Search di-deploy dalam perimeter VPC, pengguna harus mengakses resource terkait dari dalam jaringan VPC yang sama. Misalnya, jika Anda mengembangkan dari Vertex AI Workbench, Anda perlu membuat instance workbench dalam jaringan VPC yang sama dengan endpoint indeks yang di-deploy. Demikian pula, setiap pipeline yang diharapkan untuk membuat endpoint, atau men-deploy indeks ke endpoint, harus berjalan dalam jaringan VPC yang sama.

Pengoptimalan performa

Bagian ini menjelaskan faktor-faktor yang perlu dipertimbangkan saat Anda menggunakan arsitektur referensi ini untuk mendesain topologi di Google Cloud yang memenuhi persyaratan performa workload Anda.

Tugas pelatihan profil

Untuk mengoptimalkan pipeline input data dan grafik pelatihan secara keseluruhan, sebaiknya buat profil performa pelatihan dengan Cloud Profiler. Profiler adalah implementasi terkelola dari TensorBoard Profiler open source.

Dengan meneruskan argumen –profiler dalam tugas pelatihan, Anda mengaktifkan callback TensorFlow untuk membuat profil sejumlah batch yang ditetapkan untuk setiap epoch. Profil merekam rekaman aktivitas dari CPU host dan dari hardware GPU atau TPU perangkat. Rekaman aktivitas memberikan informasi tentang penggunaan resource tugas pelatihan. Untuk menghindari error kehabisan memori, sebaiknya Anda memulai dengan durasi profil antara 2 dan 10 langkah pelatihan, dan tingkatkan sesuai kebutuhan.

Untuk mempelajari cara menggunakan Profiler dengan Vertex AI Training dan Vertex AI TensorBoard, lihat Memprofilkan performa pelatihan model. Untuk praktik terbaik proses debug, lihat Mengoptimalkan performa GPU. Untuk informasi tentang cara mengoptimalkan performa, lihat Mengoptimalkan performa TensorFlow menggunakan Profiler.

Memanfaatkan akselerator sepenuhnya

Saat Anda memasang akselerator pelatihan seperti GPU NVIDIA atau Cloud TPU, penting untuk terus menggunakannya sepenuhnya. Penggunaan penuh accelerator pelatihan adalah praktik terbaik untuk pengelolaan biaya karena accelerator adalah komponen paling mahal dalam arsitektur. Penggunaan penuh accelerator pelatihan juga merupakan praktik terbaik untuk efisiensi tugas karena tidak ada waktu tunggu akan mengurangi konsumsi resource secara keseluruhan.

Agar akselerator tetap digunakan sepenuhnya, Anda biasanya melakukan beberapa iterasi untuk menemukan bottleneck, mengoptimalkan bottleneck, lalu mengulangi langkah-langkah ini hingga penggunaan perangkat akselerator dapat diterima. Karena banyak set data untuk kasus penggunaan ini terlalu besar untuk disimpan dalam memori, bottleneck biasanya ditemukan antara penyimpanan, VM host, dan akselerator.

Diagram berikut menunjukkan tahapan konseptual pipeline input pelatihan ML:

Tahapan konseptual pipeline input pelatihan ML.

Dalam diagram, data dibaca dari penyimpanan dan diproses sebelumnya. Setelah diproses sebelumnya, data akan dikirim ke perangkat. Untuk mengoptimalkan performa, mulailah dengan menentukan apakah performa keseluruhan dibatasi oleh CPU host atau oleh perangkat akselerator (GPU atau TPU). Perangkat bertanggung jawab untuk mempercepat loop pelatihan, sedangkan host bertanggung jawab untuk memasukkan data pelatihan ke perangkat dan menerima hasil dari perangkat. Bagian berikut menjelaskan cara mengatasi bottleneck dengan meningkatkan performa pipeline input dan performa perangkat.

Meningkatkan performa pipeline input
  • Membaca data dari penyimpanan: Untuk meningkatkan pembacaan data, coba caching, prefetching, pola akses berurutan, dan I/O paralel.
  • Melakukan prapemrosesan data: Untuk meningkatkan prapemrosesan data, konfigurasikan pemrosesan paralel untuk ekstraksi dan transformasi data, serta sesuaikan transformasi interleave dalam pipeline input data.
  • Mengirim data ke perangkat: Untuk mengurangi waktu tugas secara keseluruhan, transfer data dari host ke beberapa perangkat secara paralel.
Meningkatkan performa perangkat
  • Meningkatkan ukuran mini-batch. Batch mini adalah jumlah sampel pelatihan yang digunakan oleh setiap perangkat dalam satu iterasi loop pelatihan. Dengan meningkatkan ukuran batch mini, Anda meningkatkan paralelisme antar-operasi dan meningkatkan penggunaan kembali data. Namun, batch mini harus dapat muat dalam memori dengan program pelatihan lainnya. Jika Anda meningkatkan ukuran mini-batch terlalu banyak, Anda dapat mengalami error kehabisan memori dan divergensi model.
  • Membuat vektor fungsi yang ditentukan pengguna. Biasanya, transformasi data dapat dinyatakan sebagai fungsi yang ditentukan pengguna yang menjelaskan cara mengubah setiap elemen set data input. Untuk membuat vektor fungsi ini, Anda menerapkan operasi transformasi pada batch input sekaligus, bukan mengubah satu elemen pada satu waktu. Setiap fungsi yang ditentukan pengguna memiliki overhead yang terkait dengan penjadwalan dan eksekusi. Saat mengubah batch input, Anda akan dikenai overhead sekali per batch, bukan sekali per elemen set data.
Meningkatkan skala sebelum melakukan penskalaan keluar

Saat mengonfigurasi resource komputasi untuk tugas pelatihan, sebaiknya skalasikan ke atas sebelum melakukan penskalaan ke luar. Artinya, Anda harus memilih perangkat yang lebih besar dan lebih canggih sebelum menggunakan beberapa perangkat yang kurang canggih. Sebaiknya Anda melakukan penskalaan dengan cara berikut:

  1. Satu pekerja + satu perangkat
  2. Satu pekerja + perangkat yang lebih canggih
  3. Satu pekerja + beberapa perangkat
  4. Pelatihan terdistribusi

Untuk mengevaluasi manfaat penelusuran ANN, Anda dapat mengukur latensi dan recall kueri tertentu. Untuk membantu penyesuaian indeks, Vertex AI Vector Search menyediakan kemampuan untuk membuat indeks brute force. Indeks brute force akan melakukan penelusuran menyeluruh, dengan mengorbankan latensi yang lebih tinggi, untuk menemukan tetangga terdekat yang sebenarnya untuk vektor kueri tertentu. Penggunaan indeks brute-force tidak dimaksudkan untuk penggunaan produksi, tetapi memberikan dasar pengukuran yang baik saat Anda menghitung recall selama penyesuaian indeks.

Untuk mengevaluasi recall terhadap latensi, Anda men-deploy penyematan kandidat yang telah dikomputasi sebelumnya ke satu indeks yang dikonfigurasi untuk penelusuran ANN dan ke indeks lain yang dikonfigurasi untuk penelusuran brute force. Indeks brute force akan menampilkan tetangga terdekat absolut, tetapi biasanya memerlukan waktu lebih lama daripada penelusuran ANN. Anda mungkin bersedia mengorbankan beberapa recall pengambilan untuk mendapatkan peningkatan latensi pengambilan, tetapi kompromi ini harus dievaluasi. Karakteristik tambahan yang memengaruhi perolehan dan latensi mencakup hal-hal berikut:

  • Parameter pemodelan: Banyak keputusan pemodelan memengaruhi ruang penyematan, yang pada akhirnya menjadi indeks penayangan. Bandingkan kandidat yang diambil untuk indeks yang dibuat dari model pengambilan dangkal dan dalam.
  • Dimensi: Dimensi adalah aspek lain yang pada akhirnya ditentukan oleh model. Dimensi indeks ANN harus cocok dengan dimensi kueri dan vektor menara kandidat.
  • Tag pemfilteran dan pengelompokan: Tag dapat memberikan kemampuan yang canggih untuk menyesuaikan hasil untuk berbagai kasus penggunaan produksi. Praktik terbaiknya adalah memahami pengaruh tag terhadap kandidat yang diambil dan dampaknya terhadap performa.
  • Jumlah ANN: Meningkatkan nilai ini akan meningkatkan recall dan dapat meningkatkan latensi secara proporsional.
  • Persentase node daun yang akan ditelusuri: Persentase node daun yang akan ditelusuri adalah opsi yang paling penting untuk mengevaluasi recall terhadap kompromi latensi. Meningkatkan nilai ini akan meningkatkan perolehan dan dapat meningkatkan latensi secara proporsional.

Langkah selanjutnya

Untuk mengetahui lebih banyak tentang arsitektur referensi, diagram, dan praktik terbaik lainnya, jelajahi Pusat Arsitektur Cloud.

Kontributor

Penulis:

Kontributor lainnya: Kaz Sato | Staf Advokat Developer