§
    ãóÉjj  ã                   óH   — d dl Zd„ Zd„ Zd	d„Zd„ Zd„ Z G d„ d¦  «        ZdS )
é    Nc                 ó”  ‡‡— |st          d¦  «        ‚t          |d         j        t          j        ¦  «        rt          j        }t          j        Šndd l}|j        }|j        Š |d„ |D ¦   «         ¦  «        | _        d Š|D ]$}| 	                    ¦   «         r|j
        j        Š nŒ%‰� |ˆˆfd„|D ¦   «         ¦  «        | _
        d S d S )Nú9Cannot fuse linear layers: at least one layer is requiredr   c                 ó   — g | ]	}|j         ‘Œ
S © )Úweight)Ú.0Úlayers     ú�/home/lighthouse/badge-speaker-benchmark/.benchmark-venv-community/lib64/python3.11/site-packages/ctranslate2/converters/utils.pyú
<listcomp>zfuse_linear.<locals>.<listcomp>   s   € Ð@Ð@Ð@°˜uœ|Ð@Ð@Ð@ó    c                 ó‚   •— g | ];}|                      ¦   «         r|j        n ‰|j        j        d          g‰¬¦  «        ‘Œ<S )r   )Údtype)Úhas_biasÚbiasr   Úshape)r   r	   Ú
bias_dtypeÚzeross     €€r
   r   zfuse_linear.<locals>.<listcomp>   s`   ø€ ð ð ð ð ð —~’~Ñ'Ô'ðJ�E”J�Jà˜ ¤Ô 2°1Ô 5Ð6¸jÐIÑIÔIð	ð ð r   )Ú
ValueErrorÚ
isinstancer   ÚnpÚndarrayÚconcatenater   ÚtorchÚcatr   r   r   )ÚspecÚlayersr   r   r	   r   r   s        @@r
   Úfuse_linearr      s  øø€ Øð VÝÐTÑUÔUÐUå�&˜”)Ô"¥B¤JÑ/Ô/ð Ý”nˆÝ”ˆˆàˆˆˆà”iˆØ”ˆà�+Ð@Ð@¸Ð@Ñ@Ô@ÑAÔA€D„Kà€JØð ð ˆØ�>Š>ÑÔð 	ØœÔ)ˆJØˆEð	ð ÐØ�Kðð ð ð ð ð $ðñ ô ñ	
ô 	
ˆŒ	ˆ	ˆ	ð Ðr   c           	      ó  ‡— |st          d¦  «        ‚g d¢}t          |d         j        t          j        ¦  «        rt          j        }ndd l}|j        }|D ]*Št          | ‰ |ˆfd„|D ¦   «         |¬¦  «        ¦  «         Œ+d S )Nr   )r   Úweight_scaleÚweight_zeror   c                 ó0   •— g | ]}t          |‰¦  «        ‘ŒS r   )Úgetattr)r   r	   Úparams     €r
   r   z(fuse_linear_prequant.<locals>.<listcomp>5   s#   ø€ ÐCÐCÐC°5� ¨Ñ.Ô.ÐCÐCÐCr   ©Úaxis)	r   r   r   r   r   r   r   r   Úsetattr)r   r   r%   Úparamsr   r   r#   s         @r
   Úfuse_linear_prequantr(   &   s·   ø€ Øð VÝÐTÑUÔUÐUØ6Ð6Ð6€FÝ�&˜”)Ô"¥B¤JÑ/Ô/ð  Ý”nˆˆàˆˆˆà”iˆàð 
ð 
ˆÝØØØˆKÐCÐCÐCÐC¸FÐCÑCÔCÈ$ÐOÑOÔOñ	
ô 	
ð 	
ð 	
ð
ð 
r   c                 ó   — |�›|                       || j        d         |z  d¦  «        } | dd…d|…f         }t          |                      ||z  d¦  «        |¦  «                              ||d¦  «        }|| dd…d|…f<   |                       d| j        d         ¦  «        S |                       || j        d         |z  dz  d| j        d         ¦  «                             dd¦  «                              | j        d         | j        d         ¦  «        S )z<Permutes the weight to use the sliced rotary implementation.Nr   éÿÿÿÿé   é   )Úreshaper   Úpermute_for_sliced_rotaryÚswapaxes)r   Ú	num_headsÚ
rotary_dimÚrotary_weights       r
   r.   r.   9   s	  € àÐØ—’ 	¨6¬<¸¬?¸iÑ+GÈÑLÔLˆà˜q˜q˜q + : +˜~Ô.ˆÝ1Ø×!Ò! )¨jÑ"8¸"Ñ=Ô=¸yñ
ô 
ç
Š'�)˜Z¨Ñ
,Ô
,ð 	ð "/ˆˆqˆqˆq�+�:�+ˆ~Ñà�~Š~˜b &¤,¨rÔ"2Ñ3Ô3Ð3ð 	�Š�y &¤,¨q¤/°YÑ">À!Ñ"CÀQÈÌÐUVÌÑXÔXß	Š�!�Q‰Œß	Š�”˜a” &¤,¨q¤/Ñ	2Ô	2ðr   c                 ó¬  — t          |j        t          j        ¦  «        s.|j                             ¦   «         }|                     ¦   «         }n|j        }t          j        t          j        |¦  «        d¬¦  «        }t          j        |d¦  «        }|                     |j	        ¦  «        }t          j
        ||z  ¦  «        }t          j        |d¦  «        }t          |j        t          j        ¦  «        sddl}|                     |¦  «        }| xj        |z  c_        | xj        |z  c_        |xj        |                     dd¦  «        z  c_        dS )zlApplies the activation smoothing technique described in
    https://github.com/mit-han-lab/smoothquant.
    r   r$   gñhãˆµøä>Nr,   r*   )r   r   r   r   ÚnumpyÚamaxÚabsoluteÚmaximumÚastyper   Úsqrtr   Ú
from_numpyÚgammaÚbetar-   )Ú
layer_normÚlinearÚactivation_scalesÚlinear_weightÚweight_scalesÚscalesr   s          r
   Úsmooth_activationrC   N   s-  € õ �f”m¥R¤ZÑ0Ô0ð &Øœ×+Ò+Ñ-Ô-ˆØ-×3Ò3Ñ5Ô5ÐÐàœˆå”G�BœK¨Ñ6Ô6¸QÐ?Ñ?Ô?€MÝ”J˜}¨dÑ3Ô3€Mà)×0Ò0°Ô1DÑEÔEÐåŒWÐ&¨Ñ6Ñ7Ô7€FÝŒZ˜ Ñ%Ô%€Få�f”m¥R¤ZÑ0Ô0ð *Øˆˆˆà×!Ò! &Ñ)Ô)ˆàÐÔ˜ÑÐÔØ€O„O�vÑ€O„Oà
€M„M�V—^’^ A rÑ*Ô*Ñ*€M„M€M€Mr   c                 ó>   — d}| D ]
}|d|z   z  }Œt          |¦  «        ‚)NzjThe model you are trying to convert is not supported by CTranslate2. We identified the following reasons:
z
- )r   )ÚreasonsÚmessageÚreasons      r
   Úraise_unsupportedrH   k   s;   € ð	1ð ð ð #ð #ˆØ�6˜F‘?Ñ"ˆˆÝ
�WÑ
Ô
Ðr   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚConfigurationCheckerc                 ó   — g | _         d S ©N)Ú_unsupported_reasons©Úselfs    r
   Ú__init__zConfigurationChecker.__init__v   s   € Ø$&ˆÔ!Ð!Ð!r   c                 óB   — |s| j                              |¦  «         d S d S rL   )rM   Úappend)rO   Úassert_conditionÚerror_messages      r
   Ú__call__zConfigurationChecker.__call__y   s1   € Øð 	<ØÔ%×,Ò,¨]Ñ;Ô;Ð;Ð;Ð;ð	<ð 	<r   c                 ó@   — | j         rt          | j         ¦  «         d S d S rL   )rM   rH   rN   s    r
   ÚvalidatezConfigurationChecker.validate}   s.   € ØÔ$ð 	9Ý˜dÔ7Ñ8Ô8Ð8Ð8Ð8ð	9ð 	9r   N)Ú__name__Ú
__module__Ú__qualname__rP   rU   rW   r   r   r
   rJ   rJ   u   sA   € € € € € ð'ð 'ð 'ð<ð <ð <ð9ð 9ð 9ð 9ð 9r   rJ   rL   )r4   r   r   r(   r.   rC   rH   rJ   r   r   r
   ú<module>r[      s”   ðØ Ð Ð Ð ð
ð 
ð 
ðD
ð 
ð 
ð&ð ð ð ð*+ð +ð +ð:ð ð ð
9ð 
9ð 
9ð 
9ð 
9ñ 
9ô 
9ð 
9ð 
9ð 
9r   