Ë
    îÿæiß  ã                   óJ  — d dl 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 e G d„ de«      «       Z G d	„ d
e	j"                  «      Z G d„ de	j"                  «      Z G d„ de	j"                  «      Z G d„ de	j"                  «      Z G d„ de	j"                  «      Zy)é    )Ú	dataclass)ÚAnyÚOptionalNé   )Úswiglu)ÚBaseModelArgsÚcreate_attention_maskÚscaled_dot_product_attentionc                   ó¢   — e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   eed<   eed<   eed	<   eed
<   eed<   eed<   dZeed<   dZ	eed<   y)Ú	ModelArgsÚ
model_typeÚhidden_sizeÚnum_hidden_layersÚintermediate_sizeÚnum_attention_headsÚattention_biasÚhead_dimÚrms_norm_epsÚ
vocab_sizeÚnum_key_value_headsÚpartial_rotary_factorÚ
rope_thetaTÚrope_traditionali €  Úmax_position_embeddingsN)
Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__ÚintÚboolÚfloatr   r   © ó    úg/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/mlx_lm/models/glm4.pyr   r      s]   … àƒOØÓØÓØÓØÓØÓØƒMØÓØƒOØÓØ Ó ØÓØ!Ð�dÓ!Ø#(Ð˜SÔ(r$   r   c                   óD   ‡ — e Zd Zdefˆ fd„Zdej                  fd„Zˆ xZS )ÚGlm4MLPÚargsc                 óì   •— t         ‰| �  «        t        j                  |j                  d|j
                  z  d¬«      | _        t        j                  |j
                  |j                  d¬«      | _        y )Né   F©Úbias)ÚsuperÚ__init__ÚnnÚLinearr   r   Úgate_up_projÚ	down_proj©Úselfr(   Ú	__class__s     €r%   r.   zGlm4MLP.__init__    sZ   ø€ Ü‰ÑÔÜŸI™IØ×Ñ˜a $×"8Ñ"8Ñ8¸uô
ˆÔô Ÿ™ 4×#9Ñ#9¸4×;KÑ;KÐRWÔXˆ�r$   Úreturnc                 ó�   — | j                  |«      }t        j                  |dd¬«      \  }}| j                  t	        ||«      «      S )Nr*   éÿÿÿÿ)Úaxis)r1   ÚmxÚsplitr2   r   )r4   ÚxÚgateÚ	up_statess       r%   Ú__call__zGlm4MLP.__call__'   s>   € Ø×Ñ˜aÓ ˆÜŸ(™( 1 a¨bÔ1‰ˆˆiØ�~‰~œf T¨9Ó5Ó6Ð6r$   )	r   r   r   r   r.   r:   Úarrayr?   Ú__classcell__©r5   s   @r%   r'   r'      s!   ø„ ðY˜Yõ Yð7˜RŸX™X÷ 7r$   r'   c            	       óˆ   ‡ — e Zd Zdefˆ fd„Z	 ddej                  deej                     dee   dej                  fd„Z	ˆ xZ
S )	ÚGlm4Attentionr(   c                 ó®  •— t         ‰| �  «        t        |d|j                  |j                  z  «      | _        |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                  d¬«      | _        t        j"                  t%        | j
                  |j&                  z  «      |j(                  |j*                  ¬«      | _        y )Nr   g      à¿r+   F)ÚdimsÚbaseÚtraditional)r-   r.   Úgetattrr   r   r   Ún_headsr   Ú
n_kv_headsÚscaler/   r0   r   Úq_projÚk_projÚv_projÚo_projÚRoPEr    r   r   r   Úroper3   s     €r%   r.   zGlm4Attention.__init__.   se  ø€ Ü‰ÑÔÜØ�*˜d×.Ñ.°$×2JÑ2JÑJó
ˆŒð ×/Ñ/ˆŒØ×2Ñ2ˆŒØ—]‘] DÑ(ˆŒ
ä—i‘iØ×ÑØ×$Ñ$ t§}¡}Ñ4Ø×$Ñ$ô
ˆŒô
 —i‘iØ×ÑØ×$Ñ$ t§}¡}Ñ4Ø×$Ñ$ô
ˆŒô
 —i‘iØ×ÑØ×$Ñ$ t§}¡}Ñ4Ø×$Ñ$ô
ˆŒô
 —i‘iØ×$Ñ$ t§}¡}Ñ4°d×6FÑ6FÈUô
ˆŒô —G‘GÜ�T—]‘] T×%?Ñ%?Ñ?Ó@Ø—‘Ø×-Ñ-ô
ˆ�	r$   r<   ÚmaskÚcacher6   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 )Nr8   r   r*   r   é   )Úoffset)rT   rL   rS   )ÚshaperM   rN   rO   ÚreshaperJ   Ú	transposerK   rR   rW   Úupdate_and_fetchr
   rL   rP   )r4   r<   rS   rT   ÚBÚLÚDÚqueriesÚkeysÚvaluesÚoutputs              r%   r?   zGlm4Attention.__call__P   sg  € ð —'‘'‰ˆˆ1ˆaà $§¡¨A£°·±¸A³ÀÇÁÈAÃ�v�ˆà—/‘/ ! Q¨¯©°bÓ9×CÑCÀAÀqÈ!ÈQÓOˆØ�|‰|˜A˜q $§/¡/°2Ó6×@Ñ@ÀÀAÀqÈ!ÓLˆØ—‘  1 d§o¡o°rÓ:×DÑDÀQÈÈ1ÈaÓPˆàÐØ—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Àtô
ˆð ×!Ñ! ! Q¨¨1Ó-×5Ñ5°a¸¸BÓ?ˆØ�{‰{˜6Ó"Ð"r$   ©NN©r   r   r   r   r.   r:   r@   r   r   r?   rA   rB   s   @r%   rD   rD   -   sQ   ø„ ð 
˜Yõ  
ðF TXñ#Ø—‘ð#Ø!)¨"¯(©(Ñ!3ð#ØCKÈCÁ=ð#à	�‰÷#r$   rD   c            	       óˆ   ‡ — e Zd Zdefˆ fd„Z	 ddej                  deej                     dee   dej                  fd„Z	ˆ xZ
S )	ÚGlm4DecoderLayerr(   c                 óä  •— t         ‰| �  «        t        |¬«      | _        t	        |«      | _        t        j                  |j                  |j                  ¬«      | _
        t        j                  |j                  |j                  ¬«      | _        t        j                  |j                  |j                  ¬«      | _        t        j                  |j                  |j                  ¬«      | _        y ©N)r(   )Úeps)r-   r.   rD   Ú	self_attnr'   Úmlpr/   ÚRMSNormr   r   Úinput_layernormÚpost_attention_layernormÚpost_self_attn_layernormÚpost_mlp_layernormr3   s     €r%   r.   zGlm4DecoderLayer.__init__l   s«   ø€ Ü‰ÑÔÜ&¨DÔ1ˆŒä˜4“=ˆŒÜ!Ÿz™z¨$×*:Ñ*:À×@QÑ@QÔRˆÔÜ(*¯
©
Ø×Ñ $×"3Ñ"3ô)
ˆÔ%ô )+¯
©
Ø×Ñ $×"3Ñ"3ô)
ˆÔ%ô #%§*¡*¨T×-=Ñ-=À4×CTÑCTÔ"UˆÕr$   r<   rS   rT   r6   c                 óÖ   — || j                  | j                  | j                  |«      ||«      «      z   }|}| j                  | j	                  | j                  |«      «      «      |z   }|S ©N)ro   rj   rm   rp   rk   rn   )r4   r<   rS   rT   Úresiduals        r%   r?   zGlm4DecoderLayer.__call__z   ss   € ð �×-Ñ-Ø�N‰N˜4×/Ñ/°Ó2°D¸%Ó@ó
ñ 
ˆð ˆà×#Ñ# D§H¡H¨T×-JÑ-JÈ1Ó-MÓ$NÓOØñð 	
ð ˆr$   rc   rd   rB   s   @r%   rf   rf   k   sR   ø„ ðV˜Yõ Vð TXñØ—‘ðØ!)¨"¯(©(Ñ!3ðØCKÈCÁ=ðà	�‰÷r$   rf   c                   óR   ‡ — e Zd Zdefˆ fd„Z	 ddej                  dee   fd„Z	ˆ xZ
S )Ú	Glm4Modelr(   c                 óN  •— t         ‰| �  «        t        j                  |j                  |j
                  «      | _        t        |j                  «      D �cg c]  }t        |¬«      ‘Œ c}| _
        t        j                  |j
                  |j                  ¬«      | _        y c c}w rh   )r-   r.   r/   Ú	Embeddingr   r   Úembed_tokensÚranger   rf   Úlayersrl   r   Únorm)r4   r(   Ú_r5   s      €r%   r.   zGlm4Model.__init__‰   s}   ø€ Ü‰ÑÔÜŸL™L¨¯©¸$×:JÑ:JÓKˆÔä16°t×7MÑ7MÔ1Nó
Ù1N¨AÔ $Ö'Ð1Nñ
ˆŒô —J‘J˜t×/Ñ/°T×5FÑ5FÔGˆ�	ùò
s   ÁB"ÚinputsrT   c                 óì   — | j                  |«      }|€d gt        | j                  «      z  }t        ||d   «      }t	        | j                  |«      D ]  \  }} ||||¬«      }Œ | j                  |«      S )Nr   )rT   )rx   Úlenrz   r	   Úzipr{   )r4   r}   rT   ÚhrS   ÚlayerÚcs          r%   r?   zGlm4Model.__call__‘   su   € ð
 ×Ñ˜fÓ%ˆàˆ=Ø�FœS §¡Ó-Ñ-ˆEä$ Q¨¨a©Ó1ˆä˜DŸK™K¨Ö/‰HˆE�1Ù�a˜ QÔ'‰Að 0ð �y‰y˜‹|Ðr$   rr   rd   rB   s   @r%   ru   ru   ˆ   s5   ø„ ðH˜Yõ Hð  $ñà—‘ðð ˜‰}÷r$   ru   c                   ób   ‡ — e Zd Zdefˆ fd„Z	 ddej                  dee   fd„Z	e
d„ «       Zˆ xZS )ÚModelr(   c                 óÔ   •— t         ‰| �  «        || _        |j                  | _        t	        |«      | _        t        j                  |j                  |j                  d¬«      | _
        y )NFr+   )r-   r.   r(   r   ru   Úmodelr/   r0   r   r   Úlm_headr3   s     €r%   r.   zModel.__init__¤   sI   ø€ Ü‰ÑÔØˆŒ	ØŸ/™/ˆŒÜ˜t“_ˆŒ
Ü—y‘y ×!1Ñ!1°4·?±?ÈÔOˆ�r$   r}   rT   c                 óH   — | j                  ||«      }| j                  |«      S rr   )r‡   rˆ   )r4   r}   rT   Úouts       r%   r?   zModel.__call__«   s#   € ð
 �j‰j˜ Ó'ˆØ�|‰|˜CÓ Ð r$   c                 ó.   — | j                   j                  S rr   )r‡   rz   )r4   s    r%   rz   zModel.layers³   s   € à�z‰z× Ñ Ð r$   rr   )r   r   r   r   r.   r:   r@   r   r   r?   Úpropertyrz   rA   rB   s   @r%   r…   r…   £   sI   ø„ ðP˜Yõ Pð  $ñ!à—‘ð!ð ˜‰}ó!ð ñ!ó ô!r$   r…   )Údataclassesr   Útypingr   r   Úmlx.coreÚcorer:   Úmlx.nnr/   Úactivationsr   rG   r   r	   r
   r   ÚModuler'   rD   rf   ru   r…   r#   r$   r%   Ú<module>r”      sˆ   ðõ "ß  å Ý å ß TÑ Tð ô)�ó )ó ð)ô"7ˆb�i‰iô 7ô;#�B—I‘Iô ;#ô|�r—y‘yô ô:�—	‘	ô ô6!ˆB�I‰Iõ !r$   