คุณมีโฟลเดอร์มส์ขนาดใหญ่ที่คุณต้องการค้นหาตามความหมายหรือไม่? คุณมีเซิร์ฟเวอร์ Linux ที่มี Nvidia GPU หรือไม่? คุณทำ; นี่เป็นข้อบังคับแล้ว
ว่ากันว่าภาพหนึ่งภาพแทนคำพูดได้นับพันคำ น่าเสียดายที่ชุดคำศัพท์หลายชุด (ส่วนใหญ่?) ไม่สามารถอธิบายด้วยรูปภาพได้เพียงพอ ยังไงก็ตามนี่คือรูปภาพ คุณสามารถใช้อินสแตนซ์ที่ทำงานอยู่ได้ที่นี่
สิ่งนี้ยังไม่ผ่านการทดสอบ มันอาจจะได้ผล เวอร์ชัน Rust ใหม่ทำให้บางขั้นตอนง่ายขึ้น (รวมภาพขนาดย่อของตัวเองไว้ด้วย)
python -m http.server
ได้pip
จาก requirements.txt
(เวอร์ชันอาจไม่จำเป็นต้องตรงกันทุกประการหากคุณต้องการเปลี่ยนแปลง ฉันเพิ่งใส่สิ่งที่ฉันติดตั้งไว้ในปัจจุบัน)transformers
แพตช์เนื่องจากการรองรับ SigLIPthumbnailer.py
(ตามอุดมคติแล้ว ในเวลาเดียวกันกับการโหลดดัชนีใหม่)clip_server.py
(เป็นบริการพื้นหลัง)clip_server_config.json
device
ควรจะเป็น cuda
หรือ cpu
โมเดลจะทำงานที่นี่model
คือmodel_name
คือชื่อของโมเดลเพื่อวัตถุประสงค์ด้านเมตริกmax_batch_size
ควบคุมขนาดแบตช์สูงสุดที่อนุญาต โดยทั่วไปค่าที่สูงกว่าจะส่งผลให้ประสิทธิภาพค่อนข้างดีขึ้น (โดยส่วนใหญ่แล้วปัญหาคอขวดจะอยู่ที่อื่นในขณะนี้) โดยมีค่าใช้จ่ายในการใช้ VRAM ที่สูงขึ้นport
คือพอร์ตที่ใช้รันเซิร์ฟเวอร์ HTTPmeme-search-engine
(Rust) (รวมถึงบริการพื้นหลังด้วย)clip_server
คือ URL แบบเต็มสำหรับเซิร์ฟเวอร์ส่วนหลังdb_path
เป็นเส้นทางสำหรับฐานข้อมูล SQLite ของรูปภาพและเวกเตอร์ที่ฝังfiles
เป็นที่ที่ไฟล์ meme จะถูกอ่าน ไดเรกทอรีย่อยได้รับการจัดทำดัชนีport
คือพอร์ตสำหรับให้บริการ HTTPenable_thumbs
เป็น true
เพื่อให้บริการอิมเมจที่บีบอัดnpm install
, node src/build.js
frontend_config.json
image_path
เป็น URL พื้นฐานของเว็บเซิร์ฟเวอร์ meme ของคุณ (มีเครื่องหมายทับต่อท้าย)backend_url
คือ URL ที่ mse.py
ถูกเปิดเผย (เครื่องหมายสแลชต่อท้ายอาจเป็นทางเลือก)clip_server.py
ดูที่นี่สำหรับข้อมูลเกี่ยวกับ MemeThresher ซึ่งเป็นระบบการรับ/ให้คะแนน meme อัตโนมัติใหม่ (ภายใต้ 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 Search Engine ใช้ดัชนี FAISS ในหน่วยความจำเพื่อเก็บเวกเตอร์ที่ฝังไว้ เนื่องจากฉันขี้เกียจและทำงานได้ดี (RAM ทั้งหมดประมาณ 100MB ที่ใช้สำหรับ 8000 มีมของฉัน) หากคุณต้องการจัดเก็บมากกว่านั้น คุณจะต้องเปลี่ยนไปใช้ดัชนีที่มีประสิทธิภาพ/กะทัดรัดมากขึ้น (ดูที่นี่) เนื่องจากดัชนีเวกเตอร์ถูกเก็บไว้ในหน่วยความจำโดยเฉพาะ คุณจะต้องเก็บดัชนีเหล่านั้นไว้ในดิสก์หรือใช้ดัชนีที่สร้าง/ลบออกจาก/เพิ่มอย่างรวดเร็ว (สันนิษฐานว่าเป็นดัชนี PCA/PQ) ในบางจุด หากคุณเพิ่มการเข้าชมทั้งหมด โมเดล CLIP ก็อาจกลายเป็นคอขวดได้เช่นกัน เนื่องจากฉันไม่มีกลยุทธ์แบบแบตช์เช่นกัน ขณะนี้การจัดทำดัชนีเกี่ยวข้องกับ GPU เนื่องจากรุ่นใหม่จะปรากฏช้าลงเล็กน้อยเมื่อมีขนาดแบตช์สูง และฉันได้ปรับปรุงไปป์ไลน์การโหลดรูปภาพ คุณอาจต้องการลดขนาดมส์ที่แสดงเพื่อลดความต้องการแบนด์วิธ