Mengimplementasikan pengambilan dua menara untuk pembuatan kandidat berskala besar

Last reviewed 2025-01-16 UTC

Dokumen ini memberikan arsitektur referensi yang menunjukkan cara menerapkan alur kerja pembuatan kandidat dua menara end-to-end dengan Vertex AI. Framework pemodelan dua menara adalah teknik pengambilan yang efektif untuk kasus penggunaan personalisasi karena framework ini 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 mengetahui informasi selengkapnya tentang teknik pemodelan, pembentukan masalah, dan penyiapan data untuk membangun 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 dua menara gabungan dilatih secara offline menggunakan layanan Vertex AI Training; setiap menara disimpan secara terpisah dan digunakan untuk tugas yang berbeda.
  • Menyimpan menara kueri dan kandidat: Setelah menara dilatih, setiap menara diupload secara terpisah ke Vertex AI Model Registry.
  • Men-deploy menara kueri: Menara kueri terdaftar di-deploy ke endpoint online Vertex AI.
  • Prediksi batch embedding: Menara kandidat terdaftar digunakan dalam tugas prediksi batch untuk melakukan pra-komputasi representasi embedding dari semua item kandidat yang tersedia.
  • JSON Embedding: Embedding yang diprediksi 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 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 mirip atau terkait secara semantik.
  • Vertex AI Model Registry: Repositori pusat tempat Anda dapat mengelola siklus proses model ML.
  • Cloud Storage: Penyimpanan objek berbiaya rendah dan tanpa batas untuk beragam jenis data. Data dapat diakses dari dalam dan luar Google Cloud, serta direplikasi di berbagai lokasi untuk redundansi.

Kasus penggunaan

Untuk memenuhi persyaratan penayangan latensi rendah, sistem pemberi rekomendasi skala besar sering di-deploy ke produksi sebagai sistem dua tahap atau terkadang sebagai sistem multi-tahap. Tujuan tahap pertama, pembuatan kandidat, adalah menyaring banyak item kandidat dan mengambil subkumpulan ratusan item yang relevan untuk tugas pemfilteran dan pemberian peringkat di hilir. Untuk mengoptimalkan tugas pengambilan ini, pertimbangkan dua tujuan inti berikut:

  1. Selama pelatihan model, model akan mempelajari representasi terbaik dari masalah atau tugas yang harus diselesaikan, dan mengompilasi representasi ini ke dalam embedding <query, candidate>.
  2. Selama penyajian model, ambil item yang relevan dengan cukup cepat untuk memenuhi persyaratan latensi.

Diagram berikut menunjukkan komponen konseptual pemberi rekomendasi dua tahap:

Komponen konseptual pemberi rekomendasi dua tahap.

Dalam diagram, pemilihan kandidat memfilter jutaan item kandidat. Kemudian, peringkat 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 neural yang memproses fitur kueri atau item kandidat, lalu menghasilkan representasi sematan dari fitur tersebut. Setiap menara di-deploy secara terpisah, karena setiap menara akan digunakan untuk tugas yang berbeda dalam produksi:

  • Menara kandidat: Menara kandidat digunakan untuk melakukan pra-penghitungan embedding untuk semua item kandidat. Embedding yang telah dihitung sebelumnya di-deploy ke endpoint indeks Vertex AI Vector Search yang dioptimalkan untuk pengambilan dengan latensi rendah.
  • Men-deploy menara: Selama penayangan online, menara kueri yang di-deploy mengonversi kueri pengguna mentah menjadi representasi sematan. Representasi embedding kemudian digunakan untuk mencari embedding item serupa dalam indeks yang di-deploy.

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

  • Anda dapat menayangkan item baru (segar) tanpa melatih ulang kosakata item baru. Dengan memasukkan serangkaian fitur item ke menara item kandidat, Anda dapat menghitung sematan item untuk serangkaian kandidat, bahkan yang tidak terlihat selama pelatihan. Melakukan komputasi ini membantu mengatasi masalah cold start.
    • Menara kandidat dapat mendukung serangkaian item kandidat arbitrer, termasuk item yang belum berinteraksi dengan sistem rekomendasi. Dukungan ini dimungkinkan karena arsitektur dua menara memproses konten multimedia dan fitur metadata tentang setiap pasangan <query, candidate>. Jenis pemrosesan ini memungkinkan sistem mendeskripsikan item yang tidak diketahui dalam hal item yang diketahuinya.
  • Anda dapat mengoptimalkan inferensi pengambilan dengan melakukan pra-penghitungan semua sematan item kandidat. Penyematan yang telah dihitung 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 separuh pasangan, seperti kueri, dan Anda perlu mencari item terkait lainnya, Anda dapat melakukan pra-komputasi separuh persamaan terlebih dahulu. Dengan pra-komputasi, Anda dapat membuat keputusan lainnya secepat mungkin.

Pertimbangan desain

Bagian ini memberikan 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 spesifik Anda, Anda dapat memilih untuk mempertimbangkan faktor dan trade-off desain tambahan.

Keamanan

Vertex AI Vector Search mendukung deployment endpoint publik dan Virtual Private Cloud (VPC). Jika Anda ingin menggunakan jaringan VPC, mulai dengan mengikuti 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 beban kerja Anda.

Membuat profil tugas pelatihan

Untuk mengoptimalkan pipeline input data dan keseluruhan grafik pelatihan, sebaiknya Anda membuat 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 memprofilkan sejumlah batch untuk setiap epoch. Profil ini merekam aktivitas dari CPU host dan dari hardware GPU atau TPU perangkat. Trace memberikan informasi tentang konsumsi resource tugas pelatihan. Untuk menghindari error kehabisan memori, sebaiknya mulai dengan durasi profil antara 2 dan 10 langkah pelatihan, lalu tingkatkan sesuai kebutuhan.

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

Memanfaatkan akselerator sepenuhnya

Saat Anda melampirkan akselerator pelatihan seperti GPU NVIDIA atau TPU Cloud, penting untuk memastikan akselerator tersebut digunakan sepenuhnya. Penggunaan penuh akselerator pelatihan adalah praktik terbaik untuk pengelolaan biaya karena akselerator adalah komponen termahal dalam arsitektur. Penggunaan penuh akselerator pelatihan juga merupakan praktik terbaik untuk efisiensi tugas karena tidak adanya waktu tunggu menghasilkan konsumsi resource keseluruhan yang lebih sedikit.

Agar akselerator dapat digunakan sepenuhnya, biasanya Anda melakukan beberapa iterasi untuk menemukan hambatan, mengoptimalkan hambatan, lalu mengulangi langkah-langkah ini hingga penggunaan perangkat akselerator dapat diterima. Karena banyak set data untuk kasus penggunaan ini terlalu besar untuk dimuat ke dalam memori, hambatan biasanya ditemukan di 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 awal, data 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 hambatan 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.
  • Memproses data: Untuk meningkatkan kualitas pemrosesan 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 tumpukan mini. Mini-batch adalah jumlah sampel pelatihan yang digunakan oleh setiap perangkat dalam satu iterasi loop pelatihan. Dengan meningkatkan ukuran tumpukan mini, Anda meningkatkan paralelisme antaroperasi dan meningkatkan penggunaan kembali data. Namun, mini-batch harus dapat dimuat ke dalam memori bersama program pelatihan lainnya. Jika Anda terlalu banyak meningkatkan ukuran tumpukan mini, Anda dapat mengalami error kehabisan memori dan perbedaan model.
  • Memvektorisasi fungsi yang ditentukan pengguna. Biasanya, transformasi data dapat dinyatakan sebagai fungsi yang ditentukan pengguna yang menjelaskan cara mengubah setiap elemen set data input. Untuk memvektorisasi fungsi ini, Anda menerapkan operasi transformasi pada batch input sekaligus, bukan mentransformasi satu elemen dalam satu waktu. Setiap fungsi yang ditentukan pengguna memiliki overhead yang terkait dengan penjadwalan dan eksekusi. Saat mentransformasi batch input, Anda akan dikenai biaya tambahan sekali per batch, bukan sekali per elemen set data.
Lakukan peningkatan skala sebelum melakukan penskalaan horizontal

Saat mengonfigurasi resource komputasi untuk tugas pelatihan, sebaiknya lakukan penskalaan ke atas sebelum 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. Pekerja tunggal + perangkat yang lebih canggih
  3. Satu pekerja + beberapa perangkat
  4. Pelatihan terdistribusi

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

Untuk mengevaluasi perolehan terhadap latensi, Anda men-deploy sematan kandidat yang telah dihitung 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 akan memerlukan waktu lebih lama daripada penelusuran ANN. Anda mungkin bersedia mengorbankan sebagian perolehan pengambilan untuk mendapatkan peningkatan latensi pengambilan, tetapi pertukaran ini harus dievaluasi. Karakteristik tambahan yang memengaruhi perolehan dan latensi meliputi:

  • 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 vektor menara kueri dan kandidat.
  • Tag penumpukan dan pemfilteran: Tag dapat memberikan kemampuan yang efektif untuk menyesuaikan hasil bagi berbagai kasus penggunaan produksi. Memahami pengaruh tag terhadap kandidat yang diambil dan dampaknya terhadap performa adalah praktik terbaik.
  • Jumlah ANN: Meningkatkan nilai ini akan meningkatkan perolehan dan dapat meningkatkan latensi secara proporsional.
  • Persentase node daun yang akan dicari: Persentase node daun yang akan dicari adalah opsi paling penting untuk mengevaluasi trade-off antara recall dan latensi. Meningkatkan nilai ini akan meningkatkan perolehan dan dapat meningkatkan latensi secara proporsional.

Langkah berikutnya

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

Kontributor

Penulis:

Kontributor lainnya: Kaz Sato | Staff Developer Advocate