MCPcopy Create free account
hub / github.com/ModelTC/LightX2V / __init__

Method __init__

lightx2v/disagg/services/decoder.py:26–73  ·  view source on GitHub ↗
(self, config: dict)

Source from the content-addressed store, hash-verified

24
25class DecoderService(BaseService):
26 def __init__(self, config: dict):
27 super().__init__()
28 self.config = config
29 self.encoder_engine_rank = int(self.config.get("encoder_engine_rank", 0))
30 self.transformer_engine_rank = int(self.config.get("transformer_engine_rank", 1))
31 self.decoder_engine_rank = int(self.config.get("decoder_engine_rank", 2))
32 self._phase2_rdma_client: Optional[RDMAClient] = None
33 self._phase2_rdma_buffer: Optional[RDMABuffer] = None
34 self._centralized_request_mgr = ReqManager()
35 self._centralized_request_port = REQUEST_POLLING_PORT + self.decoder_engine_rank
36 data_bootstrap_addr = str(self.config.get("data_bootstrap_addr", "127.0.0.1"))
37 monitor_bind_host = str(self.config.get("local_hostname", data_bootstrap_addr))
38 shared_slots = int(self.config.get("rdma_buffer_slots", "128"))
39 shared_slot_size = int(self.config.get("rdma_buffer_slot_size", "4096"))
40 self._phase2_server_ip = str(self.config.get("rdma_phase2_host", data_bootstrap_addr))
41 self._phase2_handshake_port = int(self.config.get("rdma_phase2_handshake_port", "5568"))
42 self._phase2_slots = shared_slots
43 self._phase2_slot_size = shared_slot_size
44 self._last_phase2_connect_retry_ts = 0.0
45 self.vae_decoder = None
46 self._rdma_buffers: Dict[int, List[torch.Tensor]] = {}
47 self.data_mgr = DataManager(
48 DisaggregationPhase.PHASE2,
49 DisaggregationMode.DECODE,
50 )
51 self.data_receiver: Dict[int, DataReceiver] = {}
52 self.req_mgr = ReqManager()
53 self.reporter = Reporter(
54 service_type="decoder",
55 gpu_id=self.decoder_engine_rank,
56 bind_address=f"tcp://{monitor_bind_host}:{MONITOR_POLLING_PORT + self.decoder_engine_rank}",
57 )
58 self._queue_metrics_lock = threading.Lock()
59 self._queue_metrics: dict[str, Any] = {
60 "queue_sizes": {},
61 "queue_total_pending": 0,
62 "all_queues_empty": True,
63 }
64 self.reporter.set_extra_metrics_provider(self._get_queue_metrics)
65 self._reporter_thread: Optional[threading.Thread] = threading.Thread(
66 target=self.reporter.serve_forever,
67 name="decoder-reporter",
68 daemon=True,
69 )
70 self._reporter_thread.start()
71 self._data_mgr_sidecar = DataMgrSidecar()
72 self.sync_comm = str(os.getenv("SYNC_COMM", "")).strip().lower() not in ("", "0", "false", "no", "off")
73 self.load_models()
74
75 def _get_queue_metrics(self) -> dict[str, Any]:
76 with self._queue_metrics_lock:

Callers

nothing calls this directly

Calls 8

load_modelsMethod · 0.95
ReqManagerClass · 0.90
DataManagerClass · 0.90
ReporterClass · 0.90
DataMgrSidecarClass · 0.90
getMethod · 0.45
startMethod · 0.45

Tested by

no test coverage detected