Ë
    îÿæi  ã                   óx  — d dl Z d dlmZ d dlmZ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Ze G d„ d	e«      «       Z G d
„ de
j*                  «      Z G d„ de
j*                  «      Z G d„ de
j*                  «      Z G d„ de
j*                  «      Zy# e$ r  ed«        e j&                  d«       Y Œ†w xY w)é    N)Ú	dataclass)ÚAnyÚOptionalé   )Úswiglu)ÚBaseModelArgsÚcreate_attention_maskz2To run olmo install ai2-olmo: pip install ai2-olmoc                   ó’   — e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   eed<   dZeed	<   d
Ze	ed<   dZ
eed<   d
Ze	ed<   d„ Zy)Ú	ModelArgsÚ
model_typeÚd_modelÚn_layersÚmlp_hidden_sizeÚn_headsÚ
vocab_sizeÚembedding_sizei'  Ú
rope_thetaFÚrope_traditionalé   Ú	mlp_ratioÚweight_tyingc                 ó|   — | j                   �| j                   | _         y | j                  | j                  z  | _         y ©N)r   r   r   ©Úselfs    úg/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/mlx_lm/models/olmo.pyÚ__post_init__zModelArgs.__post_init__"   s=   € ð ×#Ñ#Ð/ð × Ñ ð 	Õð —‘ $§,¡,Ñ.ð 	Õó    N)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__Úintr   Úfloatr   Úboolr   r   r   © r   r   r   r      sU   … àƒOØƒLØƒMØÓØƒLØƒOØÓØ€J�ÓØ"Ð�dÓ"Ø€IˆsÓØ€L�$Óó
r   r   c            	       óð   ‡ — e Zd Zdefˆ fd„Z	 	 d	dej                  deej                     dee   dej                  fd„Z		 	 d	dej                  deej                     dee   dej                  fd„Z
ˆ xZS )
ÚTransformerBlockÚargsc                 óŠ  •— t         ‰| �  «        |j                  | _        |j                  }t	        j
                  ||j                  d¬«      | _        t	        j
                  |j                  dz  |d¬«      | _        t	        j                  |d¬«      | _
        t	        j                  |d¬«      | _        || j                  z  }|dz  | _        t	        j
                  |d|z  d¬«      | _        t	        j
                  ||d¬«      | _        t	        j                  ||j                   |j"                  ¬«      | _        || _        y )NF©Úbiasé   ©Úaffineg      à¿é   )ÚtraditionalÚbase)ÚsuperÚ__init__r   r   ÚnnÚLinearr   Úff_projÚff_outÚ	LayerNormÚatt_normÚff_normÚscaleÚatt_projÚattn_outÚRoPEr   r   Úroper*   )r   r*   ÚdimÚhead_dimÚ	__class__s       €r   r5   zTransformerBlock.__init__+   sð   ø€ Ü‰ÑÔØ—|‘|ˆŒØ�l‰lˆä—y‘y  d×&:Ñ&:ÀÔGˆŒÜ—i‘i × 4Ñ 4¸Ñ 9¸3ÀUÔKˆŒäŸ™ S°Ô7ˆŒÜ—|‘| C°Ô6ˆŒà˜$Ÿ,™,Ñ&ˆØ˜t‘^ˆŒ
äŸ	™	 # q¨3¡w°UÔ;ˆŒÜŸ	™	 # s°Ô7ˆŒä—G‘GØØ×-Ñ-Ø—‘ô
ˆŒ	ð ˆ�	r   ÚxÚmaskÚcacheÚreturnc                 óâ  — |j                   \  }}}t        j                  | j                  |«      dd¬«      \  }}}	|j	                  ||| j
                  d«      j                  dddd«      }|j	                  ||| j
                  d«      j                  dddd«      }|	j	                  ||| j
                  d«      j                  dddd«      }	|�P| j                  ||j                  ¬«      }| j                  ||j                  ¬«      }|j                  ||	«      \  }}	n"| j                  |«      }| j                  |«      }|| j                  z  |j                  dddd«      z  }
|�|
|z  }
t        j                  |
j                  t        j                  «      d¬«      j                  |
j                  «      }
|
|	z  j                  dddd«      j	                  ||d«      }| j                  |«      S )Nr1   éÿÿÿÿ©Úaxisr   r.   r   )Úoffset)ÚshapeÚmxÚsplitr>   Úreshaper   Ú	transposerA   rM   Úupdate_and_fetchr=   ÚsoftmaxÚastypeÚfloat32Údtyper?   )r   rE   rF   rG   ÚBÚLÚDÚqueriesÚkeysÚvaluesÚscoresÚoutputs               r   ÚattendzTransformerBlock.attendD   sª  € ð —'‘'‰ˆˆ1ˆaä "§¡¨¯©°qÓ)9¸1À2Ô FÑˆ��vð —/‘/ ! Q¨¯©°bÓ9×CÑCÀAÀqÈ!ÈQÓOˆØ�|‰|˜A˜q $§,¡,°Ó3×=Ñ=¸aÀÀAÀqÓIˆØ—‘  1 d§l¡l°BÓ7×AÑAÀ!ÀQÈÈ1ÓMˆàÐØ—i‘i °·±�iÓ=ˆGØ—9‘9˜T¨%¯,©,�9Ó7ˆDØ ×1Ñ1°$¸Ó?‰LˆD‘&à—i‘i Ó(ˆGØ—9‘9˜T“?ˆDà˜DŸJ™JÑ&¨$¯.©.¸¸A¸qÀ!Ó*DÑDˆØÐØ�d‰NˆFÜ—‘˜FŸM™M¬"¯*©*Ó5¸BÔ?×FÑFÀvÇ|Á|ÓTˆØ˜6‘/×,Ñ,¨Q°°1°aÓ8×@Ñ@ÀÀAÀrÓJˆØ�}‰}˜VÓ$Ð$r   c                 ó  — | j                  | j                  |«      ||«      }||z   }t        j                  | j	                  | j                  |«      «      dd¬«      \  }}|| j                  t        ||«      «      z   }|S )Nr.   rJ   rK   )r`   r;   rO   rP   r8   r<   r9   r   )	r   rE   rF   rG   ÚrÚhÚx1Úx2Úouts	            r   Ú__call__zTransformerBlock.__call__b   sm   € ð �K‰K˜Ÿ™ aÓ(¨$°Ó6ˆØ�‰Eˆä—‘˜$Ÿ,™, t§|¡|°A£Ó7¸ÀÔD‰ˆˆBà�$—+‘+œf R¨›nÓ-Ñ-ˆØˆ
r   )NN)r   r    r!   r   r5   rO   Úarrayr   r   r`   rg   Ú__classcell__©rD   s   @r   r)   r)   *   s    ø„ ð˜Yõ ð8 $(Ø#ñ	%à�8‰8ð%ð �r—x‘xÑ ð%ð ˜‰}ð	%ð
 
�‰ó%ðB $(Ø#ñ	à�8‰8ðð �r—x‘xÑ ðð ˜‰}ð	ð
 
�‰÷r   r)   c                   óH   ‡ — e Zd Zdefˆ fd„Z	 ddej                  fd„Zˆ xZS )ÚTransformerr*   c                 óø  •— t         ‰| �  «        |j                  | _        |j                  | _        t	        j
                  |j                  |j                  «      | _        t        |j                  «      D �cg c]  }t        |¬«      ‘Œ c}| _        | j                  s1t	        j                  |j                  |j                  d¬«      | _        t	        j                  |j                  d¬«      | _        y c c}w )N)r*   Fr,   r/   )r4   r5   r   r   r6   Ú	Embeddingr   r   ÚwteÚranger)   Úblocksr7   r9   r:   Únorm)r   r*   Ú_rD   s      €r   r5   zTransformer.__init__r   s­   ø€ Ü‰ÑÔØŸ™ˆŒØ ×-Ñ-ˆÔä—<‘< × 3Ñ 3°T·\±\ÓBˆŒÜ<AÀ$Ç-Á-Ô<PÓQÑ<P°qÔ'¨TÖ2Ð<PÑQˆŒØ× Ò ÜŸ)™) D§L¡L°$×2EÑ2EÈEÔRˆDŒKÜ—L‘L §¡°eÔ<ˆ�	ùò Rs   Á8C7Úinputsc                 ó^  — | j                  |«      }|€d gt        | j                  «      z  }t        ||d   «      }t	        | j                  |«      D ]  \  }} ||||«      }Œ | j                  |«      }| j                  r| j                   j                  |«      |fS | j                  |«      S )Nr   )	ro   Úlenrq   r	   Úziprr   r   Ú	as_linearr9   )r   rt   rG   rc   rF   ÚblockÚcs          r   rg   zTransformer.__call__}   s£   € ð
 �H‰H�VÓˆàˆ=Ø�FœS §¡Ó-Ñ-ˆEä$ Q¨¨a©Ó1ˆä˜DŸK™K¨Ö/‰HˆE�1Ù�a˜˜qÓ!‰Að 0ð �I‰I�a‹Lˆà×ÒØ—8‘8×%Ñ% aÓ(¨%Ð/Ð/à�{‰{˜1‹~Ðr   r   ©	r   r    r!   r   r5   rO   rh   rg   ri   rj   s   @r   rl   rl   q   s%   ø„ ð	=˜Yõ 	=ð ñà—‘÷r   rl   c                   óH   ‡ — e Zd Zdefˆ fd„Z	 ddej                  fd„Zˆ xZS )Ú	OlmoModelr*   c                 óB   •— t         ‰| �  «        t        |«      | _        y r   )r4   r5   rl   Útransformer©r   r*   rD   s     €r   r5   zOlmoModel.__init__•   s   ø€ Ü‰ÑÔÜ& tÓ,ˆÕr   rt   c                 ó&   — | j                  ||«      S r   )r   ©r   rt   rG   s      r   rg   zOlmoModel.__call__™   s   € ð
 ×Ñ ¨Ó.Ð.r   r   r{   rj   s   @r   r}   r}   ”   s%   ø„ ð-˜Yõ -ð ñ/à—‘÷/r   r}   c                   óX   ‡ — e Zd Zdefˆ fd„Z	 ddej                  fd„Zed„ «       Z	ˆ xZ
S )ÚModelr*   c                 ór   •— t         ‰| �  «        |j                  | _        t        |«      | _        || _        y r   )r4   r5   r   r}   Úmodelr*   r€   s     €r   r5   zModel.__init__¢   s+   ø€ Ü‰ÑÔØŸ/™/ˆŒÜ˜t“_ˆŒ
Øˆ�	r   rt   c                 ó&   — | j                  ||«      S r   )r†   r‚   s      r   rg   zModel.__call__¨   s   € ð
 �z‰z˜& %Ó(Ð(r   c                 óB   — | j                   j                  j                  S r   )r†   r   rq   r   s    r   ÚlayerszModel.layers¯   s   € à�z‰z×%Ñ%×,Ñ,Ð,r   r   )r   r    r!   r   r5   rO   rh   rg   Úpropertyr‰   ri   rj   s   @r   r„   r„   ¡   s9   ø„ ð˜Yõ ð ñ)à—‘ó)ð ñ-ó ô-r   r„   )ÚsysÚdataclassesr   Útypingr   r   Úmlx.coreÚcorerO   Úmlx.nnr6   Úactivationsr   r3   r   r	   Úhf_olmoÚImportErrorÚprintÚexitr   ÚModuler)   rl   r}   r„   r'   r   r   Ú<module>r—      s«   ðó Ý !ß  å Ý å ß 6ðÛð ô
�ó 
ó ð
ô*D�r—y‘yô DôN �"—)‘)ô  ôF
/�—	‘	ô 
/ô-ˆB�I‰Iõ -øðe ò Ù	Ð
>Ô?Ø€C‡H�HˆQ†Kðús   ®B ÂB9Â8B9