o
    پi                     @   sb   d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
 defddZG d	d
 d
eZdS )    )Any)PretrainedConfig)NemotronHConfig)RadioConfig)IMAGENET_MEANIMAGENET_STDseqc                 C   s>   t | \}}}t|trt|trt|tsJ d|||fS )Nzexpected three floats)tuple
isinstancefloat)r   abc r   W/home/ubuntu/.local/lib/python3.10/site-packages/sglang/srt/configs/nano_nemotron_vl.pyfloat_triplet   s   
r   c                       s   e Zd ZdZdZddddddddd	d
dddddeedfdededede	de	de	de	de
eeef ee B de
eeef ee B def fddZdd Z  ZS )NemotronH_Nano_VL_V2_ConfigNemotronH_Nano_VL_V2TNi      g      ?v2internvli   i   g        z<video>z<image>z<img>z</img>force_image_size
patch_sizevideo_pruning_ratevideo_context_tokenimg_context_tokenimg_start_tokenimg_end_token	norm_meannorm_stduse_thumbnailc                    s  t  jdi | |d ur"tdi || _t|tsJ d|| _n|d u s(J t | _i | _| jd|}| jd|}tt|t	rG|d n|| _
tt|t	rU|d n|| _|| _|| _|| _|| _|| _|| _|	| _|
| _|| _t|| _t|| _|| _|| _|| _d S )Nz"vision_config must be a dictionary
image_sizer   r   r   )super__init__r   
llm_configr
   dictraw_vision_configgetintlistr!   r   downsample_ratior   r   template
ps_versionimage_tag_typeprojector_hidden_sizevit_hidden_sizer   r   r   r   r    r   r   )selfvision_configr$   r   r   r*   r+   r,   r-   r.   r/   r   r   r   r   r   r   r   r    kwargsvision_image_sizevision_patch_size	__class__r   r   r#   %   sD   




z$NemotronH_Nano_VL_V2_Config.__init__c                 C   sP   | j }|d d }|d d}|ddgd }t| j| j| j|||d}|S )Nargsmodelregister_multiplepreferred_resolution   r   )r   r   r   
model_name
reg_tokensr!   )r&   r'   r   r   r   r   )r0   configr<   r=   r!   radio_configr   r   r   create_radio_confige   s   z/NemotronH_Nano_VL_V2_Config.create_radio_config)__name__
__module____qualname__
model_typeis_compositionr   r   r(   r   strr	   r)   boolr#   r@   __classcell__r   r   r5   r   r   !   sV    @r   N)typingr    transformers.configuration_utilsr   sglang.srt.configs.nemotron_hr   sglang.srt.configs.radior   $sglang.srt.multimodal.internvl_utilsr   r   r   r   r   r   r   r   <module>   s   