Pliploop commited on
Commit
3ecf48b
·
verified ·
1 Parent(s): cbfe92b

Upload folder using huggingface_hub

Browse files
Files changed (2) hide show
  1. app.py +13 -1
  2. core.py +4 -2
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
- results = eng.multi_steer_and_retrieve(seed_track_id, pairs, k=K)
 
 
 
 
 
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)