
    ϑiD                        S SK r S SKrS SKrS SKJr  S SKr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  S SKJr  S S	KJr  / S
Qr\ R,                  " \5      r\R3                  \ R4                  5        \ R6                  " SS9r\ R:                  " 5       r\R?                  \5        \RA                  \5        Sr!Sr"Sr#\RH                  RJ                  RL                  \RH                  RJ                  RN                  /r(S/r)S"S jr*S r+S r,S#S jr-S r.S$S jr/S r0S r1S r2S r3S r4S r5S r6S r7S r8  S%S  jr9S! r:g)&    N)OrderedDict)text_format)base)core)Program)framework_pb2)draw_block_graphviz)io_utils)load_programsave_programprogram_type_transcheck_saved_vars_try_dumpparse_programcheck_pruned_program_varsgraphvizz)%(asctime)s - %(levelname)s - %(message)s)fmtzvars_persistable.logzvars_all.logzops.loglookup_tablec                 <    U(       a  [        U 5      $ [        U 5      $ N)load_program_textload_program_binary)model_filenameis_texts     g/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/incubate/distributed/fleet/utils.pyr   r   ;   s     00~..    c                     [        U S5       nUR                  5       nSSS5        [        R                  " W5      $ ! , (       d  f       N$= f)z$load program from binary string filerbN)openreadr   parse_from_string)r   fprogram_desc_strs      r   r   r   A   s:    	nd	#q668 
$$$%566 
$	#s	   <
A
c                    [        U S5       nUR                  5       nSSS5        [        R                  " 5       n[        R
                  " WU5        [        R                  " UR                  5       5      $ ! , (       d  f       N^= f)z*load program from human-readable text filerN)	r   r   r   ProgramDescr   Merger   r    SerializeToString)r   r!   program_desc_text	prog_descs       r   r   r   H   sc    	nc	"aFFH 
# ))+I'3$$Y%@%@%BCC 
#	"s   A66
Bc                 2   U(       a0  [        US5       nUR                  [        U 5      5        S S S 5        g [        US5       nUR                  U R                  R	                  5       5        S S S 5        g ! , (       d  f       g = f! , (       d  f       g = f)Nwwb)r   writestrdescserialize_to_string)programr   r   r!   s       r   r   r   R   sj    .#&!GGCL! '& .$'1GGGLL4467 (' '& ('s   A7*B7
B
Bc                     SnUR                  5        Vs/ s H.  n[        R                  " U5      (       d  M   UR                  U4PM0     nn[	        U5      n[        U5      n[        R                  SU 35        U H  nXF   nUR                  [        ;   a    U$  U R                  5       R                  U5      nUR                  UR                  :w  d  UR                  UR                  :w  d  Mt  [        R                  SU SUR                   SUR                   SUR                   S	UR                   3
5        S
nM     U$ s  snf ! [         a:  n	[        R                  SU S35        [        R                  U	5         S n	A	GM  S n	A	ff = f)NTz$persistable vars in pruned program: znot find variable 'z)' in train program. please check pruning.z
variable: z% not match. in pruned program shape: z dtype:z, in train program shape: z dtype: F)	list_varsr
   is_persistablenamer   listloggerinfotypefeed_fetch_type_listglobal_blockvar
ValueErrorerrorshapedtype)

train_progpruned_progis_matchvpruned_varspruned_vars_namevar_namer<   train_prog_vares
             r   r   r   [   s   H &&((A""1% 	(  
 k*KK(
KK67G6HIJ#88++" O!	'446::8DN II---yyN000LLXJ&KCII;V]^a^g^g]h  iC  DR  DX  DX  CY  Ya  bp  bv  bv  aw  x H)  * O=   	LL%hZ/XY LLO	s"   EEE		
F.FFc                 N   [         R                  R                  XS-   5      n[         R                  R                  XS-   5      n[        XS9  SSUSU/n[        R
                  " U[        R                  [        R                  [        R                  S9nUR                  5         g )Nz.dotz.pdf)pathdotz-Tpdfz-o)stdinstdoutstderr)osrK   joinr	   
subprocessPopenPIPEwait)block
output_dirfilenamedot_pathpdf_pathcmdps          r   r   r      s{    ww||J6(9:Hww||J6(9:H-'8T8
4Coo		A FFHr   c                     [        [        R                  R                  X5      U5      nU(       a  US-   OUS-   n[	        U[        R                  R                  X5      SU-
  5        U$ )Nz.binz.pbtxt   )r   rP   rK   rQ   r   )prog_dirprog_fnr   progprog_out_fns        r   r   r      sQ    X7AD&-'F"7X3EKrww||H:AKHr   c                 2    U R                  SSU/00 SU0S9  g )NsaveX	file_pathr9   inputsoutputsattrs	append_oprV   r<   rK   s      r   append_save_oprn      s'    	OOS3%L"[$<O  r   c                 2    U R                  S0 SU/0SU0S9  g )NloadOutrf   rg   rk   rm   s      r   append_load_oprr      s*    	OOD!	  r   c                    [         R                  " 5       n[         R                  " 5       n[         R                  " U5      n[	        U5      n[         R
                  " U5         [        R                  R                  XUS9n	[        UR                  5       X5        UR                  X0/ S9  S S S 5        g ! , (       d  f       g = fN)r?   r@   )feed
fetch_list)r   r   CPUPlaceExecutorr6   program_guardpaddlestaticdatarn   r;   run)
np_arrayrG   
shape_listr@   	save_pathr1   placeexer?   d0_datas
             r   save_varr      s    llnGMMOE
--
CE			G	$--$$X%$Hw++-wBh)b9 
%	$	$s   "A
B55
Cc                 z   [         R                  " 5       n[         R                  " 5       n[         R                  " U5      n[         R                  " U5         [
        R                  R                  XUS9n[        UR                  5       Xs5        UR                  0 U/S9nUsS S S 5        $ ! , (       d  f       g = frt   )r   r   rw   rx   ry   rz   r{   r|   rr   r;   r}   )	rG   r   r@   r   r1   r   r   r   outss	            r   load_varr      s    llnGMMOE
--
C			G	$--$$Xu$Mw++-wBwwBG9w5	 
%	$	$s   AB,,
B:c                    / n[        U[        [        45      (       a  [        U5      nSnU H  nXV-  nM	     UnOU/nU /UQnX -  n[        US5       H  nUR	                  5       R                  S5      nU V	s/ s H  n	[        U	5      PM     nn	[        U5      U:  d  MN  US U n
XS  nUR                  [        R                  " U
5      R                  U5      5        [        U5      U:  a  MN  M     U$ s  sn	f )Nr^   r$    )
isinstancer6   tupler   stripsplitfloatlenappendnparrayreshape)
batch_sizefndimr|   r?   _tempxlinefieldsdtmps              r   readerr      s    D#e}%%S	AIE  % E

CR##C($*+Fq%(F+&kS #,CD\FKK--e45 &kS   K ,s   9C5c           	      l    / n[        U5       H"  u  pEUR                  [        XX   5      5        M$     U$ r   )	enumerater   r   )r   feeded_vars_dimsfeeded_vars_filelist
batch_feedir   s         r   feed_genr      s8    J/0&1A1DEF 1r   c                    [         R                  " 5       n[         R                  " U5      n	[         R                  R	                  5       n
[         R
                  " U
5         U(       a  [        XU5      n[        R                  R                  R                  U U	UUS9u  nnnU Vs0 s H1  nUR                  [        UR                  R                  5       5      _M3     nnU H  n[         R                  " 5       R!                  UR                  5      nUc   SUR                  -   5       e["        R$                  " UR'                  5       5      R                  nUR                  U;   d   UR                  S-   5       eUR)                  UR                  5      nUU:w  d  M  [+        SU SUR                   SU S35      e   U Vs/ s H  nUR                  PM     nnU(       d  [,        R/                  S5        U(       d  [,        R/                  S	5        UnUnUR0                  b  XR0                  :w  a  [,        R/                  S
U SUR0                   S35        UR0                  nUR3                  5       n/ n[5        UR6                  5       HD  u  nnUR                  R9                  S5        UR:                  S:X  d  M3  UR=                  U5        MF     US S S2    H  nUR?                  U5        M     UR@                  b  UUR@                  :w  a  [,        R/                  SU SUR@                   S35        UR@                   Vs/ s H"  nUR3                  5       RC                  U5      PM$     nnUR3                  5       n/ n[5        UR6                  5       HD  u  nnUR                  R9                  S5        UR:                  S:X  d  M3  UR=                  U5        MF     US S S2    H  nUR?                  U5        M     [E        S U 5       5      n/ n[G        UR0                  5      [G        URH                  5      s=:X  a  [G        URJ                  5      :X  d    e   e[M        [G        UR0                  5      5       H  nUR3                  5       RC                  UR0                  U   5      n[O        URH                  U   [P        [        45      (       d  URH                  U   4nO[        URH                  U   5      nUURH                  U'   UR                  SS  n UU :w  d  M  [+        SUR0                  U    SU  SU 35      e   URR                  (       Gd  [,        RU                  S5        [M        [G        UR0                  5      5       GHJ  nUR3                  5       RC                  UR0                  U   5      nURV                  S:X  aj  UR=                  ["        R$                  " ["        RX                  RY                  U/[Q        URH                  U   5      Q75      URJ                  U   S95        M  URV                  S:X  a  ["        R$                  " ["        RX                  RY                  U/[Q        URH                  U   5      Q75      URJ                  U   S9n!UR=                  [         RZ                  " U!S/U-  /U5      5        GMB  [+        S5      e   U	R]                  U[5        U5       VV"s0 s H  u  nn"U"UU   _M     sn"nUUS9n#O[,        RU                  SURR                   S35        [M        [G        UR0                  5      5       Vs/ s H/  nUR3                  5       RC                  UR0                  U   5      PM1     n$n[         R^                  " U$US9n%[a        UURH                  URR                  5      n&U&/n'U	R]                  UU%Rc                  U'5      UUS9n#[5        U5       HC  u  nn[,        RU                  SUR                   35        [,        RU                  S U#U    35        ME     U#sS S S 5        $ s  snf s  snf s  snf s  sn"nf s  snf ! , (       d  f       g = f)!N)r   params_filenamezcan't not find var: zMUST in var listzFShape not matching: the Program requires a parameter with a shape of (z(), while the loaded parameter (namely [ z ]) has a shape of  (z).zno feed targets in program.zno fetch targets in program.z;feed vars in program and config are diff: feed in program: z. feed in config .Fru   z=fetch vars in program and config are diff: fetch in program: z. fetch in config fetchc              3   >   #    U  H  oR                   S :H  v   M     g7f)r   N)	lod_level).0rD   s     r   	<genexpr>&try_load_model_vars.<locals>.<genexpr>8  s     @Z;;!+Zs   r^   zfeed variable 'z)' shape not match. infer program  shape: z. feed tensor shape: zgenerate random feed vars.r   )r@   zOvars with lod_level >= 2 is not supported now in this infer program check tool.)ru   rv   return_numpyzload feed vars from files: )	feed_listr   zfetch_targets name: zfetch_targets: )2r   rw   rx   r   Scopescope_guardr   rz   r{   ioload_inference_modelr5   r   r/   r?   global_scopefind_varr   r   
get_tensorgetRuntimeErrorr7   warningfeeded_vars_namesr;   r   opsset_is_targetr9   r   
_remove_opfetch_vars_namesr<   allr   r   feeded_vars_typesranger   r6   r   r8   r   randomcreate_lod_tensorr}   
DataFeederr   ru   )(dump_dirdump_prog_fnis_text_dump_programr   feed_configfetch_configsave_filenamesaved_paramsr   r   scopeinference_programfeed_target_namesfetch_targetseach_varorig_para_shapevar_temp	new_shape
orig_shaperD   fetch_targets_namesrv   feed_name_listr;   need_to_remove_op_indexr   opindexr   feed_tensorsr<   tensor_shape	var_shapetr5   results	feed_varsfeederr   slotss(                                           r   try_load_model_varsr      s4    MMOE
--
CIIOOE			%	 -(<L MM11')	 2 
		
 )
( MM5!4!4!677( 	 
 %H((*33HMMBH'O)?(--)OO'("5"5"78??I==O3  223 ),,X]];JJ&"\]g\h i<<DMM?J_`i_jjln  % 0==}!qvv}= NN89"NN9:"
*))5!%B%BBNNMN_M``qr}  sP  sP  rQ  QR  S )::N,99;L&(#"<#3#342%%e,77f$+2215 5 126''. 7 ))5#|'D'DDNNOPcOddv  xD  xU  xU  wV  VW  X
 &666A "..044Q76  
 -99;L&(#"<#3#342%%e,77g%+2215 5 126''. 7 @Z@@ --.;//02;0012	
2	
2
 s;889:A#00266--a0C k::1=e}MM + < <Q ?A$[%A%A!%DE.:K((+		!"Iy("%k&C&CA&F%GGpqzp{  |Q  R^  Q_  `  ; ///KK453{<<=>'446::11!4 ==A% ''II,,$.!"%)+*F*Fq*I%J!" #."?"?"B
 ]]a'		(( *!%k&B&B1&E!F *;;A>A !''..qA33C2DeL 'i ? ?D gg! $-^#<#<4 ,q/)#< &)  G KK-k.N.N-OqQ s;#@#@AB	 CA "..04411!4 C	   __yFF!,,00J
  LEgg![['%)	  G j)DAqKK.qvvh78KK/'!*67 * g 
!	 $
& >>\{ 
!	 so    Aa&8aB=a%aaC"a Ba)a/AaEa$Ga5aAa6a
B/aa
a+c                 &   [        5       nU R                  5       R                   Hi  nUR                  [        ;   d  M  UR                  U;  d  M+  [
        R                  SUR                   S35        UR                  UR                  5        Mk     g )Nzfind op type 'z@' in program, please check if your program is pruned correctly !)setr;   r   r9   not_expected_op_typesr7   r   add)ra   op_types_setr   s      r   check_not_expected_opsr     sk    5L!%%77++|0KNN 	)ij RWW% &r   c           
         [        [        R                  R                  X5      U5      nUR	                  5        Vs/ s H"  n[
        R                  " U5      (       d  M   UPM$     n	n[        R                  SU	 Vs/ s H  oR                  PM     sn 35        [        U5        [        U UUUUUUU	5      $ s  snf s  snf )Nz"persistable vars in dump program: )r   rP   rK   rQ   r3   r
   r4   r7   r8   r5   r   r   )
r   r   r   r   r   r   r   	dump_progrD   r   s
             r   r   r     s     
X,.BI &&((aH,C,CA,F(   KK
,l-Klffl-K,LM 9%	 	 .Ls   B6B6;B;
c           
      J   0 nU R                  5        Vs/ s H"  n[        R                  " U5      (       d  M   UPM$     nnU Vs/ s Hj  n[        UR                  5      [        UR
                  5      [        UR                  5      [        UR                  5      [        UR                  5      S.PMl     snUS'   [        [        R                  R                  U[        5      S5       nUR                  S5        US    H.  nUR                  [        U5      5        UR                  S5        M0     S S S 5        [!        U R                  5       5      nU Vs/ s H  nUR                  ["        ;  aS  [        UR                  5      [        UR
                  5      [        UR                  5      [        UR                  5      S.O*[        UR                  5      [        UR                  5      S.PM     snUS'   [        [        R                  R                  U[$        5      S5       nUR                  S	5        US    H.  nUR                  [        U5      5        UR                  S5        M0     S S S 5        U R'                  5       R(                  nU V	s/ s H9  n	U	R                  [        U	R*                  5      [        U	R,                  5      S
.PM;     sn	US'   [        [        R                  R                  U[.        5      S5       nUR                  S5        US    H.  n	UR                  [        U	5      5        UR                  S5        M0     S S S 5        g s  snf s  snf ! , (       d  f       GN;= fs  snf ! , (       d  f       GN= fs  sn	f ! , (       d  f       g = f)N)r5   r?   r   r@   r9   persistable_varsr+   zpersistable vars:

)r5   r?   r   r@   )r5   r9   all_varsz
all vars:
)r9   input_arg_namesoutput_arg_namesr   zops:
)r3   r
   r4   r.   r5   r?   intr   r@   r9   r   rP   rK   rQ   persistable_vars_out_fnr-   r6   r:   all_vars_out_fnr;   r   r   r   
ops_out_fn)
r1   rW   outputrD   r   r!   r<   r   r   r   s
             r   r   r     s   F$$&&a(*A*A!*D&   "	" "A K\Q[[)\K	
 "	"F 
bggll:'>?	E	%&,-CGGCHGGDM . 
F G%%'(H  A vv11 AFFQWW -QWW	 aff+s166{;< F: 
bggll:7	=	*%CGGCHGGDM & 
> 


 
$
$C  B	 GG"2#5#56 #B$7$7 8	

 F5M 
bggll:z2C	8A	-BGGCGGGDM   
9	8e	" 
F	E 
>	= 
9	8sF   MMA1M!)A	M&BM8'A	M=A N
A	N&
M5=
N
N")F)	__model__F) debug)r^   N);loggingrP   rR   collectionsr   numpyr   google.protobufr   rz   r   paddle.baser   paddle.base.frameworkr   paddle.base.protor   *paddle.distributed.fleet.base.util_factoryr	   paddle.frameworkr
   __all__	getLogger__name__r7   setLevelINFO	Formatter	formatterStreamHandlerchsetFormatter
addHandlerr   r   r   VarDescVarTypeFEED_MINIBATCH
FETCH_LISTr:   r   r   r   r   r   r   r   r   rn   rr   r   r   r   r   r   r   r   r    r   r   <module>r     s=    	  #  '    ) + J % 
		8	$  "MN	 	    " 0  
 	LL''LL##  (( /7D8!H:0@F&  B9r   