
    (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   )gemma3_text)BaseModelArgsc                   6    e Zd ZU eed<   eed<   dZeed<   d Zy)	ModelArgs
model_typetext_configi@  
vocab_sizec                     | j                   | j                  d<   | j                  j                  dd      | j                  d<   | j                  j                  dd      | j                  d<   y )Nr   num_attention_heads   num_key_value_heads   )r   r   getselfs    ^/Users/ahmed/devFolder/claude-voice/.venv/lib/python3.12/site-packages/mlx_lm/models/gemma3.py__post_init__zModelArgs.__post_init__   sf    )-&262B2B2F2F!13
./ 372B2B2F2F!13
./    N)	__name__
__module____qualname__str__annotations__dictr   intr    r   r   r   r      s    OJ
r   r   c                        e Zd Zdef fdZ	 	 d	dej                  deej                     fdZ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_embeddingsc                 *    | j                  |||      S )N)cacher-   )r*   )r   r,   r/   r-   s       r   __call__zModel.__call__'   s$     ""%2B # 
 	
r   c                 d   t        t        |j                                     }|j                  dd        |j                  dd        t	        t        |d               }| j                  j                  |      }t        t        |j                                     |d<   t	        t        |            S )Nvision_towermulti_modal_projectorr*   )r   listitemspopr   r   r*   sanitize)r   weights
lm_weightss      r   r7   zModel.sanitize1   s     gmmo!67ND)+T2,w/?'@AB
((11*=
$24
8H8H8J3K$L !L)**r   c                 .    | j                   j                  S r&   )r*   layersr   s    r   r;   zModel.layers:   s    "")))r   c                 6    | j                   j                         S r&   )r*   
make_cacher   s    r   r=   zModel.make_cache>   s    ""--//r   )NN)r   r   r   r   r(   mxarrayr   r0   r7   propertyr;   r=   __classcell__)r+   s   @r   r#   r#      sY    
Y 
 /3	

 #288,	
+ * *0r   r#   )dataclassesr   typingr   mlx.corecorer>   mlx.nnnn	mlx.utilsr   r    r   baser	   r   Moduler#   r!   r   r   <module>rL      sG    "    2   
 
 
!0BII !0r   