
    9i                      "    S SK r  " S S\5      rg)    Nc                   H    \ rS rSr   S	S jrS rS
S jrSS jrS
S jrSr	g)TextGenerator   Nc                 ^   SU l         XPl        [        R                  R	                  5       S:  U l        Xl        X l        X0l        SU l        SU l	        X@l
        SU l        SU l        SU l        X`l        U R                  S:g  U l        S U l        U R                  (       a  / / / / S.U l        g g )	Ng333333?r   e   f   r   i   )predicted_idsbeam_parent_idsscores	log_probs)alphaloggertorchcudadevice_countmodelvocabsymbolsstart_token	end_tokenglobal_scorer	beam_size
min_length
max_length	dump_beam
beam_trace
beam_accum)selfr   r   r   r   r   r   s          d/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/models/nlp/plug/generator.py__init__TextGenerator.__init__   s     
ZZ,,.2	

*" ..B.??!##%	DO     c                 >   / nU H9  n[        U5      nUR                  U5        US   U R                  :X  d  M4  US S n  O   U Vs/ s H  oD[        U R                  5      :  d  M  UPM!     nnU R                  R                  U5      R                  S5      nU$ s  snf )N )intappendr   lenr   	DecodeIdssplit)r   predtokenstokts        r    _build_target_tokens"TextGenerator._build_target_tokens-   s    Cc(CMM#bzT^^+  $;V3tzz?':!V;%%f-33C8 <s   B&Bc                 6   [        [        [        UR                  5       5      5      5      nUS:w  a.  XC   US   sUS'   XC'   UR	                  U5      R                  5       n[        UR                  5       5      nUS==   U-  ss'   UR                  S5      nUR                  US5      R                  SS5      R                  US5      R                  SS5      R                  5       R                  " U6 nUS:w  a  UR	                  U5      R                  5       nU$ )z'
Tiles x on dimension dim count times.
r   r%      )	listranger)   sizepermute
contiguousview	transposerepeat)r   xcountdimpermout_sizebatchs          r    tileTextGenerator.tile9   s     E#affh-()!8!%DGDGTY		$**,A>uq	FF5"Yq!_VE1Yq!_Z\T
  !8		$**,Ar#   c                     [         R                  " 5          U R                  XR                  U R                  S9sS S S 5        $ ! , (       d  f       g = f)N)r   )r   no_grad_fast_translate_batchr   r   )r   encoder_inputsfasts      r    translate_batchTextGenerator.translate_batchN   s6    ]]_--DOO . M __s   $A
Ac                    U R                   (       a   eU R                  nUu  pVnUR                  S5      nUR                  n	[        R
                  " US/U R                  [        R                  U	S9n
U R                  UUUU
S S SSSS S9
u  pnUnU R                  XSS9nU R                  XtSS9n[        R                  " U[        R                  U	S9n[        R                  " SX-  U[        R                  U	S9n[        R
                  " X-  S/U R                  [        R                  U	S9n[        R                  " S	/[        S
5      /US-
  -  -   U	S9R                  U5      n[        U5       Vs/ s H  n/ PM     nn0 n[        U5       Vs/ s H  n/ PM     snUS'   [        U5       Vs/ s H  n/ PM     snUS'   S/U-  US'   / US'   S nS n[        U5       GH  nU R                  UUUUUUSSSUS9
u  pnUS S 2SS S 24   nUR                  S5      n[        R                  " [        R                   " UR#                  SU5      SS95      nUU:  a  SUS S 2U R$                  4'   UUR#                  S5      R'                  S5      -  nU R(                  nSUS-   -   S-  U-  nUU-  nUR+                  SUU-  5      nUR-                  USS9u  nn UU-  nU R/                  USS9n!U R1                  U5      n U!US U!R                  S5       R'                  S5      -   n"U"R#                  S5      n#[        R2                  " UR5                  SU#5      U R#                  SS5      /S5      nU R7                  U R$                  5      n$US-   U:X  a  U$R9                  S5        U$S S 2S4   R7                  S5      n%U$R;                  5       (       Ga  UR#                  SUUR                  S5      5      n&[        U$R                  S5      5       H  n'UU'   n(U%U'   (       a  U$U'   R9                  S5        U$U'   R=                  5       R#                  S5      n)U) H&  n*UU(   R?                  UU'U*4   U&U'U*SS 24   45        M(     U%U'   (       d  M  [A        UU(   S SS9n+U+S   u  n,n-US   U(   R?                  U,5        US   U(   R?                  U-5        M     U%R7                  S5      R=                  5       R#                  S5      n.[C        U.5      S:X  a    U$ UR5                  SU.5      nU"R5                  SU.5      n"UR5                  SU.5      nU&R5                  SU.5      R#                  SUR                  S5      5      nU"R#                  S5      n#UR5                  SU#5      nUR5                  SU#5      nGM     U$ s  snf s  snf s  snf )Nr   r3   )dtypedeviceFT)checkpoint_activationsis_inferparallel_outputsequence_output)r>   )steprL   rM   g        z-inf)rM   predictionsr   
gold_scorerA   r%   g@xg      @g      @trunc)rounding_modec                     U S   $ )Nr    )r<   s    r    <lambda>5TextGenerator._fast_translate_batch.<locals>.<lambda>   s    1r#   )keyreverse)"r   r   r6   rM   r   fullr   longr   rB   arangetensorfloatr;   r5   logsoftmaxr9   r   	unsqueezer   reshapetopkdivfmodcatindex_selecteqfill_anynonzeror(   sortedr)   )/r   rG   r   r   r   r-   typespadding_mask
batch_sizerM   tmp_alive_seqprediction_scoresdec_feat_seqrQ   src_featuresattention_maskbatch_offsetbeam_offset	alive_seqtopk_log_probs_
hypothesesresultsdec_attn_maskdec_position_idsrR   
vocab_sizer   r   length_penaltycurr_scorestopk_scorestopk_idstopk_beam_indexbatch_indexselect_indicesis_finishedend_conditionrS   ibfinished_hypjbest_hypscorer,   non_finisheds/                                                  r    rF   #TextGenerator._fast_translate_batchS   s   >>!!NN	&4#|[[^


J?#'#3#3).*02 <@::#(!  <F 
<"8 'yyay@<B||ejj9ll"** JJ
 6:#//%*ZZ&,.	 LLv9q=99%vj1 	 #(
"34"3Qb"3
4.3J.?!@.?".?!@).z):;):AR):;!"j 0*%D15 ', % , 2< 
2..Q (2q1L%**2.J		l//J?RHJI j /4	!T^^+,,,R0::1==IJJE"dQh/36>N#n4K%--b)j2HIK$/$4$4YB$4$G!K(>9N 'll:WlMO}}Z0H  633A67AA!DE  )--b1N 		&&q.9b!$# I
 #++dnn5Kax:%!!!$'1-003M  'nnRINN2<NO{//23A$QA$Q'#A,,Q/#.q>#9#9#;#@#@#DL)"1,,(A.Aq!"H0EFH * %Q''#)&qM~t$M&.qkt)!,33E:.q188> 4   -//2::<AA"E|$)  "0!<!<Q!M)66q,G+88LI'44QET"innR01  )--b1N'44QGL+88NKNg &j  5 "A;s   4V8V=0W)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )NNr	   )r   )F)
__name__
__module____qualname____firstlineno__r!   r0   rB   rI   rF   __static_attributes__rX   r#   r    r   r      s)      $$L
*M
Nr#   r   )r   objectr   rX   r#   r    <module>r      s    \F \r#   