
    vjm                     b   d dl Z d dlZd dlmZ d dlmZmZmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZmZmZ  e	            Zded	ee         d
ee         defdZdefdZd Zd ZdedefdZdee         fdZded	ee         dee         fdZded	edee         fdZ	 ddedee         defdZdS )    N)
MethodType)AnyListOptional)
get_logger)Tasks)	INDEX_KEY)LazyImportModuleis_torch_availableis_transformers_available	model_dir	task_name
model_typereturnc                     ||dS d||ft          j                    t                   v rdS t          j                            | d          }t          j                            |          rdS dS )NFMODELSTzms_wrapper.py)r
   get_ast_indexr	   ospathjoinexists)r   r   r   ms_wrapper_paths       p/lsinfo/ai/hellotax_ai/data_center/backend/venv/lib/python3.11/site-packages/modelscope/utils/automodel_utils.pycan_load_by_msr      sv    Y.u)+9;;IFG Gtgll9o>>O	w~~o&& t5    
module_objc                    ddl m} t          | d          rddt          j        | j                  j                                        v r4dt          | j	                  v r t          |j        |           | _        d S d S d S d S )Nr   PreTrainedModel_set_gradient_checkpointingvaluezmodelscope.)transformersr   hasattrinspect	signaturer    
parameterskeysstr	__class__r   )r   r   s     r   fix_upgrader*      s    ,,,,,,z899 E7,68 88B4466J JZ%9!:!:::1;72E 2E
...	E EJ J::r   c                 >    t          |             | j        |i | d S N)r*   post_init_origin)selfargskwargss      r   	post_initr1   '   s.    D4*6*****r   c                      t                      ryt                      rmdd l} ddlm} ddlm} |                    | j                  |                    d          k    r.t          |d          s |j	        |_
        t          |_	        d S d S d S d S d S )Nr   r   )versionz4.35.0r-   )r   r   r"   r   	packagingr3   parse__version__r#   r1   r-   )r"   r   r3   s      r   fix_transformers_upgrader7   ,   s     "" 2'9';'; 2000000%%%%%%==122gmmH6M6MMM1CDD N/>/HO,(1O%%%2 2 2 2
 NMMMr   automodel_classc                     | j         }t          |          | j                                        v rdS t	          |d          r||j        v rdS dS )NTauto_mapF)__name__type_model_mappingr'   r#   r:   )r8   configautomodel_class_names      r   _can_load_by_hf_automodelr@   8   sY    *3F||5::<<<<tvz"" ';v'N'Nt5r   c                    dd l mc m} t          | d          sd S | j        d                                 D             }t          |          dk    rt          ||d                   S t          |          dk    rBt          t          fd|D                                 dk    rt          ||d                   S d S )Nr   r:   c                 <    g | ]}|                     d           |S )	AutoModel)
startswith).0ks     r   
<listcomp>z)get_default_automodel.<locals>.<listcomp>F   s)    NNNAALL4M4MNaNNNr      c                      g | ]
}|         S  rJ   )rE   rF   r:   s     r   rG   z)get_default_automodel.<locals>.<listcomp>J   s    555!555r   )	modelscope.utils.hf_utilutilshf_utilr#   r:   r'   lengetattrset)r>   rM   automodel_listr:   s      @r   get_default_automodelrR   A   s    .........6:&& tHNNNNNN
>awq 1222
>Q35555n55566$8 $8;<$= $=wq 12224r   c           
         ddl m}m}m}m}m}m} t          j        |t          j	        |t          j
        |t          j        |t          j        |i}t          j                            | d          }	t          j                            |	          sd S 	 |                    | d          }
|t%          |
          }n|                    |d           }|d S t)          ||
          r|S ||u rt)          ||
          r|S d S # t*          $ r Y d S w xY w)Nr   )
AutoConfigrC   AutoModelForCausalLMAutoModelForSeq2SeqLMAutoModelForTokenClassification"AutoModelForSequenceClassificationzconfig.jsonF)trust_remote_code)
modelscoperT   rC   rU   rV   rW   rX   r   backbonechattext_generationtext_classificationtoken_classificationr   r   r   r   from_pretrainedrR   getr@   	Exception)r   r   rT   rC   rU   rV   rW   rX   automodel_mappingconfig_pathr>   r8   s               r   get_hf_automodel_classre   O   s~   @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @
 		
(3!#E"$C ',,y-88K7>>+&& t++I+OO3F;;OO/33ItDDO"4$_f== 	#""333-.CVLL 4((t   tts   AC> C> &C> >
DDuse_hfc                 x    t          | |          }|r|t          d| d          d }| |j        | fi |}|S )Nz&Model import failed. You used `use_hf=z&`, but the model is not a model of hf.)re   
ValueErrorr`   )r   r   rf   r0   r8   models         r   try_to_load_hf_modelrj   r   sv    ,Y	BBO @/) ?& ? ? ? @ @ 	@ E"//	DDVDDLr   owner_groupc                     | sdS |ddg}|                      d                               d          } t          j                            |           } t          j                            |           }||v S )zThis checking is for the torch.load, this function may eval malicious code into memory

    Args:
        model_dir: The local model_dir
        owner_group: The owner group to trust

    Returns:
        bool: Whether the group can be trusted
    FNiicdamo/\)rstripr   r   dirnamebasename)r   rk   groups      r   check_model_from_owner_groupru      st      ufo  %%,,T22I	**IGY''EKr   r,   )r$   r   typesr   typingr   r   r   rZ   r   modelscope.metainfor   modelscope.utils.ast_utilsr	   modelscope.utils.import_utilsr
   r   r   loggerr(   boolr   r*   r1   r7   r<   r@   rR   re   rj   ru   rJ   r   r   <module>r}      s$    				       & & & & & & & & & & ! ! ! ! ! ! % % % % % % 0 0 0 0 0 0F F F F F F F F F F 

c 
hsm 
'}
15
 
 
 
EC E E E E+ + +
	2 	2 	2t     Xd^     c  &.sm 8@       FC C !)$     ;?   C  .23i CG           r   