+
     °³jÅ  ã                   ó<  € ^ RI t ^ RIt^ RIt^ RIHt ^ RIHt ^ RIt^ RIH	u H
t ^ RIHtHtHt ^RIHt ^RIHt ^RIHt ^RIHtHt ]! 4       '       d¯   ^ R	IHtHt ^ R
IHt ^ RIHt ^ RI H!t! ^ RI"H#t# ^ RI$H%t% ^ RI&H't'H(t( ^ RI)H*t* ^ RI+H,t, ^ RI-H.t. ^ RI/H0t0H1t1 ^ RI2H3t3 ^ RI4H5t5H6t6H7t7H8t8 ^ RI9H:t:H;t;H<t<H=t=H>t> ^ RI?H@t@HAtAHBtB ^ RICHDtD ^ RIEHFtF ^ RIGHHtHHItIHJtJHKtKHLtLHMtM ^ RINHOtO ^ RIPHQtQHRtRHStSHTtTHUtUHVtV ^ RIWHXtXHYtYHZtZ R:R lt[R t\ ! R  R!4      t]R" t^R# t_ ! R$ R%]4      t`R& ta ! R' R(4      tb ! R) R*]4      tcR+ td ! R, R-]4      te ! R. R/]e4      tf ! R0 R1]e4      tg ! R2 R3]e4      thR4 tiR;R5 ltj ! R6 R7]P                  PÖ                  4      tlR8 tmR9 tnR# )<é    N)ÚABC)Úpartial)ÚBCEWithLogitsLossÚCrossEntropyLossÚMSELoss)ÚAcceleratedOptimizer)ÚAcceleratedScheduler)Úis_megatron_lm_available)Úrecursively_applyÚsend_to_device)ÚmpuÚtensor_parallel)ÚDistributedDataParallel)Úfinalize_model_grads)Ú	ModelType)Úget_num_microbatches)Úget_megatron_optimizer)Úget_tensor_model_parallel_groupÚ"get_tensor_model_parallel_src_rank)Úget_forward_backward_func)Úget_model_config)Úbuild_train_valid_test_datasets)Ú	BertModelÚT5Model)ÚClassification)Úget_argsÚget_tensorboard_writerÚget_tokenizerÚprint_rank_last)Ú_add_data_argsÚ_add_validation_argsÚ!core_transformer_config_from_argsÚ
parse_argsÚvalidate_args)Úload_args_from_checkpointÚload_checkpointÚsave_checkpoint)Úset_global_variables)Úgpt_builder)Ú_compile_dependenciesÚ_init_autoresumeÚ_initialize_distributedÚ_set_random_seedÚset_jit_fusion_optionsÚwrite_args_to_tensorboard)Ú_vocab_size_with_padding)Ú%build_train_valid_test_data_iteratorsÚget_optimizer_param_schedulerÚnum_floating_point_operationsÚsetup_model_and_optimizerÚ
train_stepÚtraining_log)Ú)average_losses_across_data_parallel_groupÚcalc_params_l2_normÚget_ltor_masks_and_position_idsc           
     óz  € \        4       pVP                  '       d   RMRpVP                  ^ 8X  d(   \        RVP                   RV R24       \        R4       \        V4      pVP                  R8X  dc   VP                  '       d4   VP                  '       d   ^M^ p\        VVVP                  RV VR	7      pV# \        VVP                  ^V VR
7      p V# VP                  R8X  d   RVn
        \        W@VRRR7      pV# VP                  R8X  d   \        V^ RV VVVR7      pV# \        RVP                   24      h)zBuild the model.zpre-trainingzfine-tuningz	Building z model in the z mode.z»The Megatron LM model weights are initialized at random in `accelerator.prepare`. Please use `accelerator.load_checkpoint` to load a pre-trained checkpoint matching the distributed setup.ÚbertT)ÚconfigÚnum_tokentypesÚadd_binary_headÚparallel_outputÚpre_processÚpost_process)r<   Únum_classesr=   r@   rA   ÚgptFN)Úvp_stager<   Út5)r<   r=   r?   r@   rA   Úadd_encoderÚadd_decoderúUnsupported model type: )r   Úpretraining_flagÚrankÚprintÚmodel_type_namer"   Úbert_binary_headr   r   Ú
num_labelsÚuse_legacy_modelsr)   r   Ú
ValueError)	r@   rA   rF   rG   ÚargsÚmoder<   r=   Úmodels	   &&&&     Ú]/home/luca/screen-checking/.venv/lib/python3.14/site-packages/accelerate/utils/megatron_lm.pyÚmodel_provider_funcrU   U   s\  € ä‹:€DØ!×2×2Ð2‰>¸€DØ‡y�y�A„~Ü�	˜$×.Ñ.Ð/¨~¸d¸VÀ6ÐJÔKÜðxô	
ô /¨tÓ4€FØ×Ñ˜vÔ%Ø× × Ð Ø"&×"7×"7Ð"7™Q¸QˆNÜØØ-Ø $× 5Ñ 5Ø $Ø'Ø)ôˆEð@ €Lô/ #ØØ ŸO™OØ Ø'Ø)ô‰Eð. €Lð! 
×	Ñ	 Ô	&à!&ˆÔÜ˜D¨|ÀdÐSWÔXˆð €Lð 
×	Ñ	 Ô	%ÜØØØ Ø#Ø%Ø#Ø#ô
ˆð €Lô Ð3°D×4HÑ4HÐ3IÐJÓKÐKó    c                 óÊ  € V P                  R 4       \        4       pV P                  P                  P                  eŒ   V P                  P                  P
                  f   \        R4      hV P                  P                  P
                  pV P                  P                  P	                  V4      p\        W4      p\        WRR7      pMˆ\        P                  pVP                  R8X  d   \        P                  p\        pV P                  P                  P
                  e!   V P                  P                  P
                  p\        VV4      w  r4p\        V4      Vn        W4V3# )z#Preparing model optimizer schedulerNzaYou must provide a `custom_model_provider_function` when using a `custom_prepare_model_function`.)Ú	schedulerrE   )rK   r   ÚstateÚmegatron_lm_pluginÚcustom_prepare_model_functionÚcustom_model_provider_functionrP   Úprepare_optimizerÚprepare_schedulerr   Úencoder_or_decoderrL   Úencoder_and_decoderrU   r4   ÚlenÚ	model_len)ÚacceleratorrQ   Úcustom_model_provider_funcrS   Ú	optimizerrX   Ú
model_typeÚmodel_provider_func_s   &       rT   Ú!prepare_model_optimizer_schedulerrh   †   s,  € Ø×ÑÐ;Ô<Ü‹:€DØ×Ñ×+Ñ+×IÑIÒUØ×Ñ×/Ñ/×NÑNÒVÜØsóð ð &1×%6Ñ%6×%IÑ%I×%hÑ%hÐ"Ø×!Ñ!×4Ñ4×RÑRÐSmÓnˆÜ% kÓ9ˆ	Ü% kÈÔM‰	ä×1Ñ1ˆ
Ø×Ñ 4Ô'Ü"×6Ñ6ˆJÜ2ÐØ×Ñ×/Ñ/×NÑNÒZØ#.×#4Ñ#4×#GÑ#G×#fÑ#fÐ Ü(AØ Øó)
Ñ%ˆ˜9ô ˜“Z€D„NØ˜YÐ&Ð&rV   c                   ó<   a € ] tR t^¢t o RtR tR tR tR tRt	V t
R# )ÚMegatronLMDummyDataLoaderzª
Dummy dataloader presents model parameters or param groups, this is primarily used to follow conventional training

Args:
    **dataset_kwargs: Megatron data arguments.
c                óþ   € \         P                  ! 4       p\        V4      p\        V4      pVP	                  4       p\        V^ ,          4      V n        V P                  P                  V4       RV P                  R&   R# )r   TÚmegatron_dataset_flagN)ÚargparseÚArgumentParserr    r!   Úparse_known_argsÚvarsÚdataset_argsÚupdate)ÚselfÚdataset_kwargsÚparserÚ	data_argss   &,  rT   Ú__init__Ú"MegatronLMDummyDataLoader.__init__ª   sh   € Ü×(Ò(Ó*ˆÜ Ó'ˆÜ% fÓ-ˆØ×+Ñ+Ó-ˆ	Ü  ¨1¥Ó.ˆÔØ×Ñ× Ñ  Ô0Ø59ˆ×ÑÐ1Ó2rV   c                óÊ   € \        4       pV P                  P                  4        F:  w  r#\        WR 4      pWC8w  d   \	        RV RV RV RV 24       \        WV4       K<  	  R# )Ú z<WARNING: MegatronLMDummyDataLoader overriding arguments for Ú:ú with N)r   rq   ÚitemsÚgetattrrK   Úsetattr)rs   rQ   ÚkeyÚvalueÚ	old_values   &    rT   Úset_megatron_data_argsÚ0MegatronLMDummyDataLoader.set_megatron_data_args³   sq   € Ü‹zˆØ×+Ñ+×1Ñ1Ö3‰JˆCÜ ¨2Ó.ˆIØÔ!ÜØRÐSVÐRWÐWXÐYbÐXcÐciÐjmÐinÐnoÐpuÐovÐwôô �D˜uÖ%ó 4rV   c                óŒ  € R  pVP                   P                  P                  e!   VP                   P                  P                  #  \        4       pVP                  R8X  d   ^ RIHp RVn        V# VP                  R8X  d   ^ RIHp RVn        V# VP                  R8X  d   ^ RI	Hp RVn        V#  V#   \         d     T# i ; i)c                ón  € \        4       pR\        VP                  \        \        34      '       d   VP                  MVP                  .RVP
                  RV RVP                  /pVP                  R8X  d+   VP                  RVP                  RVP                  /4       M„VP                  R8X  d   VP                  RVP                  /4       MUVP                  R	8X  d-   VP                  RVP                  R
VP                  RR	/4       M\        RVP                   24      h\        R/ VB w  r4pW4V3# )z&Build train, valid, and test datasets.Údata_prefixÚsplits_stringÚtrain_valid_test_num_samplesÚseedr;   Úmax_seq_lengthÚbinary_headrC   rE   Úmax_seq_length_decÚdataset_typerH   © )r   Ú
isinstanceÚ	data_pathÚlistÚtupleÚsplitrŠ   rL   rr   Ú
seq_lengthrM   Úencoder_seq_lengthÚdecoder_seq_lengthrP   r   )Útrain_val_test_num_samplesrQ   rq   Útrain_dsÚvalid_dsÚtest_dss   &     rT   Ú"train_valid_test_datasets_providerÚlMegatronLMDummyDataLoader.get_train_valid_test_datasets_provider.<locals>.train_valid_test_datasets_provider¾   s,  € ä“:ˆDà´¸D¿N¹NÌTÔSXÈM×1ZÒ1Z˜tŸ~š~Ðae×aoÑaoÐ`pØ §¡Ø.Ð0JØ˜Ÿ	™	ð	ˆLð ×#Ñ# vÔ-Ø×#Ñ#à(¨$¯/©/Ø% t×'<Ñ'<ðõð ×%Ñ%¨Ô.Ø×#Ñ#à(¨$¯/©/ðõð
 ×%Ñ%¨Ô-Ø×#Ñ#à(¨$×*AÑ*AØ,¨d×.EÑ.EØ&¨ðõô !Ð#;¸D×<PÑ<PÐ;QÐ!RÓSÐSÜ*IÑ*YÈLÑ*YÑ'ˆH Ø wÐ.Ð.rV   r;   )rœ   TrC   rE   )rY   rZ   Ú*custom_megatron_datasets_provider_functionr   rL   Úpretrain_bertrœ   Úis_distributedÚpretrain_gptÚpretrain_t5ÚImportError)rs   rc   rœ   rQ   s   &&  rT   Ú&get_train_valid_test_datasets_providerÚ@MegatronLMDummyDataLoader.get_train_valid_test_datasets_provider½   sÍ   € ò!	/ðF ×Ñ×/Ñ/×ZÑZÒfØ×$Ñ$×7Ñ7×bÑbÐbð	Ü“:ˆDà×#Ñ# vÔ-ÝLàDHÐ2ÔAØ9Ð9Ø×%Ñ%¨Ô.ÝKàDHÐ2ÔAØ9Ð9Ø×%Ñ%¨Ô-ÝJàDHÐ2ÔAØ9Ð9ð	 .ð 2Ð1øô ô 	ØØ1Ð1ð	ús   Á)B4 Á1B4 ÂB4 Â4CÃCc                ó’  € \        4       pV P                  V4      pVP                  eŽ   . p. p. p\        \	        VR^ 4      4       Fl  p\
        P                  ! V4       \        V4      pVP                  V^ ,          4       VP                  V^,          4       VP                  V^,          4       Kn  	  M\        V4      w  rEpWEV3# )Nrb   )	r   r¤   Ú$virtual_pipeline_model_parallel_sizeÚranger~   r   Ú(set_virtual_pipeline_model_parallel_rankr1   Úappend)	rs   rc   rQ   Ú!train_valid_test_dataset_providerÚtrain_data_iteratorÚvalid_data_iteratorÚtest_data_iteratorÚiÚ	iteratorss	   &&       rT   r1   Ú?MegatronLMDummyDataLoader.build_train_valid_test_data_iteratorsù   sÇ   € Ü‹zˆà,0×,WÑ,WÐXcÓ,dÐ)Ø×4Ñ4Ò@Ø"$ÐØ"$ÐØ!#ÐÜœ7 4¨°aÓ8Ö9�Ü×<Ò<¸QÔ?ÜAÐBcÓd�	Ø#×*Ñ*¨9°Q­<Ô8Ø#×*Ñ*¨9°Q­<Ô8Ø"×)Ñ)¨)°A­,Ö7ò :ô LqØ1óLÑHÐÐ6Hð #Ð9KÐKÐKrV   )rq   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rw   rƒ   r¤   r1   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @rT   rj   rj   ¢   s&   ø‡ € ñò:ò&ò:2÷xLð LrV   rj   c                 ó  €  ! R  R4      pVRJ p\         P                  ! V\         P                  V P                  R7      p\         P                  P                  V\        4       \        4       R7       V'       g   V'       d   V! 4       # V# )c                   ó,   a € ] tR tRt o R tR tRtV tR# )Ú?_handle_megatron_data_iterator.<locals>.DummyMegatronDataloaderi  c                ó   € V # ©Nr�   ©rs   s   &rT   Ú__iter__ÚH_handle_megatron_data_iterator.<locals>.DummyMegatronDataloader.__iter__  s   € ØˆKrV   c                ó   € / # r¿   r�   rÀ   s   &rT   Ú__next__ÚH_handle_megatron_data_iterator.<locals>.DummyMegatronDataloader.__next__  s   € ØˆIrV   r�   N)r²   r³   r´   rµ   rÁ   rÄ   r·   r¸   r¹   s   @rT   ÚDummyMegatronDataloaderr½     s   ø‡ € ò	÷	ð 	rV   rÆ   N©ÚdtypeÚdevice©Úgroup)ÚtorchÚtensorÚboolrÉ   ÚdistributedÚ	broadcastr   r   )rc   Údata_iteratorrÆ   Úis_data_iterator_emptyÚis_src_data_iterator_emptys   &&   rT   Ú_handle_megatron_data_iteratorrÔ     sw   € ÷ñ ð +¨dÐ2ÐÜ!&§¢Ð.DÌEÏJÉJÐ_j×_qÑ_qÔ!rÐÜ	×Ñ×ÑØ"Ô$FÓ$HÔPoÓPqð  ô ÷ &×*@Ù&Ó(Ð(ØÐrV   c                 ó�  € V P                  R 4       \        4       pVP                  '       EgP   ^RIHpHp VP                  VP                  ,          pV Uu/ uF  qf\        WW6,          4      bK  	  ppVR,          fa   \        VR,          \        P                  P                  P                  4      '       d   WWR,          n        MVR VR VR WWR,          n        MVR WWR&   \        P                  P                  P                  ! VP                   3/ VB pV! VV P"                  \$        P&                  ! 4       \$        P(                  ! 4       RRV P*                  P-                  4       V P.                  R7      # VP0                  e!   VP0                  w  Vn        Vn        Vn        M^ ^ ^ uVn        Vn        Vn        VP                  VP                  ,          Vn        VP9                  V 4      w  pp	p
VP                  VP                  ,          Vn        \;        WR	7      p\;        W	R	7      p	\;        W
R	7      p
W‰V
3# u upi )
zPreparing dataloader)Ú_PYTORCH_DATALOADER_KWARGSÚprepare_data_loaderÚ
batch_sizeÚsamplerÚshuffleÚbatch_samplerFT)Únum_processesÚprocess_indexÚsplit_batchesÚput_on_deviceÚ	rng_typesÚdispatch_batches)rc   rÑ   )rK   r   rl   Údata_loaderrÖ   r×   Úmicro_batch_sizeÚnum_micro_batchesr~   r�   rÌ   ÚutilsÚdataÚBatchSamplerrØ   Ú
DataLoaderÚdatasetrÉ   r   Úget_data_parallel_world_sizeÚget_data_parallel_rankrà   Úcopyrá   Úconsumed_samplesÚconsumed_train_samplesÚconsumed_valid_samplesÚconsumed_test_samplesr1   rÔ   )rc   Ú
dataloaderrQ   rÖ   r×   rã   ÚkÚkwargsr¬   r­   r®   s   &&         rT   r×   r×   !  s#  € Ø×ÑÐ,Ô-Ü‹:€DØ×%×%Ñ%ßQà×0Ñ0°4×3IÑ3IÕIÐÙTnÓoÑTnÈq”W˜ZÐ,FÕ,IÓJÒJÑTnˆÐoØ�,ÕÒ'Ü˜& Õ+¬U¯[©[×-=Ñ-=×-JÑ-J×KÒKØ/?�yÕ!Õ,à˜9Ð%Ø˜9Ð%Ø˜<Ð(Ø5E�Õ'Õ2à�Ð'Ø#3�<Ñ ä—[‘[×%Ñ%×0Ò0°×1CÑ1CÑNÀvÑNˆ
ñ #ØØ×ÑÜ×:Ò:Ó<Ü×4Ò4Ó6ØØØ!×+Ñ+×0Ñ0Ó2Ø(×9Ñ9ô	
ð 		
ð × Ñ Ò,ð
 ×%Ñ%ñ	ØÔ+ØÔ+ØÕ*ð deÐfgÐijÐ`ˆDÔ'¨Ô)DÀdÔF`Ø $× 5Ñ 5¸×8NÑ8NÕ NˆÔð ×<Ñ<¸[ÓIñ		
ØØØà $× 5Ñ 5¸×9OÑ9OÕ OˆÔä<Ø#ô
Ðô =Ø#ô
Ðô <ÈÔvÐà"Ð9KÐKÐKùòo ps   ÁIc                   óR   a a€ ] tR tRt oV 3R ltRR ltR t]R 4       tRt	Vt
V ;t# )ÚMegatronLMOptimizerWrapperic  c                ó,   <€ \         SV `  VR RR7       R# )FN)Údevice_placementÚscaler©Úsuperrw   )rs   re   Ú	__class__s   &&€rT   rw   Ú#MegatronLMOptimizerWrapper.__init__d  s   ø€ Ü‰Ñ˜°UÀ4ÐÖHrV   c                ó   € R # r¿   r�   )rs   Úset_to_nones   &&rT   Ú	zero_gradÚ$MegatronLMOptimizerWrapper.zero_gradg  ó   € ÙrV   c                ó   € R # r¿   r�   rÀ   s   &rT   ÚstepÚMegatronLMOptimizerWrapper.stepj  r  rV   c                ó.   € V P                   P                  # )zTWhether or not the optimizer step was done, or skipped because of gradient overflow.)re   Úskipped_iterrÀ   s   &rT   Ústep_was_skippedÚ+MegatronLMOptimizerWrapper.step_was_skippedm  s   € ð �~‰~×*Ñ*Ð*rV   r�   r¿   )r²   r³   r´   rµ   rw   rÿ   r  Úpropertyr  r·   r¸   Ú__classcell__©rû   rº   s   @@rT   rõ   rõ   c  s.   ù‡ € õIôòð ñ+ó ÷+ð +rV   rõ   c                 óŽ   € V P                  R 4       \        4       p\        WP                  VP                  VP
                  4      # )zPreparing optimizer)rK   r   r   Úno_wd_decay_condÚscale_lr_condÚlr_mult)rc   rS   rQ   s   && rT   r]   r]   s  s:   € Ø×ÑÐ+Ô,Ü‹:€DÜ! %×)>Ñ)>À×@RÑ@RÐTX×T`ÑT`ÓaÐarV   c                   ó.   a € ] tR tRt o RtRR ltRtV tR# )ÚMegatronLMDummyScheduleriz  aÞ  
Dummy scheduler presents model parameters or param groups, this is primarily used to follow conventional training
loop when scheduler config is specified in the deepspeed config file.

Args:
    optimizer (`torch.optim.optimizer.Optimizer`):
        The optimizer to wrap.
    total_num_steps (int):
        Total number of steps.
    warmup_num_steps (int):
        Number of steps for warmup.
    **kwargs (additional keyword arguments, *optional*):
        Other arguments.
Nc                ó6   € Wn         W n        W0n        W@n        R # r¿   )re   Útotal_num_stepsÚwarmup_num_stepsró   )rs   re   r  r  ró   s   &&&&,rT   rw   Ú!MegatronLMDummyScheduler.__init__Š  s   € Ø"ŒØ.ÔØ 0ÔØŽrV   )ró   re   r  r  )Nr   )r²   r³   r´   rµ   r¶   rw   r·   r¸   r¹   s   @rT   r  r  z  s   ø‡ € ñ÷ò rV   r  c                   ó8   a a€ ] tR tRt oV 3R ltR tRtVtV ;t# )ÚMegatronLMSchedulerWrapperi‘  c                ó&   <€ \         SV `  W4       R # r¿   rù   )rs   rX   Ú
optimizersrû   s   &&&€rT   rw   Ú#MegatronLMSchedulerWrapper.__init__’  s   ø€ Ü‰Ñ˜Ö/rV   c                ó   € R # r¿   r�   )rs   rQ   ró   s   &*,rT   r  ÚMegatronLMSchedulerWrapper.step•  s   € ÙrV   r�   )	r²   r³   r´   rµ   rw   r  r·   r¸   r
  r  s   @@rT   r  r  ‘  s   ù‡ € õ0÷ò rV   r  c                 ó>   € V P                  R 4       \        V4      pV# )zPreparing scheduler)rK   r2   )rc   re   rX   s   &&&rT   r^   r^   ™  s!   € Ø×ÑÐ+Ô,Ü-¨iÓ8€IØÐrV   c                   óH   a a€ ] tR tRt oRtV 3R ltR tR tR tRt	Vt
V ;t# )ÚAbstractTrainStepiŸ  z;Abstract class for batching, forward pass and loss handler.c                ó0   <€ \         SV `  4        Wn        R # r¿   )rú   rw   Úname)rs   r!  rû   s   &&€rT   rw   ÚAbstractTrainStep.__init__¢  s   ø€ Ü‰ÑÔØŽ	rV   c                ó   € R # r¿   r�   )rs   rc   rl   s   &&&rT   Úget_batch_funcÚ AbstractTrainStep.get_batch_func¦  r  rV   c                ó   € R # r¿   r�   rÀ   s   &rT   Úget_forward_step_funcÚ'AbstractTrainStep.get_forward_step_func©  r  rV   c                ó   € R # r¿   r�   )rs   rc   s   &&rT   Úget_loss_funcÚAbstractTrainStep.get_loss_func¬  r  rV   )r!  )r²   r³   r´   rµ   r¶   rw   r$  r'  r*  r·   r¸   r
  r  s   @@rT   r  r  Ÿ  s!   ù‡ € ÙEõòò÷ò rV   r  c                   óH   a a€ ] tR tRt oRtV 3R ltR tR tR tRt	Vt
V ;t# )ÚBertTrainStepi°  zW
Bert train step class.

Args:
    args (`argparse.Namespace`): Megatron-LM arguments.
c                ó`  <€ \         SV `  R 4       V P                  WP                  4      V n        V P                  WP                  VP                  4      V n        V P                  VP                  VP                  4      V n        VP                  '       g
   RV n        R# ^ RIHp W0n        R# )r-  N)ÚSequenceClassifierOutput)rú   rw   r$  rl   Ú	get_batchr*  rI   rN   Ú	loss_funcr'  rM   Úforward_stepÚmodel_return_dictÚmodel_output_classÚtransformers.modeling_outputsr/  )rs   rc   rQ   r/  rû   s   &&& €rT   rw   ÚBertTrainStep.__init__¸  s‡   ø€ Ü‰Ñ˜Ô)Ø×,Ñ,¨[×:TÑ:TÓUˆŒØ×+Ñ+¨K×9NÑ9NÐPT×P_ÑP_Ó`ˆŒØ ×6Ñ6°t×7LÑ7LÈd×NcÑNcÓdˆÔØ×%×%Ð%Ø&*ˆDÖ#åNà&>Ö#rV   c                óÜ   € R  pR pVP                   P                  P                  e!   VP                   P                  P                  # V'       d
    ^ RIHp V# V#   \
         d     T# i ; i)c                óš  € . ROp\         P                  pV e   \        V 4      pMRp\        P                  ! WV4      pVR,          P                  4       pVR,          P                  4       pVR,          P                  4       pVR,          P                  4       pVR,          P                  4       p	VR,          P                  4       p
WVWxWš3# )	úBuild the batch.ÚtextÚtypesÚlabelsÚ	is_randomÚ	loss_maskÚpadding_maskN)r:  r;  r<  r=  r>  r?  ©rÌ   Úint64Únextr   Úbroadcast_dataÚlongÚfloat)rÑ   ÚkeysÚdatatyperæ   Údata_bÚtokensr;  Úsentence_orderr>  Ú	lm_labelsr?  s   &          rT   Úget_batch_megatronÚ8BertTrainStep.get_batch_func.<locals>.get_batch_megatronÅ  s»   € ò YˆDÜ—{‘{ˆHð Ò(Ü˜MÓ*‘à�Ü$×3Ò3°DÀÓIˆFð ˜F•^×(Ñ(Ó*ˆFØ˜7•O×(Ñ(Ó*ˆEØ# KÕ0×5Ñ5Ó7ˆNØ˜{Õ+×1Ñ1Ó3ˆIØ˜xÕ(×-Ñ-Ó/ˆIØ! .Õ1×6Ñ6Ó8ˆLà .¸YÐTÐTrV   c                óê  € \        V 4      p\        V\        P                  P	                  4       4      pVR,          P                  4       pVR,          P                  4       pRV9   d   VR,          P                  4       pMRpRV9   dB   VR,          P                  4       pVR,          R8g  P                  \        P                  4      pMRpRpRV9   d   VR,          P                  4       pMRpW$WvWS3# )r9  Ú	input_idsÚattention_maskÚtoken_type_idsNr<  Únext_sentence_labeléœÿÿÿ)rB  r   rÌ   ÚcudaÚcurrent_devicerD  ÚtorE  )rÑ   ræ   rI  r?  r;  rK  r>  rJ  s   &       rT   Úget_batch_transformerÚ;BertTrainStep.get_batch_func.<locals>.get_batch_transformerÝ  sÞ   € ä˜Ó&ˆDÜ! $¬¯
©
×(AÑ(AÓ(CÓDˆDð ˜+Õ&×+Ñ+Ó-ˆFØÐ 0Õ1×6Ñ6Ó8ˆLØ 4Ô'ØÐ-Õ.×3Ñ3Ó5‘à�Ø˜4ÔØ  �N×/Ñ/Ó1�	Ø! (�^¨tÑ3×7Ñ7¼¿¹ÓD‘	à �	Ø �	Ø$¨Ô,Ø!%Ð&;Õ!<×!AÑ!AÓ!C‘à!%�à .¸YÐTÐTrV   ©r0  )rY   rZ   Úcustom_get_batch_functionrŸ   r0  r£   ©rs   rc   rl   rL  rW  r0  s   &&&   rT   r$  ÚBertTrainStep.get_batch_funcÄ  ss   € ò	Uò0	Uð2 ×Ñ×/Ñ/×IÑIÒUØ×$Ñ$×7Ñ7×QÑQÐQß ðå3à Ð ð
 )Ð(øô	 ô ØØ%Ð%ðúó   ÁA ÁA+Á*A+c                ó¶   a a€ R  pVV 3R lpVP                   P                  P                  e!   VP                   P                  P                  # V'       d   V# V# )c                 ó(  € Vw  r4VP                  4       pV P                  4       p \        P                  ! VP                  R4      V P	                  R4      ,          4      V P                  4       ,          pVe�   \
        P                  ! VP                  R^4      P                  4       VP                  R4      RR7      pVP                  4       pWV,           p\        WV.4      pVRV^ ,          RV^,          /3# Tp\        V.4      pVRV^ ,          /3# )é   )Úignore_indexúlm losszsop losséÿÿÿÿ)rE  rÌ   ÚsumÚviewÚreshapeÚFÚcross_entropyr7   )	r>  rJ  Úoutput_tensorÚlm_loss_Ú
sop_logitsÚlm_lossÚsop_lossÚlossÚaveraged_lossess	   &&&      rT   Úloss_func_pretrainÚ7BertTrainStep.get_loss_func.<locals>.loss_func_pretrain  sõ   € Ø#0Ñ ˆHà—~‘~Ó'ˆHØ!Ÿ™Ó)ˆIÜ—i’i §¡¨bÓ 1°I×4EÑ4EÀbÓ4IÕ IÓJÈYÏ]É]Ë_Õ\ˆGàÒ%ÜŸ?š?¨:¯?©?¸2¸qÓ+A×+GÑ+GÓ+IÈ>×K^ÑK^Ð_aÓKbÐqsÔt�Ø#Ÿ>™>Ó+�ØÕ)�Ü"KÈWÐL_Ó"`�Ø˜i¨¸Õ);¸ZÈÐYZÕI[Ð\Ð\Ð\ð �Ü"KÈWÈIÓ"V�Ø˜i¨¸Õ);Ð<Ð<Ð<rV   c                 ó²  <€ S^8X  d3   \        4       pV! VP                  R4      V P                  R4      4      pM…SP                  ^8”  dc   V P                  \        P
                  \        P                  39   d4   \        4       pV! VP                  RS4      V P                  R4      4      pM\        4       pV! W4      p\        V.4      pVRV^ ,          /3# )r`  rn  rc  )
r   re  rN   rÈ   rÌ   rD  Úintr   r   r7   )r<  ÚlogitsÚloss_fctrn  ro  rN   rs   s   &&   €€rT   Úloss_func_finetuneÚ7BertTrainStep.get_loss_func.<locals>.loss_func_finetune  s«   ø€ Ø˜QŒä"›9�Ù §¡¨B£°·±¸R³ÓA‘Ø—‘ 1Ô$¨&¯,©,¼5¿:¹:ÄuÇyÁyÐ:QÔ*QÜ+Ó-�Ù §¡¨B°
Ó ;¸V¿[¹[È»_ÓM‘ä,Ó.�Ù Ó/�ÜGÈÈÓOˆOØ˜& /°!Õ"4Ð5Ð5Ð5rV   ©rY   rZ   Úcustom_loss_function)rs   rc   rI   rN   rp  rv  s   f&&f  rT   r*  ÚBertTrainStep.get_loss_func  sN   ù€ ò	=ö&	6ð ×Ñ×/Ñ/×DÑDÒPØ×$Ñ$×7Ñ7×LÑLÐLßØ%Ð%à%Ð%rV   c                ó   a aa€ VVV 3R  lpV# )c                óÚ   <€ SP                  V 4      w  r#rErgS
'       g   RpS'       d#   V! W'W6R7      pV\        SP                  WT4      3# V! W'VR7      p	V	\        SP                  V4      3# )úForward step.N©Útokentype_idsrK  )r  ©r0  r   r1  )rÑ   rS   rI  r;  rJ  r>  r<  r?  ri  rt  rM   rI   rs   s   &&        €€€rT   r2  Ú9BertTrainStep.get_forward_step_func.<locals>.forward_step.  sh   ø€ àMQÏ^É^Ð\iÓMjÑJˆF˜>°fß#Ø�çÙ % fÈ%Ô b�Ø$¤g¨d¯n©n¸iÓ&XÐXÐXá˜vÀ5ÔI�Øœw t§~¡~°vÓ>Ð>Ð>rV   r�   )rs   rI   rM   r2  s   fff rT   r'  Ú#BertTrainStep.get_forward_step_func-  s   ú€ ÷	?ð ÐrV   ©r2  r0  r1  r4  ©r²   r³   r´   rµ   r¶   rw   r$  r*  r'  r·   r¸   r
  r  s   @@rT   r-  r-  °  s%   ù‡ € ñõ
?ò>)ò@'&÷Rò rV   r-  c                   óH   a a€ ] tR tRt oRtV 3R ltR tR tR tRt	Vt
V ;t# )ÚGPTTrainStepi>  zV
GPT train step class.

Args:
    args (`argparse.Namespace`): Megatron-LM arguments.
c                ó  <€ \         SV `  R 4       V P                  WP                  4      V n        V P                  V4      V n        V P                  4       V n        VP                  e   \        4       pVP                  V n        VP                  V n        VP                  V n        VP                  V n        VP                   V n        VP"                  V n        VP$                  '       g
   RV n        R# ^ RIHp W@n        R# )r†  N)Ú!CausalLMOutputWithCrossAttentions)rú   rw   r$  rl   r0  r*  r1  r'  r2  Ú
vocab_filer   ÚeodÚ	eod_tokenÚeos_token_idÚ	pad_tokenÚreset_position_idsÚreset_attention_maskÚeod_mask_lossr3  r4  r5  rˆ  )rs   rc   rQ   Ú	tokenizerrˆ  rû   s   &&&  €rT   rw   ÚGPTTrainStep.__init__F  sÈ   ø€ Ü‰Ñ˜Ô(Ø×,Ñ,¨[×:TÑ:TÓUˆŒØ×+Ñ+¨KÓ8ˆŒØ ×6Ñ6Ó8ˆÔØ�?‰?Ò&Ü%›ˆIØ&Ÿ]™]ˆDŒNØ×*Ñ*ˆŒØ×*Ñ*ˆŒØ"&×"9Ñ"9ˆÔØ$(×$=Ñ$=ˆÔ!Ø!×/Ñ/ˆÔØ×%×%Ð%Ø&*ˆDÖ#åWà&GÖ#rV   c                óê   a € V 3R  lpV 3R lpVP                   P                  P                  e!   VP                   P                  P                  # V'       d
    ^ RIHp V# V#   \
         d     T# i ; i)c           
     ó¦  <€ R.p\         P                  pV e   \        V 4      pMRp\        P                  ! WV4      pVR,          P                  4       pVR,          P                  4       pVRRR13,          P                  4       p\        VSP                  SP                  SP                  SP                  SP                  RR7      w  r‰p
WvW˜V
3# )zGenerate a batchr:  NºNNNT©r‹  r�  rŽ  r�  r�  Úpad_mask_loss©r•  ºr`  NNrc  )rÌ   rA  rB  r   rC  rD  Ú
contiguousr9   r‹  rŽ  r�  r�  )rÑ   rF  rG  ræ   rH  Útokens_r<  rI  rP  r>  Úposition_idsrs   s   &          €rT   rL  Ú7GPTTrainStep.get_batch_func.<locals>.get_batch_megatron[  sÎ   ø€ ð �8ˆDÜ—{‘{ˆHð Ò(Ü˜MÓ*‘à�Ü$×3Ò3°DÀÓIˆFð ˜V•n×)Ñ)Ó+ˆGØ˜U•^×.Ñ.Ó0ˆFØ˜Q   ˜V•_×/Ñ/Ó1ˆFô 7VØØŸ.™.ØŸ.™.Ø#'×#:Ñ#:Ø%)×%>Ñ%>Ø"×0Ñ0Ø"ô7Ñ3ˆN |ð  9¸lÐJÐJrV   c           
      ó~  <€ \        V 4      pR VR ,          /p\        V\        P                  P	                  4       4      pVR ,          P                  4       p\        P                  ! VP                  ^ ,          ^3VP                  VP                  R7      S	P                  ,           p\        P                  ! W#.^R7      pVR,          P                  4       pVRRR13,          P                  4       p\        VS	P                  S	P                  S	P                  S	P                  S	P                   RR7      w  rgpWTWvV3# )	rO  rÇ   ©Údimr•  NTr–  r˜  rc  )rB  r   rÌ   rT  rU  rD  ÚzerosÚshaperÈ   rÉ   r‹  Úconcatrš  r9   rŽ  r�  r�  )
rÑ   ræ   r›  Úpaddingr<  rI  rP  r>  rœ  rs   s
   &        €rT   rW  Ú:GPTTrainStep.get_batch_func.<locals>.get_batch_transformery  s  ø€ Ü˜Ó&ˆDØ  kÕ!2Ð3ˆDÜ! $¬¯
©
×(AÑ(AÓ(CÓDˆDà˜;Õ'×,Ñ,Ó.ˆGÜ—k’k 7§=¡=°Õ#3°QÐ"7¸w¿}¹}ÐU\×UcÑUcÔdÐgk×guÑguÕuˆGÜ—l’l GÐ#5¸1Ô=ˆGØ˜U•^×.Ñ.Ó0ˆFØ˜Q   ˜V•_×/Ñ/Ó1ˆFä6UØØŸ.™.ØŸ.™.Ø#'×#:Ñ#:Ø%)×%>Ñ%>Ø"×0Ñ0Ø"ô7Ñ3ˆN |ð  9¸lÐJÐJrV   rY  )rY   rZ   rZ  r¡   r0  r£   r[  s   f&&   rT   r$  ÚGPTTrainStep.get_batch_funcZ  st   ø€ õ	Kõ<	Kð, ×Ñ×/Ñ/×IÑIÒUØ×$Ñ$×7Ñ7×QÑQÐQß ðå2à Ð ð
 )Ð(øô	 ô ØØ%Ð%ðús   ÁA# Á#A2Á1A2c                ó¬   a€ \        4       oV3R  lpVP                  P                  P                  e!   VP                  P                  P                  # V# )c                 óB  <€ SP                   '       d   Vw  r#MTpVP                  4       pV P                  R4      P                  4       p SP                  ^8”  d»   \        P
                  ! \        P                  ! VP                  R4      V ,          4      P                  ^4      V P                  4       P                  ^4      .4      p\        P                  P                  V\        P                  ! 4       R7       V^ ,          V^,          ,          pMA\        P                  ! VP                  R4      V ,          4      V P                  4       ,          pSP                  '       d{   \        P                  P                  4       pVP                  4       '       dG   Q RV R\        P                  P                  4        R\         P"                  ! 4       ^,           24       h\%        V.4      pRV^ ,          /pSP                   '       d   VP'                  RX/4       WG3# )r`  rÊ   zRank z7: found NaN in local forward loss calculation. Device: z, node: rb  rt  rc  )Úreturn_logitsrE  re  Úcontext_parallel_sizerÌ   Úcatrd  rÏ   Ú
all_reducer   Úget_context_parallel_groupÚcheck_for_nan_in_loss_and_gradÚget_rankÚisnanrT  rU  ÚosÚunamer7   rr   )	r>  ri  Úlossesrt  rn  Úglobal_rankÚaveraged_lossÚoutput_dictrQ   s	   &&      €rT   r1  Ú-GPTTrainStep.get_loss_func.<locals>.loss_func   s¦  ø€ Ø×!×!Ð!Ø!.‘�˜à&�Ø—\‘\“^ˆFØ!Ÿ™ rÓ*×0Ñ0Ó2ˆIØ×)Ñ)¨AÔ-Ü—y’y¤%§)¢)¨F¯K©K¸«O¸iÕ,GÓ"H×"MÑ"MÈaÓ"PÐR[×R_ÑR_ÓRa×RfÑRfÐghÓRiÐ!jÓk�Ü×!Ñ!×,Ñ,¨T¼×9WÒ9WÓ9YÐ,ÔZØ˜A•w  a¥Õ(‘ä—y’y §¡¨R£°9Õ!<Ó=À	ÇÁÃÕO�ð ×2×2Ð2Ü#×/Ñ/×8Ñ8Ó:�ØŸ:™:Ÿ<š<ð Ø˜K˜=ð )Ü$Ÿz™z×8Ñ8Ó:Ð;¸8ÄBÇHÂHÃJÈqÅMÀ?ðTóÐ'ô FÀtÀfÓMˆMà$ m°AÕ&6Ð7ˆKØ×!×!Ð!Ø×"Ñ" H¨fÐ#5Ô6ØÐ$Ð$rV   )r   rY   rZ   ry  )rs   rc   r1  rQ   s   && @rT   r*  ÚGPTTrainStep.get_loss_func�  sG   ø€ Ü‹zˆõ	%ð< ×Ñ×/Ñ/×DÑDÒPØ×$Ñ$×7Ñ7×LÑLÐLØÐrV   c                ó   a € V 3R  lpV# )c                ór   <€ SP                  V 4      w  r#rEpV! W&WSR7      pV\        SP                  V4      3# )r}  )r<  r€  )	rÑ   rS   rI  r<  r>  rP  rœ  ri  rs   s	   &&      €rT   r2  Ú8GPTTrainStep.get_forward_step_func.<locals>.forward_stepÃ  s?   ø€ ð GKÇnÁnÐUbÓFcÑCˆF˜I°|Ù! &¸ÔVˆMà ¤'¨$¯.©.¸)Ó"DÐDÐDrV   r�   ©rs   r2  s   f rT   r'  Ú"GPTTrainStep.get_forward_step_funcÂ  s   ø€ õ	Eð ÐrV   )	r�  r‹  r2  r0  r1  r4  r�  r�  rŽ  r„  r  s   @@rT   r†  r†  >  s'   ù‡ € ñõHò(A)òF#÷J	ò 	rV   r†  c                   óx   a a€ ] tR tRt oRtV 3R lt]R 4       t]R 4       t]R 4       t	R t
R tR	 tR
tVtV ;t# )ÚT5TrainStepiÎ  zU
T5 train step class.

Args:
    args (`argparse.Namespace`): Megatron-LM arguments.
c                ó
  <€ \         SV `  R 4       V P                  WP                  4      V n        V P                  V4      V n        V P                  4       V n        VP                  '       g
   RV n
        R# ^ RIHp W0n
        R# )r¿  N)ÚSeq2SeqLMOutput)rú   rw   r$  rl   r0  r*  r1  r'  r2  r3  r4  r5  rÁ  )rs   rc   rQ   rÁ  rû   s   &&& €rT   rw   ÚT5TrainStep.__init__Ö  sh   ø€ Ü‰Ñ˜Ô'Ø×,Ñ,¨[×:TÑ:TÓUˆŒØ×+Ñ+¨KÓ8ˆŒØ ×6Ñ6Ó8ˆÔØ×%×%Ð%Ø&*ˆDÖ#åEà&5Ö#rV   c                ód   € V P                  ^4      pV P                  ^4      pW,          pVR8  pV# )r`  ç      à?)Ú	unsqueeze)rP  Úattention_mask_b1sÚattention_mask_bs1Úattention_mask_bssÚextended_attention_masks   &    rT   Úattn_mask_postprocessÚ!T5TrainStep.attn_mask_postprocessâ  s@   € ð ,×5Ñ5°aÓ8Ðà+×5Ñ5°aÓ8Ðà/ÕDÐà"4°sÑ":ÐØ&Ð&rV   c                ól   € \         P                  ! \         P                  ! ^W 3VR7      4      pVR8  pV# ©r`  ©rÉ   rÄ  )rÌ   ÚtrilÚones)r•   rÉ   rP  s   && rT   Úget_decoder_maskÚT5TrainStep.get_decoder_maskï  s1   € äŸš¤E§J¢J°°:Ð/JÐSYÔ$ZÓ[ˆØ'¨#Ñ-ˆØÐrV   c                ó’   € V P                   w  r4V P                  ^4      p\        P                  ! W1^3VR7      pWe,          pVR8  pV# rÍ  )r¢  rÅ  rÌ   rÐ  )	rP  Údec_seq_lengthrÉ   rØ   Ú_rÆ  rÇ  rÈ  rÉ  s	   &&&      rT   Úget_enc_dec_maskÚT5TrainStep.get_enc_dec_maskõ  sS   € à&×,Ñ,‰ˆ
ð ,×5Ñ5°aÓ8Ðä"ŸZšZ¨ÀQÐ(GÐPVÔWÐØ/ÕDÐØ"4°sÑ":ÐØ&Ð&rV   c                óÜ   € R  pR pVP                   P                  P                  e!   VP                   P                  P                  # V'       d
    ^ RIHp V# V#   \
         d     T# i ; i)c                óˆ  € . R
Op\         P                  pV e   \        V 4      pMRp\        P                  ! WV4      pVR,          P                  4       pVR,          P                  4       pVR,          P                  4       pVR,          P                  4       pVR,          R	8  p	VR,          R	8  p
VR,          R	8  pWVW‡WšV3# )r9  Útext_encÚtext_decr<  r>  Úenc_maskÚdec_maskÚenc_dec_maskNrÄ  )rÚ  rÛ  r<  r>  rÜ  rÝ  rÞ  r@  )rÑ   rF  rG  ræ   rH  Ú
tokens_encÚ
tokens_decr<  r>  rÜ  rÝ  rÞ  s   &           rT   rL  Ú6T5TrainStep.get_batch_func.<locals>.get_batch_megatron  sÇ   € ò kˆDÜ—{‘{ˆHð Ò(Ü˜MÓ*‘à�Ü$×3Ò3°DÀÓIˆFð   
Õ+×0Ñ0Ó2ˆJØ 
Õ+×0Ñ0Ó2ˆJØ˜HÕ%×*Ñ*Ó,ˆFØ˜{Õ+×1Ñ1Ó3ˆIà˜jÕ)¨CÑ/ˆHØ˜jÕ)¨CÑ/ˆHØ! .Õ1°CÑ7ˆLà¨9¸hÐR^Ð^Ð^rV   c                ór  € \        V 4      p\        V\        P                  P	                  4       4      pVR,          P                  4       pVR,          P                  4       pVR8g  P                  \        P                  4      pRV9   d   VR,          P                  4       pMnVP                  VP                  VP                  \        P
                  R7      pVRRR	13,          P                  4       VR
&   ^ VR&   VP                  VR8H  ^ 4       \        P                  VR,          P                  4       4      p\        P                  VP                  ^,          VP                  4      p\        P!                  VR,          P                  4       VP                  ^,          VP                  4      pW%WCWgV3# )r9  rO  r<  Údecoder_input_ids)rÉ   rÈ   .NrP  rS  rc  ).r™  ).r   )rB  r   rÌ   rT  rU  rD  rV  rE  Ú	new_zerosr¢  rÉ   ÚcloneÚmasked_fill_r¿  rÊ  rÑ  rÖ  )	rÑ   ræ   rß  r<  r>  rà  rÜ  rÝ  rÞ  s	   &        rT   rW  Ú9T5TrainStep.get_batch_func.<locals>.get_batch_transformer  sn  € ä˜Ó&ˆDÜ! $¬¯
©
×(AÑ(AÓ(CÓDˆDà˜kÕ*×/Ñ/Ó1ˆJØ˜(•^×(Ñ(Ó*ˆFØ 4™×+Ñ+¬E¯K©KÓ8ˆIØ" dÔ*Ø!Ð"5Õ6×;Ñ;Ó=‘
à#×-Ñ-¨f¯l©lÀ6Ç=Á=ÔX]×XbÑXbÐ-Óc�
Ø&,¨S°#°2°#¨XÕ&6×&<Ñ&<Ó&>�
˜7Ñ#Ø%&�
˜6Ñ"Ø×'Ñ'¨
°dÑ(:¸AÔ>Ü"×8Ñ8¸Ð>NÕ9O×9TÑ9TÓ9VÓWˆHÜ"×3Ñ3°J×4DÑ4DÀQÕ4GÈ×IZÑIZÓ[ˆHÜ&×7Ñ7ØÐ%Õ&×+Ñ+Ó-¨z×/?Ñ/?ÀÕ/BÀJ×DUÑDUóˆLð ¨9¸hÐR^Ð^Ð^rV   rY  )rY   rZ   rZ  r¢   r0  r£   r[  s   &&&   rT   r$  ÚT5TrainStep.get_batch_func  ss   € ò	_ò2	_ð. ×Ñ×/Ñ/×IÑIÒUØ×$Ñ$×7Ñ7×QÑQÐQß ðå1à Ð ð
 )Ð(øô	 ô ØØ%Ð%ðúr]  c                ó�   € R  pVP                   P                  P                  e!   VP                   P                  P                  # V# )c                 óø   € VP                  4       p\        P                  ! VP                  R4      V P	                  R4      ,          4      V P                  4       ,          pTp\        V.4      pVRV^ ,          /3# )r`  rb  rc  )rE  rÌ   rd  re  rf  r7   )r>  ri  rj  rl  rn  ro  s   &&    rT   r1  Ú,T5TrainStep.get_loss_func.<locals>.loss_funcA  sh   € Ø$×*Ñ*Ó,ˆHÜ—i’i §¡¨bÓ 1°I×4EÑ4EÀbÓ4IÕ IÓJÈYÏ]É]Ë_Õ\ˆGàˆDÜGÈÈ	ÓRˆOà˜) _°QÕ%7Ð8Ð8Ð8rV   rx  )rs   rc   r1  s   && rT   r*  ÚT5TrainStep.get_loss_func@  s?   € ò	9ð ×Ñ×/Ñ/×DÑDÒPØ×$Ñ$×7Ñ7×LÑLÐLØÐrV   c                ó   a € V 3R  lpV# )c           
     óz   <€ S
P                  V 4      w  r#rErgpV! W#WgVRVR7      p	V	\        S
P                  V4      3# )r}  Nr~  r€  )rÑ   rS   rß  rà  r>  rK  rÜ  rÝ  rÞ  ri  rs   s   &&        €rT   r2  Ú7T5TrainStep.get_forward_step_func.<locals>.forward_stepO  sU   ø€ ð ^b×]kÑ]kØó^ÑZˆJ I¸(Èlñ "Ø¨¸LÐX\ÐhqôˆMð !¤'¨$¯.©.¸)Ó"DÐDÐDrV   r�   r¼  s   f rT   r'  Ú!T5TrainStep.get_forward_step_funcN  s   ø€ õ	Eð ÐrV   rƒ  )r²   r³   r´   rµ   r¶   rw   ÚstaticmethodrÊ  rÑ  rÖ  r$  r*  r'  r·   r¸   r
  r  s   @@rT   r¿  r¿  Î  s`   ù‡ € ñõ
6ð ñ
'ó ð
'ð ñó ðð
 ñ	'ó ð	'ò=)ò~÷ò rV   r¿  c                  óÈ   € \        4       p \        R R R 4       V P                  ^ 8X  d   \        RV P                   R24       \        V P                  V P                  4       R # )Nz> setting random seeds to z ...)r   r,   rJ   rK   rŠ   r-   Údata_parallel_random_init)rQ   s    rT   Úfinish_mpu_initrô  _  sL   € ä‹:€Dä˜D $¨Ô-ð ‡y�y�A„~ÜÐ*¨4¯9©9¨+°TÐ:Ô;Ü�T—Y‘Y × >Ñ >Ö?rV   c                 ó€  € Vf   / pV P                  R4       \        P                  P                  4       '       g   Q R4       h\	        VRR7      pVP                  4        FR  w  rE\        W4R 4      e4   VP                  ^ 8X  d#   \        RV R\        W44       RV RV 2RR7       \        W4V4       KT  	  VP                  '       g   VP                  R	R
4      '       d!   VP                  f   Q R4       h\        V4       \        V4       \        VR
R7       \        4        \!        4        \#        4        \%        4        \'        4       p\        VRR 4      f   \)        VP*                  V4      Vn        VP.                  R8X  d,   VP0                  '       d   VP2                  ^8X  d	   RVn        MR
Vn        ^ Vn        R # )NzInitializing Megatron-LMzMegatron requires CUDA.T)Úignore_unknown_argsz*WARNING: overriding default arguments for r{   r|   )ÚflushÚuse_checkpoint_argsFz/--use-checkpoints-args requires --load argument)Úbuild_tokenizerÚpadded_vocab_sizer;   )rK   rÌ   rT  Úis_availabler#   r}   r~   rJ   r   rø  ÚgetÚloadr%   r$   r(   rô  r+   r*   r.   r   r0   Úorig_vocab_sizerú  rL   rI   rN   rM   Ú	iteration)rc   Úextra_args_providerÚargs_defaultsrQ   r€   r�   s   &&&   rT   Ú
initializer  l  s”  € ØÒØˆØ×ÑÐ0Ô1Ü�:‰:×"Ñ"×$Ò$Ð?Ð&?Ó?Ð$ô Ð)¸tÔD€Dð $×)Ñ)Ö+‰
ˆÜ�4˜dÓ#Ò/Ø�y‰y˜AŒ~ÜØ@ÀÀÀQÄwÈtÓGYÐFZÐZ`ÐadÐ`eÐefÐglÐfmÐnØõô 	�˜5Ö!ñ ,ð ××Ð =×#4Ñ#4Ð5JÈE×#RÒ#RØ�y‰yÒ$ÐWÐ&WÓWÐ$Ü! $Ô'ä�$Ôô ˜¨uÕ5ô Ôô Ôô Ôô ÔÜ‹:€DÜˆtÐ(¨$Ó/Ò7Ü!9¸$×:NÑ:NÐPTÓ!UˆÔØ×Ñ˜vÔ%¨$×*?×*?Ð*?ÀDÇOÁOÐWXÔDXØ $ˆÕà %ˆÔØ€D†NrV   c                   ór   a a€ ] tR tRt oRtV 3R ltR tR tR tR t	R t
R	 tR
 tR tR tR tRtVtV ;t# )ÚMegatronEngineiž  zâ
Megatron-LM model wrapper

Args:
    accelerator (:class:`~accelerate.Accelerator`): The accelerator object to use.
    model: Megatron-LM model
    optimizer: Megatron-LM optimizer
    lr_scheduler: Megatron-LM lr scheduler
c                óø  <€ \         SV `  4        W n        V^ ,          V n        W0n        W@n        \        4       pVP                  P                  P                  eL   VP                  P                  P                  ! V3/ VP                  P                  P                  B V n        M~VP                  R8X  d   \        W4      V n        M\VP                  R8X  d   \        W4      V n        M:VP                  R8X  d   \        W4      V n        M\!        RVP                   24      hRV P                  n        / V n        / V n        ^ V n        RV n        ^ V n        RV n        VP0                  e   \3        4        R# R# )r   Nr;   rC   rE   rH   FT)rú   rw   ÚmoduleÚ
base_modelre   rX   r   rY   rZ   Úcustom_train_step_classÚcustom_train_step_kwargsÚtrain_step_handlerrL   r-  r†  r¿  rP   r  Útotal_loss_dictÚeval_total_loss_dictrÿ  Úreport_memory_flagÚ$num_floating_point_operations_so_farÚmodule_configÚtensorboard_dirr/   )rs   rc   rS   re   rX   rQ   rû   s   &&&&& €rT   rw   ÚMegatronEngine.__init__©  sD  ø€ Ü‰ÑÔØŒØ �(ˆŒØ"ŒØ"ŒÜ‹zˆØ×Ñ×/Ñ/×GÑGÒSØ&1×&7Ñ&7×&JÑ&J×&bÒ&bØñ'Ø#×)Ñ)×<Ñ<×UÑUñ'ˆDÕ#ð ×!Ñ! VÔ+Ü&3°KÓ&FˆDÕ#Ø×!Ñ! UÔ*Ü&2°;Ó&EˆDÕ#Ø×!Ñ! TÔ)Ü&1°+Ó&DˆDÕ#äÐ7¸×8LÑ8LÐ7MÐNÓOÐOØ&+ˆ�‰Ô#ð  "ˆÔØ$&ˆÔ!ØˆŒØ"&ˆÔØ45ˆÔ1Ø!ˆÔØ×ÑÒ+Ü%Ö'ñ ,rV   c                ó  a a€ \        4       p\        S P                  ^ ,          4      pS P                  P                  Vn        \        S P                  ^ ,          \        4      '       dò   VP                  '       dà   VP                  e   Q R4       hS P                   Uu. uF  q3P                  NK  	  upVn	        \        S P                  4      ^8X  d   VP                  ^ ,          Vn	        VP                  '       d]   S P                   Uu. uF  q3P                  NK  	  upVn        \        S P                  4      ^8X  d   VP                  ^ ,          Vn        VP                  '       d~   VP                   '       dl   \#        \        S P                  4      4       Uau. uF
  oVV 3R lNK  	  upVn        \        S P                  4      ^8X  d   VP$                  ^ ,          Vn        \&        Vn        V# u upi u upi u upi )r   z‡When overlap_grad_reduce is True, config.no_sync_func must be None; a custom no_sync_func is not supported when overlapping grad-reducec                 ó<   <€ SP                   P                  SV 4      # r¿   )re   Úfinish_param_sync)ÚxÚmodel_indexrs   s   &€€rT   Ú<lambda>Ú2MegatronEngine.get_module_config.<locals>.<lambda>Û  s   ø€ ˜$Ÿ.™.×:Ñ:¸;ÈÔJrV   )r   r   r  re   Ú
scale_lossÚgrad_scale_funcr�   ÚLocalDDPÚoverlap_grad_reduceÚno_sync_funcÚno_syncra   Údelay_grad_reduceÚstart_grad_syncÚgrad_sync_funcÚoverlap_param_gatherÚdelay_param_gatherr¨   Úparam_sync_funcr   Úfinalize_model_grads_func)rs   rQ   r<   Úmodel_chunkr  s   f   `rT   Úget_module_configÚ MegatronEngine.get_module_configÈ  s•  ù€ Ü‹zˆÜ! $§+¡+¨a¥.Ó1ˆà!%§¡×!:Ñ!:ˆÔÜ�d—k‘k !•n¤h×/Ò/°D×4L×4LÐ4LØ×&Ñ&Ò.ð ðVóÐ.ð KOÏ+Ê+Ó"VÉ+¸;×#6Ô#6É+Ñ"VˆFÔÜ�4—;‘;Ó 1Ô$Ø&,×&9Ñ&9¸!Õ&<�Ô#Ø×%×%Ð%ØX\×XcÒXcÓ(dÑXcÈ×)DÔ)DÑXcÑ(d�Ô%Ü�t—{‘{Ó# qÔ(Ø,2×,AÑ,AÀ!Õ,D�FÔ)Ø×$×$Ð$¨×)@×)@Ð)@ä^cÔdgÐhl×hsÑhsÓdtÔ^uô&Ù^uÈ{×JÐJÑ^uñ&ˆFÔ"ô �4—;‘;Ó 1Ô$Ø)/×)?Ñ)?ÀÕ)B�Ô&Ü+?ˆÔ(Øˆùò #Wùò )eùò&s   Â G8ÄG=Æ!Hc                ó²   € V P                    F  pVP                  4        K  	  V P                  f   V P                  4       V n        V P	                  4        R # r¿   )r  Útrainr  r'  Úlog_eval_results©rs   Úmodel_modules   & rT   r*  ÚMegatronEngine.trainâ  sG   € Ø ŸKœKˆLØ×ÑÖ ñ (ð ×ÑÒ%Ø!%×!7Ñ!7Ó!9ˆDÔà×ÑÖrV   c                ó–   € V P                    F  pVP                  4        K  	  V P                  f   V P                  4       V n        R # R # r¿   )r  Úevalr  r'  r,  s   & rT   r0  ÚMegatronEngine.evalë  s@   € Ø ŸKœKˆLØ×ÑÖñ (ð ×ÑÒ%Ø!%×!7Ñ!7Ó!9ˆDÖñ &rV   c                ó²  € \        4       p. p\        V4      ^ 8”  d‘   VP                  ^8”  d}   \        ^ VP                  4       Fa  pTP	                  VP                  4        UUu/ uF2  w  rVWVWBP                  ,          V^,           VP                  ,           bK4  	  upp4       Kc  	  MV.p\        V P                  4      ^8”  di   \        V4      ^ 8”  d:   \        \        V P                  4      4       Uu. uF  p\        V4      NK  	  uppV# R.\        V P                  4      ,          pV# \        V4      ^ 8”  d   \        V4      MRpV# u uppi u upi ©r   N)	r   ra   rä   r¨   rª   r}   rã   r  Úiter)	rs   Ú
batch_datarQ   Údata_chunksr¯   rò   ÚvrÕ  Úbatch_data_iterators	   &&       rT   Úget_batch_data_iteratorÚ&MegatronEngine.get_batch_data_iteratorò  sC  € Ü‹zˆØˆÜˆz‹?˜QÔØ×%Ñ%¨Ô)Ü˜q $×"8Ñ"8Ö9�AØ×&Ñ&ð )3×(8Ñ(8Ô(:ôá(:¡ ð  ×%:Ñ%:Õ!:¸aÀ!½eÀt×G\ÑG\Õ=\Ð]Ò]Ù(:òöò :ð  *˜l�äˆt�{‰{Ó˜aÔô �z“? QÔ&ô -2´#°d·k±kÓ2BÔ,CÓDÑ,C q”�kÖ"Ñ,CÑDð  ð #Ð"ð	 �Vœc $§+¡+Ó.Õ.ð  ð #Ð"ô 8;¸:³ÈÔ7J¤$ {Ô"3ÐPTÐØ"Ð"ùó!ùò Es   Á%8EÃ7Ec           
     ó  € V P                  V4      p\        V P                  P                  VV P                  V P
                  V P                  V P                  \        4       R7      w  r4  rVpV^8H  V P
                  n	        W4Wg3# )z`
Training step for Megatron-LM

Args:
    batch_data (:obj:`dict`): The batch data to train on.
)Úforward_step_funcrÑ   rS   re   Úopt_param_schedulerr<   Úforward_backward_func)
r9  r5   r
  r2  r  re   rX   r  r   r  )rs   r5  r8  Úloss_reducedr  rÕ  Ú	grad_normÚnum_zeros_in_grads   &,      rT   r5   ÚMegatronEngine.train_step  s€   € ð #×:Ñ:¸:ÓFÐäLVØ"×5Ñ5×BÑBØ-Ø—+‘+Ø—n‘nØ $§¡Ø×%Ñ%Ü";Ó"=ôM
ÑIˆ A q¨!Ð8Ið '3°aÑ&7ˆ�‰Ô#à¨9ÐGÐGrV   c           
     ó"  € \        4       pV P                  V4      p\        4       pV! V P                  P                  VV P
                  \        4       VP                  VP                  RR7      pVP                  ^8¼  d   \        P                  P                  4        V;P                  \        P                  ! 4       VP                  ,          \        4       ,          ,          un        \        P                   ! RR7      '       d„   / pV^ ,           Fr  pV Uu. uF  qˆV,          NK  	  p	p\#        V	^ ,          P$                  4      ^ 8X  d    \'        V	4      \#        V	4      ,          Wg&   KZ  \        P(                  ! V	4      Wg&   Kt  	  V# / # u upi )ze
Evaluation step for Megatron-LM

Args:
    batch_data (:obj:`dict`): The batch data to evaluate on.
T)r<  rÑ   rS   Únum_microbatchesr•   rã   Úforward_only)Úignore_virtual)r   r9  r   r
  r2  r  r   r•   rã   Úempty_unused_memory_levelrÌ   rT  Úempty_cacherï   r   rê   Úis_pipeline_last_stagera   r¢  rd  r£  )
rs   r5  rQ   r8  r>  Ú
loss_dictsr?  r€   r  Úlosses_reduced_for_keys
   &,        rT   Ú	eval_stepÚMegatronEngine.eval_step#  sJ  € ô ‹zˆØ"×:Ñ:¸:ÓFÐÜ 9Ó ;ÐÙ*Ø"×5Ñ5×BÑBØ-Ø—+‘+Ü1Ó3Ø—‘Ø!×2Ñ2Øô
ˆ
ð ×)Ñ)¨QÔ.Ü�J‰J×"Ñ"Ô$à×#Ò#Ü×,Ò,Ó.°×1FÑ1FÕFÔI]ÓI_Õ_õ	
Õ#ô ×%Ò%°T×:Ó:àˆLØ! !—}�}�Ù:DÓ)E¹*°Q¨C¯&¨&¹*Ð&Ð)EÜÐ-¨aÕ0×6Ñ6Ó7¸1Ô<Ü(+Ð,BÓ(CÄcÐJ`ÓFaÕ(a�LÓ%ä(-¯ªÐ5KÓ(L�LÓ%ñ %ð  ÐØˆ	ùò *Fs   ÄFc                óf  € \        4       pV P                  ^ ,          P                  '       EdX   V P                  ! R	/ VB w  r4rVV ;P                  ^,          un        \
        P                  ! 4       VP                  ,          \        4       ,          pV;P                  V,          un	        V ;P                  \        W'4      ,          un
        VP                  e«   V P                  P                  4       P                  4       pRp	VP                   '       d   \#        V P$                  4      p	\'        VV P(                  V P                  P*                  ^ ,          R,          V P                  VV P,                  VVV	V4
      V n        M÷V P.                  ! R	/ VB pVP                  eØ   V FÑ  p
V P0                  P3                  V
\4        P6                  P9                  R.4      4      W:,          ,           V P0                  V
&   V P0                  P3                  V
R,           \4        P6                  P9                  R.4      4      \4        P6                  P9                  R.4      ,           V P0                  V
R,           &   KÓ  	  \4        P:                  ! R\4        P6                  P=                  4       R7      pV F4  p
\?        W:,          P@                  4      ^ 8X  g   K%  W³V
,          ,          pK6  	  RpRV9   d
   VR,          pV PB                  PD                  e   V PB                  PE                  W¼R7      # V# )
r   NÚlrg        Ú
_num_itersg      ð?rÎ  rt  )rn  rt  r�   )#r   r  Útrainingr5   rÿ  r   rê   rã   r   rî   r  r3   r  re   Úget_loss_scaleÚitemÚlog_params_normr8   rS   r6   r  Úparam_groupsr  rL  r  rü  rÌ   rT  ÚFloatTensorrÍ   rU  ra   r¢  r
  r4  )rs   r5  rQ   Ú	loss_dictr  r@  rA  rØ   Ú
loss_scaleÚparams_normr€   rn  rt  s   &,           rT   ÚforwardÚMegatronEngine.forwardK  s„  € ô ‹zˆØ�;‰;�q�>×"×"Ñ"ØDHÇOÂOÑDaÐV`ÑDaÑAˆI YØ�NŠN˜aÕ�NÜ×9Ò9Ó;¸d×>SÑ>SÕSÔVjÓVlÕlˆJØ×'Ò'¨:Õ5Õ'Ø×5Ò5Ô9VÐW[Ó9hÕhÕ5Ø×#Ñ#Ò/à!Ÿ^™^×:Ñ:Ó<×AÑAÓC�
Ø"�Ø×'×'Ð'Ü"5°d·j±jÓ"A�KÜ*6ØØ×(Ñ(Ø—N‘N×/Ñ/°Õ2°4Õ8Ø—N‘NØØ×+Ñ+Ø ØØØ%ó+�Ô'øð ŸšÑ4¨Ñ4ˆIØ×#Ñ#Ò/Û$�Cà×1Ñ1×5Ñ5°c¼5¿:¹:×;QÑ;QÐSVÐRWÓ;XÓYÐ\eÕ\jÕjð ×-Ñ-¨cÑ2ð EI×D]ÑD]×DaÑDaØ˜lÕ*¬E¯J©J×,BÑ,BÀCÀ5Ó,IóEäŸ
™
×.Ñ.°¨uÓ5õE6�D×-Ñ-¨c°LÕ.@ÓAñ	 %ô �|Š|˜C¬¯
©
×(AÑ(AÓ(CÔDˆÛˆCÜ�9•>×'Ñ'Ó(¨AÖ-Ø #�Õ&’ñ ð ˆØ�yÔ Ø˜xÕ(ˆFØ×"Ñ"×5Ñ5ÒAØ×*Ñ*×=Ñ=À4Ð=ÓWÐWØˆrV   c                ó‚  € \        4       pVP                  e   V P                  ^ 8X  d   R # \        4       p\        4       pRV P                   R2pV P                   EF  pVP                  R4      '       d   K  V P                  V,          V P                  VR,           ,          ,          pW4 RV R2,          p\        P                  ! \        ^VP                  4       4      4      pVP                  '       d   W4 RV R2,          pV'       g   Kµ  VP                  V R2VP                  4       V P                  4       VP                  '       g   K÷  VP                  V R2W`P                  4       EK  	  \        V4      ^,           p\        RV,          4       \        V4       \        RV,          4       / V n        R # )	Nzvalidation loss at iteration z | rP  z value: z PPL: z validationz validation pplÚ-)r   r  rÿ  r   r  ÚendswithÚmathÚexpÚminrS  rI   Ú
add_scalarra   r   )rs   rQ   ÚwriterÚstringr€   r�   ÚpplÚlengths   &       rT   r+  ÚMegatronEngine.log_eval_resultsŠ  sd  € Ü‹zˆØ×ÑÒ'¨4¯>©>¸QÔ+>ÙÜ‹zˆÜ'Ó)ˆØ0°·±Ð0@ÀÐDˆØ×,Õ,ˆCØ�|‰|˜L×)Ò)ÙØ×-Ñ-¨cÕ2°T×5NÑ5NÈsÐUaÕOaÕ5bÕbˆEØ˜˜X e W¨CÐ0Õ0ˆFÜ—(’(œ3˜r 5§:¡:£<Ó0Ó1ˆCØ×$×$Ð$Ø˜E ¨ u¨CÐ0Õ0�ß‰vØ×!Ñ! S E¨Ð"5°u·z±z³|ÀTÇ^Á^ÔTØ×(×(Ò(Ø×%Ñ%¨¨¨_Ð&=¸sÇNÁN×Sñ -ô �V“˜q•ˆÜ˜˜f�Ô%Ü˜ÔÜ˜˜f�Ô%Ø$&ˆÖ!rV   c                óB  € V P                  4        \        4       pWn        \        P                  P                  4        \        V P                  V P                  V P                  V P                  V P                  R 7       \        P                  P                  4        R# ))r  N)r+  r   ÚsaverÌ   rÏ   Úbarrierr'   rÿ  r  re   rX   r  )rs   Ú
output_dirrQ   s   && rT   r'   ÚMegatronEngine.save_checkpoint¤  sm   € Ø×ÑÔÜ‹zˆØŒ	Ü×Ñ×!Ñ!Ô#ÜØ�N‰NØ�K‰KØ�N‰NØ�N‰NØ15×1ZÑ1Zõ	
ô 	×Ñ×!Ñ!Ö#rV   c                ó®  € \        4       pWn        ^ Vn        ^ Vn        \        P
                  P                  4        \        V P                  V P                  V P                  4      w  r4\        P
                  P                  4        W0n        W@n        VP                  '       d0   V P                  ^ 8X  d   V P                  P                  4        R# R# R# r3  )r   rý  rî   rï   rÌ   rÏ   rj  r&   r  re   rX   rÿ  r  Úfp16Úreload_model_params)rs   Ú	input_dirrQ   rÿ  r  s   &&   rT   r&   ÚMegatronEngine.load_checkpoint²  s›   € Ü‹zˆØŒ	Ø&'ˆÔ#Ø&'ˆÔ#Ü×Ñ×!Ñ!Ô#Ü:IÈ$Ï+É+ÐW[×WeÑWeÐgk×guÑguÓ:vÑ7ˆ	Ü×Ñ×!Ñ!Ô#Ø"ŒØ4XÔ1Ø�9�9ˆ9˜Ÿ™¨1Ô,Ø�N‰N×.Ñ.Ö0ñ -‰9rV   )r  r  rÿ  r  r  r  re   r  rX   r  r
  )r²   r³   r´   rµ   r¶   rw   r'  r*  r0  r9  r5   rL  rZ  r+  r'   r&   r·   r¸   r
  r  s   @@rT   r  r  ž  sI   ù‡ € ñõ(ò>ò4 ò:ò#ò2Hò0&òP=ò~'ò4$÷1ò 1rV   r  c                ó   € \        V 4      # )z„
Average losses across data parallel group.

Args:
    losses (List[Tensor]): List of losses to average across data parallel group.
)r7   )r³  s   &rT   Ú%avg_losses_across_data_parallel_grouprs  Á  s   € ô 5°VÓ<Ð<rV   c                ó"   € R p\        WRR7      # )zÞ
Recursively gather tensor in a nested list/tuple/dictionary of tensors from data parallel ranks.

Args:
    tensor (nested list/tuple/dictionary of `torch.Tensor`):
        The data to gather across data parallel ranks.

c                 ó²  € V P                   ^ 8X  d   V P                  4       R,          p \        \        P                  P                  \        P                  ! 4       R7      4       Uu. uF  p\        P                  ! V 4      NK  	  pp\        P                  P                  W \        P                  ! 4       R7       \        P                  ! V^ R7      # u upi )r   NrÊ   rŸ  )Úndimrå  r¨   rÌ   rÏ   Úget_world_sizer   Úget_data_parallel_groupÚ
empty_likeÚ
all_gatherr«  )rÍ   rÕ  Úoutput_tensorss   &  rT   Ú_gpu_gather_oneÚ;gather_across_data_parallel_groups.<locals>._gpu_gather_oneÖ  s§   € Ø�;‰;˜!ÔØ—\‘\“^ DÕ)ˆFô œ5×,Ñ,×;Ñ;Ä#×B]ÒB]ÓB_Ð;Ó`Ôaó
áa�ô ×Ò˜VÖ$Ùað 	ð 
ô 	×Ñ×$Ñ$ ^Ä3×C^ÒC^ÓC`Ð$ÔaÜ�yŠy˜¨QÔ/Ð/ùò
s   Á'CT)Úerror_on_other_type)r   )rÍ   r|  s   & rT   Ú"gather_across_data_parallel_groupsr  Ì  s   € ò0ô ˜_È$ÔOÐOrV   )TTTT)NN)orm   r_  r±  Úabcr   Ú	functoolsr   rÌ   Útorch.nn.functionalÚnnÚ
functionalrg  Útorch.nnr   r   r   re   r   rX   r	   Úimportsr
   Ú
operationsr   r   Úmegatron.corer   r   Úmegatron.core.distributedr   r  r   Úmegatron.core.enumsr   Ú)megatron.core.num_microbatches_calculatorr   Úmegatron.core.optimizerr   Úmegatron.core.parallel_stater   r   Úmegatron.core.pipeline_parallelr   Úmegatron.core.utilsr   Ú"megatron.legacy.data.dataset_utilsr   Úmegatron.legacy.modelr   r   Ú$megatron.legacy.model.classificationr   Úmegatron.trainingr   r   r   r   Úmegatron.training.argumentsr    r!   r"   r#   r$   Úmegatron.training.checkpointingr%   r&   r'   Úmegatron.training.global_varsr(   Úmegatron.training.gpt_buildersr)   Úmegatron.training.initializer*   r+   r,   r-   r.   r/   Ú%megatron.training.tokenizer.tokenizerr0   Úmegatron.training.trainingr1   r2   r3   r4   r5   r6   Úmegatron.training.utilsr7   r8   r9   rU   rh   rj   rÔ   r×   rõ   r]   r  r  r^   r  r-  r†  r¿  rô  r  ÚModuler  rs  r  r�   rV   rT   Ú<module>r�     sf  ðó Û Û 	Ý Ý ã ß Ð ß AÑ Aå ,Ý ,Ý -ß 9ñ ×Òß2ÝMÝ>Ý-ÝNÝ>ßpÝIÝ4ÝRß8ÝC÷ó ÷õ ÷ lÑkÝBÝ:÷÷ õ O÷÷ ÷ñ ô.òb'÷8jLñ jLòZò$>LôD+Ð!5ô +ò b÷ñ ô.Ð!5ô òô˜ô ô"KÐ%ô Kô\MÐ$ô Mô`NÐ#ô Nòb	@ô/ôd_1�U—X‘X—_‘_ô _1òF	=ôPrV   