abedgemma commited on
Commit
d7e263e
·
verified ·
1 Parent(s): bf3963a

Update model_manager.py

Browse files
Files changed (1) hide show
  1. model_manager.py +31 -10
model_manager.py CHANGED
@@ -215,18 +215,31 @@ class ModelManager:
215
  loop = asyncio.get_running_loop()
216
 
217
  def _dl(repo, glob):
218
- import subprocess, shutil
 
 
 
 
 
 
219
  for g in [glob, m.glob_fallback if glob == m.glob_primary else ""]:
220
  if not g:
221
  continue
222
- r = subprocess.run(
223
- ["huggingface-cli", "download", repo,
224
- "--include", g, "--local-dir", str(MODEL_DIR), "--quiet"],
225
- env={**os.environ, "HF_HUB_ENABLE_HF_TRANSFER": "1"},
226
- capture_output=True
227
- )
 
 
 
228
  if r.returncode == 0:
229
- break
 
 
 
 
230
  return ""
231
 
232
  TIMEOUT = float(os.getenv("DOWNLOAD_TIMEOUT", "30.0")) * 20 # max 10 min
@@ -429,16 +442,24 @@ if __name__ == "__main__":
429
 
430
  elif cmd == "ensure-downloaded":
431
  async def _run():
 
 
432
  mgr.apply_pending()
433
  m = CATALOG_BY_ID.get(mgr.cfg.active_id) or mgr.select_best()
434
  mgr.cfg.active_id = m.id
 
435
  path, mmproj = await mgr.download(m)
436
  if not path:
437
- # fallback to smallest
438
  fb = min(CATALOG, key=lambda x: x.size_gb)
 
439
  path, mmproj = await mgr.download(fb)
440
  if path:
441
  mgr.cfg.active_id = fb.id
 
 
 
 
442
  mgr.cfg.active_path = path
443
  mgr.cfg.mmproj_path = mmproj
444
  mgr.cfg.save()
@@ -451,4 +472,4 @@ if __name__ == "__main__":
451
  asyncio.run(_run())
452
 
453
  else:
454
- print(f"Unknown: {cmd}", file=sys.stderr); sys.exit(1)
 
215
  loop = asyncio.get_running_loop()
216
 
217
  def _dl(repo, glob):
218
+ import subprocess
219
+ # Build env — HF_TOKEN optional for public repos
220
+ env = {**os.environ, "HF_HUB_ENABLE_HF_TRANSFER": "1"}
221
+ token = os.getenv("HF_TOKEN", "").strip()
222
+ if token:
223
+ env["HUGGING_FACE_HUB_TOKEN"] = token
224
+ env["HF_TOKEN"] = token
225
  for g in [glob, m.glob_fallback if glob == m.glob_primary else ""]:
226
  if not g:
227
  continue
228
+ cmd = ["huggingface-cli", "download", repo,
229
+ "--include", g, "--local-dir", str(MODEL_DIR)]
230
+ if not token:
231
+ # Public access — verbose to see any auth errors
232
+ cmd.append("--quiet")
233
+ else:
234
+ cmd.append("--quiet")
235
+ logger.info(f"[models] Running: {' '.join(cmd[:5])}...")
236
+ r = subprocess.run(cmd, env=env, capture_output=True, timeout=600)
237
  if r.returncode == 0:
238
+ logger.info(f"[models] Download succeeded for glob: {g}")
239
+ return ""
240
+ else:
241
+ err = r.stderr.decode("utf-8", errors="replace")[:300]
242
+ logger.warning(f"[models] Download failed (glob={g}): {err}")
243
  return ""
244
 
245
  TIMEOUT = float(os.getenv("DOWNLOAD_TIMEOUT", "30.0")) * 20 # max 10 min
 
442
 
443
  elif cmd == "ensure-downloaded":
444
  async def _run():
445
+ token = os.getenv("HF_TOKEN", "").strip()
446
+ print(f"[model_manager] HF_TOKEN: {'SET (len=' + str(len(token)) + ')' if token else 'NOT SET — using anonymous access'}", file=sys.stderr)
447
  mgr.apply_pending()
448
  m = CATALOG_BY_ID.get(mgr.cfg.active_id) or mgr.select_best()
449
  mgr.cfg.active_id = m.id
450
+ print(f"[model_manager] Downloading: {m.name} ({m.size_gb}GB) from {m.repo}", file=sys.stderr)
451
  path, mmproj = await mgr.download(m)
452
  if not path:
453
+ print(f"[model_manager] Primary download failed, trying smallest fallback...", file=sys.stderr)
454
  fb = min(CATALOG, key=lambda x: x.size_gb)
455
+ print(f"[model_manager] Fallback: {fb.name}", file=sys.stderr)
456
  path, mmproj = await mgr.download(fb)
457
  if path:
458
  mgr.cfg.active_id = fb.id
459
+ if not path:
460
+ print(f"[model_manager] ALL downloads failed!", file=sys.stderr)
461
+ else:
462
+ print(f"[model_manager] SUCCESS: {path}", file=sys.stderr)
463
  mgr.cfg.active_path = path
464
  mgr.cfg.mmproj_path = mmproj
465
  mgr.cfg.save()
 
472
  asyncio.run(_run())
473
 
474
  else:
475
+ print(f"Unknown: {cmd}", file=sys.stderr); sys.exit(1)