Ë
    †\;j’>  ã                   ó´   — d Z ddlZddlZg Z G d„ d«      Z G d„ de«      Z G d„ de«      Z G d	„ d
e«      Z G d„ de«      Z G d„ de«      Z	 G d„ de«      Z
y)zDefinition of trainers.é    Nc                   ó  — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd+d„Zd+d„Z	 d,d„Zd-d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d „ Z"d!„ Z#d+d"„Z$d#„ Z%d$„ Z&d%„ Z'd&„ Z(d'„ Z)d(„ Z*d)„ Z+y*).ÚTrainerDesczO
    Set proto from python to c++.
    Can be initialized from train_desc.
    c                 óÎ  — t         j                  j                  t        «      }|t        j                  vrt        j                  j                  |«       |dz   t        j                  vr"t        j                  j                  |dz   «       ddlm} |j                  «       | _	        ddl
}|j                  «       | j                  _        d| _        d| _        d| _        d| _        y)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       úaG:\00. PROJECTS\API\Inventory\templateJSON\kerjaOCR\Lib\site-packages\paddle/base/trainer_desc.pyÚ__init__zTrainerDesc.__init__   s    € ô —7‘7—?‘?¤8Ó,ˆØœ3Ÿ8™8Ñ#Ü�H‰H�O‰O˜HÔ%Ø�hÑ¤c§h¡hÑ.Ü�H‰H�O‰O˜H xÑ/Ô0å*à*×6Ñ6Ó8ˆŒÛ$ð &(§\¡\£^ˆ�‰Ô"ØˆÔØ"ˆÔØˆŒØˆ�ó    c                 ó  — |€y |d   | j                   _        |d   | j                   _        |d   D ]'  }| j                   j                  j	                  |«       Œ) |d   D ]'  }| j                   j
                  j	                  |«       Œ) y )Nr   é   é   é   )r   Úxpu_start_idxÚxpu_end_idxÚxpu_send_listr   Úxpu_recv_list)r   ÚretÚis      r   Ú_set_heter_infozTrainerDesc._set_heter_info6   s|   € ð ˆ;Øð ),¨A©ˆ�‰Ô%ð '*¨!¡fˆ�‰Ô#Ø�Q”ˆAØ�O‰O×)Ñ)×0Ñ0°Õ3ð à�Q”ˆAØ�O‰O×)Ñ)×0Ñ0°Õ3ñ r   c                 óP  — t        |«      }t        |«      D ]r  \  }}| j                  j                  j                  j                  |j                  g«       | j                  j                  j                  j                  ||   g«       Œt || j                  j                  _        y ©N)	ÚlistÚ	enumerater   Úfetch_configÚfetch_var_namesÚextendÚnameÚfetch_var_str_formatÚprint_period)r   Ú
fetch_varsÚ
fetch_infor0   r%   Úvs         r   Ú_set_fetch_var_and_infoz#TrainerDesc._set_fetch_var_and_info[   s   € ä˜*Ó%ˆ
Ü˜jÖ)‰DˆAˆqØ�O‰O×(Ñ(×8Ñ8×?Ñ?ÀÇÁÀÔIØ�O‰O×(Ñ(×=Ñ=×DÑDØ˜A‘�õð *ð
 5Aˆ�‰×$Ñ$Õ1r   c                 ó&   — || j                   _        y r(   )r   Údebug)r   r6   s     r   Ú
_set_debugzTrainerDesc._set_debuge   s   € Ø %ˆ�‰Õr   c                 ó&   — || j                   _        y r(   )r   r   )r   r   s     r   Ú_set_threadzTrainerDesc._set_threadh   ó   € Ø%/ˆ�‰Õ"r   c                 ó   — || _         y r(   )r   )r   Údevice_workers     r   Ú_set_device_workerzTrainerDesc._set_device_workerk   s
   € Ø+ˆÕr   c                 ó   — || _         y r(   )r   )r   Úinfers     r   Ú
_set_inferzTrainerDesc._set_infern   s	   € Øˆ�r   c                 ób   — || _         ddlm} |j                  |«      }|| j                  _        y ©Nr   )Útext_format)r   Úgoogle.protobufrC   ÚMessageToStringr   Ú
fleet_desc)r   rF   rC   Úfleet_desc_strs       r   Ú_set_fleet_desczTrainerDesc._set_fleet_descq   s)   € Ø%ˆÔå/à$×4Ñ4°ZÓ@ˆØ%3ˆ�‰Õ"r   c                  ó   — y r(   © ©r   s    r   Ú_gen_trainer_desczTrainerDesc._gen_trainer_descy   s   € Ør   c                 ó   — || _         y r(   )r   )r   Úprograms     r   Ú_set_programzTrainerDesc._set_program|   s	   € Øˆ�r   c                 ó&   — || j                   _        y r(   )r   Ú
trainer_id)r   rQ   s     r   Ú_set_trainer_idzTrainerDesc._set_trainer_id   r:   r   c                 ó\   — |D ]'  }| j                   j                  j                  |«       Œ) y r(   )r   Útrainersr   )r   rT   Útrainer_nums      r   Ú_set_trainerszTrainerDesc._set_trainers‚   s$   € Û#ˆKØ�O‰O×$Ñ$×+Ñ+¨KÕ8ñ $r   c                 ó&   — || j                   _        y r(   )r   Úuse_cvm)r   rX   s     r   Ú_set_use_cvmzTrainerDesc._set_use_cvm†   s   € Ø")ˆ�‰Õr   c                 ó&   — || j                   _        y r(   )r   Úno_cvm)r   r[   s     r   Ú_set_no_cvmzTrainerDesc._set_no_cvm‰   s   € Ø!'ˆ�‰Õr   c                 ó&   — || j                   _        y r(   )r   Ú%scale_sparse_gradient_with_batch_size)r   r^   s     r   Ú&_set_scale_sparse_grad_with_batch_sizez2TrainerDesc._set_scale_sparse_grad_with_batch_sizeŒ   s   € ð 2ð 	�‰Õ=r   c                 ó&   — || j                   _        y r(   )r   Úscale_datanorm)r   ra   s     r   Ú_set_scale_datanormzTrainerDesc._set_scale_datanorm“   ó   € Ø)7ˆ�‰Õ&r   c                 ó&   — || j                   _        y r(   )r   Ú	dump_slot)r   re   s     r   Ú_set_dump_slotzTrainerDesc._set_dump_slot–   s   € Ø$-ˆ�‰Õ!r   c                 ó&   — || j                   _        y r(   )r   Úmpi_rank)r   rh   s     r   Ú_set_mpi_rankzTrainerDesc._set_mpi_rank™   ó   € Ø#+ˆ�‰Õ r   c                 ó&   — || j                   _        y r(   )r   Úmpi_size)r   rl   s     r   Ú_set_mpi_sizezTrainerDesc._set_mpi_sizeœ   rj   r   c                 ó\   — |D ]'  }| j                   j                  j                  |«       Œ) y r(   )r   Údump_fieldsr   )r   ro   Úfields      r   Ú_set_dump_fieldszTrainerDesc._set_dump_fieldsŸ   s$   € Û ˆEØ�O‰O×'Ñ'×.Ñ.¨uÕ5ñ !r   c                 ó&   — || j                   _        y r(   )r   Úis_dump_in_simple_mode)r   rs   s     r   Ú_set_is_dump_in_simple_modez'TrainerDesc._set_is_dump_in_simple_mode£   s   € Ø1Gˆ�‰Õ.r   c                 ó&   — || j                   _        y r(   )r   Údump_num_decimals)r   rv   s     r   Ú_set_dump_num_decimalsz"TrainerDesc._set_dump_num_decimals¦   s   € Ø,=ˆ�‰Õ)r   c                 ó&   — || j                   _        y r(   )r   Údump_fields_path)r   r   s     r   Ú_set_dump_fields_pathz!TrainerDesc._set_dump_fields_path©   ó   € Ø+/ˆ�‰Õ(r   c                 ó&   — || j                   _        y r(   )r   Údump_file_num)r   r}   s     r   Ú_set_dump_file_numzTrainerDesc._set_dump_file_num¬   ó   € Ø(5ˆ�‰Õ%r   c                 ó&   — || j                   _        y r(   )r   Úuser_define_dump_filename)r   r�   s     r   Ú_set_user_define_dump_filenamez*TrainerDesc._set_user_define_dump_filename¯   s   € Ø4Mˆ�‰Õ1r   c                 ó&   — || j                   _        y r(   )r   Údump_converter)r   Ú	converters     r   Ú_set_dump_converterzTrainerDesc._set_dump_converter²   s   € Ø)2ˆ�‰Õ&r   c                 ó&   — || j                   _        y r(   )r   Úenable_random_dump)r   rˆ   s     r   Ú_set_enable_random_dumpz#TrainerDesc._set_enable_random_dumpµ   ó   € Ø-?ˆ�‰Õ*r   c                 ó&   — || j                   _        y r(   )r   Údump_interval)r   rŒ   s     r   Ú_set_dump_intervalzTrainerDesc._set_dump_interval¸   r   r   c                 ó&   — || j                   _        y r(   )r   Úrandom_with_lineid)r   r�   s     r   Ú_set_random_with_lineidz#TrainerDesc._set_random_with_lineid»   rŠ   r   c                 ó\   — |D ]'  }| j                   j                  j                  |«       Œ) y r(   )r   Ú
dump_paramr   )r   r’   Úparams      r   Ú_set_dump_paramzTrainerDesc._set_dump_param¾   s$   € ÛˆEØ�O‰O×&Ñ&×-Ñ-¨eÕ4ñ  r   c                 ó&   — || j                   _        y r(   )r   Údump_fields_mode)r   Úmodes     r   Ú_set_dump_fields_modez!TrainerDesc._set_dump_fields_modeÂ   r{   r   c                 ó\   — |D ]'  }| j                   j                  j                  |«       Œ) y r(   )r   Úworker_placesr   )r   rš   Úplaces      r   Ú_set_worker_placeszTrainerDesc._set_worker_placesÅ   s$   € Û"ˆEØ�O‰O×)Ñ)×0Ñ0°Õ7ñ #r   c                 ó&   — || j                   _        y r(   )r   Ú
use_ps_gpu)r   rž   s     r   Ú_set_use_ps_gpuzTrainerDesc._set_use_ps_gpuÉ   r:   r   c                 ó&   — || j                   _        y r(   )r   Úthread_barrier)r   r¡   s     r   Ú_set_thread_barrierzTrainerDesc._set_thread_barrierÌ   rc   r   c                 ó\   — |D ]'  }| j                   j                  j                  |«       Œ) y r(   )r   Úcheck_nan_var_namesr   )r   r¤   Úvars      r   Ú_set_check_nan_var_namesz$TrainerDesc._set_check_nan_var_namesÏ   s$   € Û&ˆCØ�O‰O×/Ñ/×6Ñ6°sÕ;ñ 'r   c                 ó\   — |D ]'  }| j                   j                  j                  |«       Œ) y r(   )r   Ú
loss_namesr   )r   r¨   Úlosss      r   Ú_set_loss_nameszTrainerDesc._set_loss_namesÓ   s$   € ÛˆDØ�O‰O×&Ñ&×-Ñ-¨dÕ3ñ r   c                 ó²  — |j                  dd«      | j                  j                  _        |j                  dd«      | j                  j                  _        |j                  dd«      | j                  j                  _        |j                  dd«      | j                  j                  _        |j                  dd«      | j                  j                  _        y )	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_weightz"TrainerDesc._set_adjust_ins_weight×   s¯   € Ø?J¿¹Ø˜5ó@
ˆ�‰×0Ñ0Ô<ð =H¿O¹OØ˜ó=
ˆ�‰×0Ñ0Ô9ð �O‰OÐ0°#Ó6ð 	�‰×0Ñ0ÔCð �O‰OÐ,¨cÓ2ð 	�‰×0Ñ0Ô?ð �O‰OÐ-¨rÓ2ð 	�‰×0Ñ0Õ@r   c                 óø  — | j                   j                  }|j                  dd«      |_        |j                  dd«      |_        |j                  dg «      }t        |t        «      s|g}|j                  dg «      }t        |t        «      s|g}t        |«      t        |«      k7  r#t        dt        |«      › dt        |«      › �«      ‚|D ]  }|j                  j                  |«       Œ |D ]  }|j                  j                  |«       Œ |j                  d	g «      }t        |t        «      s|g}|j                  d
g «      }t        |t        «      s|g}t        |«      t        |«      k7  r#t        dt        |«      › dt        |«      › �«      ‚|D ]  }|j                  j                  |«       Œ |D ]  }|j                  j                  |«       Œ |j                  dg «      }t        |t        «      s|g}|j                  dg «      }	t        |	t        «      s|	g}	t        |«      t        |	«      k7  r#t        dt        |«      › dt        |	«      › �«      ‚|D ]  }|j                  j                  |«       Œ |	D ]  }|j                  j                  |«       Œ |j                  di «      }
|
D ]‚  }|j                   j#                  «       }||_        |
|   }t        |t        «      s|g}t        |«      dk7  rt        dt        |«      z  «      ‚|D ]  }|j&                  j                  |«       Œ Œ„ |j                  dd«      |_        |j                  dd«      |_        |j                  dd«      |_        y )NÚ	need_copyFÚ	batch_numéd   Ú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 %s != 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_denpendency_mapÚaddÚkeyÚvaluesrÁ   rÂ   rÃ   )r   r´   Úconfigrº   r»   r%   r¼   r½   r¾   r¿   rÀ   rÊ   ÚmrË   Úvalues                  r   Ú_set_copy_table_configz"TrainerDesc._set_copy_table_configè   sm  € Ø—‘×2Ñ2ˆØ&Ÿ?™?¨;¸Ó>ˆÔØ&Ÿ?™?¨;¸Ó<ˆÔà'ŸO™OÐ,?ÀÓDÐÜÐ+¬TÔ2Ø!2Ð 3ÐØ(Ÿ_™_Ð-AÀ2ÓFÐÜÐ,¬dÔ3Ø"4Ð!5ÐÜÐ Ó!¤SÐ);Ó%<Ò<ÜðÜÐ)Ó*Ð+¨4´Ð4FÓ0GÐ/HðJóð ó #ˆAØ×$Ñ$×+Ñ+¨AÕ.ð #ã#ˆAØ×%Ñ%×,Ñ,¨QÕ/ð $ð 'Ÿ?™?Ð+=¸rÓBÐÜÐ*¬DÔ1Ø 0Ð1ÐØ'ŸO™OÐ,?ÀÓDÐÜÐ+¬TÔ2Ø!2Ð 3ÐÜÐÓ ¤CÐ(9Ó$:Ò:ÜðÜÐ(Ó)Ð*¨$¬sÐ3DÓ/EÐ.FðHóð ó "ˆAØ×#Ñ#×*Ñ*¨1Õ-ð "ã"ˆAØ×$Ñ$×+Ñ+¨AÕ.ð #ð
 #—‘ ~°rÓ:ˆÜ˜,¬Ô-Ø(˜>ˆLØ#Ÿ™¨¸Ó<ˆÜ˜-¬Ô.Ø*˜OˆMÜˆ|Ó¤ MÓ 2Ò2ÜØ;¼CÀÓ<MÐ;Nð OÜ˜Ó&Ð'ð)óð ó ˆAØ×Ñ×&Ñ& qÕ)ð ãˆAØ× Ñ ×'Ñ'¨Õ*ð ð %Ÿ™Ð)9¸2Ó>ˆÛ!ˆCØ×,Ñ,×0Ñ0Ó2ˆAØˆAŒEØ# CÑ(ˆFÜ˜f¤dÔ+Ø ˜�Ü�6‹{˜aÒÜ Ð!9¼CÀ»KÑ!GÓHÐHÛ�Ø—‘—‘ Õ&ñ  ð "ð (3§¡Ø# Tó(
ˆÔ$ð $/§?¡?Ð3FÈÓ#NˆÔ Ø(3¯©Ø$ dó)
ˆÕ%r   c                 ó6   — | j                   j                  «       S r(   )r   ÚSerializeToStringrK   s    r   Ú_desczTrainerDesc._desc2  s   € Ø�‰×0Ñ0Ó2Ð2r   c                 óD   — ddl m} |j                  | j                  «      S rB   )rD   rC   rE   r   )r   rC   s     r   Ú__str__zTrainerDesc.__str__5  s   € Ý/à×*Ñ*¨4¯?©?Ó;Ð;r   N)F)T)éÿÿÿÿ),Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r&   r4   r7   r9   r=   r@   rH   rL   rO   rR   rV   rY   r\   r_   rb   rf   ri   rm   rq   rt   rw   rz   r~   r‚   r†   r‰   r�   r�   r”   r˜   rœ   rŸ   r¢   r¦   rª   rµ   rÏ   rÒ   rÔ   rJ   r   r   r   r      sÜ   „ ñò
ò44òJAò&ò0ò,òò4òò ò0ò9ó*ó(ð 59ó
ó8ò.ò,ò,ò6òHò>ò0ò6òNò3ò@ò6ò@ò5ò0ò8ó0ò8ò<ò4ò
ò"H
òT3ó<r   r   c                   ó6   ‡ — e Zd ZdZˆ fd„Zˆ fd„Zˆ fd„Zˆ xZS )ÚMultiTrainerzF
    Implement of MultiTrainer.
    Can be init from TrainerDesc.
    c                 ó"   •— t         ‰| �  «        y r(   ©Úsuperr   ©r   Ú	__class__s    €r   r   zMultiTrainer.__init__A  ó   ø€ Ü‰ÑÔØr   c                 ó2   •— t         ‰| �  |«       || _        y r(   ©rÞ   rO   r   ©r   rN   rà   s     €r   rO   zMultiTrainer._set_programE  ó   ø€ Ü‰Ñ˜WÔ%Øˆ�r   c                 ó"  •— t         ‰| �  «        d| j                  _        | j                  j                  | j                  «       | j                  j                  | j                  «       | j                  j                  | j                  «       y )NrÛ   )
rÞ   rL   r   Ú
class_namer   r@   r   rO   r   Ú_gen_worker_descrß   s    €r   rL   zMultiTrainer._gen_trainer_descI  sb   ø€ Ü‰Ñ!Ô#Ø%3ˆ�‰Ô"Ø×Ñ×&Ñ& t§{¡{Ô3Ø×Ñ×(Ñ(¨¯©Ô7Ø×Ñ×,Ñ,¨T¯_©_Õ=r   ©rÖ   r×   rØ   rÙ   r   rO   rL   Ú__classcell__©rà   s   @r   rÛ   rÛ   ;  s   ø„ ñô
ô ÷>ð >r   rÛ   c                   ó6   ‡ — e Zd ZdZˆ fd„Zˆ fd„Zˆ fd„Zˆ xZS )ÚDistMultiTrainerzK
    Implement of DistMultiTrainer.
    It's for Distributed training.
    c                 ó"   •— t         ‰| �  «        y r(   rÝ   rß   s    €r   r   zDistMultiTrainer.__init__W  rá   r   c                 ó2   •— t         ‰| �  |«       || _        y r(   rã   rä   s     €r   rO   zDistMultiTrainer._set_program[  rå   r   c                 óP  •— t         ‰| �  «        d| j                  _        | j                  €t        d«      ‚| j                  j                  | j                  «       | j                  j                  | j                  «       | j                  j                  | j                  «       y )Nrí   úNone Program©rÞ   rL   r   rç   r   ÚRuntimeErrorr   r@   r   rO   rè   rß   s    €r   rL   z"DistMultiTrainer._gen_trainer_desc_  sw   ø€ Ü‰Ñ!Ô#Ø%7ˆ�‰Ô"Ø�=‰=Ð Ü˜~Ó.Ð.Ø×Ñ×&Ñ& t§{¡{Ô3Ø×Ñ×(Ñ(¨¯©Ô7Ø×Ñ×,Ñ,¨T¯_©_Õ=r   ré   rë   s   @r   rí   rí   Q  ó   ø„ ñô
ô ÷>ð >r   rí   c                   ó6   ‡ — e Zd ZdZˆ fd„Zˆ fd„Zˆ fd„Zˆ xZS )ÚHeterXpuTrainerzJ
    Implement of HeterXpuTrainer.
    It's for Distributed training.
    c                 ó"   •— t         ‰| �  «        y r(   rÝ   rß   s    €r   r   zHeterXpuTrainer.__init__o  rá   r   c                 ó2   •— t         ‰| �  |«       || _        y r(   rã   rä   s     €r   rO   zHeterXpuTrainer._set_programs  rå   r   c                 óP  •— t         ‰| �  «        d| j                  _        | j                  €t        d«      ‚| j                  j                  | j                  «       | j                  j                  | j                  «       | j                  j                  | j                  «       y )Nrö   rñ   rò   rß   s    €r   rL   z!HeterXpuTrainer._gen_trainer_descw  ów   ø€ Ü‰Ñ!Ô#Ø%6ˆ�‰Ô"Ø�=‰=Ð Ü˜~Ó.Ð.Ø×Ñ×&Ñ& t§{¡{Ô3Ø×Ñ×(Ñ(¨¯©Ô7Ø×Ñ×,Ñ,¨T¯_©_Õ=r   ré   rë   s   @r   rö   rö   i  rô   r   rö   c                   ó6   ‡ — e Zd ZdZˆ fd„Zˆ fd„Zˆ fd„Zˆ xZS )ÚPSGPUTrainerzG
    Implement of PSGPUTrainer.
    It's for Distributed training.
    c                 ó"   •— t         ‰| �  «        y r(   rÝ   rß   s    €r   r   zPSGPUTrainer.__init__‡  rá   r   c                 ó2   •— t         ‰| �  |«       || _        y r(   rã   rä   s     €r   rO   zPSGPUTrainer._set_program‹  rå   r   c                 óP  •— t         ‰| �  «        d| j                  _        | j                  €t        d«      ‚| j                  j                  | j                  «       | j                  j                  | j                  «       | j                  j                  | j                  «       y )Nrü   rñ   rò   rß   s    €r   rL   zPSGPUTrainer._gen_trainer_desc�  sw   ø€ Ü‰Ñ!Ô#Ø%3ˆ�‰Ô"Ø�=‰=Ð Ü˜~Ó.Ð.Ø×Ñ×&Ñ& t§{¡{Ô3Ø×Ñ×(Ñ(¨¯©Ô7Ø×Ñ×,Ñ,¨T¯_©_Õ=r   ré   rë   s   @r   rü   rü   �  rô   r   rü   c                   ó6   ‡ — e Zd ZdZˆ fd„Zˆ fd„Zˆ fd„Zˆ xZS )ÚHeterPipelineTrainerzT
    Implement of HeterPipelineTrainer.
    It's for HeterPS Pipeline training.
    c                 ó"   •— t         ‰| �  «        y r(   rÝ   rß   s    €r   r   zHeterPipelineTrainer.__init__Ÿ  rá   r   c                 ó2   •— t         ‰| �  |«       || _        y r(   rã   rä   s     €r   rO   z!HeterPipelineTrainer._set_program£  rå   r   c                 óP  •— t         ‰| �  «        d| j                  _        | j                  €t        d«      ‚| j                  j                  | j                  «       | j                  j                  | j                  «       | j                  j                  | j                  «       y )Nr  rñ   rò   rß   s    €r   rL   z&HeterPipelineTrainer._gen_trainer_desc§  sw   ø€ Ü‰Ñ!Ô#Ø%;ˆ�‰Ô"Ø�=‰=Ð Ü˜~Ó.Ð.Ø×Ñ×&Ñ& t§{¡{Ô3Ø×Ñ×(Ñ(¨¯©Ô7Ø×Ñ×,Ñ,¨T¯_©_Õ=r   ré   rë   s   @r   r  r  ™  rô   r   r  c                   ó6   ‡ — e Zd ZdZˆ fd„Zˆ fd„Zˆ fd„Zˆ xZS )ÚPipelineTrainerz>
    Implement of PipelineTrainer.
    It's for Pipeline.
    c                 ó"   •— t         ‰| �  «        y r(   rÝ   rß   s    €r   r   zPipelineTrainer.__init__·  rá   r   c                 ó2   •— t         ‰| �  |«       || _        y r(   rã   rä   s     €r   rO   zPipelineTrainer._set_program»  rå   r   c                 óP  •— t         ‰| �  «        d| j                  _        | j                  €t        d«      ‚| j                  j                  | j                  «       | j                  j                  | j                  «       | j                  j                  | j                  «       y )Nr  rñ   rò   rß   s    €r   rL   z!PipelineTrainer._gen_trainer_desc¿  rú   r   ré   rë   s   @r   r  r  ±  rô   r   r  )rÙ   r   r   Ú__all__r   rÛ   rí   rö   rü   r  r  rJ   r   r   Ú<module>r     sj   ðñ ã 	Û 
à
€÷b<ñ b<ôJ	>�;ô >ô,>�{ô >ô0>�kô >ô0>�;ô >ô0>˜;ô >ô0>�kõ >r   