Repositori ini bertujuan untuk membangun prototipe mesin pencari yang didukung pembelajaran mesin (ML) untuk mengambil dan merekomendasikan produk berdasarkan kueri teks atau gambar. Ini adalah panduan langkah demi langkah tentang cara membuat Model SageMaker dengan Pra-Pelatihan Gambar-Bahasa Kontrasif (CLIP), menggunakan model untuk menyandikan gambar dan teks ke dalam penyematan, menyerap penyematan ke dalam indeks Amazon OpenSearch Service, dan menanyakan indeks menggunakan fungsionalitas OpenSearch Service k-nearest neighbour (KNN).
Pengambilan berbasis penyematan (EBR) baik digunakan dalam sistem pencarian dan rekomendasi. Ia menggunakan algoritme pencarian tetangga terdekat (perkiraan) untuk menemukan item serupa atau terkait erat dari penyimpanan penyematan (juga dikenal sebagai database vektor). Mekanisme pencarian klasik sangat bergantung pada pencocokan kata kunci dan mengabaikan makna leksikal atau konteks kueri. Tujuan EBR adalah memberi pengguna kemampuan untuk menemukan produk paling relevan menggunakan teks bebas. Ini populer karena dibandingkan dengan pencocokan kata kunci, ini memanfaatkan konsep semantik dalam proses pengambilan.
Dalam repo ini, kami fokus pada pembuatan prototipe mesin telusur yang didukung pembelajaran mesin (ML) untuk mengambil dan merekomendasikan produk berdasarkan kueri teks atau gambar. Ini menggunakan Amazon OpenSearch Service dan fungsionalitas k-nearest neighbours (KNN), serta Amazon SageMaker dan fitur inferensi tanpa servernya. Amazon SageMaker adalah layanan terkelola sepenuhnya yang memberi setiap pengembang dan ilmuwan data kemampuan untuk membangun, melatih, dan menerapkan model ML untuk setiap kasus penggunaan dengan infrastruktur, alat, dan alur kerja yang terkelola sepenuhnya. Amazon OpenSearch Service adalah layanan terkelola sepenuhnya yang memudahkan melakukan analisis log interaktif, pemantauan aplikasi real-time, pencarian situs web, dan banyak lagi.
Pra-Pelatihan Bahasa-Gambar Kontrastif (CLIP) adalah jaringan saraf yang dilatih pada berbagai pasangan gambar dan teks. Jaringan saraf CLIP mampu memproyeksikan gambar dan teks ke dalam ruang laten yang sama, yang berarti keduanya dapat dibandingkan menggunakan ukuran kesamaan, seperti kesamaan kosinus. Anda dapat menggunakan CLIP untuk menyandikan gambar atau deskripsi produk Anda ke dalam penyematan, lalu menyimpannya ke dalam database vektor. Kemudian pelanggan Anda dapat melakukan query di database untuk mengambil produk yang mungkin mereka minati. Untuk menanyakan database, pelanggan Anda perlu memberikan masukan gambar atau teks, dan kemudian masukan tersebut akan dikodekan dengan CLIP sebelum dikirim ke database vektor untuk pencarian KNN.
Basis data vektor di sini berperan sebagai mesin pencari. Basis data vektor ini mendukung penyatuan pencarian berbasis gambar dan teks, yang sangat berguna dalam industri e-niaga dan ritel. Salah satu contoh pencarian berbasis gambar adalah pelanggan Anda dapat mencari suatu produk dengan mengambil gambar, lalu menanyakan database menggunakan gambar tersebut. Mengenai pencarian berbasis teks, pelanggan Anda dapat mendeskripsikan produk dalam format teks bebas, dan kemudian menggunakan teks tersebut sebagai kueri. Hasil pencarian akan diurutkan berdasarkan skor kemiripan (cosinus kesamaan), jika item inventaris Anda lebih mirip dengan kueri (masukan gambar atau teks), skor akan mendekati 1, jika tidak, skor akan mendekati 0. Produk K teratas hasil pencarian Anda adalah produk yang paling relevan di inventaris Anda.
Layanan OpenSearch menyediakan pencocokan teks dan penyematan pencarian berbasis KNN. Kami akan menggunakan penyematan pencarian berbasis KNN dalam solusi ini. Anda dapat menggunakan gambar dan teks sebagai kueri untuk mencari item dari inventaris. Implementasi aplikasi pencarian berbasis gambar dan pengujian terpadu KNN ini terdiri dari dua tahap:
Solusinya menggunakan layanan dan fitur AWS berikut:
Dalam templat opensearch.yml
, ini akan membuat Domain OpenSearch dan memberikan peran SageMaker Studio Execution Anda untuk menggunakan domain tersebut.
Dalam template sagemaker-studio-opensearch.yml
, itu akan membuat Domain SageMaker baru, profil pengguna di Domain dan Domain OpenSearch. Jadi Anda bisa menggunakan profil pengguna StageMaker untuk membangun POC ini.
Anda dapat memilih salah satu templat untuk dijalankan dengan mengikuti langkah-langkah di bawah ini.
Langkah 1: Buka Layanan CloudFormation di konsol AWS Anda.
Langkah 2: Unggah templat untuk membuat tumpukan CloudFormation clip-poc-stack
.
Jika Anda sudah menjalankan SageMaker Studio, Anda dapat menggunakan templat opensearch.yml
.
Jika saat ini Anda tidak memiliki SageMaker Studio, Anda dapat menggunakan templat sagemaker-studio-opensearch.yml
. Ini akan membuat Domain Studio dan profil pengguna untuk Anda.
Langkah 3: Periksa status tumpukan CloudFormation. Diperlukan waktu sekitar 20 menit untuk menyelesaikan pembuatannya.
Setelah tumpukan dibuat, Anda dapat membuka Konsol SageMaker dan klik Open Studio
untuk masuk ke lingkungan Jupyter.
Jika selama eksekusi, CloudFormation menunjukkan kesalahan tentang peran tertaut layanan OpenSearch tidak dapat ditemukan. Anda perlu membuat peran tertaut layanan dengan menjalankan aws iam create-service-linked-role --aws-service-name es.amazonaws.com
di akun AWS Anda.
Silakan buka file blog_clip.ipynb
dengan SageMaker Studio dan gunakan kernel Data Science Python 3
. Anda dapat mengeksekusi sel dari awal.
Kumpulan Data Objek Amazon Berkeley digunakan dalam implementasi. Kumpulan datanya adalah kumpulan 147.702 daftar produk dengan metadata multibahasa dan 398.212 gambar katalog unik. Kami hanya akan menggunakan gambar item dan nama item dalam bahasa Inggris AS. Untuk tujuan demo kami akan menggunakan ~1.600 produk.
Bagian ini menguraikan pertimbangan biaya untuk menjalankan demo ini. Menyelesaikan POC akan menerapkan OpenSearch Cluster dan SageMaker Studio dengan biaya kurang dari $2 per jam. Tercatat: harga yang tercantum di bawah ini dihitung menggunakan wilayah us-east-1. Biayanya bervariasi dari satu daerah ke daerah lain. Dan biayanya juga dapat berubah seiring waktu (harga di sini tercatat pada 22-11-2022).
Rincian biaya lebih lanjut ada di bawah.
Layanan OpenSearch – Harga bervariasi berdasarkan penggunaan jenis instans dan biaya Penyimpanan. Untuk informasi selengkapnya, lihat Harga Amazon OpenSearch Service.
t3.small.search
berjalan sekitar 1 jam dengan biaya $0,036 per jam.SageMaker – Harga bervariasi berdasarkan penggunaan instans EC2 untuk Aplikasi Studio, pekerjaan Transformasi Batch, dan titik akhir Inferensi Tanpa Server. Untuk informasi selengkapnya, lihat Harga Amazon SageMaker.
ml.t3.medium
untuk Notebook Studio berjalan sekitar 1 jam dengan biaya $0,05 per jam.ml.c5.xlarge
untuk Batch Transform berjalan sekitar 6 menit dengan biaya $0,204 per jam.S3 – Biaya rendah, harga akan bervariasi tergantung besar kecilnya model/artefak yang disimpan. 50 TB pertama setiap bulan hanya berharga $0,023 per GB yang disimpan. Untuk informasi selengkapnya, lihat Harga Amazon S3.
Lihat KONTRIBUSI untuk informasi lebih lanjut.
Perpustakaan ini dilisensikan di bawah Lisensi MIT-0. Lihat file LISENSI.