
    =pj-                        S r SSKrSSKJr  SSKJrJrJr  SSKr	SSK
Jr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Jr  SSKJr  SSKJr  SSKJrJrJ r J!r!J"r"  \" S5       " S S\#5      5       r$\" S5       " S S\5      5       r%g)z(HPI (High Performance Inference) runner.    N)Path)ListSequenceUnion)	CACHE_DIRPaddleStaticRunnerPaddleStaticRunnerConfig)get_default_run_mode)sort_inputs)get_model_paths)logging)class_requires_depsrequire_hpip   )InferenceRunner   )$suggest_inference_backend_and_config)	HPIConfigOMConfigONNXRuntimeConfigOpenVINOConfigTensorRTConfigzultra-inferc                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )MultiBackendInfer-   c                 .   > [         TU ]  5         Xl        g N)super__init__
ui_runtime)selfr    	__class__s     g/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/paddlex/inference/models/runners/hpi/runner.pyr   MultiBackendInfer.__init__/   s    $    c                 8    U R                   R                  U5      $ r   )r    infer)r!   xs     r#   __call__MultiBackendInfer.__call__3   s    $$Q''r%   )r    )__name__
__module____qualname____firstlineno__r   r)   __static_attributes____classcell__r"   s   @r#   r   r   -   s    %( (r%   r   c                      ^  \ rS rSrSrS\\\4   S\S\SS4U 4S jjr	\
S\4S	 j5       r\
S\4S
 j5       r\
S\4S j5       rS\\R                      S\\R                      4S jrSS jrS rS rSS jrSrU =r$ )	HPIRunner7   zGHPI runner supporting multiple backends (Paddle, ONNX, TensorRT, etc.).	model_dirmodel_file_prefixconfigreturnNc                   > [        5         [        T	U ]	  5         [        U5      U l        X l        X0l        U R                  5       u  pEUS:X  a  SU l        U R                  U5      U l
        g SU l        U R                  XE5      n[        U5      U l        UR                  5       n[        U5       Vs/ s H  oR!                  U5      R"                  PM     snU l        g s  snf )NpaddleTF)r   r   r   r   
_model_dir_model_file_prefix_config_determine_backend_and_config_use_paddle_build_paddle_static_runner_paddle_runner_build_ui_runtimer   _multi_backend_infer
num_inputsrangeget_input_infoname_input_names)
r!   r5   r6   r7   backendbackend_configr    rD   ir"   s
            r#   r   HPIRunner.__init__;   s     	y/"3"&"D"D"Fh#D"&"B"B>"RD$D//HJ(9*(ED%#..0J;@;L!;La))!,11;L!D !s   1$Cc                     U R                   $ r   )r;   r!   s    r#   r5   HPIRunner.model_dirS   s    r%   c                     U R                   $ r   )r<   rN   s    r#   r6   HPIRunner.model_file_prefixW   s    &&&r%   c                     U R                   $ r   )r=   rN   s    r#   r7   HPIRunner.config[   s    ||r%   r(   c                    U R                   (       a  U R                  U5      $ [        U R                  5      n[        U5      U:w  a  [	        SU S[        U5       S35      e[        XR                  5      n[        U R                  U5       VVs0 s H  u  p4U[        R                  " U5      _M     nnnU R                  U5      $ s  snnf )Nz	Expected z inputs but got z instead)
r?   rA   lenrH   
ValueErrorr   zipnpascontiguousarrayrC   )r!   r(   rD   rG   input_inputss         r#   r)   HPIRunner.__call___   s    &&q))**+
q6Zy4DSVHHUVV,,- !$D$5$5q 9
 9 "&&v.. 9 	 
 ((00	
s   #Cc                     g r    rN   s    r#   closeHPIRunner.closel   s    r%   c                 f   U R                   R                  (       aR  [        U R                  U R                  5      n[        U R                   U5      nUS   c  [        SUS    35      eUu  p4OCU R                   R                  nUc  [        S5      eU R                   R                  =(       d    0 nUS:X  ay  U(       d  SnORUR                  5       S1:w  a  SnO:US   [        U R                   R                  U R                   R                  5      :H  nU(       a  [        R                  " S	5        X44$ )
Nr   zCNo inference backend and configuration could be suggested. Reason: r   z[When automatic configuration is not used, the inference backend must be specified manually.r:   Trun_modeFzrThe Paddle Inference backend is selected with the default configuration. This may not provide optimal performance.)r=   auto_configr   r;   r<   r   RuntimeErrorrI   rJ   keysr
   pdx_model_namedevice_typer   warning)r!   model_pathsretrI   rJ   is_default_configs         r#   r>   'HPIRunner._determine_backend_and_configo   s!   <<##)$//4;R;RSK6t||[QC1v~"YZ]^_Z`Yab  '*#G^ll**G"q  "\\88>BNh!$(!$$&:,6$)!$2:$>BVLL//1I1IC %! ! I &&r%   c                    U R                   R                  U R                   R                  S.UEnS nU R                   R                  (       aO  U R                   R                  R                  (       a*  U R                   R                  R                  R
                  nUb\  UR                  S5      c  UR                  b  UR                  US'   UR                  S5      c  UR                  b  UR                  US'   [        [        R                  R                  5       5      nUR                  5        VVs0 s H  u  pVXT;   d  M  XV_M     nnn[        R                  " U5      R                  SS9n[         R"                  " S5        [         R"                  " SU5        [%        U R                   R&                  U R(                  U R*                  US9$ s  snnf )	N)rg   	device_idtrt_dynamic_shapestrt_dynamic_shape_input_dataT)exclude_nonezUsing Paddle Inference backendzPaddle engine config: %s)r7   )r=   rg   rn   hpi_infobackend_configspaddle_infergetro   rp   setr	   model_fieldsre   itemsmodel_validate
model_dumpr   infor   rf   r;   r<   )	r!   rJ   kwargspaddle_info
valid_keyskvfiltered_kwargsengine_configs	            r#   r@   %HPIRunner._build_paddle_static_runner   s   <<33//
 

 <<  T\\%:%:%J%J,,//??LLK"

/0822>/:/M/M+,

9:B<<H  << 56 1>>CCEF
,2LLNNNDAao414NN0??

*$*
' 	 	56/?!LL''OO## 	
 	
 Os   5GGc           
          SSK JnJnJn  Uc  U" 5       nU R                  R
                  S:X  a/  UR                  U R                  R                  =(       d    S5        OU R                  R
                  S:X  a/  UR                  U R                  R                  =(       d    S5        OEU R                  R
                  S:w  a+  [        S[        U R                  R
                  5       35      e[        U R                  U R                  5      nUS;   a  SU;  a  U R                  R                  (       a  S	U;  a  [        S
5      e[        R                   " S5         ["        R$                  " SSS['        U R                  5      S['        U R                  5      /SSSS9  [        U R                  U R                  5      nSU;   d   eO[        S5      eUR-                  ['        US   5      SUR.                  5        OXUS:X  a;  SU;  a  [        S5      eUR-                  ['        US   5      SUR0                  5        O[3        S[        U5       35      eUS:X  aC  [4        R6                  " U5      nUR9                  5         UR;                  UR<                  5        GOUS:X  aC  [>        R6                  " U5      nURA                  5         UR;                  UR<                  5        GO?US:X  Ga  URC                  SS5      (       a  URC                  S5      c  S n	U R                  RD                  (       aO  U R                  RD                  RF                  (       a*  U R                  RD                  RF                  RH                  n	U	b  U	RJ                  b  0 UESU	RJ                  0En[L        R6                  " U5      nURO                  5         U R                  [P        -  S-  n
U
RS                  SSS9  ['        U
S-  5      URT                  l+        URX                  S:X  a  SURT                  l-        UR\                  (       d  [        S 5      eURJ                  b  [_        URT                  RV                  5      Ra                  5       (       dA  URJ                  Rc                  5        H"  u  pURT                  Rd                  " U/UQ76   M$     O[[        R                   " S!5        ODUS:X  a'  [f        R6                  " U5      nURi                  5         O[3        S[        U5       35      e[        R                   " S"U5        [        R                   " S#U5        U" U5      $ ! ["        R(                   a  n[        SUR*                   35      UeS nAff = f)$Nr   )ModelFormatRuntimeRuntimeOptiongpunpucpuzUnsupported device type )openvinoonnxruntimetensorrtonnxr:   zPaddlePaddle model requiredz:Automatically converting PaddlePaddle model to ONNX formatpaddlexz--paddle2onnxz--paddle_model_dirz--onnx_model_dirT)capture_outputchecktextz(PaddlePaddle-to-ONNX conversion failed:
zONNX model required omzOM model requiredzUnsupported inference backend r   r   r   use_dynamic_shapesdynamic_shapes)parentsexist_okztrt_serialized.trtfp16z:TensorRT static shape inference is currently not supportedz5TensorRT dynamic shapes will be loaded from the file.zInference backend: %szInference backend config: %s)5ultra_inferr   r   r   r=   rg   use_gpurn   
use_ascendrd   reprr   r;   r6   auto_paddle2onnxr   r{   
subprocessrunstrCalledProcessErrorstderrset_model_pathONNXOMrV   r   ry   use_openvino_backendset_cpu_thread_numcpu_num_threadsr   use_ort_backendru   rr   rs   r   r   r   use_trt_backendr   mkdir
trt_optionserialize_file	precisionenable_fp16r   r   existsrx   	set_shaper   use_om_backend)r!   rI   rJ   	ui_optionr   r   r   ri   etrt_info	cache_dirrG   shapess                r#   rB   HPIRunner._build_ui_runtime   s   CC%I<<##u,dll449:\\%%.  !7!7!<1=\\%%.*40H0H+I*JK  &doot7M7MN==[(<<00{2*+HIILLT!" ) / 4 #DOO 4 2 #DOO 4 ,0"&!%" #2)?)?#K "[000&'<==$$SV)<%=r;CSCST_;&"#677$$ST):%;RP=d7m_MNNj +::>JN**,(()G)GH%.==nMN%%'(()G)GH
"""#7>>"&&'78@<<((T\\-B-B-R-R#||44DDMMH'H,C,C,O&(&((*A*A&N ,::>JN%%')3j@IOOD4O825iBV6V2WI  /''6137	$$0!44"P  ,,8I00??@GGII(6(E(E(K(K(M!,,66tEfE )N LLO _%44^DN$$&=d7m_MNN,g63^Dy!!G &88 !*GzR !!s   AU V/VV)r=   rH   r;   r<   rC   rA   r?   )r8   Nr   )r+   r,   r-   r.   __doc__r   r   r   r   r   propertyr5   r6   r7   r   rX   ndarrayr   r)   r_   r>   r@   rB   r/   r0   r1   s   @r#   r3   r3   7   s    Qd#  	
 
0 4   '3 ' ' 	  1(2::. 14

3C 1'@"
Hi" i"r%   r3   )&r   r   pathlibr   typingr   r   r   numpyrX   .paddlex.inference.models.runners.paddle_staticr   r   r	   5paddlex.inference.models.runners.paddle_static.configr
   &paddlex.inference.models.runners.utilsr   *paddlex.inference.models.utils.model_pathsr   paddlex.utilsr   paddlex.utils.depsr   r   inference_runnerr   rI   r   r7   r   r   r   r   r   objectr   r3   r^   r%   r#   <module>r      s    /   ( (  
 W > F ! @ . 9  ]#( ( $( ]#d" d" $d"r%   