
    9i1                         S SK r S SKJr  S SKJr  S SKrS SKJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJr  S S	KJr  S S
KJr  \R(                  " \	R*                  S9 " S S\5      5       rg)    N)Mapping)List)mpu)Trainers)
TorchModel)TRAINERS)NlpEpochBasedTrainer)Config)func_receive_dict_inputs)module_namec                   T   ^  \ rS rSrS\4U 4S jjrS\S\4U 4S jjrS r	S r
S	rU =r$ )
GPTMoETrainer   cfgc                 R  > [         TU ]  U5        [        [        R                  R                  SS5      5      UR                  l        [        R                  R                  SS5      UR                  l        [        R                  R                  SS5      UR                  l	        U$ )N
LOCAL_RANKMASTER_ADDRz	127.0.0.1MASTER_PORT29500)
superrebuild_configintosenvirongetmodelrank	master_ipmaster_port)selfr   	__class__s     g/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/trainers/nlp/gpt_moe_trainer.pyr   GPTMoETrainer.rebuild_config   sj    s#RZZ^^L"=>		 jjnn]KH		 "

}g F		
    r   inputsc                    > [        UR                  5       5      n[        R                  n[        R
                  " X2U5      n[        TU ]  X5      $ N)listkeystorchint64r   broadcast_datar   
train_step)r!   r   r&   r*   datatyper"   s        r#   r.   GPTMoETrainer.train_step   s>    FKKM";;##D(;w!%00r%   c                 l    U R                   R                  nUR                  UR                  5       5      $ r(   )eval_preprocessor	tokenizer
detokenizetolist)r!   tokensr3   s      r#   _decodeGPTMoETrainer._decode"   s*    **44	##FMMO44r%   c           	         U R                   (       a  U R                  R                  OU R                  nUR                  5         [        R
                  " 5          [        U[        5      (       a-  [        UR                  5      (       d  UR                  " S0 UD6nOUR                  U5      nS S S 5        US   n[        WS   U5       VVs/ s H  u  pVU R                  XVS  5      PM     snnUS'   [        US   U5       VVs/ s H  u  pVU R                  XVS-
  S  5      PM     snnUS'   [        US   5      [        US   5      :X  d   eU$ ! , (       d  f       N= fs  snnf s  snnf )Nprompt_length	sequencespredslabels   tgts )_distr   moduleevalr+   no_grad
isinstancer   r   generatezipr7   len)r!   datar   resultr:   seqskip_lens          r#   evaluation_stepGPTMoETrainer.evaluation_step&   s9   %)ZZ

!!TZZ

]]_ %=enn%M%M/$/-  $(#8 "%VK%8-!H
!H LLY(!H
w "%T(^]!C
!C LL\]+,!C
V 6'?#s4<'8888' _

s   AEE "E&
Er@   )__name__
__module____qualname____firstlineno__r
   r   r   r   r.   r7   rM   __static_attributes____classcell__)r"   s   @r#   r   r      s1    & 1
 1G 15 r%   r   )r   collections.abcr   typingr   r+   megatron_utilr   modelscope.metainfor   modelscope.modelsr   modelscope.trainers.builderr   modelscope.trainers.nlp_trainerr	   modelscope.utils.configr
   modelscope.utils.file_utilsr   register_modulegpt_moe_trainerr   r@   r%   r#   <module>r`      sV    
 #    ( ( 0 @ * @ 
h&>&>?*( * @*r%   