
    Mi                         S SK Jr  S SKrS SKJr  S SKJr  S SKJr  S SK	J
r
Jr  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJr  S SKJr  \" 5       r " S S\5      rg)    )OptionalN)is_flash_attn_2_available)ModelLoader)SuryaModelConfig)
SuryaModelSuryaXLAModel)SuryaOCRProcessor)SuryaOCRTokenizer)is_flash_attn_2_supported)get_compile_args)
get_logger)settingsc                      ^  \ rS rSrS
S\\   4U 4S jjjr\R                  SS4S\\   S\	4S jjr
\R                  \R                  4S\4S jjrS	rU =r$ )FoundationModelLoader   N
checkpointc                 j   > [         TU ]  U5        U R                  c  [        R                  U l        g g N)super__init__r   r   FOUNDATION_MODEL_CHECKPOINT)selfr   	__class__s     q/var/www/eduai.edurigo.com/storigo/production/storigo_env/lib/python3.13/site-packages/surya/foundation/loader.pyr   FoundationModelLoader.__init__   s,    $??"&BBDO #    attention_implementationreturnc                    Uc  [         R                  nUcI  [         R                  nUS:X  a2  [        R                  R                  SS9(       d  [         R                  nO$U[        R                  :X  a  [        R                  n[        R                  " U R                  5      nUb!  X4R                  l        X4R                  l        O[        5       (       a3  [!        U5      (       a#  SUR                  l        SUR                  l        OKUS:X  a#  SUR                  l        SUR                  l        O"SUR                  l        SUR                  l        ["        nUS:X  a  [$        nSUl        SUR                  l        SUR                  l        UR                  U R                  X$SS9R)                  U5      nUR+                  5       n[         R,                  (       d  [         R.                  (       Ga9  S	[        R0                  R2                  l        S[        R0                  R2                  l        S[        R0                  R2                  l        S[        R0                  R2                  l        S[        R0                  R2                  l        S
[        R0                  R2                  l        [@        RC                  SU R                   SU SU 35        [E        U5      n[        RF                  " UR                  40 UD6Ul        [        RF                  " UR                  40 UD6Ul        [@        RI                  SU R                   S["        RJ                  " U R                  5       SURL                   SU SUR2                  R                  R                   SUR2                  R                  R                   S35        U$ )NcudaF)including_emulationflash_attention_2xlasdpaT)dtypeconfigignore_mismatched_sizesi      zCompiling foundation model z on device z with dtype zLoaded recognition model z from z onto device z$, using decoder attention mechanism z, encoder attention mechanism .)'r   TORCH_DEVICE_MODELMODEL_DTYPE_BFLOATtorchr    is_bf16_supportedMODEL_DTYPEfloat16bfloat16r   from_pretrainedr   decoder_attn_implementationvision_encoderr   r   r   r   _attn_implementation_autosettoevalCOMPILE_ALLCOMPILE_FOUNDATION_dynamor&   cache_size_limitsuppress_errorsspecialize_intallow_unspec_int_on_nn_modulecapture_scalar_outputsrecompile_limitloggerinfor   compiledebugget_local_pathdevice)r   rF   r%   r   r&   	model_clsmodelcompile_argss           r   rH   FoundationModelLoader.model   sO    >00F= //E

(D(D$) )E ) !,,emm#NNE!11$//B#/2JNN/9Q!!6&((-Fv-N-N2EFNN/9LF!!6u_28FNN/9?F!!628FNN/9?F!!6	U?%I.2+=A:6:3))OO5QU * 

"V* 	 

8#>#>#>48EMM  137EMM  027EMM  /AEEMM  >:>EMM  735EMM  0KK-doo->k&Q]^c]de ,F3L#(==1E1E#V#VE !MM%--H<HEM''8z?X?XY]YhYh?i>jjwx}  yE  yE  xF  FR  SX  RY  Y}  ~C  ~J  ~J  ~R  ~R  ~g  ~g  }h  hF  GL  GS  GS  Gb  Gb  Gw  Gw  Fx  xy  z	
 r   c                 D   [         R                  " U R                  5      n[        UR                  U R                  S9n[        UUR                  UR                  S UR                  R                  UR                  R                  UUR                  UR                  S9	nU$ )N)special_tokensmodel_checkpoint)	ocr_tokenizerblank_bbox_token_idnum_register_tokenssequence_length
patch_size
merge_sizemodel_devicenum_beacon_tokensbeacon_token_interval)r   r1   r   r
   special_ocr_tokensr	   rO   rP   r4   rR   spatial_merge_sizerU   rV   )r   rF   r%   r&   rN   	processors         r   rY   FoundationModelLoader.processor^   s     $4#C#CDOO#T)!44t
 &' & : : & : : ,,77,,??$66"(">">

	 r   )r   r   )__name__
__module____qualname____firstlineno__r   strr   r   r*   r   rH   r+   r	   rY   __static_attributes____classcell__)r   s   @r   r   r      sr    C8C= C C **26	B #+3-	B
 
BJ 008S8S	 r   r   )typingr   r,   transformers.utilsr   surya.common.loadr   surya.common.surya.configr   surya.common.suryar   r   surya.common.surya.processorr	   &surya.common.surya.processor.tokenizerr
   surya.common.utilr   surya.common.xlar   surya.loggingr   surya.settingsr   rA   r    r   r   <module>rn      s>      8 ) 6 8 : D 7 - $ #	`K `r   