o
    پi
                     @   sr   d dl Z d dlmZmZmZ d dlmZ d dlZd dlm	Z
 d dlmZ d dlmZ e eZG dd deZdS )    N)	GeneratorOptionalTuple)urlparse)BaseConnector)init_custom_process_groupc                       s   e Zd Zddedejf fddZ						dd
ededededef
ddZ		dde	e
e  de	e
e  ddfddZ	ddedeeeejf ddf fddZ  ZS )RemoteInstanceConnectorcpuurldevicec                    s.   |j dks	J dt | || _|| _d S )Ncuda2RemoteInstanceConnector only supports cuda device.)typesuper__init__r
   r   )selfr
   r   	__class__ X/home/ubuntu/.local/lib/python3.10/site-packages/sglang/srt/connector/remote_instance.pyr      s   
z RemoteInstanceConnector.__init__N      gpu_idtp_rankinstance_ip
group_rank
world_sizec                 C   s  | j jdks
J d|dkr|dksJ dt | j j|| _t| j}|j}|j}d| d| d| }	d}
t	d| d	| d
| d| d|	 d|
  zt
|
d| d| |||	| jd| _tj| jd W dS  ty } zd| d}t| d|fW  Y d }~S d }~ww )Nr   r   r   zBgpu_id and tp_rank must be specified for RemoteInstanceConnector. send_weights__ncclz*init custom process group: master_address=z, master_port=z, rank_offset=z, world_size=z, group_name=z
, backend=ztcp://:)backendinit_methodr   rank
group_name	device_id)group)Tz-Succeeded to initialize custom process group.z+Failed to initialize custom process group: .F)r   r   torchr&   r   r
   hostnameportloggerinfor   _model_update_groupdistbarrier	Exceptionerror)r   r   r   r   r   r   
parsed_urlmaster_addressmaster_portr%   r"   emessager   r   r   build_group   sP   	

z#RemoteInstanceConnector.build_groupallow_patternignore_patternreturnc                 C      d S Nr   )r   r9   r:   r   r   r   
pull_filesG   s   z"RemoteInstanceConnector.pull_filesr   r$   c                 C   r<   r=   r   )r   r$   r   r   r   weight_iteratorO   s   z'RemoteInstanceConnector.weight_iterator)r	   )r   r   Nr   r   )NN)r   )__name__
__module____qualname__strr)   r   r   intr8   r   listr>   r   r   Tensorr?   __classcell__r   r   r   r   r      sB    

/


	r   )loggingtypingr   r   r   urllib.parser   r)   torch.distributeddistributedr/   sglang.srt.connectorr   sglang.srt.utilsr   	getLoggerr@   r,   r   r   r   r   r   <module>   s   
