Spaces:
Running on Zero
Running on Zero
feat(tools): refresh_models materializes every required model
Browse files- tools/refresh_models.py +37 -0
tools/refresh_models.py
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Materialize all LTX 2.3 model files for every mode by walking each template."""
|
| 2 |
+
from __future__ import annotations
|
| 3 |
+
|
| 4 |
+
import pathlib
|
| 5 |
+
import sys
|
| 6 |
+
|
| 7 |
+
# Ensure project root is on sys.path so `import models` / `import workflow` work
|
| 8 |
+
# when this script is invoked directly (e.g. `python tools/refresh_models.py`).
|
| 9 |
+
_PROJECT_ROOT = pathlib.Path(__file__).resolve().parent.parent
|
| 10 |
+
if str(_PROJECT_ROOT) not in sys.path:
|
| 11 |
+
sys.path.insert(0, str(_PROJECT_ROOT))
|
| 12 |
+
|
| 13 |
+
import models # noqa: E402
|
| 14 |
+
from workflow import VALID_MODES, load_template # noqa: E402
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
def main() -> int:
|
| 18 |
+
needed: set[str] = set()
|
| 19 |
+
for mode in VALID_MODES:
|
| 20 |
+
try:
|
| 21 |
+
wf = load_template(mode)
|
| 22 |
+
needed.update(models.walk_workflow_for_models(wf))
|
| 23 |
+
except FileNotFoundError:
|
| 24 |
+
print(f" WARNING: workflows/{mode}.json missing — run tools/extract_modes.py first")
|
| 25 |
+
if not needed:
|
| 26 |
+
print("Nothing to do.")
|
| 27 |
+
return 0
|
| 28 |
+
print(f"Materializing {len(needed)} model files...")
|
| 29 |
+
for event in models.ensure_models(needed):
|
| 30 |
+
marker = "OK" if event.mb_done >= event.mb_total else "DL"
|
| 31 |
+
print(f" [{marker}] {event.filename} {event.mb_done:.1f}/{event.mb_total:.1f} MB")
|
| 32 |
+
print("Done.")
|
| 33 |
+
return 0
|
| 34 |
+
|
| 35 |
+
|
| 36 |
+
if __name__ == "__main__":
|
| 37 |
+
sys.exit(main())
|