의미론적으로 검색하고 싶은 대용량 밈 폴더가 있나요? Nvidia GPU를 탑재한 Linux 서버가 있습니까? 당신은 그렇습니다; 이것은 이제 필수입니다.
천 마디 말보다 한 장의 사진이 가치가 있다고 합니다. 불행하게도 많은(대부분?) 단어 세트는 그림으로 적절하게 설명할 수 없습니다. 어쨌든, 여기 사진이 있습니다. 여기에서 실행 중인 인스턴스를 사용할 수 있습니다.
이것은 테스트되지 않았습니다. 효과가 있을 수도 있습니다. 새로운 Rust 버전은 일부 단계를 단순화합니다(자체 축소판 그림 통합).
python -m http.server
사용할 수 있습니다.requirements.txt
에서 pip
사용하여 Python 종속성을 설치합니다(버전을 변경해야 하는 경우 버전이 정확히 일치할 필요는 없습니다. 저는 현재 설치한 것을 넣었습니다).transformers
필요합니다.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
귀하의 meme 웹서버의 기본 URL입니다(후행 슬래시 포함).backend_url
은 mse.py
노출되는 URL입니다(후행 슬래시는 선택 사항일 수 있음).clip_server.py
모니터링하세요. 새로운 자동 밈 획득/등급 시스템( meme-rater
아래)인 MemeThresher에 대한 정보는 여기를 참조하세요. 직접 배포하는 것은 다소 까다로울 것으로 예상되지만 대략적으로 실행 가능해야 합니다.
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 인덱스를 사용하여 임베딩 벡터를 보유합니다. 왜냐하면 제가 게으르고 잘 작동하기 때문입니다(내 8000개 밈에 총 100MB RAM이 사용됨). 그보다 훨씬 더 많은 것을 저장하려면 보다 효율적이고 컴팩트한 인덱스로 전환해야 합니다(여기 참조). 벡터 인덱스는 메모리에만 보관되므로 이를 디스크에 유지하거나 구축/제거/추가가 빠른 인덱스(아마도 PCA/PQ 인덱스)를 사용해야 합니다. 총 트래픽을 늘리면 일괄 처리 전략이 없기 때문에 어느 시점에서 CLIP 모델에도 병목 현상이 발생할 수 있습니다. 새 모델이 높은 배치 크기에서 다소 느리게 나타나고 이미지 로딩 파이프라인이 개선되었기 때문에 인덱싱은 현재 GPU에 바인딩되어 있습니다. 대역폭 요구 사항을 줄이기 위해 표시된 밈의 규모를 축소할 수도 있습니다.