feat: add ImageFind application and release pipelines
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import time
|
||||
from pathlib import Path
|
||||
|
||||
from imagefind.accelerator import AcceleratorService
|
||||
from imagefind.config import Settings
|
||||
from imagefind.inference import InferenceSupervisor, IsolatedEmbeddingService
|
||||
|
||||
|
||||
def test_hash_embeddings_remain_in_process_without_starting_worker(tmp_path: Path):
|
||||
settings = Settings(data_dir=tmp_path, embedding_backend="hash")
|
||||
settings.prepare()
|
||||
accelerator = AcceleratorService(settings)
|
||||
supervisor = InferenceSupervisor(settings, accelerator, idle_seconds=5)
|
||||
embeddings = IsolatedEmbeddingService(settings, accelerator, supervisor)
|
||||
|
||||
vector = embeddings.encode_text("本地测试")
|
||||
assert len(vector) == 512
|
||||
assert supervisor.status()["running"] is False
|
||||
supervisor.close()
|
||||
|
||||
|
||||
def test_inference_worker_is_lazy_and_exits_after_idle_window(tmp_path: Path):
|
||||
settings = Settings(data_dir=tmp_path, embedding_backend="auto")
|
||||
settings.prepare()
|
||||
accelerator = AcceleratorService(settings)
|
||||
supervisor = InferenceSupervisor(settings, accelerator, idle_seconds=5)
|
||||
try:
|
||||
assert supervisor.status()["running"] is False
|
||||
assert supervisor.call("reset", component="visual") is None
|
||||
started = supervisor.status()
|
||||
assert started["running"] is True
|
||||
assert started["pid"]
|
||||
|
||||
deadline = time.monotonic() + 8
|
||||
while supervisor.status()["running"] and time.monotonic() < deadline:
|
||||
time.sleep(0.1)
|
||||
assert supervisor.status()["running"] is False
|
||||
finally:
|
||||
supervisor.close()
|
||||
Reference in New Issue
Block a user