
    (HJj	                         d dl mZ d dlmZ d dlmZ d dlmZ d dl	m
Z
mZ ddlmZ ddlmZ e G d d	e             Z G d
 dej"                        Zy)    )	dataclass)OptionalN)tree_flattentree_unflatten   )gemma4_text)BaseModelArgsc                   >    e Zd ZU dZeed<   dZeed<   dZe	ed<   d Z
y)	ModelArgsgemma4
model_typeNtext_configi   
vocab_sizec                     | j                   i | _         | j                  | j                   d<   | j                   j                  dd      | j                   d<   | j                   j                  dd      | j                   d<   y )Nr   num_attention_heads   num_key_value_headsr   )r   r   getselfs    ^/Users/ahmed/devFolder/claude-voice/.venv/lib/python3.12/site-packages/mlx_lm/models/gemma4.py__post_init__zModelArgs.__post_init__   sz    #!D)-&262B2B2F2F!13
./ 372B2B2F2F!13
./    )__name__
__module____qualname__r   str__annotations__r   dictr   intr    r   r   r   r      s%    JKJ	
r   r   c                        e Zd Zdef fdZ	 	 	 ddej                  deej                     deej                     fdZd Z	e
d        Ze
d	        Zd
 Z xZS )Modelargsc                     t         |           || _        |j                  | _        t	        j
                  t        j                  j                  |j                              | _	        y N)
super__init__r$   r   r   r#   r   	from_dictr   language_model)r   r$   	__class__s     r   r(   zModel.__init__!   sM    	//)//!!++D,<,<=
r   inputsinput_embeddingsper_layer_inputsc                 ,    | j                  ||||      S )N)cacher-   r.   )r*   )r   r,   r0   r-   r.   s        r   __call__zModel.__call__)   s(     ""--	 # 
 	
r   c                 4   i }|j                         D ]i  \  }}|j                  d      }|j                  d      }|j                  d      r:|s|||<   B|j                  d      r|j                  dd      }|||<   k | j                  j                  |      S )Nzmodel.)vision_towermulti_modal_projectoraudio_towerembed_audioembed_visionr*   zlanguage_model.zlanguage_model.model.)items
startswithremoveprefixreplacer*   sanitize)r   weightsnew_weightskvstarts_w_models         r   r<   zModel.sanitize7   s    MMODAq\\(3Nx(A|| !!"A||,-II/1HIKN- $0 ""++K88r   c                 .    | j                   j                  S r&   )r*   layersr   s    r   rC   zModel.layersS   s    "")))r   c                 .    | j                   j                  S r&   )r*   quant_predicater   s    r   rE   zModel.quant_predicateW   s    ""222r   c                 6    | j                   j                         S r&   )r*   
make_cacher   s    r   rG   zModel.make_cache[   s    ""--//r   )NNN)r   r   r   r   r(   mxarrayr   r1   r<   propertyrC   rE   rG   __classcell__)r+   s   @r   r#   r#       s    
Y 
 /3/3

 #288,	

 #288,
98 * * 3 30r   r#   )dataclassesr   typingr   mlx.corecorerH   mlx.nnnn	mlx.utilsr   r    r   baser	   r   Moduler#   r!   r   r   <module>rV      sG    "    2   
 
 
"<0BII <0r   