
    )jF                         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dS )    )	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dS )	ModelArgs
model_typetext_configc                     d| j         d<   d S )NFtie_word_embeddings)r   selfs    _/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/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:         OOO8 8 8 8 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                            | _	        d S N)
super__init__r    r   r   r   r   	from_dictr   language_model)r   r    	__class__s     r   r$   zModel.__init__   sT    	/"j)A)A$BR)S)STT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          |                    S )Nvision_towermulti_modal_projector)r   listitemspopr   r   )r   weightss     r   sanitizezModel.sanitize(   s^     gmmoo!6!677ND)))+T222L))***r   c                 $    | j         j        j        S r"   )r&   modellayersr   s    r   r7   zModel.layers.   s    "(//r   c                 4    | 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 U U U U U /3	
 

 #28,	
 
 
 
+ + + 0 0 X00 0 0 0 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      s   " ! ! ! ! !                   2 2 2 2 2 2 2 2       T T T T T T T T T T 8 8 8 8 8 8 8 80 0 0 0 0BI 0 0 0 0 0r   