
    9i'&                        S SK r S SKJrJrJrJrJrJr  S SKrS SK	J
r
  S SKJ
s  Jr  S SKrS SK	Jr  S SKJrJr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  S SK J!r!  SSK"J#r#  SSK$J%r%J&r&  SSK'J(r(J)r)J*r*J+r+J,r,J-r-J.r.J/r/J0r0J1r1  \(       a  S SK2J3r3  \!" 5       r4\#Rj                  " \Rl                  \Rn                  S9\#Rj                  " \Rp                  \Rn                  S9 " S S\&5      5       5       r9g)    N)TYPE_CHECKINGCallableListOptionalTupleUnion)CrossEntropyLoss)GenerationConfigPreTrainedTokenizerStoppingCriteriaList)LogitsProcessorList)GenerateOutput)CausalLMOutputWithPast)Models)
OutputKeys)Tasks)
get_logger   )MODELS   )	QWenModelQWenPreTrainedModel)
BatchTokensTypeHistoryTypeStopWordsLogitsProcessordecode_tokens	get_batchget_stop_words_idsmake_context	pad_batchswitchtop_k_logits)BaseStreamer)module_namec            !       Z  ^  \ rS rSrS/rS/rU 4S jrS rS r  S*S jr	              S+S\
\R                     S	\
\\\R                           S
\
\R                     S\
\R                     S\
\R                     S\
\R                     S\
\R                     S\
\R                     S\
\R                     S\
\R                     S\
\   S\
\   S\
\   S\
\   S\\\4   4S jjr\S	\\\R                        S\R                  S\\\R                        4S j5       r  S,S\S\S\
\   S\S\S\\\4   4S jjr       S-S \
\R                     S!\
\   S"\
\   S#\
\   S$\
\\\R                  /\\   4      S%\
\   S&\
S'   S\\ \R                  4   4U 4S( jjjr!S)r"U =r#$ ).QWenForTextGeneration&   z"h\.\d+\.attn\.rotary_emb\.inv_freqzh\.\d+\.attn\.masked_biasc                 (  > [         TU ]  U5        [        U5      U l        [        R
                  " UR                  UR                  SS9U l        UR                  (       a  UR                  (       a   S5       eUR                  (       a4  U R                  R                  5         U R                  R                  5         UR                  (       a4  U R                  R                  5         U R                  R                  5         U R                  5         g )NF)biasz,In config, bf16 and fp16 cannot both be true)super__init__r   transformernnLinearn_embd
vocab_sizelm_headbf16fp16bfloat16half	post_init)selfconfig	__class__s     j/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/models/nlp/qwen/text_generation.pyr+   QWenForTextGeneration.__init__,   s     $V,yy0A0ANKKFKK 	FE	F ;;%%'LL!!#;;!!#LL    c                     U R                   $ Nr1   )r7   s    r:   get_output_embeddings+QWenForTextGeneration.get_output_embeddings:   s    ||r<   c                     Xl         g r>   r?   )r7   new_embeddingss     r:   set_output_embeddings+QWenForTextGeneration.set_output_embeddings=   s    %r<   c                    UR                  SS 5      nU(       a3  US S 2S4   R                  S5      nUb  US S 2S4   R                  S5      nUR                  SS 5      nUR                  SS 5      nUbZ  UcW  UR                  5       R                  S5      S-
  nUR	                  US:H  S5        U(       a  US S 2S4   R                  S5      nOS nUb  Uc  SU0nOSU0nUR                  UUR                  S	5      UUUS
.5        U$ )Ntoken_type_idsattention_maskposition_idsr   r   inputs_embeds	input_ids	use_cache)past_key_valuesrM   rJ   rI   rG   )get	unsqueezelongcumsummasked_fill_update)	r7   rL   rN   rK   kwargsrG   rI   rJ   model_inputss	            r:   prepare_inputs_for_generation3QWenForTextGeneration.prepare_inputs_for_generation@   s#   
  $4d;!!R%(2226I)!/2!6!@!@!D$4d;zz.$7%,*>)..077;a?L%%n&91=+ArE2<<R@L$)@+];L'3L.K0(,,
 	 r<   rL   rN   rI   rG   rJ   	head_maskrK   encoder_hidden_statesencoder_attention_masklabelsrM   output_attentionsoutput_hidden_statesreturn_dictreturnc                 J   Ub  UOU R                   R                  nU R                  UUUUUUUUU	UUUUS9nUS   nU R                  U5      nS nU
b  U
R	                  UR
                  5      n
USS S2S S 24   R                  5       nU
SSS 24   R                  5       n[        5       nU" UR                  SUR                  S5      5      UR                  S5      5      nU(       d  U4USS  -   nUb  U4U-   $ U$ [        UUUR                  UR                  UR                  S9$ )N)rN   rI   rG   rJ   rY   rK   rZ   r[   rM   r]   r^   r_   r   .rH   r   )losslogitsrN   hidden_states
attentions)r8   use_return_dictr,   r1   todevice
contiguousr	   viewsizer   rN   rd   re   )r7   rL   rN   rI   rG   rJ   rY   rK   rZ   r[   r\   rM   r]   r^   r_   transformer_outputsrd   	lm_logitsrb   shift_logitsshift_labelsloss_fctoutputs                          r:   forwardQWenForTextGeneration.forwardd   s^   $ &1%<k$++B]B]"..+))%'"7#9/!5# / 
 ,A.LL/	YYy//0F$S#2#q[1<<>L!#qr'?557L')H!!"l&7&7&;<!!"%'D ]%8%<<F*.*:THv%FF%/??-;;*55
 	
r<   beam_idxc                 .   ^ [        U4S jU  5       5      $ )Nc              3   N   >#    U  H  n[        U4S  jU 5       5      v   M     g7f)c              3   z   >#    U  H0  nUR                  S TR                  UR                  5      5      v   M2     g7f)r   N)index_selectrg   rh   ).0
past_statert   s     r:   	<genexpr>AQWenForTextGeneration._reorder_cache.<locals>.<genexpr>.<genexpr>   s7      .",J ''8;;z7H7H+IJJ",s   8;Ntuple)ry   
layer_pastrt   s     r:   r{   7QWenForTextGeneration._reorder_cache.<locals>.<genexpr>   s3      / .
  .",. . . .s   "%r}   )rN   rt   s    `r:   _reorder_cache$QWenForTextGeneration._reorder_cache   s!      / .	/ / 	/r<   	tokenizerqueryhistorysystemappend_historyc           	         Uc  / n[        UUUUSU R                  R                  S9u  pg[        U R                  R                  U5      n[        R
                  " U/5      R                  U R                  5      n	U R                  U	USS9n
[        U
S   U[        U5      [        U5      U R                  R                  SS9nU(       a  UR                  X+45        [        R                  U[        R                  U0$ )Ni   )r   r   max_window_sizechat_formatF)stop_words_idsreturn_dict_in_generater   )raw_text_lencontext_lengthr   verbose)r   generation_configr   r   torchtensorrg   rh   generater   lenappendr   RESPONSEHISTORY)r7   r   r   r   r   r   raw_textcontext_tokensr   rL   outputsresponses               r:   chatQWenForTextGeneration.chat   s     ?G#/ ..::$<  ,D,B,B,N,N,57LL.!1255dkkB	--)$)   
 !AJX~...::
 NNE,-##Xz/A/A7KKr<   inputsr   logits_processorstopping_criteriaprefix_allowed_tokens_fnsynced_gpusstreamerr#   c                 6  > UR                  SS 5      n	U	c  Ub  [        USS 5      n	U	c  [        U R                  SS 5      n	U	b?  [        U	U R                  R                  S9n
Uc  [        U
/5      nOUR                  U
5        [        TU ]   " UUUUUU4SU0UD6$ )Nr   )r   eos_token_idr   )	popgetattrr   r   r   r   r   r*   r   )r7   r   r   r   r   r   r   r   rU   r   stop_words_logits_processorr9   s              r:   r   QWenForTextGeneration.generate   s      $4d;!&7&C$%68H$ON!$T%;%;=M%)+N %*B-!33@@+B'  '#601$3  !''(CDw$	
 	
 	
 		
r<   )r1   r,   )NN)NNNNNNNNNNNNNN)zYou are a helpful assistant.T)NNNNNNN)$__name__
__module____qualname____firstlineno___keys_to_ignore_on_load_missing"_keys_to_ignore_on_load_unexpectedr+   r@   rD   rW   r   r   
LongTensorr   TensorFloatTensorboolr   r   rr   staticmethodr   r   strr   r   r
   r   r   r   intr   r   r   __static_attributes____classcell__)r9   s   @r:   r&   r&   &   s    (M&M#*F)G&&
 7;48"L 15@D6:593715598<>B-1$(,0/3&*;
E,,-;
 "%ell(;"<=;
 !!2!23	;

 !!1!12;
 u//0;
 E--.;
   1 12;
  (5;
 !)):): ;;
 ))*;
 D>;
 $D>;
 'tn;
 d^;
  
u,,	-!;
z /eELL.A(B /!&/27ell8K2L/ / 5#*L&*L *L +&	*L
 *L *L 
sK	 *L\ *.8<:><@BF&*-1'
&'
 $$45'
 ##67	'

 $$89'
 #+8S%,,4G48I5> ,? #@'
 d^'
 >*'
 
~u///	0'
 '
r<   r&   ):warningstypingr   r   r   r   r   r   r   torch.nnr-   torch.nn.functional
functionalFtorch.utils.checkpointr	   transformersr
   r   r   &transformers.generation.logits_processr   transformers.generation.utilsr   transformers.modeling_outputsr   modelscope.metainfor   modelscope.outputsr   modelscope.utils.constantr   modelscope.utils.loggerr    r   backboner   r   qwen_generation_utilsr   r   r   r   r   r   r   r    r!   r"   !transformers.generation.streamersr#   loggerregister_moduletext_generationqwen_7br   r&    r<   r:   <module>r      s     H H      %0 0 F 8 @ & ) + .  42 2 2 >	 --6>>J

?V
/ V
 @ KV
r<   