o
    پi                  	   @   sx   d dl Z d dlZd dlZd dlZd dlZd dlmZ eeZG dd de j	Z
	ddedee dedB defd	d
ZdS )    N)init_loggerc                   @   s   e Zd ZdddZdS )RaiseNotImplementedActionNc                 C   s   t d| d)NzThe z option is not yet implemented)NotImplementedError)selfparser	namespacevaluesoption_string r
   g/home/ubuntu/.local/lib/python3.10/site-packages/sglang/multimodal_gen/runtime/entrypoints/cli/utils.py__call__   s   z"RaiseNotImplementedAction.__call__N)__name__
__module____qualname__r   r
   r
   r
   r   r      s    r   num_gpusargsmaster_portreturnc           
   
   C   s   t j }tj}t jt jt jt	d}t j|d}|ddd|  g}|dur3|
d|  |
| || td|  td	t| d
|d< tj||tjtjddd
dd}|jrrt|jjdD ]}	t|	  qi| S )a  
    Launch a distributed job with the given arguments

    Args:
        num_gpus: Number of GPUs to use
        args: Arguments to pass to v1_sgl_diffusion_inference.py (defaults to sys.argv[1:])
        master_port: Port for the master process (default: random)
    z../../../..z2sgl_diffusion/sample/v1_sgl_diffusion_inference.pyz-mztorch.distributed.runz--nproc_per_node=Nz--master_port=z Running inference with %d GPU(s)zLaunching command: %szutf-8PYTHONIOENCODINGT   replace)envstdoutstderruniversal_newlinesbufsizeencodingerrors )osenvironcopysys
executablepathabspathjoindirname__file__appendextendloggerinfoshlex
subprocessPopenPIPESTDOUTr   iterreadlineprintstripwait)
r   r   r   current_envpython_executableproject_rootmain_scriptcmdprocessliner
   r
   r   launch_distributed   sD   


r?   r   )argparser    r.   r/   r#   1sglang.multimodal_gen.runtime.utils.logging_utilsr   r   r,   Actionr   intliststrr?   r
   r
   r
   r   <module>   s$   