هل لديك مجلد كبير من الميمات التي تريد البحث عنها لغويا؟ هل لديك خادم Linux مزود بوحدة معالجة الرسومات Nvidia؟ أنت تفعل؛ هذا أصبح إلزاميا الآن.
يقولون أن الصورة تساوي ألف كلمة. لسوء الحظ، لا يمكن وصف العديد من مجموعات الكلمات (معظمها؟) بشكل كافٍ من خلال الصور. بغض النظر، هنا صورة. يمكنك استخدام مثيل قيد التشغيل هنا.
هذا لم يتم اختباره. ربما ينجح الأمر. يعمل إصدار Rust الجديد على تبسيط بعض الخطوات (يدمج الصورة المصغرة الخاصة به).
python -m http.server
.pip
من requirements.txt
(ربما لا يلزم أن تتطابق الإصدارات تمامًا إذا كنت بحاجة إلى تغييرها؛ لقد قمت فقط بإدخال ما قمت بتثبيته حاليًا).transformers
بسبب دعم SigLIP.thumbnailer.py
(بشكل دوري، في نفس وقت إعادة تحميل الفهرس، بشكل مثالي)clip_server.py
(كخدمة خلفية).clip_server_config.json
.device
cuda
أو cpu
. سيتم تشغيل النموذج هنا.model
هوmodel_name
هو اسم النموذج لأغراض المقاييس.max_batch_size
في الحد الأقصى لحجم الدفعة المسموح بها. تؤدي القيم الأعلى عمومًا إلى أداء أفضل إلى حد ما (يوجد عنق الزجاجة في معظم الحالات في مكان آخر الآن) على حساب استخدام VRAM أعلى.port
هو المنفذ الذي سيتم تشغيل خادم HTTP عليه.meme-search-engine
(Rust) (كخدمة خلفية أيضًا).clip_server
هو عنوان URL الكامل لخادم الواجهة الخلفية.db_path
هو المسار لقاعدة بيانات SQLite للصور والمتجهات المضمنة.files
هي المكان الذي سيتم قراءة ملفات meme منه. تتم فهرسة الدلائل الفرعية.port
هو المنفذ الذي سيتم خدمة HTTP عليه.enable_thumbs
على true
لعرض الصور المضغوطة.npm install
، node src/build.js
.frontend_config.json
.image_path
هو عنوان URL الأساسي لخادم الويب الخاص بك (مع شرطة مائلة زائدة).backend_url
هو عنوان URL الذي يتم عرض mse.py
عليه (ربما تكون الشرطة المائلة اللاحقة اختيارية).clip_server.py
. انظر هنا للحصول على معلومات حول MemeThresher، النظام التلقائي الجديد للحصول على/تقييم الميم (تحت meme-rater
). من المتوقع أن يكون نشره بنفسك أمرًا صعبًا إلى حد ما ولكن يجب أن يكون قابلاً للتنفيذ تقريبًا:
crawler.py
باستخدام المصدر الخاص بك وقم بتشغيله لتجميع مجموعة بيانات أولية.mse.py
باستخدام ملف تكوين مثل الملف المقدم لفهرسته.rater_server.py
لجمع مجموعة بيانات أولية من الأزواج.train.py
لتدريب النموذج. قد تحتاج إلى ضبط المعلمات الفائقة نظرًا لأنه ليس لدي أي فكرة عن المعلمات الجيدة.active_learning.py
في أفضل نقطة تفتيش متاحة للحصول على أزواج جديدة لتقييمها.copy_into_queue.py
لنسخ الأزواج الجديدة إلى قائمة الانتظار rater_server.py
.library_processing_server.py
وجدولة meme_pipeline.py
للتشغيل بشكل دوري. يستخدم محرك بحث Meme فهرس FAISS في الذاكرة للاحتفاظ بمتجهات التضمين الخاصة به، لأنني كنت كسولًا ويعمل بشكل جيد (حوالي 100 ميجابايت من إجمالي ذاكرة الوصول العشوائي المستخدمة في 8000 من الميمات الخاصة بي). إذا كنت تريد تخزين أكثر بكثير من ذلك، فسيتعين عليك التبديل إلى فهرس أكثر كفاءة/إحكاما (انظر هنا). نظرًا لأن مؤشرات المتجهات محفوظة حصريًا في الذاكرة، فستحتاج إما إلى تثبيتها على القرص أو استخدام مؤشرات سريعة الإنشاء/الإزالة من/الإضافة إلى (من المفترض أن تكون مؤشرات PCA/PQ). في مرحلة ما، إذا قمت بزيادة إجمالي حركة المرور، فقد يصبح نموذج CLIP أيضًا عنق الزجاجة، حيث ليس لدي أيضًا أي استراتيجية مجمعة. الفهرسة حاليًا مرتبطة بوحدة معالجة الرسومات نظرًا لأن النموذج الجديد يبدو أبطأ إلى حد ما عند أحجام الدُفعات العالية وقمت بتحسين مسار تحميل الصور. قد ترغب أيضًا في تقليص حجم الميمات المعروضة لتقليل احتياجات النطاق الترددي.