Ë
    ÛÓ^jîv  ã                  ó  — d dl mZ d dlZd dlZd dlmZ d dlmZ d dlZd dl	m
Z
 d dlmZ ddlmZ ddlmZ dd	lmZmZ dd
lmZmZ ddlmZmZmZmZ ddlmZmZmZ ddl m!Z! ddl"m#Z# ddl$m%Z%m&Z&m'Z'm(Z(m)Z) ddl*m+Z+ erddlm,Z, ddl-m.Z. ddl/m0Z0  e)jb                  e2«      Z3 G d„ de
jh                  «      Z5e' G d„ d«      «       Z6e' G d„ d«      «       Z7e' G d„ d«      «       Z8 G d„ de
jh                  «      Z9 G d„ de«      Z:y) é    )ÚannotationsN)Úpartial)ÚTYPE_CHECKING)Ú	safe_opené   )ÚCache)Úget_model_conversion_mapping)ÚWeightRenamingÚ$convert_and_load_state_dict_in_model)Ú&LAYER_PATTERN_TO_MASK_FUNCTION_MAPPINGÚcreate_causal_mask)ÚBaseModelOutputWithPastÚQuestionAnsweringModelOutputÚ SequenceClassifierOutputWithPastÚTokenClassifierOutput)ÚLoadStateDictConfigÚPreTrainedModelÚ_get_resolved_checkpoint_files)Ú	AutoModel)ÚUnpack)ÚContextManagersÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚlogging)Úlog_state_dict_report)ÚMtpCache)ÚPreTrainedConfig)ÚLogitsProcessorListc                  ó&   ‡ — e Zd ZdZdZˆ fd„Zˆ xZS )ÚGradientCheckpointingLayera  Base class for layers with gradient checkpointing.

    This class enables gradient checkpointing functionality for a layer. By default, gradient checkpointing is disabled
    (`gradient_checkpointing = False`). When `model.set_gradient_checkpointing()` is called, gradient checkpointing is
    enabled by setting `gradient_checkpointing = True` and assigning a checkpointing function to `_gradient_checkpointing_func`.

    Important:

        When using gradient checkpointing with `use_reentrant=True`, inputs that require gradients (e.g. hidden states)
        must be passed as positional arguments (`*args`) rather than keyword arguments to properly propagate gradients.

        Example:

            ```python
            >>> # Correct - hidden_states passed as positional arg
            >>> out = self.layer(hidden_states, attention_mask=attention_mask)

            >>> # Incorrect - hidden_states passed as keyword arg
            >>> out = self.layer(hidden_states=hidden_states, attention_mask=attention_mask)
            ```
    Fc                óÖ  •— | j                   rÎ| j                  rÂd}| j                  j                  }d|› d�}d|v r|d   rd|d<   |dz  }d}d|v r|d   �d |d<   |dz  }d}d	|v r|d	   �d |d	<   |d
z  }d}d|v r|d   �d |d<   |dz  }d}|r)|j	                  d«      dz   }t
        j                  |«        | j                  t        t        ‰| �(  fi |¤Žg|¢­Ž S t        ‰| �(  |i |¤ŽS )NFz7Caching is incompatible with gradient checkpointing in z	. SettingÚ	use_cachez `use_cache=False`,TÚpast_key_valuez `past_key_value=None`,Úpast_key_valuesz `past_key_values=None`,Ú
layer_pastz `layer_past=None`,ú,ú.)Úgradient_checkpointingÚtrainingÚ	__class__Ú__name__ÚrstripÚloggerÚwarning_onceÚ_gradient_checkpointing_funcr   ÚsuperÚ__call__)ÚselfÚargsÚkwargsÚdo_warnÚ
layer_nameÚmessager+   s         €úg/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/modeling_layers.pyr2   z#GradientCheckpointingLayer.__call__L   sM  ø€ Ø×&Ò&¨4¯=ª=ØˆGØŸ™×0Ñ0ˆJØOÐPZÈ|Ð[dÐeˆGà˜fÑ$¨°Ò)<Ø&+��{Ñ#ØÐ0Ñ0�Ø�ð   6Ñ)¨fÐ5EÑ.FÐ.RØ+/�Ð'Ñ(ØÐ4Ñ4�Ø�à  FÑ*¨vÐ6GÑ/HÐ/TØ,0�Ð(Ñ)ØÐ5Ñ5�Ø�à˜vÑ%¨&°Ñ*>Ð*JØ'+��|Ñ$ØÐ0Ñ0�Ø�ñ Ø!Ÿ.™.¨Ó-°Ñ3�Ü×#Ñ# GÔ,à4�4×4Ñ4´W¼U¹WÑ=MÑ5XÐQWÑ5XÐ`Ð[_Ò`Ð`Ü‰wÑ Ð0¨Ñ0Ð0ó    )r,   Ú
__module__Ú__qualname__Ú__doc__r)   r2   Ú__classcell__©r+   s   @r9   r!   r!   3   s   ø„ ñð, #Ð÷"1ð "1r:   r!   c                  óp   ‡ — e Zd ZdZˆ fd„Zee	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„«       «       Zˆ xZS )Ú GenericForSequenceClassificationÚmodelc                ó8  •— t         ‰| �  |«       |j                  | _        t        | | j                  t        j                  |«      «       t        j                  |j                  «       j                  | j                  d¬«      | _        | j                  «        y )NF©Úbias)r1   Ú__init__Ú
num_labelsÚsetattrÚbase_model_prefixr   Úfrom_configÚnnÚLinearÚget_text_configÚhidden_sizeÚscoreÚ	post_init©r3   Úconfigr+   s     €r9   rF   z)GenericForSequenceClassification.__init__u   sn   ø€ Ü‰Ñ˜Ô Ø ×+Ñ+ˆŒä��d×,Ñ,¬i×.CÑ.CÀFÓ.KÔLÜ—Y‘Y˜v×5Ñ5Ó7×CÑCÀTÇ_Á_Ð[`ÔaˆŒ
ð 	�‰Õr:   c           	     ó
  —  t        | | j                  «      |f|||||dœ|¤Ž}	|	j                  }
| j                  |
«      }|�|j                  d   }n|j                  d   }| j
                  j                  «       j                  €|dk7  rt        d«      ‚| j
                  j                  «       j                  €d}nÑ|�¡|| j
                  j                  «       j                  k7  j                  |j                  t        j                  «      }t        j                  |j                  d   |j                  t        j                  ¬«      }||z  j                  d«      }n.d}t        j!                  | j"                  j$                  › d�«       |t        j                  ||j                  ¬«      |f   }d }|�| j'                  |||| j
                  ¬	«      }t)        |||	j*                  |	j,                  |	j.                  ¬
«      S )N©Úattention_maskÚposition_idsr%   Úinputs_embedsr#   r   r   z=Cannot handle batch sizes > 1 if no padding token is defined.éÿÿÿÿ)ÚdeviceÚdtypezŠ will not detect padding tokens in `inputs_embeds`. Results may be unexpected if using padding tokens in conjunction with `inputs_embeds.`©rY   )ÚlogitsÚlabelsÚpooled_logitsrR   )Úlossr\   r%   Úhidden_statesÚ
attentions)ÚgetattrrI   Úlast_hidden_staterO   ÚshaperR   rM   Úpad_token_idÚ
ValueErrorÚtorY   ÚtorchÚint32ÚarangeÚargmaxr.   r/   r+   r,   Úloss_functionr   r%   r`   ra   )r3   Ú	input_idsrU   rV   r%   rW   r]   r#   r5   Útransformer_outputsr`   r\   Ú
batch_sizeÚlast_non_pad_tokenÚnon_pad_maskÚtoken_indicesr^   r_   s                     r9   Úforwardz(GenericForSequenceClassification.forward   sï  € ð 8]´w¸tÀT×E[ÑE[Ó7\Øð8
à)Ø%Ø+Ø'Øñ8
ð ñ8
Ðð ,×=Ñ=ˆØ—‘˜MÓ*ˆàÐ Ø"Ÿ™¨Ñ+‰Jà&×,Ñ,¨QÑ/ˆJà�;‰;×&Ñ&Ó(×5Ñ5Ð=À*ÐPQÂ/ÜÐ\Ó]Ð]Ø�;‰;×&Ñ&Ó(×5Ñ5Ð=Ø!#ÑØÐ"à%¨¯©×)DÑ)DÓ)F×)SÑ)SÑS×WÑWÐX^×XeÑXeÔgl×grÑgrÓsˆLÜ!ŸL™L¨¯©¸Ñ)<ÀVÇ]Á]ÔZ_×ZeÑZeÔfˆMØ"/°,Ñ">×!FÑ!FÀrÓ!JÑà!#ÐÜ×ÑØ—>‘>×*Ñ*Ð+ð ,Zð Zôð
 œuŸ|™|¨J¸v¿}¹}ÔMÐOaÐaÑbˆàˆØÐØ×%Ñ%¨V¸FÐR_Ðhl×hsÑhsÐ%ÓtˆDä/ØØ Ø/×?Ñ?Ø-×;Ñ;Ø*×5Ñ5ô
ð 	
r:   ©NNNNNNN)rm   útorch.LongTensor | NonerU   útorch.Tensor | NonerV   ru   r%   úCache | NonerW   útorch.FloatTensor | Noner]   ru   r#   úbool | Noner5   úUnpack[TransformersKwargs]Úreturnr   ©	r,   r;   r<   rI   rF   r   r   rs   r>   r?   s   @r9   rA   rA   q   s™   ø„ àÐôð Øð .2Ø.2Ø04Ø(,Ø26Ø*.Ø!%ð8
à*ð8
ð ,ð8
ð .ð	8
ð
 &ð8
ð 0ð8
ð (ð8
ð ð8
ð -ð8
ð 
*ò8
ó ó ô8
r:   rA   c                  ó|   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zee	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„«       «       Z	ˆ xZ
S )ÚGenericForQuestionAnsweringrB   c                óâ   •— t         ‰| �  |«       t        | | j                  t	        j
                  |«      «       t        j                  |j                  d«      | _	        | j                  «        y )Né   )r1   rF   rH   rI   r   rJ   rK   rL   rN   Ú
qa_outputsrP   rQ   s     €r9   rF   z$GenericForQuestionAnswering.__init__À   sQ   ø€ Ü‰Ñ˜Ô ä��d×,Ñ,¬i×.CÑ.CÀFÓ.KÔLÜŸ)™) F×$6Ñ$6¸Ó:ˆŒð 	�‰Õr:   c                óB   — t        | | j                  «      j                  S ©N©rb   rI   Úembed_tokens)r3   s    r9   Úget_input_embeddingsz0GenericForQuestionAnswering.get_input_embeddingsÉ   s   € Ü�t˜T×3Ñ3Ó4×AÑAÐAr:   c                ó:   — |t        | | j                  «      _        y rƒ   r„   )r3   Úvalues     r9   Úset_input_embeddingsz0GenericForQuestionAnswering.set_input_embeddingsÌ   s   € Ø=BŒ��d×,Ñ,Ó-Õ:r:   c                ó¨  —  t        | | j                  «      |f||||dœ|¤Ž}	|	j                  }
| j                  |
«      }|j	                  dd¬«      \  }}|j                  d«      j                  «       }|j                  d«      j                  «       }d }|�|� | j                  ||||fi |¤Ž}t        ||||	j                  |	j                  ¬«      S )N)rU   rV   r%   rW   r   rX   ©Údim)r_   Ústart_logitsÚ
end_logitsr`   ra   )rb   rI   rc   r�   ÚsplitÚsqueezeÚ
contiguousrl   r   r`   ra   )r3   rm   rU   rV   r%   rW   Ústart_positionsÚend_positionsr5   ÚoutputsÚsequence_outputr\   r�   rŽ   r_   s                  r9   rs   z#GenericForQuestionAnswering.forwardÏ   s÷   € ð ,Q¬7°4¸×9OÑ9OÓ+PØð,
à)Ø%Ø+Ø'ñ,
ð ñ,
ˆð "×3Ñ3ˆà—‘ Ó1ˆØ#)§<¡<°°r <Ó#:Ñ ˆ�jØ#×+Ñ+¨BÓ/×:Ñ:Ó<ˆØ×'Ñ'¨Ó+×6Ñ6Ó8ˆ
àˆØÐ&¨=Ð+DØ%�4×%Ñ% l°JÀÐQ^ÑiÐbhÑiˆDä+ØØ%Ø!Ø!×/Ñ/Ø×)Ñ)ô
ð 	
r:   rt   )rm   ru   rU   rv   rV   ru   r%   rw   rW   rx   r’   ru   r“   ru   r5   rz   r{   r   )r,   r;   r<   rI   rF   r†   r‰   r   r   rs   r>   r?   s   @r9   r~   r~   ¼   s¥   ø„ àÐôòBòCð Øð .2Ø.2Ø04Ø(,Ø26Ø37Ø15ð%
à*ð%
ð ,ð%
ð .ð	%
ð
 &ð%
ð 0ð%
ð 1ð%
ð /ð%
ð -ð%
ð 
&ò%
ó ó ô%
r:   r~   c                  óp   ‡ — e Zd ZdZˆ fd„Zee	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„«       «       Zˆ xZS )ÚGenericForTokenClassificationrB   c           	     óî  •— t         ‰| �  |«       |j                  | _        t        | | j                  t        j                  |«      «       t        |dd «      �|j                  }nt        |dd «      �|j                  }nd}t        j                  |«      | _        t        j                  |j                  «       j                  |j                  t        |dd«      ¬«      | _        | j#                  «        y )NÚclassifier_dropoutÚhidden_dropoutgš™™™™™¹?Útoken_classification_biasTrD   )r1   rF   rG   rH   rI   r   rJ   rb   r™   rš   rK   ÚDropoutÚdropoutrL   rM   rN   rO   rP   )r3   rR   r™   r+   s      €r9   rF   z&GenericForTokenClassification.__init__ý   sÍ   ø€ Ü‰Ñ˜Ô Ø ×+Ñ+ˆŒä��d×,Ñ,¬i×.CÑ.CÀFÓ.KÔLÜ�6Ð/°Ó6ÐBØ!'×!:Ñ!:ÑÜ�VÐ-¨tÓ4Ð@Ø!'×!6Ñ!6Ñà!$ÐÜ—z‘zÐ"4Ó5ˆŒÜ—Y‘YØ×"Ñ"Ó$×0Ñ0Ø×ÑÜ˜Ð!<¸dÓCô
ˆŒ
ð 	�‰Õr:   c           	     ó,  —  t        | | j                  «      |f|||||dœ|¤Ž}	|	j                  }
| j                  |
«      }
| j	                  |
«      }d }|�| j                  ||| j                  «      }t        |||	j                  |	j                  ¬«      S )NrT   )r_   r\   r`   ra   )
rb   rI   rc   r�   rO   rl   rR   r   r`   ra   )r3   rm   rU   rV   r%   rW   r]   r#   r5   r”   r•   r\   r_   s                r9   rs   z%GenericForTokenClassification.forward  s°   € ð ,Q¬7°4¸×9OÑ9OÓ+PØð,
à)Ø%Ø+Ø'Øñ,
ð ñ,
ˆð "×3Ñ3ˆØŸ,™, Ó7ˆØ—‘˜OÓ,ˆàˆØÐØ×%Ñ% f¨f°d·k±kÓBˆDä$ØØØ!×/Ñ/Ø×)Ñ)ô	
ð 	
r:   rt   )rm   ru   rU   rv   rV   ru   r%   rw   rW   rx   r]   ru   r#   ry   r5   rz   r{   r   r|   r?   s   @r9   r—   r—   ù   s™   ø„ àÐôð* Øð .2Ø.2Ø04Ø(,Ø26Ø*.Ø!%ð!
à*ð!
ð ,ð!
ð .ð	!
ð
 &ð!
ð 0ð!
ð (ð!
ð ð!
ð -ð!
ð 
ò!
ó ó ô!
r:   r—   c                  óZ   ‡ — e Zd Z	 d	 	 	 	 	 	 	 	 	 dˆ fd„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zˆ xZS )ÚMtpLayerc                ó¨  •— t         ‰| �  «        || _        || _         ||j                  |j
                  ¬«      | _         ||j                  |j
                  ¬«      | _        t        j                  |j                  dz  |j                  d¬«      | _
         |||«      | _        |r$ ||j                  |j
                  ¬«      | _        y d | _        y )N©Úepsr€   FrD   )r1   rF   rR   Úuse_post_normrN   Úrms_norm_epsÚenormÚhnormrK   rL   Úeh_projÚ	mtp_blockÚ	post_norm)r3   rR   Údecoder_layer_clsÚnorm_clsÚ	layer_idxr¤   r+   s         €r9   rF   zMtpLayer.__init__9  sª   ø€ ô 	‰ÑÔØˆŒØ*ˆÔÙ˜f×0Ñ0°f×6IÑ6IÔJˆŒ
Ù˜f×0Ñ0°f×6IÑ6IÔJˆŒ
Ü—y‘y ×!3Ñ!3°aÑ!7¸×9KÑ9KÐRWÔXˆŒÙ*¨6°9Ó=ˆŒÙR_™ &×"4Ñ"4¸&×:MÑ:MÔNˆ�Ðeiˆ�r:   c                óž  — t        | j                  dd«      r8t        j                  | j	                  |«      | j                  |«      gd¬«      }n7t        j                  | j                  |«      | j	                  |«      gd¬«      }| j                  |«      }	 | j                  |	f||||dœ|¤Ž}	| j                  r| j                  |	«      }	|	S )NÚmtp_hidden_states_firstFrX   r‹   )rU   Úposition_embeddingsrV   r%   )
rb   rR   rh   Úcatr§   r¦   r¨   r©   r¤   rª   )
r3   rW   Úprevious_hidden_stater°   rU   rV   r%   r5   Úprojection_inputr`   s
             r9   rs   zMtpLayer.forwardJ  sÆ   € ô �4—;‘;Ð 9¸5ÔAÜ$Ÿy™y¨$¯*©*Ð5JÓ*KÈTÏZÉZÐXeÓMfÐ)gÐmoÔpÑä$Ÿy™y¨$¯*©*°]Ó*CÀTÇZÁZÐPeÓEfÐ)gÐmoÔpÐØŸ™Ð%5Ó6ˆØ&˜Ÿ™Øð
à)Ø 3Ø%Ø+ñ
ð ñ
ˆð ×ÒØ ŸN™N¨=Ó9ˆMàÐr:   )T)
rR   r   r«   útype[nn.Module]r¬   r´   r­   Úintr¤   Úbool)rW   útorch.Tensorr²   r·   r°   ú!tuple[torch.Tensor, torch.Tensor]rU   rv   rV   rv   r%   rw   r{   r¸   )r,   r;   r<   rF   rs   r>   r?   s   @r9   r    r    8  sŒ   ø„ ð #ðjà ðjð +ðjð "ð	jð
 ðjð õjð"à#ðð  ,ðð ?ð	ð
 ,ðð *ðð &ðð 
+÷r:   r    c                  óÔ   ‡ — e Zd ZdZdZdZddgZddgZdˆ fd„Zdd„Z	dd„Z
	 	 	 	 	 	 	 	 dd„Z	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd	„Zeddd
„«       Zedd„«       Zedd„«       Zˆ xZS )ÚMtpModelTzshared_head.head.weightzembed_tokens.weightzshared_head.weightc                ó  •— t         ‰| �  |j                  j                  «       «       d| _        || _        |j                  «       }t        |j                  d   «      }t        d„ |j                  d   j                  «       D «       «      }d| _        d| _        t        | j                  d«      r"d| _        | j                  j                  | _        t        j                   t#        |«      D �cg c]%  }t%        | j                  |||| j                  «      ‘Œ' c}«      | _        | j                  r7 || j                  j&                  | j                  j(                  ¬«      | _        | j-                  |«       | j/                  «        y c c}w )NÚForCausalLMrX   c              3  ó@   K  — | ]  \  }}d |v rt        |«      –— Œ y­w)ÚnormN)Útype)Ú.0ÚnameÚmodules      r9   ú	<genexpr>z$MtpModel.__init__.<locals>.<genexpr>{  s'   è ø€ ò 
á��fØ˜‰~ô ��Lñ
ùs   ‚TFÚchain_hidden_post_normr¢   )r1   rF   rR   Úget_mtp_configÚ	loss_typeÚnum_mtp_layersÚget_decoderr¿   ÚlayersÚnextÚnamed_modulesr¤   Úuse_shared_post_normÚhasattrrÄ   rK   Ú
ModuleListÚranger    rN   r¥   Úshared_post_normÚtie_with_main_modelrP   )r3   Ú
main_modelrÇ   Ú
base_modelÚ	layer_clsr¬   Úkr+   s          €r9   rF   zMtpModel.__init__s  sC  ø€ Ü‰Ñ˜×*Ñ*×9Ñ9Ó;Ô<à&ˆŒØ,ˆÔà×+Ñ+Ó-ˆ
Ü˜×*Ñ*¨2Ñ.Ó/ˆ	Üñ 
à *× 1Ñ 1°"Ñ 5× CÑ CÓ Eô
ó 
ˆð "ˆÔØ$)ˆÔ!Ü�4—;‘;Ð 8Ô9Ø!&ˆDÔØ(,¯©×(JÑ(JˆDÔ%ô —m‘mÜX]Ð^lÓXmÖnÐSTŒX�d—k‘k 9¨h¸¸4×;MÑ;MÕNÒnó
ˆŒð ×$Ò$Ù$,¨T¯[©[×-DÑ-DÈ$Ï+É+×JbÑJbÔ$cˆDÔ!ð 	× Ñ  Ô,à�‰Õùò os   Ã.*F	c                ó”   — |j                  «       | _        |j                  | _        |j	                  «       }t        |dd«      | _        y)z8Tie the embedding/head/rotary layer with the main model.Ú
rotary_embN)r†   r…   Úlm_headÚshared_headrÈ   rb   r×   )r3   rÒ   rÓ   s      r9   rÑ   zMtpModel.tie_with_main_model“  sC   € ð '×;Ñ;Ó=ˆÔØ%×-Ñ-ˆÔð  ×+Ñ+Ó-ˆ
Ü! *¨l¸DÓAˆ�r:   c                óÌ   — t        | j                  dd«      }|�||z  }| j                  |«      }t        | j                  dd«      }|�||j                  d   k  r	|dd|…f   }|S )z[Apply the shared head the same way the main model does (muP scaling, unpadded vocab slice).Úlogits_mup_width_multiplierNÚunpadded_vocab_sizerX   .)rb   rR   rÙ   rd   )r3   r`   Ú
multiplierr\   rÜ   s        r9   Ú_project_to_logitszMtpModel._project_to_logits�  s|   € ä˜TŸ[™[Ð*GÈÓNˆ
ØÐ!Ø)¨JÑ6ˆMØ×!Ñ! -Ó0ˆÜ% d§k¡kÐ3HÈ$ÓOÐØÐ*Ð/BÀVÇ\Á\ÐRTÑEUÒ/UØ˜CÐ!5Ð"5Ð!5Ð5Ñ6ˆFØˆr:   c                ó¼  — | j                   |d|||dœ}t        | j                  |   dd«      }i }|�Q|t        v rIt        |   }t	        |t
        «      r$|j                  «       D ]  \  }	}
 |
d
i |¤Ž||	<   Œ n |d
i |¤Ž||<   nt        d
i |¤Ž|d<   t        |«      dkD  rt        d«      ‚dddd	œ}|j                  «       D ��ci c]  \  }}||   |“Œ }}}|S c c}}w )zÝ
        Create the (potentially several) masks required for layer `layer_idx`. This relies on the `layer_type`
        attribute of the mtp layer if any, otherwise simply create a causal mask for full attention.
        N)rR   rW   rU   r%   rV   r­   Ú
layer_typeÚfull_attentionr€   zLYou should have at most 2 masks, 1 for attention, and 1 for linear attentionrU   Ú	conv_mask)rá   Úsliding_attentionÚlinear_attention© )
rR   rb   rÉ   r   Ú
isinstanceÚdictÚitemsr   Úlenrf   )r3   r­   rW   Ú	mtp_cacherV   Úmask_kwargsÚmtp_layer_typeÚmasksÚmask_functionÚactual_patternÚactual_functionÚ%internal_layer_expected_kwarg_mappingrÕ   Úvs                 r9   Úcreate_masks_for_mtp_layerz#MtpModel.create_masks_for_mtp_layer¨  s  € ð —k‘kØ*Ø"Ø(Ø(à"ñ
ˆô ! §¡¨YÑ!7¸ÀtÓLˆØˆØÐ%¨.Ô<bÑ*bÜBÀ>ÑRˆMä˜-¬Ô.Ø7D×7JÑ7JÓ7Lò KÑ3�N OÙ,;Ñ,J¸kÑ,J�E˜.Ò)ñKñ )6Ñ(D¸Ñ(D��nÒ%ä&8Ñ&G¸;Ñ&GˆEÐ"Ñ#äˆu‹:˜Š>ÜÐkÓlÐlð /Ø!1Ø +ñ1
Ð-ð JOÏÉË×WÁÀÀAÐ6°qÑ9¸1Ñ<ÐWˆÑWàˆùó Xs   ÃCc
                ó
  — |j                   d   }g }g }d}t        | j                  «      D �]£  \  }}| j                  |«      j	                  |j
                  «      }| j                  �| j                  ||¬«      nd}| j                  ||||«      } |||f|||dœ|¤|
¤Ž}| j                  r| j                  |«      }|€t        dd«      nt        dd«      }| j                  |dd…|dd…f   «      }|�gt        j                  j                  |d|fd¬«      d|d…f   j                  «       }| | j                   ||f| j"                  j$                  |d	œ|
¤Žz  }|j'                  |«       |dd…ddd…f   j	                  |j
                  ¬
«      }|�(|	�& ||	|j	                  t(        j*                  «      «      }|rHt        j                  j-                  dt(        j*                  ¬«      }t)        j.                  |d¬«      }nt)        j0                  dd¬«      }|j'                  |«       t)        j2                  |dd…dd…f   |gd¬«      }t)        j2                  |dd…dd…f   |j5                  |d«      gd¬«      }t)        j2                  |dd…dd…f   |dd…dd…f   dz   gd¬«      }|	€�Œ‹t)        j2                  |	|gd¬«      }	�Œ¦ t)        j2                  |d¬«      }t)        j2                  |d¬«      }|||fS )a‡  
        Sample 1 new token for each mtp layers present in this model. Note that the inputs are assumed to be already sliced and correct
        here, i.e. if the main model just processed inputs corresponding to tokens at positions [N-1, N] in the sequence, then from it
        you draft a new token for position N+1, and the `input_ids`/`position_ids`/`attention_mask` here are assumed to correspond to
        data for tokens at positions [N, N+1], i.e. shifted by 1 from the main model, by the newly drafted token. The `last_hidden_states`
        though will correspond to the same as the main model, i.e. positions [N-1, N] in the sequence length dimension.

        `full_input_ids` correspond to the full sequence of `input_ids`, which is used in case we have any `logits_processor` as some
        processors may require to check the length/value of the full previous sequence of ids.
        r   N)rV   )r°   rV   r%   rX   iœÿÿÿ)rˆ   .)Ú
vocab_sizeÚshift_labelsr[   )rŒ   rZ   r   )Únum_samplesT)rŒ   Úkeepdimr‹   )rd   Ú	enumeraterÉ   r…   rg   rY   r×   ró   rÌ   rÐ   ÚslicerÞ   rK   Ú
functionalÚpadr‘   rl   rR   rõ   Úappendrh   Úfloat32ÚsoftmaxÚmultinomialrk   r±   Únew_ones)r3   rm   Úlast_hidden_statesrU   rV   rê   r]   Ú	do_sampleÚlogits_processorÚfull_input_idsr5   ro   Údrafted_logitsÚdrafted_tokensr_   ÚiÚ	mtp_layerrW   r°   rí   Úslice_indicesr\   rö   Únext_token_logitsÚnext_token_scoresÚprobsÚnext_mtp_tokenÚnew_candidate_idsÚcandidate_logitss                                r9   rs   zMtpModel.forwardÕ  s+  € ð0 —_‘_ QÑ'ˆ
àˆØˆØˆÜ% d§k¡kÓ2ó 6	U‰LˆAˆyà ×-Ñ-¨iÓ8×;Ñ;Ð<N×<UÑ<UÓVˆMàMQÏ_É_ÐMh�—‘ ¸L�ÔIÐnrð  ð
 ×3Ñ3°A°}ÀiÐQ]Ó^ˆEá!*ØØ"ð"ð %8Ø)Ø )ñ"ð ð"ð ñ"Ðð ×(Ò(Ø%)×%:Ñ%:Ð;MÓ%NÐ"ð 06¨~œE " dœOÄ5ÈÈtÓCTˆMØ×,Ñ,Ð-?ÂÀ=ÒRSÐ@SÑ-TÓUˆFð Ð!ä!Ÿ}™}×0Ñ0°¸!¸Q¸ÀtÐ0ÓLÈSÐRSÑRTÈWÑU×`Ñ`Ób�ØÐ*˜×*Ñ*Ø˜FðØ/3¯{©{×/EÑ/EÐT`ñØdjññ �ð
 ×!Ñ! &Ô)à &¢q¨"ªa xÑ 0× 3Ñ 3¸9×;KÑ;KÐ 3Ó LÐØÐ+°Ð0JÙ$4°^ÐEV×EYÑEYÔZ_×ZgÑZgÓEhÓ$iÐ!ÙÜŸ™×-Ñ-Ð.?ÀRÌuÏ}É}Ð-Ó]�Ü!&×!2Ñ!2°5ÀaÔ!H‘ä!&§¡Ð.?ÀRÐQUÔ!V�Ø×!Ñ! .Ô1ô Ÿ	™	 9ªQ°±¨UÑ#3°^Ð"DÈ"ÔMˆIÜ"ŸY™Y¨²q¸!¹"°uÑ(=¸~×?VÑ?VÐWaÐcdÓ?eÐ'fÐlnÔoˆNÜ Ÿ9™9 l²1°a±b°5Ñ&9¸<ÊÈ2É3ÈÑ;OÐRSÑ;SÐ%TÐZ\Ô]ˆLð Ò)Ü!&§¡¨N¸NÐ+KÐQSÔ!T’ðm6	Uôp "ŸI™I n¸!Ô<ÐÜ Ÿ9™9 ^¸Ô;ÐØ Ð"2°DÐ8Ð8r:   c           
     óŠ  — |j                   j                  }|j                   j                  «       j                  }|j                  j                  «       }g }|D ]I  }t        j                  d|«      }	|	�t        |	j                  d«      «      |k  rŒ9|j                  |«       ŒK t        |«      dk(  r"t        |j                  j                  › d�«      ‚t        j                  dj!                  d„ |D «       «      «      }
|j                   j                  «       j"                  }| j%                  |j                   j&                  ddd «      }t)        |«      5   | ||«      }d d d «       t+        |d d dd d¬	«      \  }}|}d }|�w|d
   j-                  «       D ��ci c]  \  }}|
j                  |«      €Œ||“Œ }}}|D �cg c]4  }t.        j0                  j3                  |«      |j5                  «       v sŒ3|‘Œ6 }}i }t7        «       }|D ]s  }t9        |dd¬«      }|j;                  |«       |j=                  «       D ]?  }|�||j=                  «       v s|�Œ|
j                  |«      €Œ,|j?                  |«      ||<   ŒA Œu tA        |||z   «      D �cg c]  }tC        d|› d�d||z
  › d�¬«      ‘Œ }}|jE                  tG        d¬«      «       |jE                  |jH                  «       tK        ||tM        |||j                   j&                  ¬«      d ¬«      \  }}|D ]  }|jO                  d d d «       Œ |jQ                  |«       |jR                  r1tU        d| j                  › d|› dtW        |jR                  «      › �«      ‚|jY                  |«       t[        ||d|t\        ¬«       |S # 1 sw Y   �ŒIxY wc c}}w c c}w c c}w )Nz\.(\d+)r   r   z7 does not seem to register any known MTP layer patternsú|c              3  ó(   K  — | ]
  }d |› d�–— Œ y­w)ú(ú)Nrå   )rÀ   Úpatterns     r9   rÃ   z+MtpModel.from_pretrained.<locals>.<genexpr>?  s   è ø€ Ò'Z¸G¨1¨W¨I°Q¬Ñ'Zùs   ‚FT)Úpretrained_model_name_or_pathÚvariantÚ	gguf_fileÚuse_safetensorsÚ
user_agentÚis_remote_codeÚ
weight_mapÚptÚcpu)Ú	frameworkrY   zlayers.r(   z.mtp_block.)Úsource_patternsÚtarget_patterns)Ú
add_legacy)Úweight_mappingÚ
device_maprZ   )rB   Ú
state_dictÚload_configÚtp_planzThe following z weights are missing from z9 (checkpoint keys not matching the conversion mapping?): )rB   r  Úignore_mismatched_sizesÚloading_infor.   )/rR   Úname_or_pathrM   Únum_hidden_layersÚ"_keys_to_ignore_on_load_unexpectedÚcopyÚreÚsearchrµ   Úgrouprý   ré   rf   r+   r,   ÚcompileÚjoinrÇ   Úget_init_contextrZ   r   r   rè   ÚosÚpathÚbasenameÚvaluesÚsetr   ÚaddÚkeysÚ	get_slicerÏ   r
   Úextendr	   Ú_weight_conversionsr   r   Ú__exit__Ú#_adjust_missing_and_unexpected_keysÚmissing_keysÚRuntimeErrorÚsortedrÑ   r   r.   )ÚclsrÒ   r%  r5   r  r,  Úmtp_patternsÚfinal_mtp_patternsr  Úmatch_objectÚ	mtp_regexrÇ   ÚcontextsÚ	mtp_modelÚcheckpoint_filesÚsharded_metadataÚ	mtp_filesÚmtp_weight_maprÕ   rò   ÚfileÚmtp_state_dictÚall_pointerÚfile_pointerÚNÚweight_conversionsr*  Ú_s                               r9   Úfrom_pretrainedzMtpModel.from_pretrained.  s  € à(2×(9Ñ(9×(FÑ(FÐ%Ø&×-Ñ-×=Ñ=Ó?×QÑQÐð "×DÑD×IÑIÓKˆð  ÐØ#ò 	/ˆGÜŸ9™9 Z°Ó9ˆLØÐ'¬C°×0BÑ0BÀ1Ó0EÓ,FÐIZÒ,ZØØ×%Ñ% gÕ.ð		/ô
 Ð!Ó" aÒ'Ü 
× 4Ñ 4× =Ñ =Ð>Ð>uÐvÓwÐwÜ—J‘J˜sŸx™xÑ'ZÐGYÔ'ZÓZÓ[ˆ	ð $×*Ñ*×:Ñ:Ó<×KÑKˆØ×'Ñ'¨
×(9Ñ(9×(?Ñ(?ÀÈÈtÓTˆÜ˜XÓ&ñ 	8Ù˜J¨Ó7ˆI÷	8ô .LØ*GØØØ ØØ ô.
Ñ*ÐÐ*ð %ˆ	ØˆàÐ'à!1°,Ñ!?×!EÑ!EÓ!G÷Ù˜˜AÈ9×K[ÑK[Ð\]ÓK^ÑKj��1‘ðˆNñ ð +;Öp $¼b¿g¹g×>NÑ>NÈtÓ>TÐXf×XmÑXmÓXoÒ>ošÐpˆIÐpð ˆÜ“eˆØò 	BˆDÜ$ T°TÀ%ÔHˆLØ�O‰O˜LÔ)Ø!×&Ñ&Ó(ò B�à"Ð.°1¸×8KÑ8KÓ8MÑ3MØ"Ñ*¨y×/?Ñ/?ÀÓ/BÑ/Nà(4×(>Ñ(>¸qÓ(A�N 1Ò%ñBð	Bô$ Ð,Ð.?À.Ñ.PÓQö	
ð ô Ø")¨!¨¨A À'È!ÐN_ÑJ_ÐI`Ð`kÐ@löð
Ðð 
ð 	×!Ñ!Ô">¸yÐUZÔ"[Ô\Ø×!Ñ! *×"@Ñ"@ÔAô ?ØØ%Ü+Ø1¸jÐPZ×PaÑPa×PgÑPgôð ô
‰ˆ�að ò 	)ˆAØ�J‰J�t˜T 4Õ(ð	)ð 	×5Ñ5°lÔCð ×$Ò$ÜØ  §¡ Ð.HÐIfÐHgð hKÜKQÐR^×RkÑRkÓKlÐJmðoóð ð 	×%Ñ% jÔ1äØØ*GØ$)Ø%Üõ	
ð Ð÷c	8ñ 	8üó ùò qùò&
s*   Å
N(ÆN5Æ3N5Æ?4N;Ç4N;ÊO Î(N2c                 ó   — y©NTrå   ©rD  s    r9   Ú_can_set_attn_implementationz%MtpModel._can_set_attn_implementation—  ó   € ð r:   c                 ó   — yrX  rå   rY  s    r9   Ú_can_set_experts_implementationz(MtpModel._can_set_experts_implementationœ  r[  r:   )rÒ   r   rÇ   rµ   )rÒ   r   )r`   r·   r{   r·   )r­   rµ   rW   r·   rê   r   rV   r·   )NFNN)rm   r·   r  r·   rU   rv   rV   rv   rê   zMtpCache | Noner]   ru   r  r¶   r  zLogitsProcessorList | Noner  rv   r{   r¸   rƒ   )rÒ   r   r{   rº   )r{   r¶   )r,   r;   r<   Ú_supports_sdpaÚ_supports_flex_attnÚ_supports_flash_attnr-  Ú_keys_to_ignore_on_load_missingrF   rÑ   rÞ   ró   rs   ÚclassmethodrV  rZ  r]  r>   r?   s   @r9   rº   rº   h  s%  ø„ ð €NØÐØÐà*CÐEZÐ)[Ð&à';Ð=RÐ&SÐ#õó@Bó	ð+Øð+Ø-9ð+ØFNð+Ø^jó+ðh +/àØ7;Ø.2ðW9àðW9ð )ðW9ð ,ð	W9ð
 *ðW9ð #ðW9ð (ðW9ð ðW9ð 5ðW9ð ,ðW9ð 
+óW9ðr ófó ðfðP òó ðð òó ôr:   rº   );Ú
__future__r   r5  r/  Ú	functoolsr   Útypingr   rh   Útorch.nnrK   Úsafetensorsr   Úcache_utilsr   Úconversion_mappingr	   Úcore_model_loadingr
   r   Úmasking_utilsr   r   Úmodeling_outputsr   r   r   r   Úmodeling_utilsr   r   r   Úmodels.autor   Úprocessing_utilsr   Úutilsr   r   r   r   r   Úutils.loading_reportr   r   Úconfiguration_utilsr   Úgeneration.logits_processr   Ú
get_loggerr,   r.   ÚModuler!   rA   r~   r—   r    rº   rå   r:   r9   ú<module>rv     sð   ðõ #ã 	Û 	Ý Ý  ã Ý Ý !å Ý <ß Tß U÷ó ÷ aÑ `Ý "Ý $ß aÕ aÝ 7ñ Ý%Ý5Ý>ð 
ˆ×	Ñ	˜HÓ	%€ô;1 §¡ô ;1ð| ÷G
ð G
ó ðG
ðT ÷9
ð 9
ó ð9
ðx ÷;
ð ;
ó ð;
ô|-ˆr�y‰yô -ô`wˆõ wr:   