Spaces:
Running on Zero
Running on Zero
Upload folder using huggingface_hub
Browse files
app.py
CHANGED
|
@@ -270,8 +270,20 @@ def live_retrieve(seed_track_id, concepts, *alphas):
|
|
| 270 |
*_slider_components(concepts, alphas),
|
| 271 |
)
|
| 272 |
pairs = _active_pairs(concepts, alphas)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 273 |
eng = ensure_engine()
|
| 274 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 275 |
return _status_html(concepts, alphas), results_html(results), *_slider_components(concepts, alphas)
|
| 276 |
|
| 277 |
|
|
|
|
| 270 |
*_slider_components(concepts, alphas),
|
| 271 |
)
|
| 272 |
pairs = _active_pairs(concepts, alphas)
|
| 273 |
+
active_pairs = [(c, a) for c, a in pairs if abs(float(a)) >= 1e-6]
|
| 274 |
+
if not active_pairs:
|
| 275 |
+
return (
|
| 276 |
+
_status_html(concepts, alphas, prefix="Showing nearest neighbours for the seed."),
|
| 277 |
+
results_html(_baseline_results(seed_track_id)),
|
| 278 |
+
*_slider_components(concepts, alphas),
|
| 279 |
+
)
|
| 280 |
eng = ensure_engine()
|
| 281 |
+
missing = [concept for concept, _ in active_pairs if not eng.has_slider(concept)]
|
| 282 |
+
if missing:
|
| 283 |
+
name = missing[0]
|
| 284 |
+
note = _status_html(concepts, alphas, prefix=f"Preparing slider for {name}; click Make slider if it is not ready.")
|
| 285 |
+
return note, results_html(_baseline_results(seed_track_id)), *_slider_components(concepts, alphas)
|
| 286 |
+
results = eng.multi_steer_and_retrieve(seed_track_id, active_pairs, k=K)
|
| 287 |
return _status_html(concepts, alphas), results_html(results), *_slider_components(concepts, alphas)
|
| 288 |
|
| 289 |
|
core.py
CHANGED
|
@@ -88,9 +88,11 @@ class DemoEngine:
|
|
| 88 |
text_encoder.device = target
|
| 89 |
self._text_encoder_device = target
|
| 90 |
|
| 91 |
-
def _slider(self, concept: str) -> Slider:
|
| 92 |
key = self._slider_key(concept)
|
| 93 |
if key not in self._slider_cache:
|
|
|
|
|
|
|
| 94 |
target = self.text_device if str(self.text_device).startswith("cuda") and torch.cuda.is_available() else "cpu"
|
| 95 |
self._set_text_encoder_device(target)
|
| 96 |
try:
|
|
@@ -141,7 +143,7 @@ class DemoEngine:
|
|
| 141 |
alpha = float(alpha)
|
| 142 |
if not concept or abs(alpha) < 1e-6:
|
| 143 |
continue
|
| 144 |
-
slider_masks.append((self._slider(concept).mask, alpha))
|
| 145 |
|
| 146 |
with torch.inference_mode():
|
| 147 |
_, sparse, _, _ = self.model.inference(z)
|
|
|
|
| 88 |
text_encoder.device = target
|
| 89 |
self._text_encoder_device = target
|
| 90 |
|
| 91 |
+
def _slider(self, concept: str, *, create: bool = True) -> Slider:
|
| 92 |
key = self._slider_key(concept)
|
| 93 |
if key not in self._slider_cache:
|
| 94 |
+
if not create:
|
| 95 |
+
raise KeyError(f"Slider for concept {concept!r} has not been created yet.")
|
| 96 |
target = self.text_device if str(self.text_device).startswith("cuda") and torch.cuda.is_available() else "cpu"
|
| 97 |
self._set_text_encoder_device(target)
|
| 98 |
try:
|
|
|
|
| 143 |
alpha = float(alpha)
|
| 144 |
if not concept or abs(alpha) < 1e-6:
|
| 145 |
continue
|
| 146 |
+
slider_masks.append((self._slider(concept, create=False).mask, alpha))
|
| 147 |
|
| 148 |
with torch.inference_mode():
|
| 149 |
_, sparse, _, _ = self.model.inference(z)
|