+
    œ°³jì  ã                   ó`  € ^ RI t ^ RIHt ^ RIHt ^ RIt^ RIHt ^ RIHu H	t
 ^RIHt ^RIHt ^RIHtHt ^RIHt ^RIHtHtHtHt ^R	IHt ^R
IHtHtHt ^RI H!t! ^RI"H#t#H$t$ ^RI%H&t&H't' ^RI(H)t) ^RI*H+t+H,t,H-t-H.t.H/t/ ^RI0H1t1 ^RI2H3t3 ^RI4H5t5H6t6H7t7H8t8 ]-! RR7      ] ! R R]#4      4       4       t9]-! RR7      ] ! R R]+4      4       4       t:]! R4       ! R R]Pv                  4      4       t< ! R R]Pv                  4      t=R R  lt>RRR! R" llt? ! R# R$]Pv                  4      t@ ! R% R&]Pv                  4      tA] ! R' R(]Pv                  4      4       tB ! R) R*]Pv                  4      tC ! R+ R,]Pv                  4      tD ! R- R.]Pv                  4      tER/ tF]! R0R14      RSR2 R3 ll4       tG]! R4R14      RSR5 R6 ll4       tH]! ]G]H.4       ! R7 R8]Pv                  4      4       tI ! R9 R:]!4      tJ]- ! R; R<]'4      4       tK]- ! R= R>]K4      4       tL]- ! R? R@]K]4      4       tM ! RA RB]Pv                  4      tN]- ! RC RD]K4      4       tO ! RE RF]Pv                  4      tPRG RH ltQRTRI RJ lltR]- ! RK RL]K4      4       tS]-! RMR7       ! RN RO]K4      4       tT]-! RMR7       ! RP RQ]K]4      4       tU. RUOtVR# )Vé    N)ÚCallable)Ú	dataclass)Úinitialization)ÚACT2FN)ÚCacheÚDynamicCache)ÚGenerationMixin)Úuse_experts_implementationÚuse_kernel_forward_from_hubÚ&use_kernel_func_from_hub_with_fallbackÚuse_kernelized_func)Úforce_accelerate_hooks)Úcreate_causal_maskÚcreate_recurrent_attention_maskÚ!create_sliding_window_causal_mask)ÚGradientCheckpointingLayer)ÚBaseModelOutputWithPastÚBaseModelOutputWithPooling)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚModelOutputÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚtorch_compilable_check)Úmerge_with_config_defaults)Úcapture_outputs)ÚInklingAudioConfigÚInklingConfigÚInklingTextConfigÚInklingVisionConfigzL
    Base class for Inkling outputs, with hidden states and attentions.
    ©Úcustom_introc                   ó4   a € ] tR t^4t o RtRtV 3R ltRtV tR# )ÚInklingModelOutputWithPasta  
image_hidden_states (`torch.FloatTensor`, *optional*):
    A `torch.FloatTensor` of size `(batch_size, num_images, sequence_length, hidden_size)`.
    image_hidden_states of the model produced by the vision encoder and after projecting the last hidden state.
Nc                óH   <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   # )é   NÚimage_hidden_states)ÚtorchÚFloatTensor)ÚformatÚ__classdict__s   "€Úm/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/inkling/modeling_inkling.pyÚ__annotate__Ú'InklingModelOutputWithPast.__annotate__4   s   ø‡ ‚ ñ ×*Ñ*¨TÕ1Ñ8ò ó    © )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r)   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r-   s   @r.   r&   r&   4   s   ø‡ € ñð 59Ð÷ ƒ r1   r&   zS
    Base class for Inkling causal language model (or autoregressive) outputs.
    c                   óH   a € ] tR t^Dt o RtRtRtRtRtRt	Rt
V 3R ltRtV tR# )ÚInklingCausalLMOutputWithPasta  
loss (`torch.FloatTensor` of shape `(1,)`, *optional*, returned when `labels` is provided):
    Language modeling loss (for next-token prediction).
logits (`torch.FloatTensor` of shape `(batch_size, sequence_length, config.text_config.vocab_size)`):
    Prediction scores of the language modeling head (scores for each vocabulary token before SoftMax).
past_key_values (`Cache`, *optional*, returned when `use_cache=True` is passed or when `config.use_cache=True`):
    It is a [`~cache_utils.Cache`] instance. For more details, see our [kv cache guide](https://huggingface.co/docs/transformers/en/kv_cache).

    Contains pre-computed hidden-states (key and values in the self-attention blocks) that can be used (see
    `past_key_values` input) to speed up sequential decoding.
image_hidden_states (`torch.FloatTensor`, *optional*):
    A `torch.FloatTensor` of size `(batch_size, num_images, sequence_length, hidden_size)`.
    image_hidden_states of the model produced by the vision encoder after projecting last hidden state.
Nc                ó:  <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[R,          ;R&   S[S[ P                  ,          R,          ;R&   S[S[ P                  ,          R,          ;R&   S[ P                  R,          ;R&   # )r(   NÚlossÚlogitsÚpast_key_valuesÚhidden_statesÚ
attentionsr)   )r*   r+   r   Útuple)r,   r-   s   "€r.   r/   Ú*InklingCausalLMOutputWithPast.__annotate__D   s˜   ø‡ ‚ ñ, ×
Ñ
˜dÕ
"Ñ)ñ- ñ. ×Ñ Õ$Ñ+ñ/ ñ0 ˜T•\Ñ(ñ1 ñ2 ™×*Ñ*Õ+¨dÕ2Ñ9ñ3 ñ4 ‘e×'Ñ'Õ(¨4Õ/Ñ6ñ5 ñ6 ×*Ñ*¨TÕ1Ñ8ò7 r1   r2   )r3   r4   r5   r6   r7   r?   r@   rA   rB   rC   r)   r8   r9   r:   r;   s   @r.   r=   r=   D   s2   ø‡ € ñð &*€DØ'+€FØ$(€OØ59€MØ26€JØ48Ð÷7 ƒ r1   r=   ÚRMSNormc                   óZ   a a€ ] tR t^bt oRV3R lV 3R llltV3R lR ltR tRtVtV ;t	# )ÚInklingRMSNormc                ó$   <€ V ^8„  d   QhRS[ RR/# )r(   ÚepsÚreturnN)Úfloat)r,   r-   s   "€r.   r/   ÚInklingRMSNorm.__annotate__d   s   ø€ ÷ $ñ $©ð $¸$ñ $r1   c                óŽ   <€ \         SV `  4        \        P                  ! \        P
                  ! V4      4      V n        W n        R# )z-
InklingRMSNorm is equivalent to T5LayerNorm
N)ÚsuperÚ__init__ÚnnÚ	Parameterr*   ÚonesÚweightÚvariance_epsilon)ÚselfÚhidden_sizerJ   Ú	__class__s   &&&€r.   rP   ÚInklingRMSNorm.__init__d   s/   ø€ ô 	‰ÑÔÜ—l’l¤5§:¢:¨kÓ#:Ó;ˆŒØ #Ör1   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r(   rB   rK   ©r*   ÚTensor)r,   r-   s   "€r.   r/   rM   l   s#   ø€ ÷ ;ñ ;¡U§\¡\ð ;±e·l±lñ ;r1   c                ó:  € VP                   pVP                  \        P                  4      pVP	                  ^4      P                  RRR7      pV\        P                  ! W0P                  ,           4      ,          pV P                  VP                  V4      ,          # )r(   T)Úkeepdiméÿÿÿÿ)	ÚdtypeÚtor*   Úfloat32ÚpowÚmeanÚrsqrtrU   rT   )rV   rB   Úinput_dtypeÚvariances   &&  r.   ÚforwardÚInklingRMSNorm.forwardl   sw   € Ø#×)Ñ)ˆØ%×(Ñ(¬¯©Ó7ˆØ ×$Ñ$ QÓ'×,Ñ,¨R¸Ð,Ó>ˆØ%¬¯ª°H×?TÑ?TÕ4TÓ(UÕUˆØ�{‰{˜]×-Ñ-¨kÓ:Õ:Ð:r1   c                ó^   € \        V P                  P                  4       R V P                   2# )z, eps=)rD   rT   ÚshaperU   )rV   s   &r.   Ú
extra_reprÚInklingRMSNorm.extra_reprs   s*   € Ü˜Ÿ™×)Ñ)Ó*Ð+¨6°$×2GÑ2GÐ1HÐIÐIr1   )rU   rT   )ç�íµ ÷Æ°>)
r3   r4   r5   r6   rP   ri   rm   r9   r:   Ú__classcell__©rX   r-   s   @@r.   rH   rH   b   s%   ù‡ € ÷$õ $÷;ð ;÷Jò Jr1   rH   c                   óT   a a€ ] tR t^wt oRtV3R lV 3R lltV3R lR ltRtVtV ;t	# )ÚInklingRelativeLogitsal  hidden states conditioned relative position bias. `proj` is a trained bank of bias-vs-distance profiles; each token's
`relative_states` mixes them into one bias value per backward distance
(`sglang RelLogitsProj` + the FA4 `score_mod`, materialized densely). The bias is zero
outside `0 <= distance < rel_extent`; causality and padding stay in the attention mask.
c                ó&   <€ V ^8„  d   QhRS[ RS[ /# )r(   Úd_relÚ
rel_extent©Úint)r,   r-   s   "€r.   r/   Ú"InklingRelativeLogits.__annotate__~   s   ø€ ÷ Añ A™cð A©sñ Ar1   c                óŽ   <€ \         SV `  4        W n        \        P                  ! \
        P                  ! W4      4      V n        R # ©N)rO   rP   rv   rQ   rR   r*   ÚemptyÚproj)rV   ru   rv   rX   s   &&&€r.   rP   ÚInklingRelativeLogits.__init__~   s,   ø€ Ü‰ÑÔØ$ŒÜ—L’L¤§¢¨UÓ!?Ó@ˆŽ	r1   c                ó‚   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  RS[ P                  /# )r(   Úrelative_statesÚquery_positionsÚkey_positionsrK   r\   )r,   r-   s   "€r.   r/   ry   ƒ   sI   ø€ ÷ ^ñ ^áŸ™ð^ñ Ÿ™ð^ñ —|‘|ð	^ñ
 
�‰ñ^r1   c                óˆ  € WP                   ,          P                  ^^4      pVR,          VR,          ,
          R,          pVP                  ^ V P                  ^,
          4      P                  ! . VP
                  R,          ORNRN5!  pVP                  RV4      pVP                  V^ 8  WPP                  8¬  ,          R4      # )é   :Nr(   Nç        )ºNNNN)Nr†   )NNr†   r†   r`   )r}   Ú	transposeÚclamprv   Úexpandrl   ÚgatherÚmasked_fill)rV   r€   r�   r‚   Ú
rel_logitsÚdistanceÚgather_indexÚposition_biass   &&&&    r.   ri   ÚInklingRelativeLogits.forwardƒ   s¬   € ð &¯	©	Õ1×<Ñ<¸QÀÓBˆ
Ø# GÕ,¨}¸WÕ/EÕEÐGWÕXˆØ—~‘~ a¨¯©¸1Õ)<Ó=×DÒDÐcÀj×FVÑFVÐWYÕFZÐcÐ\^ÐcÐ`bÓcˆØ"×)Ñ)¨"¨lÓ;ˆØ×(Ñ(¨(°Q©,¸8ÇÁÑ;VÕ)WÐY\Ó]Ð]r1   )r}   rv   ©
r3   r4   r5   r6   r7   rP   ri   r9   r:   rp   rq   s   @@r.   rs   rs   w   s(   ù‡ € ñ÷Aó A÷
^÷ ^ð ^r1   rs   c                ód   € V ^8„  d   QhR\         P                  R\        R\         P                  /# )r(   rB   Ún_reprK   )r*   r]   rx   )r,   s   "r.   r/   r/   ‘   s.   € ÷ 	Uñ 	UœUŸ\™\ð 	U´#ð 	U¼%¿,¹,ñ 	Ur1   c                ó˜   € V P                   w  r#rEV^8X  d   V # V R,          P                  W#WV4      p V P                  W#V,          WE4      # )zÈ
This is the equivalent of torch.repeat_interleave(x, dim=1, repeats=n_rep). The hidden states go from (batch,
num_key_value_heads, seqlen, head_dim) to (batch, num_attention_heads, seqlen, head_dim)
)r†   r†   Nr†   r†   )rl   r‰   Úreshape)rB   r“   ÚbatchÚnum_key_value_headsÚslenÚhead_dims   &&    r.   Ú	repeat_kvrš   ‘   sU   € ð
 2?×1DÑ1DÑ.€E Ø�„zØÐØ!Ð"2Õ3×:Ñ:¸5ÐW\ÐdlÓm€MØ× Ñ  ¸eÕ(CÀTÓTÐTr1   c                ó  € V ^8„  d   QhR\         P                  R\        P                  R\        P                  R\        P                  R\        P                  R,          R\        R\        R	\        P                  R,          /# )
r(   ÚmoduleÚqueryÚkeyÚvalueÚattention_maskNÚscalingÚdropoutr�   )rQ   ÚModuler*   r]   rL   )r,   s   "r.   r/   r/   �   sz   € ÷ %ñ %Ü�I‰Ið%ä�<‰<ð%ô 
�‰ð%ô �<‰<ð	%ô
 —L‘L 4Õ'ð%ô ð%ô ð%ô —<‘< $Õ&ñ%r1   c                 ó:  € \        W P                  4      p	\        W0P                  4      p
\        P                  ! WP	                  ^^4      4      V,          pVe	   W·,           pVe	   W´,           p\
        P                  P                  VR\        P                  R7      P                  VP                  4      p\
        P                  P                  W¶V P                  R7      p\        P                  ! Wº4      pVP	                  ^^4      P                  4       pWË3# )r(   )Údimra   )ÚpÚtrainingr`   )rš   Únum_key_value_groupsr*   Úmatmulr‡   rQ   Ú
functionalÚsoftmaxrc   rb   ra   r¢   r§   Ú
contiguous)rœ   r�   rž   rŸ   r    r¡   r¢   r�   ÚkwargsÚ
key_statesÚvalue_statesÚattn_weightsÚattn_outputs   &&&&&&&&,    r.   Úeager_attention_forwardr²   �   sà   € ô ˜3× ;Ñ ;Ó<€JÜ˜U×$?Ñ$?Ó@€Lä—<’< ×';Ñ';¸A¸qÓ'AÓBÀWÕL€LØÒ Ø#Õ3ˆØÒ!Ø#Õ4ˆä—=‘=×(Ñ(¨¸2ÄUÇ]Á]Ð(ÓS×VÑVÐW\×WbÑWbÓc€LÜ—=‘=×(Ñ(¨È6Ï?É?Ð(Ó[€LÜ—,’,˜|Ó:€KØ×'Ñ'¨¨1Ó-×8Ñ8Ó:€KàÐ$Ð$r1   c                   óT   a a€ ] tR t^¹t oV3R lV 3R lltRV3R lR lltRtVtV ;t# )ÚInklingAttentionc                ó&   <€ V ^8„  d   QhRS[ RS[/# ©r(   ÚconfigÚ	layer_idx©r!   rx   )r,   r-   s   "€r.   r/   ÚInklingAttention.__annotate__º   s    ø€ ÷ Tñ TÑ0ð T¹Sñ Tr1   c                óP  <€ \         SV `  4        Wn        W n        VP                  V P                  ,          R 8H  V n        V P
                  '       d   VP                  MVP                  V n        V P
                  '       d   VP                  MVP                  V n
        V P
                  '       d   VP                  MVP                  V n        V P                  V P                  ,          V n        V P
                  '       d   VP                  MRV n        V P
                  '       d   VP                  MVP                   V n        RV P                  ,          V n        VP$                  V n        RV n        \(        P*                  ! VP,                  V P                  V P                  ,          RR7      V n        \(        P*                  ! VP,                  V P                  V P                  ,          RR7      V n        \(        P*                  ! VP,                  V P                  V P                  ,          RR7      V n        \(        P*                  ! VP,                  V P                  VP4                  ,          RR7      V n        \(        P*                  ! V P                  V P                  ,          VP,                  RR7      V n        \;        V P                  V P                  ,          VP<                  V^ R7      V n        \;        V P                  V P                  ,          VP<                  V^R7      V n         \C        V P                  VPD                  R7      V n#        \C        V P                  VPD                  R7      V n$        \K        VP4                  V P                   4      V n&        R# )Úhybrid_slidingNç      ð?TF©Úbias)Úconv_idx©rJ   )'rO   rP   r·   r¸   Úlayer_typesÚ
is_slidingÚswa_head_dimr™   Úswa_num_attention_headsÚnum_attention_headsÚ	num_headsÚswa_num_key_value_headsr—   r¨   Úsliding_window_sizeÚsliding_windowrv   r¡   Úattention_dropoutÚ	is_causalrQ   ÚLinearrW   Úq_projÚk_projÚv_projru   Úr_projÚo_projÚInklingShortConvolutionÚsconv_kernel_sizeÚk_sconvÚv_sconvrH   Úrms_norm_epsÚq_normÚk_normrs   Úrel_logits_proj©rV   r·   r¸   rX   s   &&&€r.   rP   ÚInklingAttention.__init__º   sm  ø€ Ü‰ÑÔØŒØ"ŒØ ×,Ñ,¨T¯^©^Õ<Ð@PÑPˆŒØ/3¯¯¨˜×+Ò+ÀFÇOÁOˆŒØ;?¿?¿?¸?˜×7Ò7ÐPV×PjÑPjˆŒØEIÇ_Ç_À_ 6×#AÒ#AÐZ`×ZtÑZtˆÔ Ø$(§N¡N°d×6NÑ6NÕ$NˆÔ!Ø<@¿O¿O¸O˜f×8Ò8ÐQUˆÔØ8<¿¿¸˜&×4Ò4ÈV×M^ÑM^ˆŒà˜TŸ]™]Õ*ˆŒØ!'×!9Ñ!9ˆÔØˆŒä—i’i × 2Ñ 2°D·N±NÀTÇ]Á]Õ4RÐY^Ô_ˆŒÜ—i’i × 2Ñ 2°D×4LÑ4LÈtÏ}É}Õ4\ÐchÔiˆŒÜ—i’i × 2Ñ 2°D×4LÑ4LÈtÏ}É}Õ4\ÐchÔiˆŒÜ—i’i × 2Ñ 2°D·N±NÀVÇ\Á\Õ4QÐX]Ô^ˆŒÜ—i’i §¡°·±Õ >À×@RÑ@RÐY^Ô_ˆŒÜ.Ø×$Ñ$ t§}¡}Õ4°f×6NÑ6NÐPYÐdeô
ˆŒô /Ø×$Ñ$ t§}¡}Õ4°f×6NÑ6NÐPYÐdeô
ˆŒô % T§]¡]¸×8KÑ8KÔLˆŒÜ$ T§]¡]¸×8KÑ8KÔLˆŒÜ4°V·\±\À4Ç?Á?ÓSˆÖr1   c                ó   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  R,          RS[R,          RS[S[,          RS[S[ P                  S[ P                  R,          3,          /# ©r(   rB   r    NÚ	conv_maskrA   r­   rK   )r*   r]   r   r   r   rD   )r,   r-   s   "€r.   r/   rº   Ù   s†   ø€ ÷ A)ñ A)á—|‘|ðA)ñ Ÿ™ tÕ+ðA)ñ —<‘< $Õ&ð	A)ñ
  �ðA)ñ Ñ+Õ,ðA)ñ 
‰u�|‰|™UŸ\™\¨DÕ0Ð0Õ	1ñA)r1   c                ó¸  € VP                   R R
 p. VOR
NV P                  N5pV P                  V4      pV P                  V P	                  V4      WCR7      p	V P                  V P                  V4      WCR7      p
V P                  V4      pV P                  VP                  V4      4      P                  ^^4      pV P                  V	P                  V4      4      P                  ^^4      p	V
P                  V4      P                  ^^4      p
VP                   ^,          pVeX   VP                  WÀP                  4      w  rÞVP                  V P                  4      pVP                  WšV P                  4      w  ršMV	P                   ^,          p^ ^ rï\         P"                  ! WÑP$                  R7      V,           p\         P"                  ! WÁP$                  R7      V,           pVP                  ! . VOV P&                  NR
N5!  pV P)                  VVV4      pV P*                  '       Eg   V P,                  P.                  eï   V^,           P1                  4       pRV P,                  P2                  \         P4                  ! VV P,                  P.                  ,          P7                  RR7      4      ,          ,           pVP                  ^^R
^4      pVP1                  4       V,          P9                  VP:                  4      pVP1                  4       V,          P9                  VP:                  4      p\<        P>                  ! V P,                  P@                  \B        4      pT! V VV	V
V3RV PD                  '       g   RMV PF                  RV PH                  RV PJ                  R	V/VB w  ppVPL                  ! . VOR
N5!  PO                  4       pV PQ                  V4      pVV3# )N©rA   rß   ©Údevicer½   )Úminr¢   r…   r¡   rÊ   r�   r`   ))rl   r™   rÎ   rÕ   rÏ   rÖ   rÐ   rÑ   rØ   Úviewr‡   rÙ   Úget_mask_sizesr¸   Úget_query_offsetÚupdater*   Úarangerã   rÇ   rÚ   rÃ   r·   Úlog_scaling_n_floorrL   Úlog_scaling_alphaÚlogrˆ   rb   ra   r   Úget_interfaceÚ_attn_implementationr²   r§   rË   r¡   rÊ   r•   r¬   rÒ   )rV   rB   r    rß   rA   r­   Úinput_shapeÚhidden_shapeÚquery_statesr®   r¯   r€   Úq_lengthÚ	kv_lengthÚ	kv_offsetÚq_offsetÚkv_positionsÚq_positionsr�   Úeffective_nÚtauÚattention_interfacer±   r°   s   &&&&&,                  r.   ri   ÚInklingAttention.forwardÙ   s_  € ð $×)Ñ)¨#¨2Ð.ˆØ8˜Ð8 bÐ8¨$¯-©-Ñ8ˆà—{‘{ =Ó1ˆØ—\‘\ $§+¡+¨mÓ"<Èo�\Ósˆ
Ø—|‘| D§K¡K°Ó$>ÐP_�|ÓuˆØŸ+™+ mÓ4ˆà—{‘{ <×#4Ñ#4°\Ó#BÓC×MÑMÈaÐQRÓSˆØ—[‘[ §¡°Ó!>Ó?×IÑIÈ!ÈQÓOˆ
Ø#×(Ñ(¨Ó6×@Ñ@ÀÀAÓFˆà×%Ñ% aÕ(ˆØÒ&à#2×#AÑ#AÀ(ÏNÉNÓ#[Ñ ˆIØ&×7Ñ7¸¿¹ÓGˆHà'6×'=Ñ'=¸jÐX\×XfÑXfÓ'gÑ$ˆJ˜à"×(Ñ(¨Õ+ˆIØ"# Q�iä—|’| I×6JÑ6JÔKÈiÕWˆÜ—l’l 8×4HÑ4HÔIÈHÕTˆØ)×.Ò.ÐP°ÐP¸T¿^¹^ÐPÈRÓPˆØ×,Ñ,¨_¸kÈ<ÓXˆð ��‰ 4§;¡;×#BÑ#BÒ#NØ&¨�?×1Ñ1Ó3ˆKØ˜Ÿ™×5Ñ5¼¿	º	Ø˜tŸ{™{×>Ñ>Õ>×EÑEÈ#ÐEÓNó9õ õ ˆCð —(‘(˜1˜a  QÓ'ˆCØ(×.Ñ.Ó0°3Õ6×:Ñ:¸<×;MÑ;MÓNˆLØ*×0Ñ0Ó2°SÕ8×<Ñ<¸]×=PÑ=PÓQˆMä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØñ%
ð  $Ÿ}Ÿ}˜}‘C°$×2HÑ2Hð%
ð —L‘Lð%
ð  ×.Ñ.ð%
ð (ð%
ð ñ%
Ñ!ˆ�\ð "×)Ò)Ð;¨;Ð;¸Ó;×FÑFÓHˆØ—k‘k +Ó.ˆØ˜LÐ(Ð(r1   )rË   r·   r™   rÌ   rÃ   rÙ   rÏ   rÕ   r¸   rÇ   r¨   r—   rÒ   rØ   rÎ   rÑ   rv   rÚ   r¡   rÊ   rÐ   rÖ   ©NN©	r3   r4   r5   r6   rP   ri   r9   r:   rp   rq   s   @@r.   r´   r´   ¹   s#   ù‡ € ÷Tó T÷>A)÷ A)ò A)r1   r´   c                   óP   a a€ ] tR tRt oV3R lV 3R lltV3R lR ltRtVtV ;t# )Ú
InklingMLPi  c                ó    <€ V ^8„  d   QhRS[ /# ©r(   r·   ©r!   )r,   r-   s   "€r.   r/   ÚInklingMLP.__annotate__  s   ø€ ÷ 	8ñ 	8Ñ0ñ 	8r1   c                ó6  <€ \         SV `  4        Wn        VP                  V n        VP                  V n        \
        P                  ! V P                  V P                  R R7      V n        \
        P                  ! V P                  V P                  R R7      V n        \
        P                  ! V P                  V P                  R R7      V n	        \        VP                  ,          V n        \
        P                  ! \        P                  ! ^4      4      V n        R# ©Fr¾   N)rO   rP   r·   rW   Úintermediate_sizerQ   rÍ   Ú	gate_projÚup_projÚ	down_projr   Ú
hidden_actÚact_fnrR   r*   rS   Úglobal_scale©rV   r·   rX   s   &&€r.   rP   ÚInklingMLP.__init__  s½   ø€ Ü‰ÑÔØŒØ!×-Ñ-ˆÔØ!'×!9Ñ!9ˆÔÜŸš 4×#3Ñ#3°T×5KÑ5KÐRWÔXˆŒÜ—y’y ×!1Ñ!1°4×3IÑ3IÐPUÔVˆŒÜŸš 4×#9Ñ#9¸4×;KÑ;KÐRWÔXˆŒÜ˜V×.Ñ.Õ/ˆŒÜŸLšL¬¯ª°A«Ó7ˆÖr1   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r[   r\   )r,   r-   s   "€r.   r/   r  )  s#   ø€ ÷ 1ñ 1¡U§\¡\ð 1±e·l±lñ 1r1   c                ó°   € V P                  V P                  V P                  V4      4      V P                  V4      ,          4      pWP                  ,          # r{   )r	  r  r  r  r  ©rV   rB   s   &&r.   ri   ÚInklingMLP.forward)  sC   € ØŸ™ t§{¡{°4·>±>À-Ó3PÓ'QÐTX×T`ÑT`ÐanÓToÕ'oÓpˆØ×0Ñ0Õ0Ð0r1   )r  r·   r	  r  r  rW   r  r  rý   rq   s   @@r.   rÿ   rÿ     s   ù‡ € ÷	8ó 	8÷1÷ 1ð 1r1   rÿ   c                   óT   a a€ ] tR tRt oRtV3R lV 3R lltV3R lR ltRtVtV ;t	# )ÚInklingExpertsi.  z2Collection of expert weights stored as 3D tensors.c                ó    <€ V ^8„  d   QhRS[ /# r  r  )r,   r-   s   "€r.   r/   ÚInklingExperts.__annotate__2  s   ø€ ÷ 0ñ 0Ñ0ñ 0r1   c                ó  <€ \         SV `  4        VP                  V n        VP                  V n        VP                  V n        \        P                  ! \        P                  ! V P                  ^V P                  ,          V P
                  4      4      V n        \        P                  ! \        P                  ! V P                  V P
                  V P                  4      4      V n        \        VP                  ,          V n        R# )r(   N)rO   rP   Ún_routed_expertsÚnum_expertsrW   Ú
hidden_dimÚmoe_intermediate_sizeÚintermediate_dimrQ   rR   r*   r|   Úgate_up_projr	  r   r
  r  r  s   &&€r.   rP   ÚInklingExperts.__init__2  s­   ø€ Ü‰ÑÔØ!×2Ñ2ˆÔØ ×,Ñ,ˆŒØ &× <Ñ <ˆÔÜŸLšL¬¯ª°T×5EÑ5EÀqÈ4×K`ÑK`ÕG`Ðbf×bqÑbqÓ)rÓsˆÔÜŸš¤e§k¢k°$×2BÑ2BÀDÇOÁOÐUY×UjÑUjÓ&kÓlˆŒÜ˜V×.Ñ.Õ/ˆŽr1   c                ó‚   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  RS[ P                  /# )r(   rB   Útop_k_indexÚtop_k_weightsrK   r\   )r,   r-   s   "€r.   r/   r  ;  sC   ø€ ÷ #ñ #á—|‘|ð#ñ —\‘\ð#ñ —|‘|ð	#ñ
 
�‰ñ#r1   c                óÆ  € \         P                  ! V4      p\         P                  ! 4       ;_uu_ 4        \         P                  P                  P                  W P                  R 7      pVP                  ^^^ 4      p\         P                  ! VP                  RR7      ^ 4      P                  4       pRRR4       X EF  pV^ ,          pWpP                  8X  d   K  \         P                  ! XV,          4      w  r‰W,          p
\        P                  P                  W P                  V,          4      P                  ^RR7      w  r¼V P                  V4      V,          p\        P                  P                  WÐP                   V,          4      pWÓW˜R3,          ,          pVP#                  ^ W�P%                  VP&                  4      4       EK  	  V#   + '       g   i     EL'; i))Únum_classes©r¥   Nr`   )r`   éþÿÿÿ)r*   Ú
zeros_likeÚno_gradrQ   rª   Úone_hotr  ÚpermuteÚgreaterÚsumÚnonzeroÚwhereÚlinearr  Úchunkr  r	  Ú
index_add_rb   ra   )rV   rB   r   r!  Úfinal_hidden_statesÚexpert_maskÚ
expert_hitÚ
expert_idxÚ	top_k_posÚ	token_idxÚcurrent_stateÚgateÚupÚcurrent_hidden_statess   &&&&          r.   ri   ÚInklingExperts.forward;  ss  € ô $×.Ò.¨}Ó=ÐÜ�]Š]�_�_ÜŸ(™(×-Ñ-×5Ñ5°k×O_ÑO_Ð5Ó`ˆKØ%×-Ñ-¨a°°AÓ6ˆKÜŸš {§¡¸8 Ó'DÀaÓH×PÑPÓRˆJ÷ ô
 %ˆJØ# A�ˆJØ×-Ñ-Ô-ÙÜ#(§;¢;¨{¸:Õ/FÓ#GÑ ˆIØ)Õ4ˆMÜ—}‘}×+Ñ+¨M×;LÑ;LÈZÕ;XÓY×_Ñ_Ð`aÐgiÐ_Ój‰HˆDØ$(§K¡K°Ó$5¸Õ$:Ð!Ü$&§M¡M×$8Ñ$8Ð9N×P^ÑP^Ð_iÕPjÓ$kÐ!Ø$9È)Ð`dÐJdÕ<eÕ$eÐ!Ø×*Ñ*¨1¨i×9QÑ9QÐRe×RkÑRkÓ9l×mñ %ð #Ð"÷# �_ˆ_ús   ´A=GÇG 	)r  r	  r  r  r  r  r‘   rq   s   @@r.   r  r  .  s!   ù‡ € á<÷0ó 0÷#÷ #ð #r1   r  c                   óD   a a€ ] tR tRt oV 3R ltV3R lR ltRtVtV ;t# )ÚInklingTopkRouteriV  c                ój  <€ \         SV `  4        VP                  V n        VP                  V n        V P                  V P                  ,           V n        VP                  V n        VP                  V n        VP                  V n
        \        P                  ! \        P                  ! V P
                  VP                  4      4      V n        \        P                  ! \        P                   ! ^4      4      V n        \        P$                  ! \        P&                  ! V P                  4      4      V n        R# )r„   N)rO   rP   r  r  Ún_shared_expertsÚn_total_expertsrW   r  Úroute_scaleÚnum_experts_per_tokÚtop_krQ   rR   r*   r|   rT   rS   r  ÚBufferÚzerosÚe_score_correction_biasr  s   &&€r.   rP   ÚInklingTopkRouter.__init__W  sË   ø€ Ü‰ÑÔØ!×2Ñ2ˆÔØ &× 7Ñ 7ˆÔØ#×/Ñ/°$×2GÑ2GÕGˆÔØ ×,Ñ,ˆŒØ!×-Ñ-ˆÔØ×/Ñ/ˆŒ
ä—l’l¤5§;¢;¨t×/CÑ/CÀV×EWÑEWÓ#XÓYˆŒÜŸLšL¬¯ª°A«Ó7ˆÔÜ')§y¢y´·²¸T×=MÑ=MÓ1NÓ'OˆÖ$r1   c                óv   <€ V ^8„  d   QhRS[ S[P                  S[P                  S[P                  3,          /# ©r(   rK   )rD   r*   r]   )r,   r-   s   "€r.   r/   ÚInklingTopkRouter.__annotate__d  s/   ø€ ÷ Hñ H©©e¯l©l¹E¿L¹LÉ%Ï,É,Ð.VÕ(Wñ Hr1   c           	     ón  € VP                  RV P                  4      p\        P                  ! W P                  4      pVP                  4       pVRRV P                  ) 13,          pWPP                  ,           p\        P                  ! W`P                  RRR7      ^,          pVRRV P                  ) 13,          pVRV P                  ) R13,          p	\        P                  ! VP                  RV4      V	.RR7      p
\        P                  ! V
4      p\        P                  ! V\        P                  ! VRRR7      ,
          4      pWÀP                   ,          V P"                  ,          pVRV P                  ) R13,          P%                  4       pVRRV P                  13,          P%                  4       pWŒW}3# )	r„   .NF)r¥   Úsortedr$  T)r¥   r_   r`   )r•   r  ÚFr.  rT   Úsigmoidr?  rF  r*   ÚtopkrC  ÚcatrŠ   Ú
logsigmoidÚexpÚ	logsumexprA  r  r¬   )rV   rB   ÚflatÚrouter_logitsÚscoresÚrouted_scoresÚscores_for_choiceÚtopk_indicesÚrouted_logitsÚshared_logitsÚtopk_logitsÚtopk_log_probsÚtopk_weightsÚshared_gammass   &&            r.   ri   ÚInklingTopkRouter.forwardd  sy  € Ø×$Ñ$ R¨¯©Ó9ˆÜŸš §{¡{Ó3ˆð ×&Ñ&Ó(ˆØ˜sÐ$< t×'<Ñ'<Ð&<Ð$<Ð<Õ=ˆØ)×,HÑ,HÕHÐÜ—z’zÐ"3·Z±ZÀRÐPUÔVÐWXÕYˆà% cÐ+C¨d×.CÑ.CÐ-CÐ+CÐ&CÕDˆØ% c¨D×,AÑ,AÐ+AÑ+CÐ&CÕDˆÜ—i’i ×!5Ñ!5°b¸,Ó!GÈÐ WÐ]_Ô`ˆÜŸš kÓ2ˆÜ—y’y ´%·/²/À.ÐVXÐbfÔ2gÕ!gÓhˆà#×&6Ñ&6Õ6¸×9JÑ9JÕJˆà$ S¨4×+@Ñ+@Ð*@Ñ*BÐ%BÕC×NÑNÓPˆØ# C¨¨4¯:©:¨Ð$5Õ6×AÑAÓCˆà¨LÐGÐGr1   )	rF  r  r  r?  r@  r  rA  rC  rT   rý   rq   s   @@r.   r=  r=  V  s   ù‡ € õP÷H÷ Hð Hr1   r=  c                   ó8   a a€ ] tR tRt oV 3R ltR tRtVtV ;t# )ÚInklingSharedExpertsi|  c                ó0  <€ \         SV `  4        VP                  V n        VP                  p\        P
                  ! \        P                  ! VP                  W!P                  4      4      V n	        \        P
                  ! \        P                  ! VP                  W!P                  4      4      V n
        \        P
                  ! \        P                  ! VP                  VP                  V4      4      V n        \        VP                  ,          V n        R # r{   )rO   rP   r?  r  rQ   rR   r*   r|   rW   r  r  r	  r   r
  r  )rV   r·   r  rX   s   && €r.   rP   ÚInklingSharedExperts.__init__}  s¶   ø€ Ü‰ÑÔØ &× 7Ñ 7ˆÔØ!×7Ñ7Ðô Ÿš¤e§k¢k°&×2IÑ2IÐK[×]oÑ]oÓ&pÓqˆŒÜ—|’|¤E§K¢K°×0GÑ0GÐIY×[mÑ[mÓ$nÓoˆŒÜŸš¤e§k¢k°&×2IÑ2IÈ6×K]ÑK]Ð_oÓ&pÓqˆŒÜ˜V×.Ñ.Õ/ˆŽr1   c                óÐ  € VP                   pVP                  ^RVR,          4      P                  V P                  RR4      pVP                  RV P                  ^4      P	                  ^ ^4      p\
        P                  ! WP                  P	                  ^^4      4      p\
        P                  ! WP                  P	                  ^^4      4      pV P                  V4      V,          V,          p\
        P                  ! W`P                  P	                  ^^4      4      pVP                  4       P                  ^ R7      P                  VP                  4      pVP                  V4      # )r„   r$  r`   )rl   r•   r‰   r?  r‡   r*   Úbmmr  r  r  r	  rL   r+  rb   ra   rå   )	rV   rB   Úgammasrï   r8  r9  Ú	activatedÚdownÚouts	   &&&      r.   ri   ÚInklingSharedExperts.forward‰  s  € Ø#×)Ñ)ˆØ%×-Ñ-¨a°°[Àµ_ÓE×LÑLÈT×MbÑMbÐdfÐhjÓkˆØ—‘  D×$9Ñ$9¸1Ó=×GÑGÈÈ1ÓMˆä�yŠy˜¯©×(@Ñ(@ÀÀAÓ(FÓGˆÜ�YŠY�}§l¡l×&<Ñ&<¸QÀÓ&BÓCˆØ—K‘K Ó%¨Õ*¨VÕ3ˆ	Ü�yŠy˜§N¡N×$<Ñ$<¸QÀÓ$BÓCˆà�j‰j‹l×Ñ 1ÐÓ%×(Ñ(¨×)<Ñ)<Ó=ˆØ�x‰x˜Ó$Ð$r1   )r  r	  r  r?  r  rý   rq   s   @@r.   rb  rb  |  s   ù‡ € õ
0÷%ò %r1   rb  c                   óH   a a€ ] tR tRt oRtV 3R ltV3R lR ltRtVtV ;t	# )Ú
InklingMoEi—  z7Gate -> routed experts (+ shared experts), TML flavour.c                ó�   <€ \         SV `  4        Wn        \        V4      V n        \        V4      V n        \        V4      V n        R # r{   )	rO   rP   r·   r=  r8  r  Úexpertsrb  Úshared_expertsr  s   &&€r.   rP   ÚInklingMoE.__init__š  s8   ø€ Ü‰ÑÔØŒÜ% fÓ-ˆŒ	Ü% fÓ-ˆŒÜ2°6Ó:ˆÖr1   c                ó4   <€ V ^8„  d   QhRS[ P                  /# rI  r\   )r,   r-   s   "€r.   r/   ÚInklingMoE.__annotate__¡  s   ø€ ÷ ñ ©¯©ñ r1   c                ó   € TpVP                   pV P                  V4      w  rErgVP                  RVP                   R,          4      pV P                  WV4      P                  ! V!  pWP	                  W'R7      ,           pV# )r„   )rg  r`   )rl   r8  rå   ro  rp  )rV   rB   Ú	residualsrï   Ú_r^  rY  r_  s   &&      r.   ri   ÚInklingMoE.forward¡  sz   € Ø!ˆ	Ø#×)Ñ)ˆØ7;·y±yÀÓ7OÑ4ˆ˜Ø%×*Ñ*¨2¨}×/BÑ/BÀ2Õ/FÓGˆØŸ™ ]À,ÓO×TÒTÐVaÑbˆØ%×(;Ñ(;¸IÐ(;Ó(\Õ\ˆØÐr1   )r·   ro  r8  rp  r‘   rq   s   @@r.   rm  rm  —  s   ù‡ € ÙAõ;÷÷ ð r1   rm  c                ób   € Ve+   V P                   pWR,          ,          P                  V4      p V # )ze
Tunes out the hidden states for padding tokens, see https://github.com/state-spaces/mamba/issues/66
)r†   r†   N)ra   rb   )rB   r    ra   s   && r.   Úapply_mask_to_padding_statesry  «  s3   € ð
 Ò!Ø×#Ñ#ˆØ&¸
Õ)CÕC×GÑGÈÓNˆàÐr1   Úcausal_conv1d_updateÚcausal_conv1dc                óÀ   € V ^8„  d   QhR\         P                  R\         P                  R\        P                  R\        P                  R,          R\        R,          /# )r(   rB   Ú
conv_staterT   r¿   NÚ
activation©r*   r]   rQ   rR   Ústr)r,   s   "r.   r/   r/   ¸  sS   € ÷ 'ñ 'Ü—<‘<ð'ä—‘ð'ô �L‰Lð'ô �,‰,˜Õ
ð	'ô
 �d•
ñ'r1   c                 óº  € V P                   w  rVpVP                   R,          p\        P                  ! W.RR7      P                  VP                  4      p	VP                  V	RRV) R13,          4       \        P                  ! W’P                  ^4      V^ VR7      p
V
RRV) R13,          p
Ve   \        V,          ! V
4      p
V
P                  V P                  4      # )r„   r$  r†   N)ÚpaddingÚgroupsr`   )
rl   r*   rP  rb   ra   Úcopy_rM  Úconv1dÚ	unsqueezer   )rB   r}  rT   r¿   r~  rv  rW   Úseq_lenÚ	state_lenÚhidden_states_newrj  s   &&&&&      r.   rz  rz  ·  sÅ   € ð ,×1Ñ1Ñ€A�GØ× Ñ  Õ$€IäŸ	š	 :Ð"=À2ÔF×IÑIÈ&Ï,É,ÓWÐØ×ÑÐ& q¨!¨i¨Z©[Ð'8Õ9Ô:Ü
�(Š(Ð$×&6Ñ&6°qÓ&9¸4ÈÐS^Ô
_€CØ
ˆa��W�H‘IˆoÕ
€CØÒÜ�ZÖ  Ó%ˆØ�6‰6�-×%Ñ%Ó&Ð&r1   Úcausal_conv1d_fnc          	      ó    € V ^8„  d   QhR\         P                  R\        P                  R\        P                  R,          R\        R,          /# )r(   rB   rT   r¿   Nr~  r  )r,   s   "r.   r/   r/   Ì  sE   € ÷ 'ñ 'Ü—<‘<ð'ä�L‰Lð'ô �,‰,˜Õ
ð'ô �d•
ñ	'r1   c                 óV  € V P                   w  rVpVP                   R,          ^,
          p\        P                  ! V P                  VP                  4      VP                  ^4      VVVR7      RRRV13,          p	Ve   \        V,          ! V	4      p	V	P                  V P                  4      # )r„   )rT   r¿   r‚  rƒ  r†   Nr`   )rl   rM  r…  rb   ra   r†  r   )
rB   rT   r¿   r~  r­   rv  rW   r‡  r‚  rj  s
   &&&&,     r.   rŠ  rŠ  Ë  sž   € ð ,×1Ñ1Ñ€A�GØ�l‰l˜2Õ Õ"€Gä
�(Š(Ø×Ñ˜Ÿ™Ó&Ø×Ñ Ó"ØØØôð ˆˆHˆWˆH€nõ€Cð ÒÜ�ZÖ  Ó%ˆØ�6‰6�-×%Ñ%Ó&Ð&r1   c                   ój   a a€ ] tR tRt oV3R lV 3R llt]! R4      RV3R lR ll4       tRtVtV ;t	# )	rÓ   iâ  c                ó2   <€ V ^8„  d   QhRS[ RS[ RS[ RS[ /# )r(   rW   Úconv_kernel_sizer¸   rÀ   rw   )r,   r-   s   "€r.   r/   Ú$InklingShortConvolution.__annotate__ä  s*   ø€ ÷ 
ñ 
¡Cð 
¹3ð 
É3ð 
ÑZ]ñ 
r1   c           	     ó˜   <€ \         SV `  4        W0n        W@n        W n        \
        P                  ! VVVVV^,
          RR7      V n        R# )r„   F)Úin_channelsÚout_channelsÚkernel_sizerƒ  r‚  r¿   N)rO   rP   r¸   rÀ   r�  rQ   ÚConv1dr…  )rV   rW   r�  r¸   rÀ   rX   s   &&&&&€r.   rP   Ú InklingShortConvolution.__init__ä  sE   ø€ Ü‰ÑÔØ"ŒØ ŒØ 0Ôä—i’iØ#Ø$Ø(ØØ$ qÕ(Øô
ˆŽr1   r…  c          	      ó†   <€ V ^8„  d   QhRS[ P                  RS[R,          RS[ P                  R,          RS[S[,          /# )r(   rB   rA   Nrß   r­   ©r*   r]   r   r   r   )r,   r-   s   "€r.   r/   r�  ô  sJ   ø€ ÷ *ñ *á—|‘|ð*ñ  �ð*ñ —<‘< $Õ&ð	*ñ
 Ñ+Õ,ñ*r1   c                ó  € VP                   pVP                  4       pTp\        W4      pVP                  ^,          pVP	                  ^^4      pVRJ;'       d'    VP                  V P                  V P                  4      pV'       d²   V^8X  d«   VP                  V P                  ,          P                  '       g~   VP                  V P                  ,          P                  V P                  ,          p	\        WV P                  P                  P                  ^4      V P                  P                  4      pM�Ve3   VP!                  WP                  V P                  V P"                  R7      p\%        WP                  P                  P                  ^4      V P                  P                  VP'                  R4      R7      pVe   VRRV) R13,          pVP	                  ^^4      pW,           P)                  VR7      pV# )r„   N)Ú	state_idxr�  Úseq_idx)r›  r†   )ra   )ra   rL   ry  rl   r‡   Úhas_previous_stater¸   rÀ   ÚlayersÚrecord_pastÚconv_statesrz  r…  rT   Úsqueezer¿   Úupdate_conv_stater�  rŠ  Úgetrb   )
rV   rB   rA   rß   r­   rg   Úresidualr‡  Úuse_precomputed_statesr}  s
   &&&&,     r.   ri   ÚInklingShortConvolution.forwardó  s¶  € ð $×)Ñ)ˆØ%×+Ñ+Ó-ˆà ˆÜ4°]ÓNˆØ×%Ñ% aÕ(ˆØ%×/Ñ/°°1Ó5ˆà!0¸Ð!<÷ "
ð "
À×AcÑAcØ�N‰N˜DŸM™MóB
Ð÷ " g°¤l¸?×;QÑ;QÐRV×R`ÑR`Õ;a×;m×;mÐ;mØ(×/Ñ/°·±Õ?×KÑKÈDÏMÉMÕZˆJä0Ø¨4¯;©;×+=Ñ+=×+EÑ+EÀaÓ+HÈ$Ï+É+×JZÑJZó‰Mð Ò*Ø /× AÑ AØ!§>¡>¸T¿]¹]Ð]a×]rÑ]rð !Bó !�ô -ØŸ{™{×1Ñ1×9Ñ9¸!Ó<¸d¿k¹k×>NÑ>NÐX^×XbÑXbÐclÓXmôˆMð
 Ò*Ø -¨a°°W°H±I¨oÕ >�à%×/Ñ/°°1Ó5ˆØ&Õ1×5Ñ5¸KÐ5ÓHˆØÐr1   )r…  rÀ   r�  r¸   rü   )
r3   r4   r5   r6   rP   r   ri   r9   r:   rp   rq   s   @@r.   rÓ   rÓ   â  s2   ù‡ € ÷
ó 
ñ ˜HÓ%÷*ñ *ó &÷*ð *r1   rÓ   c                   óT   a a€ ] tR tRt oV3R lV 3R lltRV3R lR lltRtVtV ;t# )ÚInklingDecoderLayeri!  c                ó&   <€ V ^8„  d   QhRS[ RS[/# r¶   r¹   )r,   r-   s   "€r.   r/   Ú InklingDecoderLayer.__annotate__"  s   ø€ ÷ 
ñ 
Ñ0ð 
¹Sñ 
r1   c                ó<  <€ \         SV `  4        VP                  V n        \        W4      V n        VP
                  V,          R 8X  d   \        V4      V n        M\        V4      V n        \        VP                  VP                  4      V n        \        VP                  VP                  4      V n        VP                  V,          V n        \        VP                  VP                   V^R7      V n        \        VP                  VP                   V^R7      V n        R# )Úsparse)r¸   rÀ   N)rO   rP   rW   r´   Ú	self_attnÚmlp_layer_typesrm  Úmlprÿ   rH   r×   Úinput_layernormÚpost_attention_layernormrÂ   Ú
layer_typerÓ   r�  Ú
attn_sconvÚ	mlp_sconvrÛ   s   &&&€r.   rP   ÚInklingDecoderLayer.__init__"  sá   ø€ Ü‰ÑÔØ!×-Ñ-ˆÔÜ)¨&Ó<ˆŒà×!Ñ! )Õ,°Ô8Ü! &Ó)ˆD�Hä! &Ó)ˆDŒHä-¨f×.@Ñ.@À&×BUÑBUÓVˆÔÜ(6°v×7IÑ7IÈ6×K^ÑK^Ó(_ˆÔ%Ø ×,Ñ,¨YÕ7ˆŒÜ1Ø×Ñ × 7Ñ 7À9ÐWXô
ˆŒô 1Ø×Ñ × 7Ñ 7À9ÐWXô
ˆŽr1   c                óÈ   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  R,          RS[R,          RS[S[,          RS[ P                  /# rÞ   r˜  )r,   r-   s   "€r.   r/   r©  6  sk   ø€ ÷ ñ á—|‘|ðñ Ÿ™ tÕ+ðñ —<‘< $Õ&ð	ñ
  �ðñ Ñ+Õ,ðñ 
�‰ñr1   c                ó  € TpV P                  V4      pV P                  ! RR VRVRVRV/VB w  rV P                  WVR7      pWa,           pTpV P                  V4      pV P	                  V4      pV P                  WVR7      pWa,           pV# )rB   r    rß   rA   rá   r2   )r¯  r¬  r²  r°  r®  r³  )rV   rB   r    rß   rA   r­   r£  rv  s   &&&&&,  r.   ri   ÚInklingDecoderLayer.forward6  s¹   € ð !ˆØ×,Ñ,¨]Ó;ˆØŸ>š>ñ 
Ø'ð
à)ð
ð  ð
ð ,ð	
ð
 ñ
Ñˆð Ÿ™¨Ðbk˜ÓlˆØ Õ0ˆà ˆØ×5Ñ5°mÓDˆØŸ™ Ó/ˆØŸ™ }Ðaj˜ÓkˆØ Õ0ˆØÐr1   )r²  rW   r¯  r±  r®  r³  r°  r¬  )NNNrý   rq   s   @@r.   r§  r§  !  s   ù‡ € ÷
ó 
÷(÷ ò r1   r§  c                   ó    a a€ ] tR tRt o]tRtRtR.tR.t	Rt
RtRtRtRtR.t. ROtR]R	]/t]P*                  ! 4       V 3R
 l4       tRtVtV ;t# )ÚInklingPreTrainedModeliR  ÚmodelTr§  rA   Fzmodel\.mtp\..*rB   rC   c                ó  <€ \         SV `  V4       V P                  P                  4       P                  p\        V\        4      '       d&   \        P                  ! VP                  R VR7       R# \        V\        4      '       d#   \        P                  ! VP                  4       R# \        V\        4      '       dI   \        P                  ! VP                  R VR7       \        P                  ! VP                  R VR7       R# \        V\         4      '       df   \        P                  ! VP"                  R VR7       \        P                  ! VP                  4       \        P$                  ! VP&                  4       R# \        V\(        4      '       dl   \        P                  ! VP*                  R VR7       \        P                  ! VP,                  R VR7       \        P                  ! VP                  R VR7       R# \        V\.        4      '       dt   \1        V P                  RV P                  4      p\        P2                  ! VP4                  \6        P8                  ! VP:                  4      VP<                  ,          4       R# R# )r…   )re   ÚstdÚaudio_configN)rO   Ú_init_weightsr·   Úget_text_configÚinitializer_rangeÚ
isinstancers   ÚinitÚnormal_r}   rÿ   Úones_r  r  r  r	  r=  rT   Úzeros_rF  rb  r  r  ÚInklingAudioModelEmbeddingsÚgetattrr„  Úaudio_tokens_offsetsr*   ré   Ú
n_mel_binsÚmel_vocab_size)rV   rœ   r¼  r½  rX   s   &&  €r.   r¾  Ú$InklingPreTrainedModel._init_weightsg  s“  ø€ ä‰Ñ˜fÔ%Ø�k‰k×)Ñ)Ó+×=Ñ=ˆÜ�fÔ3×4Ò4Ü�LŠL˜Ÿ™¨3°C×8Ü˜¤
×+Ò+Ü�JŠJ�v×*Ñ*Ö+Ü˜¤×/Ò/Ü�LŠL˜×,Ñ,°3¸CÕ@Ü�LŠL˜×)Ñ)°¸×=Ü˜Ô 1×2Ò2Ü�LŠL˜Ÿ™¨S°cÕ:Ü�JŠJ�v×*Ñ*Ô+Ü�KŠK˜×6Ñ6Ö7Ü˜Ô 4×5Ò5Ü�LŠL˜×)Ñ)°¸Õ=Ü�LŠL˜Ÿ™¨c°sÕ;Ü�LŠL˜×)Ñ)°¸×=Ü˜Ô ;×<Ò<ô # 4§;¡;°ÀÇÁÓLˆLÜ�JŠJØ×+Ñ+Ü—’˜\×4Ñ4Ó5¸×8SÑ8SÕSöñ	 =r1   r2   )r²  r³  rÕ   rÖ   )r3   r4   r5   r6   r    Úconfig_classÚbase_model_prefixÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_skip_keys_device_placementÚ_supports_flash_attnÚ_supports_sdpaÚ_supports_flex_attnÚ_can_compile_fullgraphÚ_supports_attention_backendÚ"_keys_to_ignore_on_load_unexpectedÚ_keep_in_fp32_modules_strictr§  r´   Ú_can_record_outputsr*   r'  r¾  r9   r:   rp   rq   s   @@r.   r¹  r¹  R  s‰   ù‡ € à €LØÐØ&*Ð#Ø.Ð/ÐØ#4Ð"5Ðð !ÐØ€NØÐØ"ÐØ"'ÐØ*;Ð)<Ð&Ú#TÐ àÐ,ØÐ&ðÐð
 ‡]‚]ƒ_ôó ÷ð r1   r¹  c                   ó~   a a€ ] tR tRt oV3R lV 3R llt]]]RV3R lR ll4       4       4       tV3R lt	Rt
VtV ;t# )	ÚInklingTextModeli„  c                ó    <€ V ^8„  d   QhRS[ /# r  r  )r,   r-   s   "€r.   r/   ÚInklingTextModel.__annotate__ˆ  s   ø€ ÷ ñ Ñ0ñ r1   c           	     ó>  <€ \         SV `  V4       VP                  V n        VP                  V n        \
        P                  ! VP                  VP                  V P                  4      V n        \
        P                  ! \        VP                  4       Uu. uF  p\        W4      NK  	  up4      V n        \        VP                  VP                  R 7      V n        \        VP                  VP                  R 7      V n        RV n        V P'                  4        R# u upi )rÁ   FN)rO   rP   Úpad_token_idÚpadding_idxÚ
vocab_sizerQ   Ú	EmbeddingrW   Úembed_tokensÚ
ModuleListÚrangeÚnum_hidden_layersr§  r�  rH   r×   ÚnormÚ
embed_normÚgradient_checkpointingÚ	post_initrÛ   s   && €r.   rP   ÚInklingTextModel.__init__ˆ  sØ   ø€ Ü‰Ñ˜Ô Ø!×.Ñ.ˆÔØ ×+Ñ+ˆŒäŸLšL¨×):Ñ):¸F×<NÑ<NÐPT×P`ÑP`ÓaˆÔÜ—m’mÜEJÈ6×KcÑKcÔEdÓeÑEd¸	Ô  Ö3ÑEdÑeó
ˆŒô # 6×#5Ñ#5¸6×;NÑ;NÔOˆŒ	Ü(¨×);Ñ);À×ATÑATÔUˆŒØ&+ˆÔ#ð 	�‰Öùò fs   ÂDc                óþ   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[ P                  R,          RS[R,          RS[S[,          R	S[/# )
r(   Ú	input_idsNr    Úposition_idsrA   Úinputs_embedsÚ	use_cacher­   rK   )	r*   Ú
LongTensorr]   r   r+   Úboolr   r   r   )r,   r-   s   "€r.   r/   rÜ  ›  s“   ø€ ÷ 8
ñ 8
á×#Ñ# dÕ*ð8
ñ Ÿ™ tÕ+ð8
ñ ×&Ñ&¨Õ-ð	8
ñ
  �ð8
ñ ×(Ñ(¨4Õ/ð8
ñ ˜$•;ð8
ñ Ñ+Õ,ð8
ñ 
!ñ8
r1   c           
     ó:  € VR J VR J,          '       d   \        R4      hVf   V P                  V4      pV P                  V4      pV'       d   Vf   \        V P                  R7      pVfb   Ve   VP                  4       M^ p\        P                  ! VP                  ^,          VP                  R7      V,           pVP                  ^ 4      p\        T;p	\        4      '       g:   RV P                  RVRVRVRV/p
R	\        R/ V
B R
\        R/ V
B R\        R/ V
B /p	Tp\!        V P"                  4       FG  w  rÍV P                  P$                  V,          R8X  d   R	MR
pV! V3RWž,          RV	R,          RV/VB pKI  	  V P'                  V4      p\)        VVR7      # )Nú:You must specify exactly one of input_ids or inputs_embeds)r·   râ   r·   rî  r    rA   rí  Úfull_attentionÚsliding_attentionÚlinear_attentionÚhybridrß   )Úlast_hidden_staterA   r2   )Ú
ValueErrorrâ  rç  r   r·   Úget_seq_lengthr*   ré   rl   rã   r†  rÁ  Údictr   r   r   Ú	enumerater�  rÂ   ræ  r   )rV   rì  r    rí  rA   rî  rï  r­   Úpast_seen_tokensÚcausal_mask_mappingÚmask_kwargsrB   ÚiÚdecoder_layerÚattention_types   &&&&&&&,       r.   ri   ÚInklingTextModel.forward˜  s»  € ð ˜Ð -°tÐ";×<Ô<ÜÐYÓZÐZàÒ Ø ×-Ñ-¨iÓ8ˆMàŸ™¨Ó6ˆç˜Ò0Ü*°$·+±+Ô>ˆOàÒØCRÒC^˜×=Ñ=Ô?ÐdeÐÜ Ÿ<š<¨×(;Ñ(;¸AÕ(>À}×G[ÑG[Ô\Ð_oÕoˆLØ'×1Ñ1°!Ó4ˆLô °Ð?Ð-Ä×FÒFà˜$Ÿ+™+Ø Ø  .Ø! ?Ø ðˆKð !Ô"4Ñ"C°{Ñ"CØ#Ô%FÑ%UÈÑ%UØ"Ô$CÑ$RÀkÑ$Rð#Ðð &ˆÜ )¨$¯+©+Ö 6ÑˆAØ15·±×1HÑ1HÈÕ1KÈxÔ1WÑ-Ð]pˆNÙ)Øñà2ÕBðð .Ð.@ÕAðð !0ð	ð
 ñŠMñ !7ð Ÿ	™	 -Ó0ˆÜ&Ø+Ø+ô
ð 	
r1   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r  r  )r,   r-   s   "€r.   r/   rÜ  „  s   ø‡ ‚ áÑò r1   )rç  râ  rè  r�  ræ  rß  rà  )NNNNNN)r3   r4   r5   r6   rP   r   r   r   ri   r8   r9   r:   rp   rq   s   @@r.   rÚ  rÚ  „  s?   ù‡ € ÷ó ð   ØØ÷8
ñ 8
ó ó ó  ð8
÷/ … r1   rÚ  c                   ó˜   a a€ ] tR tRt o/ tRR/tRR.R.3/tRR/tV3R lV 3R llt]	]
RV3R	 lR
 ll4       4       tV3R ltRtVtV ;t# )ÚInklingForCausalLMiÖ  Úlm_headÚrowwise_split_inputrB   r@   Úkeep_full_weightc                ó    <€ V ^8„  d   QhRS[ /# r  r  )r,   r-   s   "€r.   r/   ÚInklingForCausalLM.__annotate__ß  s   ø€ ÷ ñ Ñ0ñ r1   c                óì   <€ \         SV `  V4       \        V4      V n        VP                  V n        \
        P                  ! VP                  VP                  R R7      V n        V P                  4        R# r  )
rO   rP   rÚ  rº  rà  rQ   rÍ   rW   r  ré  r  s   &&€r.   rP   ÚInklingForCausalLM.__init__ß  sU   ø€ Ü‰Ñ˜Ô Ü% fÓ-ˆŒ
Ø ×+Ñ+ˆŒÜ—y’y ×!3Ñ!3°V×5FÑ5FÈUÔSˆŒð 	�‰Ör1   c                óP  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[ P                  R,          RS[ P                  R,          RS[R,          R	S[S[ P                  ,          R
S[S[,          RS[	/
# )r(   rì  Nr    rí  rA   rî  Úlabelsrï  Úlogits_to_keepr­   rK   )
r*   rð  r]   r   r+   rñ  rx   r   r   r=   )r,   r-   s   "€r.   r/   r  ê  s»   ø€ ÷ 9
ñ 9
á×#Ñ# dÕ*ð9
ñ Ÿ™ tÕ+ð9
ñ ×&Ñ&¨Õ-ð	9
ñ
  �ð9
ñ ×(Ñ(¨4Õ/ð9
ñ × Ñ  4Õ'ð9
ñ ˜$•;ð9
ñ ™eŸl™lÕ*ð9
ñ Ñ+Õ,ð9
ñ 
'ñ9
r1   c	                óB  € V P                   ! RRVRVRVRVRVRV/V	B p
V
P                  V P                  P                  ,          p\	        V\
        4      '       d   \        V) R4      MTpV P                  VRVR3,          4      pV P                  P                  pVe%   WíP                  R,          8  d   VR	RV13,          pRpVe*   V P                  ! RR
VRVRVP                  R,          /V	B p\        VVV
P                  V
P                  V
P                  R7      # )a:  
Example:

```python
>>> from transformers import AutoTokenizer, InklingForCausalLM

>>> model = InklingForCausalLM.from_pretrained("thinkingmachines/Inkling-NVFP4")
>>> tokenizer = AutoTokenizer.from_pretrained("thinkingmachines/Inkling-NVFP4")

>>> prompt = "What is your favorite condiment?"
>>> inputs = tokenizer(prompt, return_tensors="pt")

>>> # Generate
>>> generate_ids = model.generate(**inputs, max_new_tokens=30)
>>> tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"What is your favorite condiment?"
```rì  r    rí  rA   rî  rï  Nr†   .r@   r  rà  )r?   r@   rA   rB   rC   r2   r`   )rº  rø  r·   Úlogits_mup_width_multiplierrÁ  rx   Úslicer  Úunpadded_vocab_sizerl   Úloss_functionr=   rA   rB   rC   )rV   rì  r    rí  rA   rî  r  rï  r  r­   ÚoutputsrB   Úslice_indicesr@   r  r?   s   &&&&&&&&&,      r.   ri   ÚInklingForCausalLM.forwardè  sJ  € ð> —*’*ñ 
Øð
à)ð
ð &ð
ð ,ð	
ð
 (ð
ð  ð
ð ñ
ˆð  ×1Ñ1°D·K±K×4[Ñ4[Õ[ˆä8BÀ>ÔSV×8WÒ8Wœ˜~˜o¨tÔ4Ð]kˆØ—‘˜m¨A¨}¸aÐ,?Õ@ÓAˆØ"Ÿk™k×=Ñ=ÐØÒ*Ð/BÇ\Á\ÐRTÕEUÔ/UØ˜CÐ!5Ð"5Ð!5Ð5Õ6ˆFàˆØÒØ×%Ò%Ñj¨VÐj¸FÐjÈvÏ|É|Ð\^ÕO_ÐjÐciÑjˆDä,ØØØ#×3Ñ3Ø!×/Ñ/Ø×)Ñ)ô
ð 	
r1   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r  r  )r,   r-   s   "€r.   r/   r  Ö  s   ø‡ ‚ ñ Ñò r1   )r  rº  rà  )NNNNNNNr   )r3   r4   r5   r6   Ú_tied_weights_keysÚ_tp_planÚ_pp_planÚ
_fsdp_planrP   r   r   ri   r8   r9   r:   rp   rq   s   @@r.   r  r  Ö  si   ù‡ € ð ÐØÐ0Ð1€HØ˜_Ð-°¨zÐ:Ð;€HØÐ/Ð0€J÷ó ð Ø÷9
ñ 9
ó ó ð9
÷) … r1   r  c                   ó8   a a€ ] tR tRt oV 3R ltR tRtVtV ;t# )rÆ  i&  c                ó>  <€ \         SV `  4        \        P                  ! VP                  VP
                  ,          VP                  4      V n        \        P                  ! \        P                  ! VP                  4      VP
                  ,          R R7      V n        R# )F)Ú
persistentN)rO   rP   rQ   rá  Únum_codebooksÚcodebook_sizerW   Úembed_audio_tokensrD  r*   ré   rÈ  r  s   &&€r.   rP   Ú$InklingAudioModelEmbeddings.__init__'  sj   ø€ Ü‰ÑÔÜ"$§,¢,°×0DÑ0DÀv×G[ÑG[Õ0[Ð^d×^pÑ^pÓ"qˆÔÜ$&§I¢IÜ�LŠL˜×-Ñ-Ó.°×1EÑ1EÕEÐRWô%
ˆÖ!r1   c                ól   € V P                  WP                  ,           4      pVP                  RR7      pV# )r(   r$  r%  )r#  rÈ  r+  )rV   rì  rî  s   && r.   ri   Ú#InklingAudioModelEmbeddings.forward.  s4   € Ø×/Ñ/°	×<UÑ<UÕ0UÓVˆØ%×)Ñ)¨bÐ)Ó1ˆØÐr1   )rÈ  r#  rý   rq   s   @@r.   rÆ  rÆ  &  s   ù‡ € õ
÷ò r1   rÆ  c                   óZ   a a€ ] tR tRt oV3R lV 3R llt]V3R lR l4       tRtVtV ;t	# )ÚInklingAudioModeli4  c                ó    <€ V ^8„  d   QhRS[ /# r  )r   )r,   r-   s   "€r.   r/   ÚInklingAudioModel.__annotate__6  s   ø€ ÷ Fñ FÑ1ñ Fr1   c                ó~   <€ \         SV `  V4       \        V4      V n        \	        VP
                  R R7      V n        R# )ro   rÁ   N)rO   rP   rÆ  r#  rH   Útext_hidden_sizeræ  r  s   &&€r.   rP   ÚInklingAudioModel.__init__6  s1   ø€ Ü‰Ñ˜Ô Ü"=¸fÓ"EˆÔÜ" 6×#:Ñ#:ÀÔEˆŽ	r1   c                ó:   <€ V ^8„  d   QhRS[ P                  RS[/# )r(   Úaudio_input_idsrK   )r*   r]   r   )r,   r-   s   "€r.   r/   r*  <  s    ø€ ÷ 

ñ 

¡u§|¡|ð 

ÑB\ñ 

r1   c                ó`   € V P                  V4      pV P                  V4      p\        VVR7      # )z‡
audio_input_ids (`torch.Tensor` of shape `(num_audios, max_num_frames, n_mel_bins)`):
    Mel-spectrogram frames of the input audios.
©rø  Úpooler_output)r#  ræ  r   )rV   r/  r­   rB   s   &&, r.   ri   ÚInklingAudioModel.forward;  s5   € ð ×/Ñ/°Ó@ˆØŸ	™	 -Ó0ˆÜ)Ø+Ø'ô
ð 	
r1   )r#  ræ  ©
r3   r4   r5   r6   rP   r   ri   r9   r:   rp   rq   s   @@r.   r(  r(  4  s*   ù‡ € ÷Fó Fð
 ÷

ó ÷

ð 

r1   r(  c                   ób   a a€ ] tR tRt oV3R lV 3R lltV3R lR ltV3R lR ltRtVtV ;t	# )	ÚInklingVisionEncoderLayeriI  c          
      ó8   <€ V ^8„  d   QhRS[ RS[ RS[ RS[ RS[/# )r(   Ú	input_dimÚ
output_dimÚt_foldÚhw_foldÚadd_norm)rx   rñ  )r,   r-   s   "€r.   r/   Ú&InklingVisionEncoderLayer.__annotate__J  s1   ø€ ÷ !ñ !¡#ð !±3ð !Áð !Écð !Ñ]añ !r1   c                ó²   <€ \         SV `  4        \        P                  ! WR R7      V n        V'       d   \        V4      V n        W@n        W0n        WPn	        R# r  )
rO   rP   rQ   rÍ   Ú
projectionrH   Ú
layer_normr;  r:  r<  )rV   r8  r9  r:  r;  r<  rX   s   &&&&&&€r.   rP   Ú"InklingVisionEncoderLayer.__init__J  s>   ø€ Ü‰ÑÔÜŸ)š) IÀÔFˆŒßÜ,¨ZÓ8ˆDŒOØŒØŒØ Žr1   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r[   r\   )r,   r-   s   "€r.   r/   r=  S  s#   ø€ ÷ ñ ±U·\±\ð ÁeÇlÁlñ r1   c           
     ó´  € VP                   w  r#rEpW0P                  ,          pW@P                  ,          pWPP                  ,          p	VP                  W'V P                  W€P                  W�P                  V4      pVP	                  ^ ^^^^^^^4      pVP                  W'W‰V P                  V P                  ,          V P                  ,          V,          4      pV# )zp
Convert a tensor of shape (B, T, H, W, C) to a tensor of shape (B, T // t, H // hw, W //  hw, C * (t * hw**2))
)rl   r:  r;  r•   r)  )
rV   rB   ÚBÚTÚHÚWÚCÚt_newÚh_newÚw_news
   &&        r.   Úfold_timespace_to_depthÚ1InklingVisionEncoderLayer.fold_timespace_to_depthS  s»   € ð &×+Ñ+‰ˆˆa�Aà—[‘[Õ ˆØ—\‘\Õ!ˆØ—\‘\Õ!ˆà%×-Ñ-¨a¸¿¹ÀUÏLÉLÐZ_×amÑamÐopÓqˆà%×-Ñ-¨a°°A°q¸!¸QÀÀ1ÓEˆØ%×-Ñ-¨a¸ÀdÇkÁkÐTX×T`ÑT`ÕF`Ðcg×coÑcoÕFoÐrsÕFsÓtˆØÐr1   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r[   r\   )r,   r-   s   "€r.   r/   r=  c  s#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r1   c                ó   € V P                   ^8”  g   V P                  ^8”  d   V P                  V4      pV P                  V4      pV P                  '       d(   V P                  V4      p\        P                  ! V4      pV# )r„   )r;  r:  rL  r?  r<  r@  rM  Úgelur  s   &&r.   ri   Ú!InklingVisionEncoderLayer.forwardc  sa   € Ø�<‰<˜!Ô˜tŸ{™{¨QœØ ×8Ñ8¸ÓGˆMàŸ™¨Ó6ˆØ�=�=ˆ=Ø ŸO™O¨MÓ:ˆMÜŸFšF =Ó1ˆMØÐr1   )r<  r;  r@  r?  r:  )
r3   r4   r5   r6   rP   rL  ri   r9   r:   rp   rq   s   @@r.   r6  r6  I  s(   ù‡ € ÷!ó !÷ð ÷ ÷ ð r1   r6  c                óF   € V ^8„  d   QhR\         R\        \         ,          /# )r(   ÚnumberrK   )rx   Úlist)r,   s   "r.   r/   r/   n  s   € ÷ ñ œ#ð ¤$¤s¥)ñ r1   c                 ó<  € . pV ^,          ^ 8X  d   VP                  ^4       V ^,          p K*  \        ^\        P                  ! V 4      ^,           ^4       F+  pW,          ^ 8X  g   K  VP                  V4       W,          p K*  	  V ^8”  d   VP                  V 4       V# )r(   )Úappendrä  ÚmathÚisqrt)rS  Úfactorsr¦   s   &  r.   Úprime_factorsrZ  n  s~   € Ø€Gà
�1�*˜Œ/Ø�‰�qÔØ�1�Šä�1”d—j’j Ó(¨1Õ,¨aÖ0ˆØ�j˜AŽoØ�N‰N˜1ÔØ�LŠFñ 1ð
 �„zØ�‰�vÔØ€Nr1   c          
      óh   € V ^8„  d   QhR\         R\         R\         R\         R\        P                  /# )r(   Útemporal_patch_sizeÚ
patch_sizeÚn_layersÚ
n_channelsrK   )rx   r*   rð  )r,   s   "r.   r/   r/     s:   € ÷ ;ñ ;Üð;Ü*-ð;Ü9<ð;ÜJMð;ä
×Ññ;r1   c           
     ó„  € \         P                  ! \         P                  ! \        V4      RRR1,          VR7      ^ R7      p\         P                  ! \         P                  ! \        V 4      RRR1,          VR7      ^ R7      p\         P                  ! V^,          V,          ^@,          4      P                  4       ^@,          p\         P                  ! VR,          ^,          V,          V,          4      P                  4       ^@,          p\         P                  ! ^^^V..VR7      p	\         P                  ! \         P                  ! V4      WUV.^R7      p
\         P                  ! V\         P                  ! WeR,          4      \         P                  ! WeR,          4      V.^R7      p\         P                  ! WšV.^ R7      p\         P                  ! VRRR13,          ^R7      P                  4       pW,          V ,          V,          p\         P                  ! ^ \         P                  ! \         P                  ! WäR7      4      V^,           VR7      p\         P                  ! VP                  ^4      \         P                  ! V4      P                  ^ 4      ,
          4      pW,P                   ^ ,          8¼  d   \         P"                  ! V^R7      pME^ RIHp V! VP)                  4       P+                  4       4      w  pp\         P                  ! VVR7      p^ V^ &   VP                   ^ ,          ^,
          VR&   VV,          # )aÎ  
Plan out the dimensions for each layer in the HMLP encoder.

This function determines the progression of dimensions (temporal, height, width, channels)
for a multi-layer perceptual model that processes image/video patches. It follows these
principles:
1. Start with small dimensions and increase to full size
2. Expand spatial dimensions (height/width) first, then temporal
3. Increase channel count to avoid information bottlenecks
4. Round channel dimensions to multiples of 64 for hardware efficiency

The function computes optimal assignments of scale configurations to layers using either:
- For n_layers >= len(scales): Individual best matching scales for each layer (allowing duplicates)
- For n_layers < len(scales): Global optimal assignment via linear_sum_assignment

The first and last scales are always fixed to ensure the proper input and output dimensions.

Args:
    temporal_patch_size: Temporal dimension of input patches
    patch_size: Spatial dimension (height/width) of input patches
    n_layers: Number of layers in the encoder
    n_channels: Number of input channels (default: 3 for RGB)

Returns:
    torch.LongTensor of shape `(n_layers + 1, 4)` where the last dim holds values for (t, h, w, c) grids.
Nrâ   r$  r†   )Úlinear_sum_assignmentr`   )r*   ÚcumprodÚtensorrZ  Úceilrx   ÚstackÚ	ones_likeÚ	full_likerP  ÚprodrL   Úlinspacerì   Úabsr†  rl   ÚargminÚscipy.optimizera  ÚcpuÚnumpy)r\  r]  r^  r_  rã   ÚhÚtÚh_chÚt_chÚbaseÚspatialÚtemporalÚscalesÚsize_reductionÚtotal_elementsÚlog_ideal_scalesÚcost_matrixÚidxsra  rv  Úidxs_nps   &&&&&                r.   Úplan_out_scalesr}    sO  € ô: 	�Š”e—l’l¤=°Ó#<¹T¸r¸TÕ#BÈ6ÔRÐXYÔZ€AÜ�Š”e—l’l¤=Ð1DÓ#EÁdÈÀdÕ#KÐTZÔ[ÐabÔc€Aä�:Š:�a˜•d˜ZÕ'¨"Õ,Ó-×1Ñ1Ó3°bÕ8€DÜ�:Š:�a˜•e˜q•j :Õ-°Õ1Ó2×6Ñ6Ó8¸2Õ=€Dä�<Š<˜!˜Q  :Ð.Ð/¸Ô?€DÜ�kŠkœ5Ÿ?š?¨1Ó-¨q°TÐ:ÀÔB€GÜ�{Š{˜AœuŸš¨q°Bµ%Ó8¼%¿/º/È!ÈrÍUÓ:SÐUYÐZÐ`aÔb€HÜ�YŠY˜ xÐ0°aÔ8€Fä—Z’Z  q¨#¨2¨# v¥°AÔ6×<Ñ<Ó>€NàÕ,Ð/BÕBÀZÕO€NÜ—~’~Ø	Œ5�9Š9”U—\’\ .Ô@ÓAÀ8ÈaÅ<ÐX^ôÐô —)’)Ð,×6Ñ6°qÓ9¼E¿IºIÀnÓ<U×<_Ñ<_Ð`aÓ<bÕbÓc€Kà—<‘< •?Ô"Ü�|Š|˜K¨QÔ/‰å8á*¨;¯?©?Ó+<×+BÑ+BÓ+DÓE‰
ˆˆ7Ü�|Š|˜G¨FÔ3ˆð €Dˆ�GØ�|‰|˜A� Õ"€Dˆ�HØ�$�<Ðr1   c                   óZ   a a€ ] tR tRt oV3R lV 3R llt]V3R lR l4       tRtVtV ;t	# )ÚInklingVisionModeli½  c                ó    <€ V ^8„  d   QhRS[ /# r  )r"   )r,   r-   s   "€r.   r/   ÚInklingVisionModel.__annotate__¿  s   ø€ ÷ ñ Ñ2ñ r1   c                ó°  <€ \         S	V `  V4       \        VP                  VP                  VP
                  VP                  4      V n        \        P                  ! 4       V n
        \        \        V P                  R R V P                  R,          4      4       EF  w  pw  r4V^ ,          V^ ,          ,          V^,          V^,          ,          ,          V^,          V^,          ,          ,          pW!P
                  ^,
          8X  d   VP                  MV^,          p\        V^,          V^,          ,          4      p\        V^ ,          V^ ,          ,          4      pV P                  P                  \!        V^,          V,          VVVW!P
                  ^,
          8g  R7      4       EK  	  \#        VP                  4      V n        V P'                  4        R # )N:r„   NN)r8  r9  r;  r:  r<  r`   )rO   rP   r}  r\  r]  rå  Únum_channelsrv  rQ   rã  Úencoder_layersrü  Úzipr,  rx   rV  r6  rH   Ú
final_normré  )
rV   r·   r   Ústart_scaleÚ	end_scaleÚshuffle_multr9  r;  r:  rX   s
   &&       €r.   rP   ÚInklingVisionModel.__init__¿  sx  ø€ Ü‰Ñ˜Ô Ü%Ø×&Ñ&Ø×ÑØ×$Ñ$Ø×Ñó	
ˆŒô !Ÿmšm›oˆÔÜ+4´S¸¿¹ÀSÀbÐ9IÈ4Ï;É;ÐWYÍ?Ó5[×+\Ñ'ˆAÑ'�à˜1• ¨Q¥Õ/°I¸aµLÀKÐPQÅNÕ4RÕSÐW`ÐabÕWcÐgrÐstÕguÕWuÕvð ð 56×9QÑ9QÐTUÕ9UÔ4U˜×0Ò0Ð[dÐefÕ[gˆJÜ˜) A�,¨+°a­.Õ8Ó9ˆGÜ˜ 1�¨°Q­Õ7Ó8ˆFØ×Ñ×&Ñ&Ü)Ø)¨!�n¨|Õ;Ø)Ø#Ø!Ø×":Ñ":¸QÕ">Ñ>ô÷ñ ,]ô" )¨×)@Ñ)@ÓAˆŒØ�‰Ör1   c                óP   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[/# ©r(   Úpixel_valuesr­   rK   )r*   r]   r   r   r   )r,   r-   s   "€r.   r/   r�  ß  s-   ø€ ÷ 
ñ 
¡E§L¡Lð 
¹FÑCUÕ<Vð 
Ñ[uñ 
r1   c                óÆ   € VP                   ^ ,          pTpV P                   F  pV! VR7      pK  	  V P                  V4      pVP                  V^R4      p\	        VVR7      # )r   )rB   r1  r`   )rl   r„  r†  r•   r   )rV   r�  r­   Únum_patchesrB   Úlayers   &&,   r.   ri   ÚInklingVisionModel.forwardÞ  sh   € à"×(Ñ(¨Õ+ˆØ$ˆØ×(Ô(ˆEÙ!°Ô>ŠMñ )ð Ÿ™¨Ó6ˆØ%×-Ñ-¨k¸1¸bÓAˆÜ)Ø+Ø'ô
ð 	
r1   )r„  r†  rv  r4  rq   s   @@r.   r  r  ½  s(   ù‡ € ÷ó ð> ÷
ó ÷
ð 
r1   r  zz
    The Base Inkling model which consists of a vision backbone and a language model without language modeling head.,
    c                   óê   a a€ ] tR tRt oRtV3R lV 3R llt]]! RR7      V3R lR l4       4       t]]! R	R7      RV3R
 lR ll4       4       t	V3R lR lt
]]RV3R lR ll4       4       tRtVtV ;t# )ÚInklingModelií  Fc                ó    <€ V ^8„  d   QhRS[ /# r  ©r    )r,   r-   s   "€r.   r/   ÚInklingModel.__annotate__ö  ó   ø€ ÷ ñ ™}ñ r1   c                ó  <€ \         SV `  V4       VP                  P                  V n        \	        VP                  4      V n        \        VP                  4      V n        \        VP                  4      V n        V P                  4        R # r{   )rO   rP   Útext_configrà  rÚ  Úlanguage_modelr(  r½  Úaudio_towerr  Úvision_configÚvision_towerré  r  s   &&€r.   rP   ÚInklingModel.__init__ö  sf   ø€ Ü‰Ñ˜Ô Ø ×,Ñ,×7Ñ7ˆŒÜ.¨v×/AÑ/AÓBˆÔÜ,¨V×-@Ñ-@ÓAˆÔÜ.¨v×/CÑ/CÓDˆÔØ�‰Ör1   zOProjects the last hidden state from the vision model into language model space.r#   c                ó`   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[S[,          /# rŒ  )r*   r+   r   r   rD   r   )r,   r-   s   "€r.   r/   r–     s<   ø€ ÷ Fñ FÙ!×-Ñ-ðFÙ9?Ñ@RÕ9SðFá	Ñ+Õ	+ñFr1   c                ó*   € V P                   ! RR V/VB # )r�  r2   )r�  ©rV   r�  r­   s   &&,r.   Úget_image_featuresÚInklingModel.get_image_featuresþ  s   € ð
 × Ò ÑE¨lÐE¸fÑEÐEr1   zCProjects discretized dMel bin tokens into the language model space.c                ór   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[,          /# )r(   r/  Úaudio_input_ids_maskNrK   )r*   rð  r]   rD   r   )r,   r-   s   "€r.   r/   r–    s>   ø€ ÷ 1ñ 1á×)Ñ)ð1ñ $Ÿl™l¨TÕ1ð1ñ 
Ñ+Õ	+ñ	1r1   c                ó    € Ve   WP                  4       ,          pM#VP                  RVP                  R,          4      pV P                  V4      # )a¼  
audio_input_ids (`torch.LongTensor` of shape `(num_audios, max_num_frames, n_mel_bins)`):
    Batch of (padded) dMel bin tokens produced by [`InklingProcessor`].
audio_input_ids_mask (`torch.Tensor` of shape `(num_audios, max_num_frames)`, *optional*):
    Mask marking valid (non-padding) frames. When provided, only valid frames are encoded so that the
    number of returned audio embeddings matches the number of audio placeholder tokens.
r`   )rñ  r•   rl   r›  )rV   r/  r¥  s   &&&r.   Úget_audio_featuresÚInklingModel.get_audio_features  sJ   € ð  Ò+Ø-×.GÑ.GÓ.IÕJ‰Oà-×5Ñ5°b¸/×:OÑ:OÐPRÕ:SÓTˆOØ×Ñ Ó0Ð0r1   c                ón   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  RS[/# )r(   rì  rî  ÚfeaturesÚtoken_id)r*   rð  r+   rx   )r,   r-   s   "€r.   r/   r–    sE   ø€ ÷ ñ á×#Ñ#ðñ ×(Ñ(ðñ ×#Ñ#ð	ñ
 ñr1   c                ó  € Vfs   W P                   P                  V P                  4       ! \        P                  ! V\        P
                  VP                  R7      4      4      8H  pVP                  R4      pMW8H  pVP                  4       pVP                  R4      P                  V4      P                  VP                  4      p\        W%,          P                  4       VP                  4       8H  RV RVP                  ^ ,           24       V# )zÞ
Obtains a multimodal placeholder mask from `input_ids` or `inputs_embeds` for the given `token_id`, and checks
that the placeholder token count matches the length of `features`. If the lengths differ, an error is raised.
)ra   rã   zAMultimodal features and placeholder tokens do not match, tokens: z, features: r`   )rš  rç  Úget_input_embeddingsr*   rc  Úlongrã   Úallr+  r†  Ú	expand_asrb   r   Únumelrl   )rV   rì  rî  rª  r«  Úspecial_maskÚn_tokenss   &&&&&  r.   Úget_placeholder_maskÚ!InklingModel.get_placeholder_mask  sí   € ð ÒØ(×,?Ñ,?×,JÑ,JØ×)Ñ)Ô+¬E¯LªL¸ÌÏÉÐ\i×\pÑ\pÔ,qÓró-ñ ˆLð (×+Ñ+¨BÓ/‰Là$Ñ0ˆLà×#Ñ#Ó%ˆØ#×-Ñ-¨bÓ1×;Ñ;¸MÓJ×MÑMÈm×NbÑNbÓcˆÜØÕ'×-Ñ-Ó/°8·>±>Ó3CÑCØOÐPXÈzÐYeÐfn×ftÑftÐuvÕfwÐexÐyô	
ð Ðr1   c                óÖ  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          R	S[ P                  R,          R
S[ P                  R,          RS[ P                  R,          RS[R,          RS[S[,          RS[S[	,          /# )r(   rì  Nr�  r/  r¥  r    rí  rA   Útoken_type_idsrî  r  rï  Ú	lm_kwargsrK   )
r*   rð  r+   r]   r   rñ  r   r   rD   r&   )r,   r-   s   "€r.   r/   r–  6  s  ø€ ÷ j
ñ j
á×#Ñ# dÕ*ðj
ñ ×'Ñ'¨$Õ.ðj
ñ ×)Ñ)¨DÕ0ð	j
ñ
 $Ÿl™l¨TÕ1ðj
ñ Ÿ™ tÕ+ðj
ñ ×&Ñ&¨Õ-ðj
ñ  �ðj
ñ ×(Ñ(¨4Õ/ðj
ñ ×(Ñ(¨4Õ/ðj
ñ × Ñ  4Õ'ðj
ñ ˜$•;ðj
ñ Ñ.Õ/ðj
ñ 
Ñ+Õ	+ñj
r1   c                ó  € VRJ V	RJ,          '       d   \        R4      hV	f   V P                  4       ! V4      p	V P                  P                  V	4      p	Vey   V P	                  V4      P
                  pVP                  V	P                  V	P                  4      pV P                  WWÐP                  P                  4      pV	P                  Wí4      p	RpVez   V P                  W44      P                  pVP                  V	P                  V	P                  4      pV P                  WWðP                  P                  4      pV	P                  VV4      p	\!        T;p\"        4      '       gH   RV P                  P%                  4       RV	RVRVRV/pR\'        R/ VB R	\)        R/ VB R
\+        R/ VB /pV P                  ! RRVRVRVRV	RV/VB p\-        VP                  VP.                  VP0                  VP2                  Ve   XR7      # RR7      # )ag  
audio_input_ids (`torch.LongTensor` of shape `(num_audios, max_num_frames, n_mel_bins)`, *optional*):
    Batch of (padded) discretized dMel bin tokens produced by [`InklingProcessor`].
audio_input_ids_mask (`torch.Tensor` of shape `(num_audios, max_num_frames)`, *optional*):
    Mask marking valid (non-padding) audio frames in `audio_input_ids`.
labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
    Labels for computing the masked language modeling loss. Indices should either be in `[0, ...,
    config.text_config.vocab_size]` or -100 (see `input_ids` docstring). Tokens with indices set to `-100` are ignored
    (masked), the loss is only computed for the tokens with labels in `[0, ..., config.text_config.vocab_size]`.

Example:

```python
>>> from PIL import Image
>>> import httpx
>>> from io import BytesIO
>>> from transformers import AutoProcessor, InklingForConditionalGeneration

>>> model = InklingForConditionalGeneration.from_pretrained("thinkingmachines/Inkling-NVFP4")
>>> processor = AutoProcessor.from_pretrained("thinkingmachines/Inkling-NVFP4")

>>> prompt = "Where is the cat standing?"
>>> url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))

>>> inputs = processor(images=image, text=prompt,  return_tensors="pt")

>>> # Generate
>>> generate_ids = model.generate(**inputs,)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"Where is the cat standing?\nsnow"
```Nró  r·   rî  r    rA   rí  rô  rõ  rö  rï  )rø  rA   rB   rC   r)   r2   )rù  r­  rš  rç  r¢  r2  rb   rã   ra   r´  r·   Úimage_token_idÚmasked_scatterr§  rø  Úaudio_token_idrÁ  rû  r¿  r   r   r   r&   rA   rB   rC   )rV   rì  r�  r/  r¥  r    rí  rA   r·  rî  r  rï  r¸  Úimage_featuresÚspecial_image_maskÚaudio_featuresÚspecial_audio_maskrþ  rÿ  r  s   &&&&&&&&&&&&,       r.   ri   ÚInklingModel.forward4  sF  € ðd ˜Ð -°tÐ";×<Ô<ÜÐYÓZÐZàÒ Ø ×5Ñ5Ô7¸	ÓBˆMà×+Ñ+×6Ñ6°}ÓEˆð Ò#Ø!×4Ñ4°\ÓB×PÑPˆNØ+×.Ñ.¨}×/CÑ/CÀ]×EXÑEXÓYˆNØ!%×!:Ñ!:Ø¨.¿+¹+×:TÑ:Tó"Ðð *×8Ñ8Ð9KÓ\ˆMð ˆØÒ&Ø!×4Ñ4°_Ó[×mÑmˆNØ+×.Ñ.¨}×/CÑ/CÀ]×EXÑEXÓYˆNØ!%×!:Ñ!:Ø¨.¿+¹+×:TÑ:Tó"Ðð *×8Ñ8Ð9KÈ^Ó\ˆMô °Ð?Ð-Ä×FÒFà˜$Ÿ+™+×5Ñ5Ó7Ø Ø  .Ø! ?Ø ðˆKð !Ô"4Ñ"C°{Ñ"CØ#Ô%FÑ%UÈÑ%UØ"Ô$CÑ$RÀkÑ$Rð#Ðð ×%Ò%ñ 
Ø.ð
à%ð
ð ,ð
ð (ð	
ð
  ð
ð ñ
ˆô *Ø%×7Ñ7Ø#×3Ñ3Ø!×/Ñ/Ø×)Ñ)Ø2>Ò2J ô
ð 	
ð
 QUô
ð 	
r1   )r›  rš  r�  rà  r{   )NNNNNNNNNNN)r3   r4   r5   r6   Úaccepts_loss_kwargsrP   r   r   r¢  r§  r´  ri   r9   r:   rp   rq   s   @@r.   r“  r“  í  s˜   ù‡ € ð  Ð÷ó ð ÙÐ!rÔs÷Fó tó ðFð
 ÙÐ!fÔg÷1ñ 1ó hó ð1÷$ð ð6 Ø÷j
ñ j
ó ó ÷j
ð j
r1   r“  c                   ó¤   a a€ ] tR tRt o/ tRR/tRtV3R lV 3R llt]V3R lR l4       t	]
]RV3R	 lR
 ll4       4       tRV 3R lltRtVtV ;t# )ÚInklingForConditionalGenerationi£  r  r  Fc                ó    <€ V ^8„  d   QhRS[ /# r  r•  )r,   r-   s   "€r.   r/   Ú,InklingForConditionalGeneration.__annotate__°  r—  r1   c                óò   <€ \         SV `  V4       \        V4      V n        \        P
                  ! VP                  P                  VP                  P                  R R7      V n	        V P                  4        R# r  )rO   rP   r“  rº  rQ   rÍ   r™  rW   rà  r  ré  r  s   &&€r.   rP   Ú(InklingForConditionalGeneration.__init__°  sU   ø€ Ü‰Ñ˜Ô Ü! &Ó)ˆŒ
ô —y’y ×!3Ñ!3×!?Ñ!?À×ASÑAS×A^ÑA^ÐejÔkˆŒØ�‰Ör1   c                óJ   <€ V ^8„  d   QhRS[ P                  RS[S[,          /# )r(   r�  r­   )r*   r+   r   r   )r,   r-   s   "€r.   r/   rÆ  ¹  s+   ø€ ÷ Eñ E©u×/@Ñ/@ð EÉFÑSeÕLfñ Er1   c                ó<   € V P                   P                  ! V3/ VB # r{   )rº  r¢  r¡  s   &&,r.   r¢  Ú2InklingForConditionalGeneration.get_image_features¸  s   € à�z‰z×,Ò,¨\ÑD¸VÑDÐDr1   c                óØ  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[ P                  R,          RS[ P                  R,          R	S[ P                  R,          R
S[ P                  R,          RS[R,          RS[S[ P                  ,          RS[S[,          RS[	S[
,          /# )r(   rì  Nr�  r    rí  rA   r/  r¥  rî  r  rï  r  r­   rK   )r*   rð  r+   r]   r   rñ  rx   r   r   rD   r=   )r,   r-   s   "€r.   r/   rÆ  ¾  s  ø€ ÷ a
ñ a
á×#Ñ# dÕ*ða
ñ ×'Ñ'¨$Õ.ða
ñ Ÿ™ tÕ+ð	a
ñ
 ×&Ñ&¨Õ-ða
ñ  �ða
ñ ×)Ñ)¨DÕ0ða
ñ $Ÿl™l¨TÕ1ða
ñ ×(Ñ(¨4Õ/ða
ñ × Ñ  4Õ'ða
ñ ˜$•;ða
ñ ™eŸl™lÕ*ða
ñ Ñ+Õ,ða
ñ 
Ñ.Õ	.ña
r1   c                óŒ  € V P                   ! RRVRVRVRVRVRVRVRVR	V
R
V	/
VB pV^ ,          V P                  P                  P                  ,          p\	        V\
        4      '       d   \        V) R4      MTpV P                  VRVR3,          4      pV P                  P                  P                  pVe&   VVP                  R,          8  d   VRRV13,          pRpV	e*   V P                  ! RRVR
V	RVP                  R,          /VB p\        VVVP                  VP                  VP                  VP                  R7      # )a<  
audio_input_ids (`torch.LongTensor` of shape `(num_audios, max_num_frames, n_mel_bins)`, *optional*):
    Batch of (padded) discretized dMel bin tokens produced by [`InklingProcessor`].
audio_input_ids_mask (`torch.Tensor` of shape `(num_audios, max_num_frames)`, *optional*):
    Mask marking valid (non-padding) audio frames in `audio_input_ids`.
labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
    Labels for computing the masked language modeling loss. Indices should either be in `[0, ...,
    config.text_config.vocab_size]` or -100 (see `input_ids` docstring). Tokens with indices set to `-100` are ignored
    (masked), the loss is only computed for the tokens with labels in `[0, ..., config.text_config.vocab_size]`.

Example:

```python
>>> from PIL import Image
>>> import httpx
>>> from io import BytesIO
>>> from transformers import AutoProcessor, InklingForConditionalGeneration

>>> model = InklingForConditionalGeneration.from_pretrained("thinkingmachines/Inkling-NVFP4")
>>> processor = AutoProcessor.from_pretrained("thinkingmachines/Inkling-NVFP4")

>>> messages = [
...     {
...         "role": "system",
...         "content": [
...             {"type": "text", "text": "You are a helpful assistant."}
...         ]
...     },
...     {
...         "role": "user", "content": [
...             {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg"},
...             {"type": "text", "text": "Where is the cat standing?"},
...         ]
...     },
... ]

>>> inputs = processor.apply_chat_template(
...     messages,
...     tokenize=True,
...     return_dict=True,
...     return_tensors="pt",
...     add_generation_prompt=True
... )
>>> # Generate
>>> generate_ids = model.generate(**inputs)
>>> processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"user\nYou are a helpful assistant.\n\n\n\n\n\nWhere is the cat standing?\nmodel\nBased on the image, the cat is standing in a snowy area, likely outdoors. It appears to"
```
rì  r�  r/  r¥  r    rí  rA   rî  rï  r  Nr†   .r@   rà  )r?   r@   rA   rB   rC   r)   r2   r`   )rº  r·   r™  r  rÁ  rx   r  r  r  rl   r  r=   rA   rB   rC   r)   )rV   rì  r�  r    rí  rA   r/  r¥  rî  r  rï  r  r­   r  rB   r  r@   r  r?   s   &&&&&&&&&&&&,      r.   ri   Ú'InklingForConditionalGeneration.forward¼  sˆ  € ðD —*’*ñ 
Øð
à%ð
ð ,ð
ð "6ð	
ð
 *ð
ð &ð
ð ,ð
ð (ð
ð  ð
ð ð
ð ñ
ˆð   �
 T§[¡[×%<Ñ%<×%XÑ%XÕXˆä8BÀ>ÔSV×8WÒ8Wœ˜~˜o¨tÔ4Ð]kˆØ—‘˜m¨A¨}¸aÐ,?Õ@ÓAˆØ"Ÿk™k×5Ñ5×IÑIÐØÒ*Ð/BÀVÇ\Á\ÐRTÕEUÔ/UØ˜CÐ!5Ð"5Ð!5Ð5Õ6ˆFàˆØÒØ×%Ò%Ñj¨VÐj¸FÐjÈvÏ|É|Ð\^ÕO_ÐjÐciÑjˆDä,ØØØ#×3Ñ3Ø!×/Ñ/Ø×)Ñ)Ø '× ;Ñ ;ô
ð 	
r1   c                ó~   <€ \         SV `  ! V3R VRVRVRVRV	RV
RV/VB pV'       g	   V	'       g   W^R&   W~R&   WŽR	&   V# )
rA   rî  r    rí  rï  r  Úis_first_iterationr�  r/  r¥  )rO   Úprepare_inputs_for_generation)rV   rì  rA   rî  rí  r�  r    r/  r¥  rï  r  r  rÐ  r­   Úmodel_inputsrX   s   &&&&&&&&&&&&&, €r.   rÑ  Ú=InklingForConditionalGeneration.prepare_inputs_for_generation!  sŒ   ø€ ô" ‘wÒ<Øñ

à+ð

ð (ð

ð *ð	

ð
 &ð

ð  ð

ð *ð

ð  2ð

ð ñ

ˆ÷ §YØ+7˜Ñ(Ø.=Ð*Ñ+Ø3GÐ/Ñ0àÐr1   )r  rº  )NNNNNNNNNNr   )NNNNNNNTr   NF)r3   r4   r5   r6   r  r  rÂ  rP   r   r¢  r   ri   rÑ  r9   r:   rp   rq   s   @@r.   rÄ  rÄ  £  so   ù‡ € ð ÐØÐ0Ð1€Hð  Ð÷ó ð ÷Eó ðEð Ø÷a
ñ a
ó ó ða
÷F"÷ "r1   rÄ  )r…   Nrü   )rm  )r¹  rÚ  r  r(  r  r“  rÄ  )WrW  Úcollections.abcr   Údataclassesr   r*   Útorch.nnrQ   Útorch.nn.functionalrª   rM  Ú r   rÂ  Úactivationsr   Úcache_utilsr   r   Ú
generationr	   Úintegrationsr
   r   r   r   Úintegrations.accelerater   Úmasking_utilsr   r   r   Úmodeling_layersr   Úmodeling_outputsr   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   r   r   Úutils.genericr   Úutils.output_capturingr   Úconfiguration_inklingr   r    r!   r"   r&   r=   r£   rH   rs   rš   r²   r´   rÿ   r  r=  rb  rm  ry  rz  rŠ  rÓ   r§  r¹  rÚ  r  rÆ  r(  r6  rZ  r}  r  r“  rÄ  Ú__all__r2   r1   r.   Ú<module>rè     s  ðó, Ý $Ý !ã Ý ß Ð å &Ý !ß .Ý )÷ó õ >ß sÑ sÝ 9ß Sß FÝ &ß nÕ nÝ 7Ý 5ß lÓ lñ ðôð
 ô9Ð!8ó 9ó óð9ñ ðôð
 ô9 Kó 9ó óð9ñ0 ˜YÓ'ôJ�R—Y‘Yó Jó (ðJô(^˜BŸI™Iô ^õ4	U÷%ô8a)�r—y‘yô a)ôH1�—‘ô 1ð" ô$#�R—Y‘Yó $#ó ð$#ôN#H˜Ÿ	™	ô #HôL%˜2Ÿ9™9ô %ô6�—‘ô ò(	ñ (Ð(>ÀÓPö'ó Qð'ñ& (Ð(:¸OÓLö'ó Mð'ñ, Ð*Ð,<Ð=Ó>ô;˜bŸi™ió ;ó ?ð;ô|.Ð4ô .ðb ô.˜_ó .ó ð.ðb ôN
Ð-ó N
ó ðN
ðb ôL
Ð/°ó L
ó ðL
ô^ "§)¡)ô ð ô
Ð.ó 
ó ð
ô(" §	¡	ô "õJ÷";ð| ô,
Ð/ó ,
ó ð,
ñ^ ðôô
n
Ð)ó n
óð
n
ñb ðôô
[Ð&<¸oó [óð
[ò|‚r1   