
    (HJjF                         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mZmZ e G d d	e             Z G d
 dej&                        Zy)    )	dataclass)OptionalN)tree_flattentree_unflatten   )lfm2)BaseModelArgscreate_attention_maskscaled_dot_product_attentionc                   (    e Zd ZU eed<   eed<   d Zy)	ModelArgs
model_typetext_configc                 "    d| j                   d<   y )NFtie_word_embeddings)r   selfs    _/Users/ahmed/devFolder/claude-voice/.venv/lib/python3.12/site-packages/mlx_lm/models/lfm2-vl.py__post_init__zModelArgs.__post_init__   s    27./    N)__name__
__module____qualname__str__annotations__dictr    r   r   r   r      s    O8r   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__   sF    	//"jj)A)A$BRBR)STr   inputsinput_embeddingsc                 *    | j                  |||      S )N)cacher)   )r&   )r   r(   r+   r)   s       r   __call__zModel.__call__   s$     ""%2B # 
 	
r   c                     t        t        |j                                     }|j                  dd        |j                  dd        t	        t        |            S )Nvision_towermulti_modal_projector)r   listitemspopr   r   )r   weightss     r   sanitizezModel.sanitize(   sD     gmmo!67ND)+T2L)**r   c                 B    | j                   j                  j                  S r"   )r&   modellayersr   s    r   r7   zModel.layers.   s    ""((///r   c                 6    | j                   j                         S r"   )r&   
make_cacher   s    r   r9   zModel.make_cache2   s    ""--//r   )NN)r   r   r   r   r$   mxarrayr   r,   r4   propertyr7   r9   __classcell__)r'   s   @r   r   r      s[    UY U /3	

 #288,	
+ 0 00r   r   )dataclassesr   typingr   mlx.corecorer:   mlx.nnnn	mlx.utilsr   r    r   baser	   r
   r   r   Moduler   r   r   r   <module>rH      sJ    "    2  T T 8 8 80BII 0r   