"""Launch the pinned original API; only deployment/device boundaries are extended.""" import argparse import inspect import json import logging import os from pathlib import Path import sys def install_device_policy(torch,encoder_class,offload_mode): """Keep native encoding on CUDA1, transfer conditioning to pipeline's CUDA0.""" original_init=encoder_class.__init__;original_call=encoder_class.__call__ signature=inspect.signature(original_init) def init(self,*args,**kwargs): bound=signature.bind(self,*args,**kwargs) destination=bound.arguments['device'];bound.arguments['device']=torch.device('cuda:1') if 'offload_mode' in signature.parameters:bound.arguments['offload_mode']=offload_mode.DISK original_init(*bound.args,**bound.kwargs);self._deck_output_device=destination def call(self,*args,**kwargs): result=original_call(self,*args,**kwargs) return [type(row)(*(value.to(self._deck_output_device) if hasattr(value,'to') else value for value in row)) for row in result] encoder_class.__init__=init;encoder_class.__call__=call def launch(backend,data,port): sys.path.insert(0,str(backend));os.environ['LTX_APP_DATA_DIR']=str(data);os.environ['LTX_PORT']=str(port) os.environ.setdefault('USE_SAGE_ATTENTION','0');os.environ.setdefault('DO_NOT_TRACK','1') # The original backend can log prompts. Deck deliberately persists no inference logs. logging.disable(logging.CRITICAL) import torch if torch.cuda.device_count()!=2:raise RuntimeError('LTX Original benötigt die ausgewählte 5080 und 3060.') import services.ltx_pipeline_common as common from ltx_pipelines.utils.types import OffloadMode # CUDA CPU-offload would pin the full BF16 transformer in RAM. Disk streaming is # provided by the original pipelines and bounds host memory for this 32-GiB worker. common.offload_mode_for_prefetch_count=lambda count,device:OffloadMode.DISK from ltx_pipelines.utils.blocks import PromptEncoder install_device_policy(torch,PromptEncoder,OffloadMode) # Install before Desktop wraps PromptEncoder so its native/API patch delegates # to the real pinned constructor and cannot obscure offload_mode in **kwargs. import ltx2_server as original import uvicorn uvicorn.run(original.app,host='127.0.0.1',port=port,access_log=False,log_config=None) if __name__=='__main__': parser=argparse.ArgumentParser();parser.add_argument('--backend',required=True);parser.add_argument('--data',required=True);parser.add_argument('--port',type=int,required=True);args=parser.parse_args() launch(Path(args.backend),Path(args.data),args.port)