
    Αi7=                         S r SSKrSSKr/ r " S S5      r " S S\5      r " S S\5      r " S	 S
\5      r " S S\5      r " S S\5      r	 " S S\5      r
g)zDefinition of trainers.    Nc                   (   \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS.S jrS.S jr S/S jrS0S jrS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S.S# jr%S.S$ jr&S% r'S& r(S' r)S( r*S) r+S* r,S+ r-S,r.g-)1TrainerDesc   zC
Set proto from python to c++.
Can be initialized from train_desc.
c                    [         R                  R                  [        5      nU[        R                  ;  a  [        R                  R                  U5        US-   [        R                  ;  a"  [        R                  R                  US-   5        SSKJn  UR                  5       U l	        SSK
nUR                  5       U R                  l        SU l        SU l        SU l        SU l        g)z
self.proto_desc = data_feed_pb2.DataFeedDesc()
with open(proto_file, 'r') as f:
    text_format.Parse(f.read(), self.proto_desc)
z/protor   )trainer_desc_pb2NF)ospathdirname__file__sysappendprotor   r   
proto_descmultiprocessing	cpu_count
thread_num_fleet_desc_device_worker_program_infer)selfcur_pathr   mps       X/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/base/trainer_desc.py__init__TrainerDesc.__init__   s     77??8,388#HHOOH%hchh.HHOOHx/0**668$ &(\\^""    c                     Uc  g US   U R                   l        US   U R                   l        US    H(  nU R                   R                  R	                  U5        M*     US    H(  nU R                   R
                  R	                  U5        M*     g )Nr            )r   xpu_start_idxxpu_end_idxxpu_send_listr   xpu_recv_list)r   retis      r   _set_heter_infoTrainerDesc._set_heter_info6   s|     ; ),A% '*!f#QAOO))003 QAOO))003 r   c                 N   [        U5      n[        U5       Hq  u  pEU R                  R                  R                  R                  UR                  /5        U R                  R                  R                  R                  X$   /5        Ms     X0R                  R                  l        g N)	list	enumerater   fetch_configfetch_var_namesextendnamefetch_var_str_formatprint_period)r   
fetch_vars
fetch_infor3   r'   vs         r   _set_fetch_var_and_info#TrainerDesc._set_fetch_var_and_info[   sy    *%
j)DAOO((88??IOO((==DD *
 5A$$1r   c                 $    XR                   l        g r+   )r   debug)r   r:   s     r   
_set_debugTrainerDesc._set_debuge   s     %r   c                 $    XR                   l        g r+   )r   r   )r   r   s     r   _set_threadTrainerDesc._set_threadh       %/"r   c                     Xl         g r+   )r   )r   device_workers     r   _set_device_workerTrainerDesc._set_device_workerk   s    +r   c                     Xl         g r+   )r   )r   infers     r   
_set_inferTrainerDesc._set_infern   s    r   c                 ^    Xl         SSKJn  UR                  U5      nX0R                  l        g Nr   )text_format)r   google.protobufrK   MessageToStringr   
fleet_desc)r   rN   rK   fleet_desc_strs       r   _set_fleet_descTrainerDesc._set_fleet_descq   s%    %/$44Z@%3"r   c                     g r+    r   s    r   _gen_trainer_descTrainerDesc._gen_trainer_descy   s    r   c                     Xl         g r+   r   )r   programs     r   _set_programTrainerDesc._set_program|   s    r   c                 $    XR                   l        g r+   )r   
trainer_id)r   r]   s     r   _set_trainer_idTrainerDesc._set_trainer_id   r@   r   c                 `    U H(  nU R                   R                  R                  U5        M*     g r+   )r   trainersr   )r   ra   trainer_nums      r   _set_trainersTrainerDesc._set_trainers   s$    #KOO$$++K8 $r   c                 $    XR                   l        g r+   )r   use_cvm)r   rf   s     r   _set_use_cvmTrainerDesc._set_use_cvm   s    ")r   c                 $    XR                   l        g r+   )r   no_cvm)r   rj   s     r   _set_no_cvmTrainerDesc._set_no_cvm   s    !'r   c                 &    UU R                   l        g r+   )r   %scale_sparse_gradient_with_batch_size)r   rn   s     r   &_set_scale_sparse_grad_with_batch_size2TrainerDesc._set_scale_sparse_grad_with_batch_size   s     2 	=r   c                 $    XR                   l        g r+   )r   scale_datanorm)r   rr   s     r   _set_scale_datanormTrainerDesc._set_scale_datanorm       )7&r   c                 $    XR                   l        g r+   )r   	dump_slot)r   rw   s     r   _set_dump_slotTrainerDesc._set_dump_slot   s    $-!r   c                 $    XR                   l        g r+   )r   mpi_rank)r   r{   s     r   _set_mpi_rankTrainerDesc._set_mpi_rank       #+ r   c                 $    XR                   l        g r+   )r   mpi_size)r   r   s     r   _set_mpi_sizeTrainerDesc._set_mpi_size   r~   r   c                 `    U H(  nU R                   R                  R                  U5        M*     g r+   )r   dump_fieldsr   )r   r   fields      r   _set_dump_fieldsTrainerDesc._set_dump_fields   s$     EOO''..u5 !r   c                 $    XR                   l        g r+   )r   is_dump_in_simple_mode)r   r   s     r   _set_is_dump_in_simple_mode'TrainerDesc._set_is_dump_in_simple_mode   s    1G.r   c                 $    XR                   l        g r+   )r   dump_num_decimals)r   r   s     r   _set_dump_num_decimals"TrainerDesc._set_dump_num_decimals   s    ,=)r   c                 $    XR                   l        g r+   )r   dump_fields_path)r   r	   s     r   _set_dump_fields_path!TrainerDesc._set_dump_fields_path       +/(r   c                 $    XR                   l        g r+   )r   dump_file_num)r   r   s     r   _set_dump_file_numTrainerDesc._set_dump_file_num       (5%r   c                 $    XR                   l        g r+   )r   user_define_dump_filename)r   r   s     r   _set_user_define_dump_filename*TrainerDesc._set_user_define_dump_filename   s    4M1r   c                 $    XR                   l        g r+   )r   dump_converter)r   	converters     r   _set_dump_converterTrainerDesc._set_dump_converter   s    )2&r   c                 $    XR                   l        g r+   )r   enable_random_dump)r   r   s     r   _set_enable_random_dump#TrainerDesc._set_enable_random_dump       -?*r   c                 $    XR                   l        g r+   )r   dump_interval)r   r   s     r   _set_dump_intervalTrainerDesc._set_dump_interval   r   r   c                 $    XR                   l        g r+   )r   random_with_lineid)r   r   s     r   _set_random_with_lineid#TrainerDesc._set_random_with_lineid   r   r   c                 `    U H(  nU R                   R                  R                  U5        M*     g r+   )r   
dump_paramr   )r   r   params      r   _set_dump_paramTrainerDesc._set_dump_param   s$    EOO&&--e4  r   c                 $    XR                   l        g r+   )r   dump_fields_mode)r   modes     r   _set_dump_fields_mode!TrainerDesc._set_dump_fields_mode   r   r   c                 `    U H(  nU R                   R                  R                  U5        M*     g r+   )r   worker_placesr   )r   r   places      r   _set_worker_placesTrainerDesc._set_worker_places   s$    "EOO))007 #r   c                 $    XR                   l        g r+   )r   
use_ps_gpu)r   r   s     r   _set_use_ps_gpuTrainerDesc._set_use_ps_gpu   r@   r   c                 $    XR                   l        g r+   )r   use_gpu_graph)r   r   s     r   _set_use_gpu_graphTrainerDesc._set_use_gpu_graph   r   r   c                 $    XR                   l        g r+   )r   thread_barrier)r   r   s     r   _set_thread_barrierTrainerDesc._set_thread_barrier   ru   r   c                 `    U H(  nU R                   R                  R                  U5        M*     g r+   )r   check_nan_var_namesr   )r   r   vars      r   _set_check_nan_var_names$TrainerDesc._set_check_nan_var_names   s$    &COO//66s; 'r   c                 `    U H(  nU R                   R                  R                  U5        M*     g r+   )r   
loss_namesr   )r   r   losss      r   _set_loss_namesTrainerDesc._set_loss_names   s$    DOO&&--d3 r   c                    UR                  SS5      U R                  R                  l        UR                  SS5      U R                  R                  l        UR                  SS5      U R                  R                  l        UR                  SS5      U R                  R                  l        UR                  SS5      U R                  R                  l        g )	Nneed_adjustFnid_slot nid_adjw_thresholdg        nid_adjw_ratioins_weight_slot)getr   adjust_ins_weight_configr   r   r   r   r   )r   config_dicts     r   _set_adjust_ins_weight"TrainerDesc._set_adjust_ins_weight   s    ?J5@
00< =HOO=
009 OO0#6 	00C OO,c2 	00? OO-r2 	00@r   c                 d   U R                   R                  nUR                  SS5      Ul        UR                  SS5      Ul        UR                  S/ 5      n[        U[        5      (       d  U/nUR                  S/ 5      n[        U[        5      (       d  U/n[        U5      [        U5      :w  a#  [        S[        U5       S[        U5       35      eU H  nUR                  R                  U5        M      U H  nUR                  R                  U5        M      UR                  S	/ 5      n[        U[        5      (       d  U/nUR                  S
/ 5      n[        U[        5      (       d  U/n[        U5      [        U5      :w  a#  [        S[        U5       S[        U5       35      eU H  nUR                  R                  U5        M      U H  nUR                  R                  U5        M      UR                  S/ 5      n[        U[        5      (       d  U/nUR                  S/ 5      n	[        U	[        5      (       d  U	/n	[        U5      [        U	5      :w  a#  [        S[        U5       S[        U	5       35      eU H  nUR                  R                  U5        M      U	 H  nUR                  R                  U5        M      UR                  S0 5      n
U
 H  nUR                   R#                  5       nXl        X   n[        U[        5      (       d  U/n[        U5      S:w  a  [        S[        U5       S35      eU H  nUR&                  R                  U5        M      M     UR                  SS5      Ul        UR                  SS5      Ul        UR                  SS5      Ul        g )N	need_copyF	batch_numd   src_sparse_tablesdest_sparse_tablesz3len(src_sparse_tables) != len(dest_sparse_tables), z vs src_dense_tablesdest_dense_tablesz1len(src_dense_tables) != len(dest_dense_tables), src_var_listdest_var_listz)len(src_var_list) != len(dest_var_list), dependency_mapr   zdependency len z != 1dense_pull_after_copyTenable_dependencysparse_copy_by_feasign)r   copy_table_configr   r   r   
isinstancer,   len
ValueErrorr   r   r   r   r   r   r   table_dependency_mapaddkeyvaluesr   r   r   )r   r   configr   r   r'   r   r   r   r   r   r   mr   values                  r   _set_copy_table_config"TrainerDesc._set_copy_table_config   s   22&??;>&??;<'OO,?D+T22!2 3(__-A2F,d33"4!5 !S);%<<)*+44F0G/HJ  #A$$++A. ##A%%,,Q/ $ '??+=rB*D11 01'OO,?D+T22!2 3 C(9$::()*$s3D/E.FH  "A##**1- ""A$$++A. #
 #~r:,--(>L#<-..*OM|M 22;C<M;N O&')  A&&q) A  ''*  %)92>!C++//1AE#(Ffd++ 6{a ?3v;-u!EFF&   " (3#T(
$ $/??3F#N (3$d)
%r   c                 6    U R                   R                  5       $ r+   )r   SerializeToStringrT   s    r   _descTrainerDesc._desc5  s    0022r   c                 D    SSK Jn  UR                  U R                  5      $ rJ   )rL   rK   rM   r   )r   rK   s     r   __str__TrainerDesc.__str__8  s    /**4??;;r   )r   r   r   r   r   N)F)T))/__name__
__module____qualname____firstlineno____doc__r   r(   r7   r;   r>   rC   rG   rP   rU   rZ   r^   rc   rg   rk   ro   rs   rx   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  __static_attributes__rS   r   r   r   r      s    
44JA&0,4 09*( 59
8.,,6H>06N3@6@508068<4
"H
T3<r   r   c                   D   ^  \ rS rSrSrU 4S jrU 4S jrU 4S jrSrU =r	$ )MultiTraineri>  z:
Implement of MultiTrainer.
Can be init from TrainerDesc.
c                 "   > [         TU ]  5         g r+   superr   r   	__class__s    r   r   MultiTrainer.__init__D      r   c                 0   > [         TU ]  U5        Xl        g r+   r  rZ   r   r   rY   r  s     r   rZ   MultiTrainer._set_programH      W%r   c                 "  > [         TU ]  5         SU R                  l        U R                  R                  U R                  5        U R                  R                  U R                  5        U R                  R                  U R                  5        g )Nr  )
r  rU   r   
class_namer   rG   r   rZ   r   _gen_worker_descr  s    r   rU   MultiTrainer._gen_trainer_descL  sb    !#%3"&&t{{3((7,,T__=r   rX   
r  r  r  r  r  r   rZ   rU   r	  __classcell__r  s   @r   r  r  >  s    
 > >r   r  c                   D   ^  \ rS rSrSrU 4S jrU 4S jrU 4S jrSrU =r	$ )DistMultiTraineriT  z?
Implement of DistMultiTrainer.
It's for Distributed training.
c                 "   > [         TU ]  5         g r+   r  r  s    r   r   DistMultiTrainer.__init__Z  r  r   c                 0   > [         TU ]  U5        Xl        g r+   r  r  s     r   rZ   DistMultiTrainer._set_program^  r  r   c                 R  > [         TU ]  5         SU R                  l        U R                  c  [        S5      eU R                  R                  U R                  5        U R                  R                  U R                  5        U R                  R                  U R                  5        g )Nr   None Programr  rU   r   r  r   RuntimeErrorr   rG   r   rZ   r  r  s    r   rU   "DistMultiTrainer._gen_trainer_descb  sw    !#%7"== ~..&&t{{3((7,,T__=r   rX   r  r  s   @r   r   r   T      
 > >r   r   c                   D   ^  \ rS rSrSrU 4S jrU 4S jrU 4S jrSrU =r	$ )HeterXpuTraineril  z>
Implement of HeterXpuTrainer.
It's for Distributed training.
c                 "   > [         TU ]  5         g r+   r  r  s    r   r   HeterXpuTrainer.__init__r  r  r   c                 0   > [         TU ]  U5        Xl        g r+   r  r  s     r   rZ   HeterXpuTrainer._set_programv  r  r   c                 R  > [         TU ]  5         SU R                  l        U R                  c  [        S5      eU R                  R                  U R                  5        U R                  R                  U R                  5        U R                  R                  U R                  5        g )Nr,  r&  r'  r  s    r   rU   !HeterXpuTrainer._gen_trainer_descz  w    !#%6"== ~..&&t{{3((7,,T__=r   rX   r  r  s   @r   r,  r,  l  r*  r   r,  c                   D   ^  \ rS rSrSrU 4S jrU 4S jrU 4S jrSrU =r	$ )PSGPUTraineri  z;
Implement of PSGPUTrainer.
It's for Distributed training.
c                 "   > [         TU ]  5         g r+   r  r  s    r   r   PSGPUTrainer.__init__  r  r   c                 0   > [         TU ]  U5        Xl        g r+   r  r  s     r   rZ   PSGPUTrainer._set_program  r  r   c                 R  > [         TU ]  5         SU R                  l        U R                  c  [        S5      eU R                  R                  U R                  5        U R                  R                  U R                  5        U R                  R                  U R                  5        g )Nr5  r&  r'  r  s    r   rU   PSGPUTrainer._gen_trainer_desc  sw    !#%3"== ~..&&t{{3((7,,T__=r   rX   r  r  s   @r   r5  r5    r*  r   r5  c                   D   ^  \ rS rSrSrU 4S jrU 4S jrU 4S jrSrU =r	$ )HeterPipelineTraineri  zH
Implement of HeterPipelineTrainer.
It's for HeterPS Pipeline training.
c                 "   > [         TU ]  5         g r+   r  r  s    r   r   HeterPipelineTrainer.__init__  r  r   c                 0   > [         TU ]  U5        Xl        g r+   r  r  s     r   rZ   !HeterPipelineTrainer._set_program  r  r   c                 R  > [         TU ]  5         SU R                  l        U R                  c  [        S5      eU R                  R                  U R                  5        U R                  R                  U R                  5        U R                  R                  U R                  5        g )Nr=  r&  r'  r  s    r   rU   &HeterPipelineTrainer._gen_trainer_desc  sw    !#%;"== ~..&&t{{3((7,,T__=r   rX   r  r  s   @r   r=  r=    r*  r   r=  c                   D   ^  \ rS rSrSrU 4S jrU 4S jrU 4S jrSrU =r	$ )PipelineTraineri  z2
Implement of PipelineTrainer.
It's for Pipeline.
c                 "   > [         TU ]  5         g r+   r  r  s    r   r   PipelineTrainer.__init__  r  r   c                 0   > [         TU ]  U5        Xl        g r+   r  r  s     r   rZ   PipelineTrainer._set_program  r  r   c                 R  > [         TU ]  5         SU R                  l        U R                  c  [        S5      eU R                  R                  U R                  5        U R                  R                  U R                  5        U R                  R                  U R                  5        g )NrE  r&  r'  r  s    r   rU   !PipelineTrainer._gen_trainer_desc  r3  r   rX   r  r  s   @r   rE  rE    r*  r   rE  )r  r   r   __all__r   r  r   r,  r5  r=  rE  rS   r   r   <module>rM     sj     	 

e< e<P	>; >,>{ >0>k >0>; >0>; >0>k >r   