Apakah Anda memiliki folder meme yang besar yang ingin Anda cari secara semantik? Apakah Anda memiliki server Linux dengan GPU Nvidia? Anda melakukannya; ini sekarang wajib.
Mereka mengatakan sebuah gambar dapat mewakili ribuan kata. Sayangnya, banyak (sebagian besar?) kumpulan kata yang tidak dapat dijelaskan secara memadai melalui gambar. Terlepas dari itu, berikut adalah gambarnya. Anda dapat menggunakan instance yang sedang berjalan di sini.
Ini belum teruji. Ini mungkin berhasil. Versi Rust yang baru menyederhanakan beberapa langkah (mengintegrasikan thumbnail-nya sendiri).
python -m http.server
.pip
dari requirements.txt
(versinya mungkin tidak harus sama persis jika Anda perlu mengubahnya; saya hanya memasukkan apa yang telah saya instal saat ini).transformers
yang ditambal karena dukungan SigLIP.thumbnailer.py
(idealnya, secara berkala, bersamaan dengan pemuatan ulang indeks)clip_server.py
(sebagai layanan latar belakang).clip_server_config.json
.device
mungkin seharusnya cuda
atau cpu
. Modelnya akan berjalan di sini.model
adalahmodel_name
adalah nama model untuk tujuan metrik.max_batch_size
mengontrol ukuran batch maksimum yang diperbolehkan. Nilai yang lebih tinggi umumnya menghasilkan kinerja yang lebih baik (hambatan dalam banyak kasus ada di tempat lain saat ini) dengan mengorbankan penggunaan VRAM yang lebih tinggi.port
adalah port untuk menjalankan server HTTP.meme-search-engine
(Rust) (juga sebagai layanan latar belakang).clip_server
adalah URL lengkap untuk server backend.db_path
adalah jalur untuk database gambar SQLite dan penyematan vektor.files
adalah tempat file meme akan dibaca. Subdirektori diindeks.port
adalah port untuk melayani HTTP.enable_thumbs
ke true
untuk menyajikan gambar terkompresi.npm install
, node src/build.js
.frontend_config.json
.image_path
adalah URL dasar server web meme Anda (dengan garis miring).backend_url
adalah URL mse.py
yang diekspos (garis miring mungkin opsional).clip_server.py
. Lihat di sini untuk informasi tentang MemeThresher, sistem perolehan/penilaian meme otomatis yang baru (di bawah meme-rater
). Menerapkannya sendiri diperkirakan agak rumit tetapi secara kasar dapat dilakukan:
crawler.py
dengan sumber Anda sendiri dan jalankan untuk mengumpulkan kumpulan data awal.mse.py
dengan file konfigurasi seperti yang disediakan untuk mengindeksnya.rater_server.py
untuk mengumpulkan kumpulan data awal yang berpasangan.train.py
untuk melatih model. Anda mungkin perlu menyesuaikan hyperparameter karena saya tidak tahu mana yang bagus.active_learning.py
pada pos pemeriksaan terbaik yang tersedia untuk mendapatkan pasangan baru untuk dinilai.copy_into_queue.py
untuk menyalin pasangan baru ke dalam antrian rater_server.py
.library_processing_server.py
dan jadwalkan meme_pipeline.py
untuk dijalankan secara berkala. Mesin Pencari Meme menggunakan indeks FAISS dalam memori untuk menyimpan vektor penyematannya, karena saya malas dan berfungsi dengan baik (~total RAM 100MB digunakan untuk 8000 meme saya). Jika Anda ingin menyimpan lebih banyak dari itu, Anda harus beralih ke indeks yang lebih efisien/kompak (lihat di sini). Karena indeks vektor disimpan secara eksklusif di memori, Anda harus menyimpannya ke disk atau menggunakan indeks yang cepat untuk dibuat/dihapus dari/ditambahkan (mungkin indeks PCA/PQ). Pada titik tertentu jika Anda meningkatkan total lalu lintas, model CLIP juga dapat menjadi hambatan, karena saya juga tidak memiliki strategi batching. Pengindeksan saat ini terikat pada GPU karena model baru tampak agak lebih lambat pada ukuran batch tinggi dan saya meningkatkan jalur pemuatan gambar. Anda mungkin juga ingin memperkecil meme yang ditampilkan untuk mengurangi kebutuhan bandwidth.