desiree commited on
Commit
388cdcd
·
verified ·
1 Parent(s): 2b1b0f4

Phase 2: wire Wan 2.1-1.3B into small lane, Wan 2.2 A14B into production lane

Browse files
Files changed (1) hide show
  1. spi/renderers/registry.py +8 -4
spi/renderers/registry.py CHANGED
@@ -1,11 +1,13 @@
1
  """ModelRouter (§13): chooses a renderer by capability/quality/cost/VRAM, respecting SPI_MODE.
2
- Phase 1 registers mock renderers; Phase 2 registers Wan/LTX adapters behind the same interface."""
 
3
  from __future__ import annotations
4
 
5
  from typing import Any
6
 
7
  from spi.renderers.base import Renderer, RendererError
8
  from spi.renderers.mock import MockAudioRenderer, MockImageRenderer, MockVideoRenderer
 
9
 
10
  DEFAULT_REGISTRIES: dict[str, dict[str, Renderer]] = {
11
  "mock": {
@@ -14,12 +16,14 @@ DEFAULT_REGISTRIES: dict[str, dict[str, Renderer]] = {
14
  "audio": MockAudioRenderer(),
15
  },
16
  "small": {
17
- "video": MockVideoRenderer(), # until Phase 2 wires Wan2.1-1.3B / LTX-Video-2B adapters
 
18
  "image": MockImageRenderer(),
19
  "audio": MockAudioRenderer(),
20
  },
21
  "production": {
22
- "video": MockVideoRenderer(), # placeholder; Wan 2.2 adapter is the Phase 2 deliverable
 
23
  "image": MockImageRenderer(),
24
  "audio": MockAudioRenderer(),
25
  },
@@ -61,7 +65,7 @@ class ModelRouter:
61
  elif req_key not in caps:
62
  score += 10 # cannot satisfy: deprioritize hard
63
  vram = caps.get("vram_gb", 999)
64
- score += 0 if vram == 0 else min(vram, 20) # cheap-first bias
65
  scored.append((score, renderer))
66
  scored.sort(key=lambda pair: (pair[0], pair[1].name))
67
  return scored[0][1]
 
1
  """ModelRouter (§13): chooses a renderer by capability/quality/cost/VRAM, respecting SPI_MODE.
2
+ Renderer construction is lazy (models load on first generate), so registering the real
3
+ Wan adapters here costs nothing on CPU-only test environments."""
4
  from __future__ import annotations
5
 
6
  from typing import Any
7
 
8
  from spi.renderers.base import Renderer, RendererError
9
  from spi.renderers.mock import MockAudioRenderer, MockImageRenderer, MockVideoRenderer
10
+ from spi.renderers.wan import WanRenderer
11
 
12
  DEFAULT_REGISTRIES: dict[str, dict[str, Renderer]] = {
13
  "mock": {
 
16
  "audio": MockAudioRenderer(),
17
  },
18
  "small": {
19
+ # real backend: Wan 2.1 T2V 1.3B (Apache-2.0, ~8.2 GB VRAM) — Phase 2 deliverable
20
+ "video": WanRenderer("Wan-AI/Wan2.1-T2V-1.3B-Diffusers"),
21
  "image": MockImageRenderer(),
22
  "audio": MockAudioRenderer(),
23
  },
24
  "production": {
25
+ # placeholder quality lane: loads on first use, needs ~80 GB VRAM (Phase 10 hardware)
26
+ "video": WanRenderer("Wan-AI/Wan2.2-T2V-A14B-Diffusers"),
27
  "image": MockImageRenderer(),
28
  "audio": MockAudioRenderer(),
29
  },
 
65
  elif req_key not in caps:
66
  score += 10 # cannot satisfy: deprioritize hard
67
  vram = caps.get("vram_gb", 999)
68
+ score += 0 if vram == 0 else min(int(vram), 20) # cheap-first bias
69
  scored.append((score, renderer))
70
  scored.sort(key=lambda pair: (pair[0], pair[1].name))
71
  return scored[0][1]