
    9i&                        S SK r S SKrS SKJr  S SKJr  S SKJrJr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JrJr  S
SKJrJr  S
SKJrJrJrJrJr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r,SS/r-\" \-5        S r.S r/S r0S r1\Rd                   " S S5      5       r3 " S S\ Rh                  S9r5 " S S\55      r6\Rd                  \" S5       " S  S\75      5       5       r8\" S5       " S! S"\55      5       r9g)#    N)PathLike)Path)ListSequenceUnion   )logging)class_requires_deps)check_supported_device_type)DEBUGDISABLE_MKLDNN_MODEL_BLDISABLE_TRT_MODEL_BLUSE_PIR_TRT   )	benchmarkset_inference_operations)	HPIConfigOMConfigONNXRuntimeConfigOpenVINOConfigTensorRTConfig$suggest_inference_backend_and_config)MKLDNN_BLOCKLIST)get_model_paths)PaddlePredictorOptionget_default_run_mode)TRT_BLOCKLIST)DISABLE_TRT_HALF_OPS_CONFIGz.cachePaddleInferChainLegacyMultiBackendInferc                    SS K nXR                  R                  R                  :X  a  [        R
                  $ XR                  R                  R                  :X  a  [        R                  $ XR                  R                  R                  :X  a  [        R                  $ XR                  R                  R                  :X  a  [        R                  $ XR                  R                  R                  :X  a  [        R                  $ XR                  R                  R                  :X  a  [        R                  $ [!        SU  35      e)Nr   zUnsupported data type: )paddle	inferenceDataTypeFLOAT64npfloat64FLOAT32float32INT64int64INT32int32UINT8uint8INT8int8	TypeError)pd_dtyper"   s     l/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/paddlex/inference/models/common/static_infer.py_pd_dtype_to_np_dtyper5   9   s    ##,,444zz	%%..66	6zz	%%..44	4xx	%%..44	4xx	%%..44	4xx	%%..33	3ww1(<==    c                    SS K nU=(       d    0 nUR                  R                  X5      nUR                  SU5        UR	                  U5        UR                  5         UR                  R                  U5      nUR                  5       n	U H   n
X;  d  M
  [        S[        U
5       S35      e   U	 H   n
X;  d  M
  [        S[        U
5       S35      e   U H   n
X;  d  M
  [        S[        U
5       S35      e   0 0 0 pnUR                  5        GH  u  pUR                  U
5      n[        UR                  5       5      nUu  nnnX;   a  [        R                  " XZ   S   US9R!                  U5      X'   [        R                  " XZ   S	   US9R!                  U5      X'   [        R                  " XZ   S
   US9R!                  U5      X'   M  [        R"                  " UUS9X'   [        R"                  " UUS9X'   [        R"                  " UUS9X'   GM     XX4 Hj  nUR                  5        HC  u  n
nUR                  U
5      nUR!                  UR$                  5        UR'                  U5        ME     UR)                  5         Ml     Ag )Nr   d   Invalid input name  found in `dynamic_shapes`Input name  not found in `dynamic_shapes`$ found in `dynamic_shape_input_data`dtype      )paddle.inferencer#   Configenable_use_gpucollect_shape_range_infodisable_glog_infocreate_predictorget_input_names
ValueErrorrepritemsget_input_handler5   typer&   arrayreshapeonesshapecopy_from_cpurun)
model_filemodel_paramsgpu_idshape_range_info_pathdynamic_shapesdynamic_shape_input_datar"   config	predictorinput_namesnamemin_arrsopt_arrsmax_arrscandidate_shapeshandler?   	min_shape	opt_shape	max_shapearrsarrs                         r4   _collect_trt_shape_range_inforh   M   st    7=2$$Z>F
#v&
##$9:
  11&9I++-K"%d4j\1KL  
 %{4:,6TUVV  )"%d4j\1UV  ) $&r2H"0"6"6"8 ++D1%fkkm4*:'	9i+XX(.q1gi  N  XX(.q1gi  N  XX(.q1gi  N  WWYe<HNWWYe<HNWWYe<HN' #9, X8ID#//5FNN399%  % & 	 9 	r6   c                 B  ^ ^^^ SS K mSSKJnJnJn	  U U4S jn
UU4S jnU=(       d    0 nU" X5      nUR                  5       nU H   nX;  d  M
  [        S[        U5       S35      e   U H   nX;  d  M
  [        S[        U5       S35      e   U H   nX;  d  M
  [        S[        U5       S	35      e   / nUR                  5        GH  u  nnUR                  U5      n[        UR                  5       5      nUu  nnnX;   a|  [        R                  " Xn   S   US
9R                  U5      n[        R                  " Xn   S   US
9R                  U5      n[        R                  " Xn   S   US
9R                  U5      nO?[        R                  " UUS
9n[        R                  " UUS
9n[        R                  " UUS
9nU" UUU45      nUR!                  U5        GM     U" US9mU
" 5         [#        U5      Tl        [#        UR'                  S5      5      nU	" UT5        g )Nr   )Inputr   convertc                     > T H;  n [        TU 5      (       d   S[        T5       SU  S35       e[        TU TU    5        M=     g )NThe `z` don't have the attribute ``!)hasattrrM   setattr)	attr_nametrt_cfg_setting
trt_configs    r4   _set_trt_config%_convert_trt.<locals>._set_trt_config   s\    (II  StJ'((DYKrRS  J	?9+EF	 )r6   c                    > TR                   R                  [        U 5      [        U5      5      nUR                  ST5        UR	                  5         UR                  5         TR                   R                  U5      $ )Nr8   )r#   rC   strrD   disable_mkldnnrF   rG   )rT   params_filerZ   	device_idr"   s      r4   _get_predictor$_convert_trt.<locals>._get_predictor   sc    !!((Z#k:JKc9-  "0088r6   r9   r:   r;   r<   r=   r>   r@   rA   )inputs )rB   paddle.tensorrt.exportrj   r   rk   rH   rI   rJ   rK   rL   r5   rM   r&   rN   rO   rP   appendrw   save_model_dirwith_suffix)rr   pp_model_filepp_params_filetrt_save_pathrz   rX   rY   rj   r   rk   rt   r{   r[   r\   r]   
trt_inputsra   rb   r?   rc   rd   re   min_arropt_arrmax_arr	trt_inputpp_model_pathr"   rs   s   `   `                      @@r4   _convert_trtr      s%    EEG9  8=2}=I++-K"%d4j\1KL  
 %{4:,6TUVV  )"%d4j\1UV  ) J"0"6"6"8 ++D1%fkkm4*:'	9i+hh7=a@NVVG hh7=a@NVVG hh7=a@NVVG ggiu5Gggiu5Gggiu5G 7GW56	)$/ #94  z2J #M 2J11"56MM:&r6   c                     [        [        [        U5      5      UR                  S9n[        [        U 5      5       Vs/ s H  o0UR	                  U5         PM     n nU $ s  snf )N)key)sortedrangelen__getitem__index)r}   namesindicesis       r4   _sort_inputsr      sS    U3u:&E,=,=>G05c&k0BC0B1W]]1%&0BFCM Ds   Ac                        \ rS rSrS rS rSrg)r      c                    Xl         U R                   R                  5       n/ U l        / U l        U H9  nU R                   R	                  U5      nU R                  R                  U5        M;     U R                   R                  5       nU H9  nU R                   R                  U5      nU R                  R                  U5        M;     g N)r[   rH   input_handlesoutput_handlesrL   r   get_output_namesget_output_handle)selfr[   r\   
input_nameinput_handleoutput_namesoutput_nameoutput_handles           r4   __init__PaddleInferChainLegacy.__init__   s    "nn446 %J>>:::FL%%l3 & ~~668'K NN<<[IM&&}5 (r6   c                 *   [        XR                  5       H1  u  p#UR                  UR                  5        UR	                  U5        M3     U R
                  R                  5         U R                   Vs/ s H  oDR                  5       PM     nnU$ s  snf r   )	zipr   rO   rQ   rR   r[   rS   r   copy_to_cpu)r   xinput_r   ooutputss         r4   __call__PaddleInferChainLegacy.__call__   sw    $'+=+=$> F  .&&v. %? 	,0,?,?@,?q==?,?@ As   3B)r   r   r[   N)__name__
__module____qualname____firstlineno__r   r   __static_attributes__ r6   r4   r   r      s    6r6   c                   x    \ rS rSr\R
                  S\\R                     S\	\R                     4S j5       r
Srg)StaticInferi	  r   returnc                     [         er   )NotImplementedErrorr   r   s     r4   r   StaticInfer.__call__
  s    !!r6   r   N)r   r   r   r   abcabstractmethodr   r&   ndarrayr   r   r   r   r6   r4   r   r   	  s:    "(2::. "4

3C " "r6   r   )	metaclassc            
          ^  \ rS rSrS\S\\\4   S\S\SS4
U 4S jjrS	\	\
R                     S\\
R                     4S
 jrS rS rS rSrU =r$ )PaddleInferi  
model_name	model_dirmodel_file_prefixoptionr   Nc                    > [         TU ]  5         Xl        [        U5      U l        X0l        X@l        U R                  5       U l        [        U R                  5      U l
        g r   )superr   _model_namer   r   r   _option_creater[   r   infer)r   r   r   r   r   	__class__s        r4   r   PaddleInfer.__init__  sI     	%i!2+DNN;
r6   r   c                 .   U R                   R                  5       n[        U5      [        U5      :w  a#  [        S[        U5       S[        U5       35      e[	        X5      n[        [        [        R                  U5      5      nU R                  U5      nU$ )Nz/The number of inputs does not match the model: z vs )
r[   rH   r   rI   r   listmapr&   ascontiguousarrayr   )r   r   r   preds       r4   r   PaddleInfer.__call__  s    ..0u:QA#e*TRUVWRXQYZ 
 "R))1-.zz!}r6   c                    [         (       d  U R                  R                  R                  S5      (       ad  U R                  [
        ;   aP  U R                  R                  S:X  a6  [        R                  " SU R                   S35        SU R                  l        O[        (       d  U R                  R                  R                  S5      (       ad  U R                  [        ;   aP  U R                  R                  S:X  a6  [        R                  " SU R                   S35        SU R                  l        gU R                  S	:X  a  U R                  R                  S:X  aj  S
S KnSUR                  5       R                  SS5      ;   a0  U R                  R                  S:w  a  [        R                  " S5        SU R                  l        g g g )Ntrtgpuz
The model(z>) is not supported to run in trt mode! Using `paddle` instead!r"   mkldnncpuzA) is not supported to run in MKLDNN mode! Using `paddle` instead!LaTeX_OCR_recr   GenuineIntelvendor_id_rawr~   zwNow, the `LaTeX_OCR_rec` model only support `mkldnn` mode when running on Intel CPU devices. So using `mkldnn` instead.)r   r   run_mode
startswithr   r   device_typer	   warningr   r   cpuinfoget_cpu_infoget)r   r   s     r4   _check_run_modePaddleInfer._check_run_mode,  sg    %$%%0077  M1((E1OOT--..lm %-DLL! ('%%00::  $44((E1OOT--..op %-DLL! .4<<3K3Ku3T '"6"6"8"<"<_b"QQLL))X5 N %-DLL! 4U.r6   c                     SSK nSSKn[        U R                  U R                  5      nSU;  a  [        S5      e[        U R                  R                  U R                  5        U R                  5         US   u  p4U R                  R                  S:X  a>  U R                  R                  b'  SU R                  l        [        R                  " S5        U R                  R                  S;   a>  U R                  R                  c'  SU R                  l        [        R                  " S5        U R                  R                  R                  S	5      (       a  U R                  R                  R!                  5       S
:X  d6   SU R                  R                   SU R                  R                   S35       eU R                  ["        -  S-  nU R%                  UUU5      nUR'                  SS15        UR)                  SU R                  R                  5        GOUR*                  R-                  [/        U5      [/        U5      5      nU R                  R                  S
:X  Ga2  UR'                  SS15        SSKJn  U R                  R                  S:X  a  UR2                  OUR4                  nUR7                  5         UR)                  SU R                  R                  U5        [9        US5      (       ak  UR;                  U R                  R:                  5        U R                  R:                  (       a+  U R                  R<                  (       a  UR=                  5         [9        US5      (       a  UR?                  5         URA                  S5        GOU R                  R                  S:X  a  URC                  SU R                  R                  5        [9        US5      (       a%  UR;                  U R                  R:                  5        [9        US5      (       a  UR?                  5         GOU R                  R                  S:X  a  URE                  5         URG                  U R                  R                  5        [9        US5      (       a%  UR;                  U R                  R:                  5        [9        US5      (       a  UR?                  5         URI                  S5        URI                  S5        GO%U R                  R                  S:X  a  URC                  SU R                  R                  5        [9        US5      (       a%  UR;                  U R                  R:                  5        [9        US5      (       a  UR?                  5         GOU R                  R                  S:X  a  URC                  SU R                  R                  5        [9        US5      (       a%  UR;                  U R                  R:                  5        [9        US5      (       a  UR?                  5         GOU R                  R                  S:X  a  SSK%J&n	  U	RO                  5         URC                  SU R                  R                  5        [9        US5      (       a  UR;                  5         [9        US5      (       a  UR?                  5         GOYURQ                  5       n
SU R                  RR                  -   nU	RU                  X5        GOU R                  R                  S:X  Ga  [9        US5      (       ak  UR;                  U R                  R:                  5        U R                  R:                  (       a+  U R                  R<                  (       a  UR=                  5         UR)                  SU R                  R                  5        UR7                  5         [9        US5      (       a  UR?                  5         URW                  5       (       a"  URI                  S 5        URI                  S!5        GOU R                  R                  S":X  a  URC                  S"[Y        U R                  R                  5      5        [9        US5      (       a%  UR;                  U R                  R:                  5        [9        US5      (       a  UR?                  5         GOTU R                  R                  S:X  d   eUR[                  5         S#U R                  R                  ;   a`  UR]                  5         S$U R                  R                  ;   a  UR_                  5         URa                  U R                  Rb                  5        O![9        US%5      (       a  UR7                  5         URe                  U R                  Rf                  5        [9        US5      (       a%  UR;                  U R                  R:                  5        [9        US5      (       a  UR?                  5         URA                  S5        URi                  5         U R                  RH                   H  nURI                  U5        M     [j        (       d  URm                  5         UR*                  Ro                  U5      nU$ )&r   r   Nr"   z!No valid PaddlePaddle model foundr   z `device_id` has been set to None)r   dcunpumlugcuxpuiluvatar_gpu	metax_gpuz`device_id` has been set to 0r   r   `z9` is only available on GPU devices, but got device_type='z'.feedfetchr8   )PrecisionTypepaddle_fp16enable_new_irenable_new_executorr   r   r   conv2d_bn_xpu_fuse_passtransfer_layout_passr   r   r   )passesPaddleX_r   conv2d_add_act_fuse_passconv2d_add_fuse_passr   r   bf16rx   )8r"   rB   r   r   r   RuntimeErrorr   r   r   r   r   rz   r	   debugr   r   lower	CACHE_DIR_configure_trtexp_disable_mixed_precision_opsrD   r#   rC   rw   r   HalfFloat32rx   ro   r   enable_cinnr   set_optimization_levelenable_custom_device
enable_xpuset_xpu_device_iddelete_passpaddle_custom_device.gcur   setUppass_builderr   append_passes_for_legacy_iris_compiled_with_rocmintdisable_gpuenable_mkldnnenable_mkldnn_bfloat16set_mkldnn_cache_capacitymkldnn_cache_capacity set_cpu_math_library_num_threadscpu_threadsenable_memory_optimr   rF   rG   )r   r"   model_pathsrT   ry   	cache_dirrZ   r   	precision
gcu_passesr  r]   del_pr[   s                 r4   r   PaddleInfer._createT  s    	%dnnd6L6LM;&BCC#DLL$<$<d>N>NO"-h"7
<<##u,1G1G1S%)DLL"MM<= LL$$VW&&.%&DLL"MM9: <<  ++E22<<++113u< DLL))* +((,(@(@'AE< 2X=I((F
 22FG3DE!!#t||'='=> %%,,S_c+>NOF||''50667HI: ||,,= "&&&.. 
 %%'%%c4<<+A+A9M6?33(()C)CD||11dll6N6N**,6#899..0--a0))U2++E4<<3I3IJ6?33(()C)CD6#899..0))U2!!#(()?)?@6?33(()C)CD6#899..0""#<=""#9:))U2++E4<<3I3IJ6?33(()C)CD6#899..0))[8++K9O9OP6?33(()C)CD6#899..0))U2I  "++E4<<3I3IJ6?33((*6#899..0#)#6#6#8L%(?(??D::<N))U26?33(()C)CD||11dll6N6N**,%%c4<<+A+AB%%'6#899..0//11&&'AB&&'=>))^;++NC@V@V<WX6?33(()C)CD6#899..0||//5888""$t||444((*!6!6655744T\\5W5WXv'788--/778P8PQ6?33(()C)CD6#899..0--a0""$\\--Eu% . u$$&$$55f=	r6   c           	      	   SS K n[        (       Ga/  U R                  R                  c  [	        S5      eUS-  U R
                  -  nUR                  S5      nUR                  S5      nUR                  5       (       a  UR                  5       (       db  [        U R                  R                  UUUU R                  R                  U R                  R                  U R                  R                  5        O[        R                  " SU SU S35        UR                  R                  [!        U5      [!        U5      5      nU$ UR                  R                  [!        U5      [!        U5      5      nUR#                  [!        US	-  5      5        UR%                  S
U R                  R                  5        U R                  R                   Hy  n	['        X5      (       d   S[)        U5       SU	 S35       eU R                  R                  U	   n
[+        U
[,        5      (       a  [/        X5      " U
6   Mh  [/        X5      " S0 U
D6  M{     U R                  R0                  (       Ga  U R                  R                  c  [	        S5      eU R                  R2                  (       Ga  U R                  R4                  b   [7        U R                  R4                  5      nOUS-  nSnUR                  5       (       d4  UR8                  R;                  SSS9  [        R<                  " SU 35        ObU R                  R>                  (       a+  URA                  5         [        R<                  " SU S35        O[        R<                  " SU S35        SnU(       ag  [C        [!        U5      [!        U5      U R                  R                  [!        U5      U R                  R                  U R                  R                  5        U R                  RD                  [F        ;   a[  U R                  RH                  S:X  aA  UR                  RJ                  RM                  U[F        U R                  RD                     5        URO                  [!        U5      U R                  RP                  5        U$ 0 0 0 pnU R                  R                  RS                  5        H0  u  nnUS   UU'   US   UU'   US   UU'   URU                  XU5        M2     U$ )Nr   z%No dynamic shape information providedr   z.jsonz
.pdiparamszUse TRT cache files(`z` and `z`).optim_cacher8   rm   z` don't have function `rn   zshape_range_info.pbtxtTparentsexist_okz(Shape range info will be collected into zThe shape range info file (zB) has been removed, and the shape range info will be re-collected.zA shape range info file (z=) already exists. There is no need to collect the info again.Ftrt_fp16r@   rA   r   )+rB   r   r   trt_dynamic_shapesr   r   r   existsr   rr   rz   trt_dynamic_shape_input_datar	   r   r#   rC   rw   set_optim_cache_dirrD   ro   rM   
isinstancer   getattrtrt_use_dynamic_shapestrt_collect_shape_range_infotrt_shape_range_info_pathr   parentmkdirinfo#trt_discard_cached_shape_range_infounlinkrh   r   r   r   InternalUtilsdisable_tensorrt_half_ops#enable_tuned_tensorrt_dynamic_shapetrt_allow_rebuild_at_runtimerK   set_trt_dynamic_shape_info)r   rT   ry   r  r"   r   trt_model_filetrt_params_filerZ   	func_nameargsr-  should_collect_shape_range_info
min_shapes
opt_shapes
max_shapesr   shapess                     r4   r  PaddleInfer._configure_trt  s]   ;||..6"#JKK%-0F0FFM*66w?N+77EO!((**/2H2H2J2JLL00!LL**LL33LL== +N+;7?BSSVW %%,,S-@#oBVWF\ Y %%,,S_c+>NOF&&s9}+D'EF!!#t||'='=>!\\99	  N4<.(?	{"MN  ||33I>dD))F.5F.66 : ||222<<22:&'NOO<<<<<||==I48 LLBB51 5>@X4X16:34;;==188>>$(4 ?   FG`Fab II188:9:S9T  UW  X  78Q7R  SP  Q ;@765
O, LL22 9: LL;; LLEE //3NN LL11Z?((66PP"$?@W@W$X >>56AA"  :<RJJ 88>>@*0)
3*0)
3*0)
399&J	 A r6   )r   r   r   r   r   r[   )r   r   r   r   rw   r   r   r   r   r   r&   r   r   r   r   r   r  r   __classcell__r   s   @r4   r   r     s    << h'< 	<
 &< 
<(2::. 4

3C &-PXtf fr6   r   zultra-inferc                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )r    iX  c                 .   > [         TU ]  5         Xl        g r   )r   r   
ui_runtime)r   rF  r   s     r4   r   MultiBackendInfer.__init__[  s    $r6   c                 <    U R                   R                  U5      nU$ r   )rF  r   )r   r   r   s      r4   r   MultiBackendInfer.__call__`  s    //''*r6   )rF  )r   r   r   r   r   r   r   rB  rC  s   @r4   r    r    X  s    %
 r6   c                      ^  \ 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 rS rS rS rSS jrSrU =r$ )HPInferig  r   r   rZ   r   Nc                   > [         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 )Nr"   TF)r   r   r   
_model_dir_model_file_prefix_config_determine_backend_and_config_use_paddle_build_paddle_infer_paddle_infer_build_ui_runtimer    _multi_backend_infer
num_inputsr   get_input_infor]   _input_names)
r   r   r   rZ   backendbackend_configrF  rV  r   r   s
            r4   r   HPInfer.__init__i  s     	y/"3"&"D"D"Fh#D!%!9!9.!ID$D//HJ(9*(ED%#..0J;@;L!;La))!,11;L!D !s   '$Cc                     U R                   $ r   )rM  r   s    r4   r   HPInfer.model_dir  s    r6   c                     U R                   $ r   )rN  r]  s    r4   r   HPInfer.model_file_prefix  s    &&&r6   c                     U R                   $ r   )rO  r]  s    r4   rZ   HPInfer.config  s    ||r6   r   c                 h    U R                   (       a  U R                  U5      $ U R                  U5      $ r   )rQ  _call_paddle_infer_call_multi_backend_inferr   s     r4   r   HPInfer.__call__  s-    **1--11!44r6   c                 $    U R                  U5      $ r   )rS  r   s     r4   rd  HPInfer._call_paddle_infer  s    !!!$$r6   c                 >   [        U R                  5      n[        U5      U:w  a  [        SU S[        U5       S35      e[        XR                  5      n0 n[	        U R                  U5       H  u  pE[
        R                  " U5      X4'   M     U R                  U5      $ )Nz	Expected z inputs but got z instead)r   rX  rI   r   r   r&   r   rU  )r   r   rV  r}   r]   r   s         r4   re  !HPInfer._call_multi_backend_infer  s    **+
q6Zy4DSVHHUVV--. 1 115LD//7FL 6((00r6   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"   Tr   FzrThe Paddle Inference backend is selected with the default configuration. This may not provide optimal performance.)rO  auto_configr   rM  rN  r   r   rY  rZ  keysr   pdx_model_namer   r	   r   )r   r  retrY  rZ  is_default_configs         r4   rP  %HPInfer._determine_backend_and_config  s)   <<## *$//4;R;RSK6C 1v~"YZ]^_Z`Yab  '*#G^ll**G"q  "\\88>BNh!$(!$$&:,6$)!$2:$>BVLL//1I1IC %! ! I &&r6   c                 P   U R                   R                  U R                   R                  S.UEnS nU R                   R                  (       a=  U R                   R                  nUR                  (       a  UR                  R
                  nUb  UR                  S5      c4  UR                  b'  UR                  n[        R                  " SU5        XRS'   UR                  S5      c4  UR                  b'  UR                  n[        R                  " SU5        XbS'   [        S
0 UD6nUR                  U R                   R                  S9  [        R                  " S5        [        R                  " SU5        [        U R                   R                  U R                   U R"                  US	9$ )N)r   rz   r%  !TensorRT dynamic shapes set to %sr'  z+TensorRT dynamic shape input data set to %s)r   zUsing Paddle Inference backendzPaddle predictor option: %s)r   r   )rO  r   rz   hpi_infobackend_configspaddle_inferr   r%  r	   r   r'  r   setdefault_by_model_namern  r0  r   rM  rN  )r   rZ  kwargspaddle_infort  r%  r'  	pp_options           r4   rR  HPInfer._build_paddle_infer  sh   <<33//
 
 <<  ||,,H''&66CC"

/0822>%0%C%C"ACUV/A+,

9:B<<H/:/W/W,A0 :V56)3F3	**dll6Q6Q*R562I>LL''OO##	
 	
r6   c           
      4   SSK JnJnJn  Uc  U" 5       nU R                  R
                  S:X  a  OU R                  R
                  S:X  a/  UR                  U R                  R                  =(       d    S5        OtU R                  R
                  S:X  a/  UR                  U R                  R                  =(       d    S5        O+[        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OFUS:X  Ga  URC                  SS5      (       a  URC                  S5      c  S n	U R                  RD                  (       a=  U R                  RD                  n
U
RF                  (       a  U
RF                  RH                  n	U	b8  U	RJ                  b+  U	RJ                  n[        RL                  " SU5        0 UESU0En[N        R6                  " U5      nURQ                  5         U R                  [R        -  S-  nURU                  SSS9  ['        US-  5      URV                  l,        URZ                  S :X  a  SURV                  l.        UR^                  (       d  [        S!5      eURJ                  b  [a        URV                  RX                  5      Rc                  5       (       dA  URJ                  Re                  5        H"  u  pURV                  Rf                  " U/UQ76   M$     O[[        R                   " S"5        ODUS:X  a'  [h        R6                  " U5      nURk                  5         O[3        S[        U5       35      e[        R                   " S#U5        [        R                   " S$U5        U" U5      nU$ ! ["        R(                   a  n[        SUR*                   35      UeS nAff = f)%Nr   )ModelFormatRuntimeRuntimeOptionr   r   r   z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 requiredr~   omzOM model requiredzUnsupported inference backend r  r  r  use_dynamic_shapesrX   rs  r!  z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)6ultra_inferr}  r~  r  rO  r   use_gpurz   
use_ascendr   rJ   r   rM  r   auto_paddle2onnxr	   r0  
subprocessrS   rw   CalledProcessErrorstderrset_model_pathONNXOMrI   r   model_validateuse_openvino_backendset_cpu_thread_numcpu_num_threadsr   use_ort_backendr   rt  ru  r  rX   r   r   use_trt_backendr   r/  
trt_optionserialize_filer  enable_fp16r  r   r&  rK   	set_shaper   use_om_backend)r   rY  rZ  	ui_optionr}  r~  r  r  etrt_infort  r%  r  r]   r@  rF  s                   r4   rT  HPInfer._build_ui_runtime  s    	D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@<<((#||44H//#+#;#;#D#D'H,C,C,O)1)@)@&MM;=O&(&(*<&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'
W &88 !*GzR !!s   AU% %V9VV)rO  rX  rM  rN  rU  rS  rQ  r   )r   r   r   r   r   rw   r   r   r   propertyr   r   r   rZ   r   r&   r   r   r   rd  re  rP  rR  rT  r   rB  rC  s   @r4   rK  rK  g  s    h'  	
 
. 4   '3 ' ' 	  5(2::. 54

3C 5%1%'N(
Tw wr6   rK  ):r   r  osr   pathlibr   typingr   r   r   numpyr&   utilsr	   
utils.depsr
   utils.devicer   utils.flagsr   r   r   r   utils.benchmarkr   r   	utils.hpir   r   r   r   r   r   utils.mkldnn_blocklistr   utils.model_pathsr   utils.pp_optionr   r   utils.trt_blocklistr   utils.trt_configr   r   INFERENCE_OPERATIONSr5   rh   r   r   timeitr   ABCMetar   r   objectr    rK  r   r6   r4   <module>r     s       ( (   . 8  C  7 0 J 0 ;	   - .>(HXM'`   ."CKK "E+ ER
 ]#  $  ]#k  $r6   