§
    Ý˜ºhôE  ã                   ó>  — d dl mZmZmZ  e¦   «         r
ddlZddlmZ  e¦   «         rddlmZ ddlZ ej	        e
¦  «        Zg d¢Zd„ Zd„ Zej        d	d
œdej        dedej        fd„Z G d„ dej        ¦  «        Zd„ Zd„ Zd„ Zd„ Zd„ Z	 	 	 	 	 dd„Z	 	 	 	 dd„ZdS )é   )Úis_accelerate_availableÚis_torch_availableÚloggingé    N)Únn)Úinit_empty_weights)g        g      à?g      ð?g      ø?g       @g      @g      @g      @g       €g      à¿g      ð¿g      ø¿g       Àg      Àg      Àg      Àc                 óœ   — |j         j        j        } ||                      t          j        ¦  «        t          j        d¬¦  «        \  } }| |fS )Né   )Úaxis)Únumerics_detailsÚmxfpÚdowncast_to_mxfp_torchÚtoÚtorchÚbfloat16Úuint8)ÚwÚtriton_kernels_hubr   Úw_scales       úg/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/transformers/integrations/mxfp4.pyÚquantize_to_mxfp4r   3   sG   € Ø/Ô@ÔEÔ\ÐØ'Ð'¨¯ª­U¬^Ñ(<Ô(<½e¼kÐPQÐRÑRÔR�J€A€wØˆgˆ:Ðó    c                 ó  — |j         j        |j         j        |j         j        }}}|j        j        }|j        j        j        }|                     d¬¦  «        \  }}	 | || |¬¦  «        |fi |	¤Ž}  | ||¦  «        |¦  «        }| |fS )zE
    Changes the layout of the tensors depending on the hardware
    r
   )Úmx_axis©Údtype)ÚtensorÚFP4Úconvert_layoutÚwrap_torch_tensorÚtensor_detailsÚlayoutÚStridedLayoutÚ"make_default_matmul_mxfp4_w_layout)
r   r   r   r   r   r    r"   r#   Úvalue_layoutÚvalue_layout_optss
             r   Úswizzle_mxfp4r'   9   s²   € ð
 	Ô!Ô%ØÔ!Ô0ØÔ!Ô3ð +ˆ€Cð
  Ô.Ô5€FØ&Ô5Ô<ÔJ€Mà&,×&OÒ&OÐXYÐ&OÑ&ZÔ&ZÑ#€LÐ#ØˆÐ(Ð(¨°#Ð6Ñ6Ô6¸ÐZÐZÐHYÐZÐZ€AØˆnÐ.Ð.¨wÑ7Ô7¸ÑGÔG€GØˆgˆ:Ðr   i   )r   Úrows_per_chunkr   r(   Úreturnc                ó²  — ddl }| j        sFt          j                             ¦   «         r(|                      ¦   «         } |                     ¦   «         }|                     t          j        ¦  «        dz
  }| j        dd…         |j        k    s"J d| j        dd…         ›d|j        ›�¦   «         ‚t          j        t          || j
        ¬¦  «        }| j        �^ }}}|                     |¦  «        |z  }	|                      |	|¦  «        } |                     |	d¦  «        }t          j        |	|d	z  || j
        ¬¦  «        }
t          d|	|¦  «        D ]·}t          ||z   |	¦  «        }| ||…         }|||…         }|d
z                       t          j        ¦  «        }|dz	                       t          j        ¦  «        }|
||…         }||         |dd…ddd	…f<   ||         |dd…ddd	…f<   t          j        |||¬¦  «         ~~~~~Œ¸  |
j        g |¢|‘|d	z  ‘R Ž j        g |¢||z  d	z  ‘R Ž }
~ ~~|
                     dd	¦  «                             ¦   «         S )zw
    Convert the mxfp4 weights again, dequantizing and makes them compatible with the forward
    pass of GPT_OSS.
    r   Né   éÿÿÿÿzblocks.shape[:-1]=z does not match scales.shape=)r   Údevicer
   r   é   é   )Úout)ÚmathÚis_cudar   ÚcudaÚis_availabler   Úint32Úshaper   Ú
FP4_VALUESr-   ÚprodÚreshapeÚemptyÚrangeÚminÚlongÚldexpÚviewÚ	transposeÚ
contiguous)ÚblocksÚscalesr   r(   r1   ÚlutÚprefix_shapeÚGÚBÚ
rows_totalr0   Úr0Úr1ÚblkÚexpÚidx_loÚidx_hiÚsubs                     r   Úconvert_moe_packed_tensorsrP   M   sr  € ð €K€K€Kð Œ>ð �eœj×5Ò5Ñ7Ô7ð Ø—’‘”ˆØ—’‘”ˆà�YŠY•u”{Ñ#Ô# cÑ)€FàŒ<˜˜˜Ô ¤Ò,Ð,Ð,Ð.d°´¸c¸r¸cÔ1BÐ.dÐ.dÐU[ÔUaÐ.dÐ.dÑ,Ô,Ð,å
Œ,•z¨°v´}Ð
EÑ
EÔ
E€Cà œ,Ñ€\�1�aØ—’˜<Ñ(Ô(¨1Ñ,€Jà�^Š^˜J¨Ñ*Ô*€FØ�^Š^˜J¨Ñ*Ô*€Få
Œ+�j ! a¡%¨u¸V¼]Ð
KÑ
KÔ
K€Cå�A�z >Ñ2Ô2ð *ð *ˆÝ��nÑ$ jÑ1Ô1ˆà�R˜�UŒmˆØ�R˜�UŒmˆð ˜‘*—’¥¤Ñ,Ô,ˆØ˜‘(—’�uœzÑ*Ô*ˆà�"�R�%ŒjˆØ˜6”{ˆˆAˆAˆAˆqˆt�!ˆtˆG‰Ø˜6”{ˆˆAˆAˆAˆqˆt�!ˆtˆG‰åŒ�C˜ #Ð&Ñ&Ô&Ð&Ø�F˜C  c cà
3ˆ+ˆ#Œ+Ð
.�|Ð
. QÐ
.¨¨A©Ð
.Ð
.Ð
.Ô
3Ð
M°\Ð
MÀ1ÀqÁ5È1Á9Ð
MÐ
MÐ
M€CØ�˜Ø�=Š=˜˜AÑÔ×)Ò)Ñ+Ô+Ð+r   c                   óB   ‡ — e Zd Zˆ fd„Zdej        dej        fd„Zˆ xZS )ÚMxfp4GptOssExpertsc           	      ó¢  •— t          ¦   «                              ¦   «          |j        | _        |j        | _        |j        | _        t          j        t          j	        | j        d| j        z  | j        dz  dt          j
        ¬¦  «        d¬¦  «        | _        t          j        t          j	        | j        d| j        z  | j        dz  t          j
        ¬¦  «        d¬¦  «        | _        t          j        t          j	        | j        d| j        z  t          j        ¬¦  «        d¬¦  «        | _        t          j        t          j	        | j        | j        | j        dz  dft          j
        ¬¦  «        d¬¦  «        | _        t          j        t          j	        | j        | j        | j        dz  t          j
        ¬¦  «        d¬¦  «        | _        t          j        t          j	        | j        | j        t          j        ¬¦  «        d¬¦  «        | _        d| _        t'          |dd	¦  «        | _        d | _        d | _        t'          |dd	¦  «        | _        d S )
Nr   é    é   r   F©Úrequires_gradg¬Zd;û?Úswiglu_limitg      @)ÚsuperÚ__init__Únum_local_expertsÚnum_expertsÚintermediate_sizeÚhidden_sizer   Ú	Parameterr   Úzerosr   Úgate_up_proj_blocksÚgate_up_proj_scalesÚfloat32Úgate_up_proj_biasÚdown_proj_blocksÚdown_proj_scalesÚdown_proj_biasÚalphaÚgetattrÚlimitÚgate_up_proj_precision_configÚdown_proj_precision_config)ÚselfÚconfigÚ	__class__s     €r   rZ   zMxfp4GptOssExperts.__init__„   s#  ø€ Ý‰Œ×ÒÑÔÐà!Ô3ˆÔØ!'Ô!9ˆÔØ!Ô-ˆÔå#%¤<ÝŒK˜Ô(¨!¨dÔ.DÑ*DÀdÔFVÐZ\ÑF\Ð^`ÕhmÔhsÐtÑtÔtØð$
ñ $
ô $
ˆÔ õ $&¤<ÝŒK˜Ô(¨!¨dÔ.DÑ*DÀdÔFVÐZ\ÑF\ÕdiÔdoÐpÑpÔpØð$
ñ $
ô $
ˆÔ õ "$¤ÝŒK˜Ô(¨!¨dÔ.DÑ*DÍEÌMÐZÑZÔZÐjoð"
ñ "
ô "
ˆÔõ !#¤ÝŒK˜Ô)¨4Ô+;¸TÔ=SÐWYÑ=YÐ[]Ð^ÕfkÔfqÐrÑrÔrØð!
ñ !
ô !
ˆÔõ !#¤ÝŒK˜Ô(¨$Ô*:¸DÔ<RÐVXÑ<XÕ`eÔ`kÐlÑlÔlØð!
ñ !
ô !
ˆÔõ !œlÝŒK˜Ô(¨$Ô*:Å%Ä-ÐPÑPÔPÐ`eð
ñ 
ô 
ˆÔð ˆŒ
Ý˜V ^°SÑ9Ô9ˆŒ
Ø-1ˆÔ*Ø*.ˆÔ'Ý˜V ^°SÑ9Ô9ˆŒ
ˆ
ˆ
r   Úhidden_statesr)   c                 óR  — t           j        j        t           j        j        t           j        j        }}}t           j        j        }t          j                             |j        ¦  «        5   | |d|d¦  «        | j	        | j
        fd¦  «        }	 ||| j        | j                             t          j        ¦  «        ||| j        d |	¬¦  «        }
 ||
| j        | j                             t          j        ¦  «        ||| j        |j        ¬¦  «        }d d d ¦  «         n# 1 swxY w Y   |S )NÚswiglu)rh   rj   r   )Úgather_indxÚprecision_configÚgammasÚfused_activation)Úscatter_indxrt   ru   )r   Ú
matmul_ogsÚFnSpecsÚFusedActivationrr   Ú	swiglu_fnr   r3   r-   rh   rj   Úgate_up_projrd   r   rc   rk   Ú	down_projrg   rl   Ú	gate_scal)rm   rp   Úrouting_dataÚ
gather_idxÚscatter_idxry   rz   rx   r{   ÚactÚintermediate_cache1Úintermediate_cache3s               r   ÚforwardzMxfp4GptOssExperts.forward¨   sj  € åÔ)Ô1ÝÔ)Ô9ÝÔ)Ô4ð #-�ˆõ
 'Ô-Ô7ˆ	åŒZ×Ò˜}Ô3Ñ4Ô4ð 	ð 	Ø!�/ ' '¨(°IÐ?QÑ"RÔ"RÐUYÔU_ÐaeÔakÐTlÐnoÑpÔpˆCà", *ØØÔ!ØÔ&×)Ò)­%¬-Ñ8Ô8ØØ&Ø!%Ô!CØØ!$ð	#ñ 	#ô 	#Ðð #- *Ø#Ø”ØÔ#×&Ò&¥u¤}Ñ5Ô5ØØ(Ø!%Ô!@Ø#Ô-ð#ñ #ô #Ðð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð. #Ð"s   Á)B'DÄD Ä#D )Ú__name__Ú
__module__Ú__qualname__rZ   r   ÚTensorr…   Ú__classcell__)ro   s   @r   rR   rR   ƒ   sa   ø€ € € € € ð":ð ":ð ":ð ":ð ":ðH# U¤\ð #Ð]bÔ]ið #ð #ð #ð #ð #ð #ð #ð #r   rR   c                 ót  — dd l }t          j        j        t          j        j        t          j        j        t          j        j        f\  }}}}t          j         	                    | j	        ¦  «        5  t          j
                             ¦   «         }t          |j                             dd¦  «        ¦  «        }d}	| j        d         }
| j        d         }||z  }||z  }|dz   |z  }|
|z  }d„ } || |¦  «        \  }}t          j        |d¬¦  «        }t          j        |d¬¦  «        \  }}t          j        |d|¦  «        }|                     d¦  «        }t          j        |||dz
  ¬¦  «        ||…         }|                     d¦  «                             t          j        ¦  «        }d	}t          j        ||k     ||¦  «        }t          j        |d
¬¦  «                             t          j        ¦  «        }t          j        |¦  «                             t          j        ¦  «        }t          j        ||k     ||	¦  «        }t          j        ||k    ||	¦  «        }t          j        ||	k    |	|¦  «        }||         }t          j        ||         |	k    |	|¦  «        } ||                     ¦   «         |                     ¦   «         ¬¦  «        } ||                     ¦   «         |                     ¦   «         ¬¦  «        } ||||¦  «        }|}d d d ¦  «         n# 1 swxY w Y    ||||||¦  «        ||fS )Nr   Ú
LOCAL_RANKÚ0r,   r
   c                 óÌ   — t          j        |  dd¬¦  «        d d …d |…f         }|                     ¦   «         }t          j        | |d¬¦  «        }||                     ¦   «         fS )Nr
   T)ÚdimÚstable©r�   )r   Úargsortr=   Útake_along_dimÚint)ÚvalsÚkÚtk_indxÚtk_vals       r   Útopkz routing_torch_dist.<locals>.topkç   sb   € Ý”m T E¨q¸Ð>Ñ>Ô>¸q¸q¸qÀ"À1À"¸uÔEˆGØ—l’l‘n”nˆGÝÔ)¨$°¸QÐ?Ñ?Ô?ˆFØ˜7Ÿ;š;™=œ=Ð(Ð(r   r‘   )ÚbinsÚmaxiè  T)r�   )Úsrc_indxÚdst_indx)Úosr   ÚroutingÚ
GatherIndxÚRoutingDataÚScatterIndxÚcompute_expt_data_torchr   r3   r-   ÚdistributedÚget_world_sizer”   ÚenvironÚgetr6   ÚsoftmaxÚsortÚgatherr9   Úhistcr?   r   r5   Úwherer’   )ÚlogitsÚn_expts_actrž   r    r¡   r¢   r£   Ú
world_sizeÚrankÚreplace_valueÚn_tokensÚn_expts_totÚn_local_expertsÚlocal_expert_startÚlocal_expert_endÚn_gates_padr™   Ú	expt_scalÚ	expt_indxÚsort_indicesÚhistÚvarÚ	topk_indxÚ	gate_indxr~   rs   rw   Ú	expt_dataÚhit_expertss                                r   Úrouting_torch_distrÁ   Ì   sN  € ð €I€I€Iõ 	Ô"Ô-ÝÔ"Ô.ÝÔ"Ô.ÝÔ"Ô:ð	EÑA€J�˜[Ð*Aõ 
Œ×	Ò	˜6œ=Ñ	)Ô	)ð 3"ð 3"ÝÔ&×5Ò5Ñ7Ô7ˆ
Ý�2”:—>’> ,°Ñ4Ô4Ñ5Ô5ˆØˆà”< ”?ˆØ”l 1”oˆà%¨Ñ3ˆØ! OÑ3ÐØ  1™H¨Ñ7Ðà Ñ,ˆð	)ð 	)ð 	)ð  $˜t F¨KÑ8Ô8Ñˆ	�9Ý”M )°Ð4Ñ4Ô4ˆ	Ý"'¤*¨Y¸AÐ">Ñ">Ô">Ñˆ	�<Ý”L ¨A¨|Ñ<Ô<ˆ	ð ×%Ò% bÑ)Ô)ˆ	åŒ{˜9¨;¸KÈ!¹OÐLÑLÔLÐM_Ð`pÐMpÔqˆà—N’N 2Ñ&Ô&×)Ò)­%¬+Ñ6Ô6ˆ	ð ˆÝ”K 	Ð,>Ò >ÀÀYÑOÔOˆ	Ý”M )°DÐ9Ñ9Ô9×<Ò<½U¼[ÑIÔIˆ	Ý”M )Ñ,Ô,×/Ò/µ´Ñ<Ô<ˆ	Ý”K 	Ð,<Ò <¸iÈÑWÔWˆ	Ý”KÐ 2°iÒ ?ÀÈMÑZÔZˆ	å”K 	¨]Ò :¸MÈ9ÑUÔUˆ	Ø˜iÔ(ˆ	å”K 	¨)Ô 4¸Ò EÀ}ÐV_Ñ`Ô`ˆ	ð !�j¨)¯-ª-©/¬/ÀIÇMÂMÁOÄOÐTÑTÔTˆØ"�{¨I¯MªM©O¬OÀiÇmÂmÁoÄoÐVÑVÔVˆà+Ð+¨D°/À;ÑOÔOˆ	à!ˆðg3"ð 3"ð 3"ñ 3"ô 3"ð 3"ð 3"ð 3"ð 3"ð 3"ð 3"øøøð 3"ð 3"ð 3"ð 3"ðh ˆ;�y $¨¸ÀiÑPÔPÐR]Ð_kÐkÐks   Á0J!LÌL!Ì$L!c                 óš  — dd l m} |                     ¦   «         r,|                     ¦   «         rt	          | d¦  «        rt
          }nt          j        j        }|j        d         }| 	                    d| j
        j        ¦  «        }t          j                             || j
        j        | j
        j        ¦  «        }t"          j                             |j        ¦  «        5   ||| j
        j        ¦  «        \  }}}d d d ¦  «         n# 1 swxY w Y   |                      ||||¦  «        }	|	 	                    |d| j
        j        ¦  «        }	|	|fS )Nr   Ú
_is_hookedr,   )Útorch.distributedr¤   r4   Úis_initializedÚhasattrrÁ   r   rŸ   r6   r9   ÚrouterÚ
hidden_dimr   Ú
functionalÚlinearÚweightÚbiasr   r3   r-   Útop_kÚexperts)
rm   rp   ÚdistrŸ   Ú
batch_sizeÚrouter_logitsr   r€   r�   Ú
routed_outs
             r   Úmlp_forwardrÓ     s„  € Ø$Ð$Ð$Ð$Ð$Ð$à×ÒÑÔð 5˜t×2Ò2Ñ4Ô4ð 5½ÀÀ|Ñ9TÔ9Tð 5Ý$ˆˆå$Ô,Ô4ˆàÔ$ QÔ'€JØ!×)Ò)¨"¨d¬kÔ.DÑEÔE€MÝ”M×(Ò(¨¸¼Ô8JÈDÌKÔL\Ñ]Ô]€Må	Œ×	Ò	˜=Ô/Ñ	0Ô	0ð Zð ZØ07°¸ÀtÄ{ÔGXÑ0YÔ0YÑ-ˆ�j +ðZð Zð Zñ Zô Zð Zð Zð Zð Zð Zð Zøøøð Zð Zð Zð Zð —’˜m¨\¸:À{ÑSÔS€JØ×#Ò# J°°D´KÔ4JÑKÔK€JØ�}Ð$Ð$s   ÃDÄD	ÄD	c                 ól   ‡— d                      | ¦  «        Št          ˆfd„|D ¦   «         ¦  «        sdS dS )Nú.c              3   ót   •K  — | ]2}t          j        |› d �‰¦  «        pt          j        |› ‰¦  «        V — Œ3dS )z\.N)ÚreÚmatch)Ú.0ÚkeyÚcurrent_key_name_strs     €r   ú	<genexpr>z(should_convert_module.<locals>.<genexpr>&  s[   øè è € ð ð Ødg�Œ�C���Ð2Ñ3Ô3Ð_µr´xÀ3ÀÐJ^Ñ7_Ô7_ðð ð ð ð ð r   TF)ÚjoinÚany)Úcurrent_key_nameÚpatternsrÛ   s     @r   Úshould_convert_modulerá   $  sZ   ø€ ØŸ8š8Ð$4Ñ5Ô5ÐÝð ð ð ð Øksðñ ô ñ ô ð ð ˆtØˆ5r   c                 óš  — ddl m} |                     d¦  «        }|                     d¦  «        }|                     d¦  «        }	|                     d¦  «        }
|                     d¦  «        }|                     d¦  «        }d	D �]B}||v �r:|� ||||||	|
||d
¬¦	  «	        }|› d�}|› d�}t          | |                     dd¦  «        d         |¦  «         t          | |¦  «        rßt          | |¦  «        rÏt          t          | |¦  «        t          | |¦  «        ¦  «        }|dk    r<t          j	         
                    ¦   «         rt          j	                             ¦   «          t          | |t          j                             |                     |¦  «        ¦  «        ¦  «         t          | |¦  «         t          | |¦  «         �ŒDd S )Nr   ©Úshard_and_distribute_moduleÚmodelÚempty_paramÚcasting_dtypeÚto_contiguousr°   Údevice_mesh)r|   r}   F)Ú	set_paramÚ_blocksÚ_scalesrÕ   r
   Úcpu)Úintegrations.tensor_parallelrä   r§   ÚsetattrÚrsplitrÆ   rP   ri   r   r3   r4   Úempty_cacher   r_   r   Údelattr)ÚmoduleÚ
param_nameÚparam_valueÚtarget_deviceÚdq_param_nameÚkwargsrä   rå   ræ   rç   rè   r°   ré   ÚprojÚblocks_attrÚscales_attrÚdequantizeds                    r   Ú
dequantizerý   -  så  € ØJÐJÐJÐJÐJÐJà�JŠJ�wÑÔ€EØ—*’*˜]Ñ+Ô+€KØ—J’J˜Ñ/Ô/€MØ—J’J˜Ñ/Ô/€MØ�:Š:�fÑÔ€DØ—*’*˜]Ñ+Ô+€Kà-ð -ñ -ˆØ�:ÐÑØÐ&Ø9Ð9ØØØØ!Ø!Ø!ØØØ#ð
ñ 
ô 
�ð "Ð*Ð*Ð*ˆKØ!Ð*Ð*Ð*ˆKÝ�F˜J×-Ò-¨c°1Ñ5Ô5°aÔ8¸+ÑFÔFÐFÝ�v˜{Ñ+Ô+ð -µ¸ÀÑ0LÔ0Lð -Ý8½ÀÈÑ9UÔ9UÕW^Ð_eÐgrÑWsÔWsÑtÔt�Ø  EÒ)Ð)­e¬j×.EÒ.EÑ.GÔ.GÐ)Ý”J×*Ò*Ñ,Ô,Ð,Ý˜ ¥e¤h×&8Ò&8¸¿ºÈÑ9VÔ9VÑ&WÔ&WÑXÔXÐXÝ˜ Ñ,Ô,Ð,Ý˜ Ñ,Ô,Ð,ùð/-ð -r   c                 ój  — |j         j        |j         j        |j         j        }}}ddlm}	 |                     d¦  «        }
|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }d	|v r4|                     d
¦  «        d                              d¦  «        d         }d|v r4|                     d
¦  «        d                              d¦  «        d         }|� |	|
|||||||¦  «         nJt          | | 	                    d
d¦  «        d         t          j                             |d¬¦  «        ¦  «         |› d�}|› d�}t          | |¦  «        }t          | |¦  «        }|j        j        dk    �rþ|j        j        dk    �rï|                     d¦  «        }|dk    r |                     || j        dz  d¦  «        }n|                     |d| j        dz  ¦  «        }t          |d|¦  «        dk    rd}|                     |¦  «                             ¦   «         }|                     |¦  «                             ¦   «         }t          j                             |¦  «        5  t-          |                     dd¦  «        |                     dd¦  «        |¦  «        \  }}ddd¦  «         n# 1 swxY w Y   |dk    r*t          j        || j        | j        dz  g¦  «        |_        n&t          j        || j        | j        g¦  «        |_        t          | ||¦  «         t          | |› d� || | |¦   «         ¬¦  «        ¬¦  «        ¦  «         t7          | |¦  «         t7          | |¦  «         ~dS dS dS )zq
    This transforms the weights obtained using `convert_gpt_oss.py` to load them into `Mxfp4GptOssExperts`.
    r   rã   rå   ræ   rç   rè   r°   ré   rB   rÕ   r,   rë   r   rC   rì   Nr
   FrV   Úmetar|   Útyperí   r3   éþÿÿÿÚ_precision_config)Úrhs_data)Úweight_scaleÚflex_ctx)rx   ÚPrecisionConfigÚFlexCtxÚ
InFlexDatarî   rä   r§   Úsplitrï   rð   r   r   r_   ri   r-   r   Úsizer9   r]   r   rA   r3   r'   r@   ÚSizer^   r6   rò   )ró   rô   rõ   rö   r   rø   r  r  r  rä   rå   ræ   rç   rè   r°   ré   rù   rú   rû   rB   rC   Úlocal_expertsÚtriton_weight_tensorr  s                           r   Úload_and_swizzle_mxfp4r  Q  s  € ð
 	Ô%Ô5ØÔ%Ô-ØÔ%Ô0ð )�W€Oð
 KÐJÐJÐJÐJÐJà�JŠJ�wÑÔ€EØ—*’*˜]Ñ+Ô+€KØ—J’J˜Ñ/Ô/€MØ—J’J˜Ñ/Ô/€MØ�:Š:�fÑÔ€DØ—*’*˜]Ñ+Ô+€KØ�:ÐÐØ×Ò Ñ$Ô$ RÔ(×.Ò.¨yÑ9Ô9¸!Ô<ˆØ�:ÐÐØ×Ò Ñ$Ô$ RÔ(×.Ò.¨yÑ9Ô9¸!Ô<ˆØÐØ#Ð#Ø�; ¨Z¸ÈÐW[Ð]hñ	
ô 	
ð 	
ð 	
õ 	�˜
×)Ò)¨#¨qÑ1Ô1°!Ô4µe´h×6HÒ6HÈÐdiÐ6HÑ6jÔ6jÑkÔkÐkØÐ"Ð"Ð"€KØÐ"Ð"Ð"€KÝ�V˜[Ñ)Ô)€FÝ�V˜[Ñ)Ô)€Fà„}Ô˜VÒ#Ñ#¨¬Ô(:¸fÒ(DÑ(DØŸš A™œˆØ�>Ò!Ð!Ø—^’^ M°6Ô3KÈaÑ3OÐQSÑTÔTˆFˆFà—^’^ M°2°vÔ7OÐSTÑ7TÑUÔUˆFÝ�= &¨-Ñ8Ô8¸EÒAÐAØ"ˆMØ—’˜=Ñ)Ô)×4Ò4Ñ6Ô6ˆØ—’˜=Ñ)Ô)×4Ò4Ñ6Ô6ˆÝŒZ×Ò˜}Ñ-Ô-ð 	ð 	Ý1>Ø× Ò   RÑ(Ô(¨&×*:Ò*:¸2¸rÑ*BÔ*BÐDVñ2ô 2Ñ.Ð  ,ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð �>Ò!Ð!Ý).¬°]ÀFÔDVÐX^ÔXpÐstÑXtÐ4uÑ)vÔ)vÐ Ô&Ð&å).¬°]ÀFÔD\Ð^dÔ^pÐ4qÑ)rÔ)rÐ Ô&õ 	�˜Ð2Ñ3Ô3Ð3ÝØØÐ&Ð&Ð&ØˆO¨ÀÀÐQ[ÐQ[ÑQ]ÔQ]Ð@^Ñ@^Ô@^Ð_Ñ_Ô_ñ	
ô 	
ð 	
õ 	�˜Ñ$Ô$Ð$Ý�˜Ñ$Ô$Ð$ØˆFˆFðA $Ð#Ð(DÐ(Ds   Ê"=K+Ë+K/Ë2K/Fc           	      ó�  — |€g }|                       ¦   «         D �])\  }}|                     |¦  «         t          ||¦  «        s|                     d¦  «         ŒA|j        j        dk    rF|j        s?t          ¦   «         5  t          |¦  «        | j	        |<   d}d d d ¦  «         n# 1 swxY w Y   |j        j        dk    r#|j        sddl
m}  |t          |¦  «        |_        t          t          |                     ¦   «         ¦  «        ¦  «        dk    rt#          ||||||¬¦  «        \  }	}|                     d¦  «         �Œ+| |fS )Nr,   ÚGptOssExpertsTÚ	GptOssMLPr   )Ú
MethodType)Úhas_been_replacedrn   )Únamed_childrenÚappendrá   Úpopro   r†   rý   r   rR   Ú_modulesÚtypesr  rÓ   r…   ÚlenÚlistÚchildrenÚ_replace_with_mxfp4_linear)
rå   Úmodules_to_not_convertrß   Úquantization_configr  rn   Únameró   r  Ú_s
             r   r  r  ”  sº  € ð ÐØÐà×,Ò,Ñ.Ô.ð !ñ !‰ˆˆfØ×Ò Ñ%Ô%Ð%Ý$Ð%5Ð7MÑNÔNð 	Ø× Ò  Ñ$Ô$Ð$ØØÔÔ$¨Ò7Ð7Ð@SÔ@^Ð7Ý#Ñ%Ô%ð )ð )Ý'9¸&Ñ'AÔ'A�”˜tÑ$Ø$(Ð!ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )ð ÔÔ$¨Ò3Ð3Ð<OÔ<ZÐ3Ø(Ð(Ð(Ð(Ð(Ð(à'˜Z­°VÑ<Ô<ˆFŒNÝ�t�F—O’OÑ%Ô%Ñ&Ô&Ñ'Ô'¨!Ò+Ð+Ý#=ØØ&Ø Ø#Ø"3Øð$ñ $ô $Ñ ˆAÐ ð 	×Ò˜RÑ Ô Ð Ñ ØÐ#Ð#Ð#s   Á?B%Â%B)	Â,B)	c                 ó(  — |j         r| S ddlm}  |d¦  «        a|€dgn|}|j        �|                     |j        ¦  «         t          t          |¦  «        ¦  «        }t          | ||||¬¦  «        \  } }|st           
                    d¦  «         | S )Nr   )Ú
get_kernelz kernels-community/triton_kernelsÚlm_head)rn   z×You are loading your model using mixed-precision FP4 quantization but no linear modules were found in your model. Please double check your model architecture, or submit an issue on github if you think this is a bug.)rý   Úkernelsr"  r   r  Úextendr  Úsetr  ÚloggerÚwarning)rå   r  rß   r  rn   r"  r  s          r   Úreplace_with_mxfp4_linearr)  ¹  sÙ   € ð Ô%ð LØˆà&Ð&Ð&Ð&Ð&Ð&ð (˜ZÐ(JÑKÔKÐà,BÐ,J˜i˜[˜[ÐPfÐàÔ1Ð=Ø×%Ò%Ð&9Ô&PÑQÔQÐQÝ!¥#Ð&<Ñ"=Ô"=Ñ>Ô>ÐÝ9ØØØØØð ñ  ô  Ñ€EÐð ð 
Ý�Šðñ	
ô 	
ð 	
ð €Lr   )NNNFN)NNNN)Úutilsr   r   r   r   r   Ú
accelerater   r×   Ú
get_loggerr†   r'  r7   r   r'   r   r   r”   r‰   rP   ÚModulerR   rÁ   rÓ   rá   rý   r  r  r)  © r   r   ú<module>r/     sì  ðð IÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ Hð ÐÑÔð Ø€L€L€LØÐÐÐÐÐàÐÑÔð .Ø-Ð-Ð-Ð-Ð-Ð-à 	€	€	€	ð 
ˆÔ	˜HÑ	%Ô	%€ðð ð €
ð*ð ð ðð ð ð0 œØ&ð3,ð 3,ð 3,ð Œ;ð	3,ð
 ð3,ð „\ð3,ð 3,ð 3,ð 3,ðlD#ð D#ð D#ð D#ð D#˜œñ D#ô D#ð D#ðRAlð Alð AlðH%ð %ð %ð(ð ð ð!-ð !-ð !-ðH@ð @ð @ðJ  ØØØØð"$ð "$ð "$ð "$ðN  ØØØð"ð "ð "ð "ð "ð "r   