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 end-to-end dua menara pembuatan kandidat dengan Gemini Enterprise Agent Platform. Framework pemodelan dua menara adalah teknik pengambilan yang efektif untuk kasus penggunaan personalisasi karena mempelajari kesamaan semantik antara dua entitas 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, pembingkaian 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 Pelatihan Terkelola Platform Agen Gemini Enterprise; setiap menara disimpan secara terpisah dan digunakan untuk tugas yang berbeda.
  • Kueri terdaftar dan menara pemancar kandidat: Setelah menara pemancar dilatih, setiap menara pemancar diupload secara terpisah ke Model Registry di Gemini Enterprise Agent Platform.
  • Menara kueri yang di-deploy: Menara kueri terdaftar di-deploy ke endpoint online Agent Platform.
  • 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: Agent Platform 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 Penelusuran Agent Platform Vector.

Produk yang digunakan

Arsitektur referensi ini menggunakan produk Google Cloud berikut:

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 koleksi 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, pelajari representasi terbaik dari masalah atau tugas yang akan diselesaikan, dan kompilasikan 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 ini, setiap menara adalah jaringan saraf 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 Vector Search yang dioptimalkan untuk pengambilan 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 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 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 serangkaian item kandidat arbitrer, termasuk item yang belum berinteraksi dengan sistem rekomendasi. Dukungan ini dimungkinkan karena arsitektur dua menara memproses konten lengkap 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. Embedding 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 kompromi desain tambahan.

Keamanan

Agent Platform 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 Gemini Enterprise Agent Platform 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.

Tugas pelatihan profil

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 Pelatihan Terkelola Platform Agen dan Vertex AI TensorBoard, lihat Membuat profil 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. Pemanfaatan penuh akselerator pelatihan adalah praktik terbaik untuk pengelolaan biaya karena akselerator adalah komponen termahal dalam arsitektur. Penggunaan akselerator pelatihan secara penuh juga merupakan praktik terbaik untuk efisiensi tugas karena tidak adanya waktu tunggu menghasilkan konsumsi resource secara 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 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, sementara 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 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 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 antar-operasi dan meningkatkan penggunaan kembali data. Namun, tumpukan mini harus dapat dimuat ke dalam memori dengan program pelatihan lainnya. Jika Anda meningkatkan ukuran tumpukan mini terlalu besar, 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.
Peningkatan skala sebelum penyebaran skala

Saat mengonfigurasi resource komputasi untuk tugas pelatihan, sebaiknya lakukan peningkatan skala 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. 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, Vector Search Agent Platform 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 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 ingatan 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 pengelompokan 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 ditelusuri: Persentase node daun yang akan ditelusuri adalah opsi paling penting untuk mengevaluasi trade-off antara perolehan 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