
    )j                         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dS )    )	dataclass)OptionalN)tree_flattentree_unflatten   )gemma3_text)BaseModelArgsc                   8    e Zd ZU eed<   eed<   dZeed<   d ZdS )	ModelArgs
model_typetext_configi@  
vocab_sizec                     | j         | j        d<   | j                            dd          | j        d<   | j                            dd          | j        d<   d S )Nr   num_attention_heads   num_key_value_heads   )r   r   getselfs    ^/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/mlx_lm/models/gemma3.py__post_init__zModelArgs.__post_init__   se    )-&262B2F2F!13
 3
./ 372B2F2F!13
 3
.///    N)	__name__
__module____qualname__str__annotations__dictr   intr    r   r   r   r      sJ         OOO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                            | _	        d S N)
super__init__r$   r   r   r#   r   	from_dictr   language_model)r   r$   	__class__s     r   r(   zModel.__init__   s[    	/)/!++D,<==
 
r   Ninputsinput_embeddingsc                 2    |                      |||          S )N)cacher-   )r*   )r   r,   r/   r-   s       r   __call__zModel.__call__'   s)     ""%2B # 
 
 	
r   c                    t          t          |                                                    }|                    dd            |                    dd            t	          t          |d                             }| j                            |          }t          t          |                                                    |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     gmmoo!6!677ND)))+T222,w/?'@AABB
(11*==
$24
8H8H8J8J3K3K$L$L !L))***r   c                     | j         j        S r&   )r*   layersr   s    r   r;   zModel.layers:   s    "))r   c                 4    | 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#      s        
Y 
 
 
 
 
 
 /3	
 

 #28,	
 
 
 
+ + + * * X*0 0 0 0 0 0 0r   r#   )dataclassesr   typingr   mlx.corecorer>   mlx.nnnn	mlx.utilsr   r    r   baser	   r   Moduler#   r!   r   r   <module>rL      s    " ! ! ! ! !                   2 2 2 2 2 2 2 2             
 
 
 
 
 
 
 
!0 !0 !0 !0 !0BI !0 !0 !0 !0 !0r   