Ë
    îÿæi<>  ã                   óØ  — d dl mZmZ d dlmZmZ d dlmZ d dl	m
Z
 ddl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 e G d
„ de«      «       Z G d„ de
j6                  «      Zd„ Z G d„ de
j6                  «      Z G d„ de
j6                  «      Z G d„ de
j6                  «      Z  G d„ de
j6                  «      Z! G d„ de
j6                  «      Z" G d„ de
j6                  «      Z#y)é    )Ú	dataclassÚfield)ÚListÚOptionalNé   )Úswiglu)ÚBaseModelArgsÚcreate_attention_maskÚcreate_ssm_maskÚscaled_dot_product_attention)ÚArraysCacheÚ	CacheListÚKVCache)Úinitialize_rope)Ú
ssm_updatec                   ó~  — e Zd ZU dZeed<   dZeed<   dZeed<   dZ	eed<   d	Z
eed
<   dZeed<   dZeed<   dZeed<   dZeed<   dZeed<   dZeed<   dZeed<   dZeed<   d	Zeed<   dZeed<   dZeed<   dZeed <   d!Zeed"<   d#Zeed$<   dZeed%<   dZeed&<   dZeed'<   dZeed(<   d)Zeed*<   dZeed+<   d,Z eed-<    e!d.„ ¬/«      Z"e#e   ed0<   d1Z$e%ed2<   d,Z&eed3<   d4Z'eed5<   dZ(eed6<   dZ)eed7<   d8Z*eed9<   dZ+eed:<   d;Z,e-e   ed<<   d=Z.eed><   d?Z/eed@<    e!dA„ ¬/«      Z0e#e   edB<   dCZ1eedD<   dEZ2eedF<   dZ3eedG<   y;)HÚ	ModelArgsFÚattention_biasg      ð?Úattention_in_multiplierg      î?Úattention_out_multipliergÍ;fž @Úembedding_multiplieré@   Úhead_dimi   Úhidden_sizeg{®Gáz”?Úinitializer_rangei   Úintermediate_sizeg      Ù?Úkey_multiplierg      ¤?Úlm_head_multiplieré€   Úmamba_chunk_sizeTÚmamba_conv_biasé   Úmamba_d_convÚmamba_d_headi   Úmamba_d_ssmÚmamba_d_stateé   Úmamba_expandr   Úmamba_n_groupsé   Úmamba_n_headsÚmamba_norm_before_gateÚmamba_proj_biasÚmamba_rms_normÚmamba_use_mlpi   Úmax_position_embeddingsÚmlp_biasé   Úmlp_expansion_factorc                  ó
   — ddgS )NgÀ
 ÆHì?g     Àâ?© r5   ó    úl/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/mlx_lm/models/falcon_h1.pyÚ<lambda>zModelArgs.<lambda>2   s
   € Ð!3°YÑ ?r6   )Údefault_factoryÚmlp_multipliersÚ	falcon_h1Ú
model_typeÚnum_attention_headsé$   Únum_hidden_layersÚnum_key_value_headsÚprojectors_biasgñhãˆµøä>Úrms_norm_epsÚrope_traditionalNÚrope_scalingg   èvH7BÚ
rope_thetag      ô?Ússm_in_multiplierc                  ó
   — g d¢S )N)çÍ;fž Ö?g      Ð?rH   g      à?rH   r5   r5   r6   r7   r8   zModelArgs.<lambda>?   s   € ó !
r6   Ússm_multipliersggúþÝ}+Î?Ússm_out_multiplieri€  Ú
vocab_sizeÚtie_word_embeddings)4Ú__name__Ú
__module__Ú__qualname__r   ÚboolÚ__annotations__r   Úfloatr   r   r   Úintr   r   r   r   r   r    r!   r#   r$   r%   r&   r(   r)   r+   r,   r-   r.   r/   r0   r1   r3   r   r:   r   r<   Ústrr=   r?   r@   rA   rB   rC   rD   r   rE   rF   rI   rJ   rK   rL   r5   r6   r7   r   r      sÓ  … à €N�DÓ Ø%(Ð˜UÓ(Ø&,Ð˜eÓ,Ø"3Ð˜%Ó3Ø€HˆcÓØ€K�ÓØ#Ð�uÓ#Ø!Ð�sÓ!Ø$€N�EÓ$Ø )Ð˜Ó)ØÐ�cÓØ €O�TÓ Ø€L�#ÓØ€L�#ÓØ€K�ÓØ€M�3ÓØ€L�#ÓØ€N�CÓØ€M�3ÓØ#(Ð˜DÓ(Ø!€O�TÓ!Ø €N�DÓ Ø€M�4ÓØ#)Ð˜SÓ)Ø€HˆdÓØ !Ð˜#Ó!Ù#(Ù?ô$€O�T˜%‘[ó ð "€J�Ó!Ø Ð˜Ó ØÐ�sÓØ Ð˜Ó Ø!€O�TÓ!Ø€L�%ÓØ"Ð�dÓ"Ø$(€L�(˜5‘/Ó(Ø&€J�Ó&Ø#Ð�uÓ#Ù#(ñ
ô$€O�T˜%‘[ó ð !4Ð˜Ó3Ø€J�ÓØ $Ð˜Ô$r6   r   c                   ó(   ‡ — e Zd Zdˆ fd„	Zdd„Zˆ xZS )ÚFalconH1RMSNormGatedc                 ó‚   •— t         ‰| �  «        t        j                  |f«      | _        || _        || _        || _        y ©N)ÚsuperÚ__init__ÚmxÚonesÚweightÚvariance_epsilonÚn_groupsÚnorm_before_gate)Úselfr   Úepsr_   r`   Ú	__class__s        €r7   rZ   zFalconH1RMSNormGated.__init__M   s7   ø€ Ü‰ÑÔÜ—g‘g˜{˜nÓ-ˆŒØ #ˆÔØ ˆŒØ 0ˆÕr6   c                 óØ   — | j                   s|�t        ||«      }t        j                  j	                  || j
                  | j                  «      }| j                   r|�t        ||«      }|S rX   )r`   r   r[   ÚfastÚrms_normr]   r^   )ra   Úhidden_statesÚgates      r7   Ú__call__zFalconH1RMSNormGated.__call__T   sc   € Ø×$Ò$¨Ð)9Ü" 4¨Ó7ˆMäŸ™×(Ñ(Ø˜4Ÿ;™;¨×(=Ñ(=ó
ˆð × Ò  TÐ%5Ü" 4¨Ó7ˆMØÐr6   )g�íµ ÷Æ°>r   TrX   ©rM   rN   rO   rZ   ri   Ú__classcell__©rc   s   @r7   rV   rV   L   s   ø„ õ1÷
r6   rV   c                 óF  — | j                   }| j                  | j                  z  }| j                  }|||||g}t	        j
                  t        || j                  «      D ��cg c]/  \  }}t	        j                  t	        j                  |«      |f«      ‘Œ1 c}}«      S c c}}w rX   )
r%   r)   r&   r+   r[   ÚconcatenateÚziprI   Úbroadcast_toÚarray)Úargsr   Úgroups_time_state_sizeÚ	num_headsÚsizesÚsÚms          r7   Úcompute_mup_vectorrx   a   s¡   € Ø×(Ñ(ÐØ!×0Ñ0°4×3EÑ3EÑEÐØ×"Ñ"€IàØØØØð€Eô �>‰>ô ˜E 4×#7Ñ#7Ô8ô	
á8‘��1ô �O‰OœBŸH™H Q›K¨!¨Õ.Ø8ò	
óð ùó	
s   Á!4B
c                   ó&   ‡ — e Zd Zˆ fd„Zdd„Zˆ xZS )ÚFalconH1Attentionc                 óž  •— t         ‰| �  «        |j                  | _        |j                  | _        |j
                  | _        |j                  | _        | j                  dz  | _        t        j                  | j                  | j                  | j                  z  |j                  ¬«      | _        t        j                  | j                  | j                  | j                  z  |j                  ¬«      | _        t        j                  | j                  | j                  | j                  z  |j                  ¬«      | _        t        j                  | j                  | j                  z  | j                  |j                  ¬«      | _        t!        | j                  |j"                  |j$                  |j&                  |j(                  «      | _        y )Ng      à¿©Úbias)rY   rZ   r   r=   rt   r@   Únum_kv_headsr   ÚscaleÚnnÚLinearr   Úq_projÚk_projÚv_projÚo_projr   rE   rC   rD   r0   Úrope©ra   rr   rc   s     €r7   rZ   zFalconH1Attention.__init__v   sW  ø€ Ü‰ÑÔà×+Ñ+ˆÔØ×1Ñ1ˆŒØ ×4Ñ4ˆÔØŸ™ˆŒØ—]‘] DÑ(ˆŒ
ä—i‘iØ×Ñ˜dŸn™n¨t¯}©}Ñ<À4×CVÑCVô
ˆŒô —i‘iØ×ÑØ×Ñ §¡Ñ-Ø×$Ñ$ô
ˆŒô
 —i‘iØ×ÑØ×Ñ §¡Ñ-Ø×$Ñ$ô
ˆŒô
 —i‘iØ�N‰N˜TŸ]™]Ñ*¨D×,<Ñ,<À4×CVÑCVô
ˆŒô $Ø�M‰MØ�O‰OØ×!Ñ!Ø×ÑØ×(Ñ(ó
ˆ�	r6   c                 ó2  — |j                   \  }}}| j                  |«      }| j                  |«      }| j                  |«      }	|j	                  ||| j
                  d«      j                  dddd«      }|j	                  ||| j                  d«      j                  dddd«      }|	j	                  ||| j                  d«      j                  dddd«      }	|�P| j                  ||j                  ¬«      }| j                  ||j                  ¬«      }|j                  ||	«      \  }}	n"| j                  |«      }| j                  |«      }t        |||	|| j                  |¬«      }
|
j                  dddd«      j	                  ||d«      }
| j                  |
«      S )Néÿÿÿÿr   r'   r   é   )Úoffset)Úmaskr   Úcache)Úshaper‚   rƒ   r„   Úreshapert   Ú	transposer~   r†   r‹   Úupdate_and_fetchr   r   r…   )ra   ÚxrŒ   r�   ÚBÚLÚ_ÚqueriesÚkeysÚvaluesÚoutputs              r7   ri   zFalconH1Attention.__call__˜   sl  € Ø—'‘'‰ˆˆ1ˆaà—+‘+˜a“.ˆØ�{‰{˜1‹~ˆØ—‘˜Q“ˆà—/‘/ ! Q¨¯©¸Ó;×EÑEÀaÈÈAÈqÓQˆØ�|‰|˜A˜q $×"3Ñ"3°RÓ8×BÑBÀ1ÀaÈÈAÓNˆØ—‘  1 d×&7Ñ&7¸Ó<×FÑFÀqÈ!ÈQÐPQÓRˆàÐØ—i‘i °·±�iÓ=ˆGØ—9‘9˜T¨%¯,©,�9Ó7ˆDØ ×1Ñ1°$¸Ó?‰LˆD‘&à—i‘i Ó(ˆGØ—9‘9˜T“?ˆDä-Ø�T˜6¨°D·J±JÀeô
ˆð ×!Ñ! ! Q¨¨1Ó-×5Ñ5°a¸¸BÓ?ˆà�{‰{˜6Ó"Ð"r6   ©NNrj   rl   s   @r7   rz   rz   t   s   ø„ ô 
÷D#r6   rz   c                   óN  ‡ — e Zd Zˆ fd„Zdej
                  dee   deej
                     dej
                  fd„Zdej
                  dej
                  d	ej
                  d
ej
                  dee   deej
                     dej
                  fd„Z	ddeej
                     fd„Z
ˆ xZS )ÚFalconH1Mixerc                 óÐ  •— t         ‰| �  «        |j                  | _        |j                  | _        |j
                  | _        |j                  | _        |j                  | _
        |j                  | _        |j                  | _        |j                  | j                  z  | _        |j                  | _        |j$                  | _        |j(                  | _        dt-        d«      f| _        d| _        d| _        | j                  d| j"                  z  | j                  z  z   | _        t7        j8                  | j4                  | j4                  | j                  | j                  | j4                  ¬«      | _        | j                  | j4                  z   | j                  z   }t7        j<                  | j                  ||j>                  ¬«      | _         tC        jD                  | j                  «      | _#        tC        jH                  d| j                  dz   «      }tC        jJ                  |«      | _&        |jN                  | _'        | jN                  r<tQ        | j                  | j                  | j"                  |jR                  ¬	«      | _*        tC        jD                  | j                  «      | _+        t7        j<                  | j                  | j                  |jX                  ¬«      | _-        y )
Ng        Úinfgü©ñÒMbP?gš™™™™™¹?r'   )Úin_channelsÚout_channelsr}   Úkernel_sizeÚgroupsr|   r   )rb   r_   r`   ).rY   rZ   r+   rt   r   r&   Ússm_state_sizer#   Úconv_kernel_sizer%   r   r!   Úuse_conv_biasrB   Úlayer_norm_epsilonr)   rs   r_   r$   r   r    Ú
chunk_sizerR   Útime_step_limitÚtime_step_minÚtime_step_maxÚconv_dimr€   ÚConv1dÚconv1dr�   r-   Úin_projr[   r\   Údt_biasÚarangeÚlogÚA_logr.   rV   r,   ÚnormÚDrA   Úout_proj)ra   rr   Úprojection_sizeÚArc   s       €r7   rZ   zFalconH1Mixer.__init__´   s3  ø€ Ü‰ÑÔØ×+Ñ+ˆŒØ×+Ñ+ˆÔØ"×0Ñ0ˆÔØ $× 1Ñ 1ˆÔØ!%×!1Ñ!1ˆÔØ!×1Ñ1ˆÔà"&×"3Ñ"3ˆÔØ&*×&9Ñ&9¸D×<OÑ<OÑ&OˆÔ#à×+Ñ+ˆŒØ×)Ñ)ˆŒØ×/Ñ/ˆŒà #¤U¨5£\Ð2ˆÔØ"ˆÔØ ˆÔà×.Ñ.°°T·]±]Ñ1BÀT×EXÑEXÑ1XÑXˆŒÜ—i‘iØŸ™ØŸ™Ø×#Ñ#Ø×-Ñ-Ø—=‘=ô
ˆŒð ×0Ñ0°4·=±=Ñ@À4Ç>Á>ÑQˆÜ—y‘yØ×ÑØØ×%Ñ%ô
ˆŒô —w‘w˜tŸ~™~Ó.ˆŒä�I‰I�a˜Ÿ™¨!Ñ+Ó,ˆÜ—V‘V˜A“YˆŒ
à"×1Ñ1ˆÔØ×ÒÜ,Ø×&Ñ&Ø×+Ñ+ØŸ™Ø!%×!<Ñ!<ô	ˆDŒIô —‘˜Ÿ™Ó(ˆŒäŸ	™	Ø×"Ñ" D×$4Ñ$4¸4×;OÑ;Oô
ˆ�r6   Ú
conv_inputr�   rŒ   Úreturnc                 óò  — |�t        j                  |d   |d«      }|��|d   €It        j                  |j                  d   | j                  dz
  | j
                  f|j                  ¬«      }n|d   }t        j                  ||gd¬«      }| j                  dz
  }|j                  �q|j                  d   }t        j                  |j                  d||z
  «      }|d d …d f   t        j                  |«      z   d   }	t        j                  ||	d¬«      |d<   n;|d d …| d …d d …f   |d<   n(t        j                  |d| j                  dz
  dfdg«      }| j                  |«      }
t        j                  |
«      S )N).Nr   r   )Údtype©Úaxis)r   r   )r[   ÚwhereÚzerosrŽ   r¤   r«   r»   rn   ÚlengthsÚclipr°   Útake_along_axisÚpadr­   r€   Úsilu)ra   r¸   r�   rŒ   Ú
conv_stateÚpadded_inputÚn_keepÚtÚendsÚ	positionsÚconv_outputs              r7   Ú_convzFalconH1Mixer._convì   sh  € ð ÐÜŸ™ $ y¡/°:¸qÓAˆJàÑØ�Q‰xÐÜŸX™XØ×%Ñ% aÑ(¨$×*?Ñ*?À!Ñ*CÀTÇ]Á]ÐSØ$×*Ñ*ô‘
ð
 # 1™X�
ÜŸ>™>¨:°zÐ*BÈÔKˆLØ×*Ñ*¨QÑ.ˆFØ�}‰}Ð(Ø ×&Ñ& qÑ)�Ü—w‘w˜uŸ}™}¨a°°V±Ó<�Ø!¢! T '™]¬R¯Y©Y°vÓ->Ñ>À	ÑJ�	Ü×-Ñ-¨l¸IÈAÔN��a’à'ª¨F¨7©8²Q¨Ñ7��a’äŸ6™6Ø˜V d×&;Ñ&;¸aÑ&?ÀÐ%CÀVÐLóˆLð —k‘k ,Ó/ˆÜ�w‰w�{Ó#Ð#r6   rg   r“   ÚCÚdtc                 ó  — |j                   \  }}}	|j                  ||| j                  | j                  «      }|j                  ||| j                  | j
                  «      }|j                  ||| j                  | j
                  «      }|r|d   }
|j                  }nd\  }
}t        || j                  ||| j                  || j                  |
| j                  ||«      \  }}
|r|
|d<   |j                  ||| j                  «      S )Nr   rš   )rŽ   r�   rt   r   r_   r£   rÀ   r   r²   r´   r¯   r¨   r   )ra   rg   r“   rÍ   rÎ   r�   rŒ   Ú
batch_sizeÚseq_lenr•   ÚstaterÀ   Úys                r7   Ú_ssmzFalconH1Mixer._ssm  sû   € ð "/×!4Ñ!4Ñˆ
�G˜QØ%×-Ñ-Ø˜ §¡°·±ó
ˆð �I‰I�j '¨4¯=©=¸$×:MÑ:MÓNˆØ�I‰I�j '¨4¯=©=¸$×:MÑ:MÓNˆÙØ˜!‘HˆEØ—m‘m‰Gà'‰NˆE�7ÜØØ�J‰JØØØ�F‰FØØ�L‰LØØ× Ñ ØØó
‰ˆˆ5ñ ØˆE�!‰HØ�y‰y˜ W¨d×.DÑ.DÓEÐEr6   c                 óF  — | j                  |«      }t        j                  || j                  | j                  | j                  z   gd¬«      \  }}}| j                  |||«      }t        j                  || j                  | j                  | j                  | j                  z  z   gd¬«      \  }	}
}| j                  |	|
||||¬«      }|r|j                  |j                  d   «       | j                  r| j                  ||«      }nt        ||«      }| j                  |«      S )Nr‰   r¼   )rŒ   r   )r®   r[   Úsplitr   r«   rÌ   r_   r£   rÔ   ÚadvancerŽ   r.   r³   r   rµ   )ra   Úinput_statesr�   rŒ   Úprojected_statesrh   r¸   rÎ   rË   rg   r“   rÍ   rÓ   s                r7   ri   zFalconH1Mixer.__call__3  s  € ØŸ<™<¨Ó5Ðä!Ÿx™xØØ×#Ñ# T×%;Ñ%;¸d¿m¹mÑ%KÐLØô 
Ñˆˆj˜"ð —j‘j ¨U°DÓ9ˆä Ÿh™hØà×&Ñ&Ø×&Ñ&¨¯©¸×9LÑ9LÑ)LÑLðð ô
Ñˆ�q˜!ð �I‰I�m Q¨¨2¨u¸4ˆIÓ@ˆÙØ�M‰M˜!Ÿ'™' !™*Ô%à×ÒØ—	‘	˜!˜TÓ"‰Aä�t˜Q“ˆAà�}‰}˜QÓÐr6   rš   )rM   rN   rO   rZ   r[   rq   r   r   rÌ   rÔ   ri   rk   rl   s   @r7   rœ   rœ   ³   sÔ   ø„ ô6
ðp $à—H‘Hð $ð ˜Ñ$ð $ð �r—x‘xÑ ð	 $ð
 
�‰ó $ðD#Fà—x‘xð#Fð �8‰8ð#Fð �8‰8ð	#Fð
 �H‰Hð#Fð ˜Ñ$ð#Fð �r—x‘xÑ ð#Fð 
�‰ó#FñJ °xÀÇÁÑ7I÷  r6   rœ   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚFalconH1MLPc                 ó<  •— t         ‰| �  «        |j                  }|j                  }t	        j
                  |||j                  ¬«      | _        t	        j
                  |||j                  ¬«      | _        t	        j
                  |||j                  ¬«      | _	        y )Nr|   )
rY   rZ   r   r   r€   r�   r1   Ú	gate_projÚup_projÚ	down_proj)ra   rr   r   r   rc   s       €r7   rZ   zFalconH1MLP.__init__U  sp   ø€ Ü‰ÑÔà×&Ñ&ˆØ ×2Ñ2ÐäŸ™ ;Ð0AÈÏÉÔVˆŒÜ—y‘y Ð.?ÀdÇmÁmÔTˆŒÜŸ™Ð#4°kÈÏÉÔVˆ�r6   c                 ó|   — t        | j                  |«      | j                  |«      «      }| j                  |«      }|S rX   )r   rÝ   rÞ   rß   )ra   r’   rÓ   s      r7   ri   zFalconH1MLP.__call___  s2   € Ü�4—>‘> !Ó$ d§l¡l°1£oÓ6ˆØ�N‰N˜1ÓˆØˆr6   rj   rl   s   @r7   rÛ   rÛ   S  s   ø„ ôWör6   rÛ   c                   ó’   ‡ — e Zd Zˆ fd„Zdej
                  deej
                     deej
                     dej
                  fd„Zˆ xZS )ÚFalconH1DecoderLayerc                 óª  •— t         ‰| �  «        t        |«      | _        |j                  }|j
                  |z  d|j                  z  |z  z   | _        t        |¬«      | _	        t        |«      | _        t        j                  |j                  |j                  ¬«      | _        t        j                  |j                  |j                  ¬«      | _        y )Nr'   ©rr   ©rb   )rY   rZ   rÛ   Úfeed_forwardr   r=   r@   Úchannels_attnrœ   Úmambarz   Ú	self_attnr€   ÚRMSNormr   rB   Úinput_layernormÚpre_ff_layernorm)ra   rr   r   rc   s      €r7   rZ   zFalconH1DecoderLayer.__init__f  sª   ø€ Ü‰ÑÔÜ'¨Ó-ˆÔà—=‘=ˆà×$Ñ$ xÑ/Ø�$×*Ñ*Ñ*¨XÑ5ñ6ð 	Ôô
 #¨Ô-ˆŒ
ä*¨4Ó0ˆŒä!Ÿz™z¨$×*:Ñ*:À×@QÑ@QÔRˆÔÜ "§
¡
¨4×+;Ñ+;À×ARÑARÔ SˆÕr6   ÚhÚ	attn_maskÚ
mamba_maskr¹   c                 óæ   — |}| j                  |«      }| j                  ||d   |¬«      }| j                  |||d   ¬«      }||z   |z   }|}| j                  |«      }| j	                  |«      }||z   S )Nr   )rØ   r�   rŒ   r   )rŒ   r�   )rë   rè   ré   rì   ræ   )ra   rí   r�   rî   rï   ÚresidualÚmamba_hÚattn_hs           r7   ri   zFalconH1DecoderLayer.__call__w  s‘   € ð ˆØ× Ñ  Ó#ˆà—*‘*¨!°5¸±8À*�*ÓMˆà—‘ØØØ˜‘(ð  ó 
ˆð �wÑ Ñ'ˆàˆØ×!Ñ! !Ó$ˆØ×Ñ˜aÓ ˆØ˜!‰|Ðr6   )	rM   rN   rO   rZ   r[   rq   r   ri   rk   rl   s   @r7   râ   râ   e  sN   ø„ ôTð"à�8‰8ðð ˜BŸH™HÑ%ð	ð
 ˜RŸX™XÑ&ðð 
�‰÷r6   râ   c                   ó&   ‡ — e Zd Zˆ fd„Zdd„Zˆ xZS )ÚFalconH1Modelc                 ó¾  •— t         ‰| �  «        || _        |j                  | _        |j                  | _        t        j                  | j                  | j                  «      | _        t        |«      | _	        t        |j                  «      D �cg c]  }t        |«      ‘Œ c}| _        t        j                  | j                  |j                  ¬«      | _        y c c}w )Nrå   )rY   rZ   rr   rK   r   r€   Ú	EmbeddingÚembed_tokensrx   Ú_mup_vectorÚranger?   râ   Úlayersrê   rB   Úfinal_layernorm)ra   rr   r•   rc   s      €r7   rZ   zFalconH1Model.__init__“  s«   ø€ Ü‰ÑÔàˆŒ	ØŸ/™/ˆŒØ×+Ñ+ˆÔäŸL™L¨¯©¸$×:JÑ:JÓKˆÔä-¨dÓ3ˆÔä05°d×6LÑ6LÔ0Mó
Ù0M¨1Ô  Õ&Ð0Mñ
ˆŒô  "Ÿz™z¨$×*:Ñ*:À×@QÑ@QÔRˆÕùò
s   ÂCc                 ó  — | j                  |«      }|}|€dt        | j                  «      z  g}t        ||d   d   «      }t	        ||d   d   «      }t        | j                  |«      D ]  \  }} |||||¬«      }Œ | j                  |«      S )Nrš   r   r   )r�   rî   rï   )rø   Úlenrû   r   r
   ro   rü   )ra   Úinputsr�   rí   rï   rî   ÚlayerÚcs           r7   ri   zFalconH1Model.__call__¢  sœ   € à×Ñ˜fÓ%ˆàˆàˆ=Ø!¤C¨¯©Ó$4Ñ4Ð5ˆEä$ Q¨¨a©°©Ó4ˆ
Ü)¨!¨U°1©X°a©[Ó9ˆ	ä˜DŸK™K¨Ö/‰HˆE�1ÙØØØ#Ø%ô	‰Að 0ð ×#Ñ# AÓ&Ð&r6   rX   rj   rl   s   @r7   rõ   rõ   ’  s   ø„ ôS÷'r6   rõ   c                   óB   ‡ — e Zd Zˆ fd„Zdd„Zd„ Zd„ Zed„ «       Zˆ xZ	S )ÚModelc                 óð   •— t         ‰| �  «        || _        |j                  | _        t	        |¬«      | _        |j                  s2t        j                  |j                  |j                  d¬«      | _        y y )Nrä   Fr|   )rY   rZ   rr   r<   rõ   ÚmodelrL   r€   r�   r   rK   Úlm_headr‡   s     €r7   rZ   zModel.__init__»  sX   ø€ Ü‰ÑÔØˆŒ	ØŸ/™/ˆŒÜ"¨Ô-ˆŒ
Ø×'Ò'ÜŸ9™9 T×%5Ñ%5°t·±ÈUÔSˆD�Lð (r6   c                 ó   — | j                  ||¬«      }| j                  j                  rU| j                   j                  j	                  |«      }|| j                  j
                  | j                  j                  z  z  S | j                  |«      S )N)r�   )r  rr   rL   rø   Ú	as_linearr   r   r  )ra   rÿ   r�   rg   Úouts        r7   ri   zModel.__call__Ã  sn   € ØŸ
™
 6°˜
Ó7ˆØ�9‰9×(Ò(Ø—*‘*×)Ñ)×3Ñ3°MÓBˆCØ˜$Ÿ)™)×6Ñ6¸¿¹×9WÑ9WÑWÑXÐXà—<‘< Ó.Ð.r6   c                 óè  — |d   }|j                   d   |j                   d   k  r|S i }| j                  }|j                  «       D �]©  \  }}|j                  d«      r||j                  z  }�n||j                  d«      r||j
                  z  }�nZ|j                  d«      s|j                  d«      r||j                  z  }�n'|j                  d«      r||j                  |j                  z  z  }nù|j                  d	«      r||j                  z  }nØ|j                  d
«      r||j                  z  }n·|j                  d«      r||j                  d   z  }n“|j                  d«      r||j                  d   z  }no|j                  d«      rG||j                  | j                  j                  j                  |j                  «      d d …d f   z  z  }nd|v r|j!                  ddd«      }|||<   �Œ¬ |S )Nz"model.layers.0.mamba.conv1d.weightr‰   r   zembed_tokens.weightzlm_head.weightzq_proj.weightzk_proj.weightzkey_proj.weightzo_proj.weightzout_proj.weightzgate_proj.weightr   zdown_proj.weightzin_proj.weightzconv1d.weightr'   )rŽ   rr   ÚitemsÚendswithr   r   r   r   r   rJ   r:   rF   r  rù   Úastyper»   r�   )ra   ÚweightsÚc1dÚsanitized_weightsrr   ÚnameÚparams          r7   ÚsanitizezModel.sanitizeË  sÍ  € àÐ:Ñ;ˆØ�9‰9�R‰=˜CŸI™I a™LÒ(ØˆNàÐØ�y‰yˆà"Ÿ=™=Ÿ?‰KˆD�%à�}‰}Ð2Ô3Ø˜×2Ñ2Ñ2’Ø—‘Ð/Ô0Ø˜×0Ñ0Ñ0’Ø—‘˜Ô/°4·=±=ÀÔ3QØ˜×5Ñ5Ñ5’Ø—‘Ð0Ô1Ø˜×5Ñ5¸×8KÑ8KÑKÑK‘Ø—‘˜Ô/Ø˜×6Ñ6Ñ6‘Ø—‘Ð0Ô1Ø˜×0Ñ0Ñ0‘Ø—‘Ð1Ô2Ø˜×-Ñ-¨aÑ0Ñ0‘Ø—‘Ð1Ô2Ø˜×-Ñ-¨aÑ0Ñ0‘Ø—‘Ð/Ô0ØØ×*Ñ*Ø—j‘j×,Ñ,×3Ñ3°E·K±KÓ@ÂÀDÀÑIñJñ‘ð ! DÑ(ØŸ™¨¨1¨aÓ0�Ø&+Ð˜dÓ#ð3 +ð4 !Ð r6   c                 óž   — t        | j                  j                  «      D �cg c]   }t        t	        d¬«      t        «       «      ‘Œ" c}S c c}w )Nr'   )Úsize)rú   rr   r?   r   r   r   )ra   r•   s     r7   Ú
make_cachezModel.make_cacheð  sF   € ô ˜4Ÿ9™9×6Ñ6Ô7ó
á7�ô ”k qÔ)¬7«9Õ5Ø7ñ
ð 	
ùò 
s   ¢%A
c                 ó.   — | j                   j                  S rX   )r  rû   )ra   s    r7   rû   zModel.layersö  s   € à�z‰z× Ñ Ð r6   rX   )
rM   rN   rO   rZ   ri   r  r  Úpropertyrû   rk   rl   s   @r7   r  r  ¹  s-   ø„ ôTó/ò#!òJ
ð ñ!ó ô!r6   r  )$Údataclassesr   r   Útypingr   r   Úmlx.coreÚcorer[   Úmlx.nnr€   Úactivationsr   Úbaser	   r
   r   r   r�   r   r   r   Ú
rope_utilsr   Ússmr   r   ÚModulerV   rx   rz   rœ   rÛ   râ   rõ   r  r5   r6   r7   Ú<module>r#     sÅ   ð÷ )ß !å Ý å ÷ó ÷ 3Ñ 2Ý 'Ý ð ô3%�ó 3%ó ð3%ôl˜2Ÿ9™9ô ò*ô&<#˜Ÿ	™	ô <#ô~] �B—I‘Iô ] ô@�"—)‘)ô ô$*˜2Ÿ9™9ô *ôZ$'�B—I‘Iô $'ôN?!ˆB�I‰Iõ ?!r6   