
    Z jn                     0   S SK JrJr  \" 5       (       a
  SSKrSSKJr  SSKJr  S SKJrJ	r	  S SK
JrJr  \R                  " \5      r/ SQr\S	 5       r " S
 S\5      r " S S\5      r " S S\5      r " S S\5      rS rS r\R0                  SS.S\R2                  S\S\R6                  4S jjr\R0                  SS.S\R2                  S\S\R6                  4S jjr " S S\R<                  5      rS r S r!S r"S  r#S! r$S" r%S%S#\&\'   S-  4S$ jjr(g)&   )is_torch_availablelogging    N)nn)contextmanager)ConversionOps_IdentityOp)get_module_from_nameshould_convert_module)g        g      ?g      ?g      ?g       @g      @g      @g      @g       g      g      g      g       g      g      g      c              #     #    [        5       (       a  SS Kn[        XR                  5      (       a  U R                  n O'[        U [
        5      (       a  UR                  " U 5      n [        U SS 5      nUS:X  a*  UR                  R	                  U 5         S v    S S S 5        g US:X  a;  [        US5      (       a*  UR                  R	                  U 5         S v    S S S 5        g S v   g ! , (       d  f       NT= f! , (       d  f       N$= f7f)Nr   typecudaxpu)
r   torch
isinstanceTensordevicestrgetattrr   hasattrr   )devr   dev_types      p/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/transformers/integrations/mxfp4.py	on_devicer   1   s     c<<((**CS!!,,s#C3-v""3' (' u!6!6!!#& '& 
 (' '&s6   BD	C';D	C8D	'
C51D	8
DD	c                       \ rS rSrS r   SS\\\R                  4   S\R                  R                  S-  S\\   S-  S\S-  S\\\R                  4   4
S	 jjrS
rg)Mxfp4QuantizeG   c                     Xl         g Nhf_quantizerselfr!   s     r   __init__Mxfp4Quantize.__init__H       (    N
input_dictmodelmissing_keysfull_layer_namereturnc                    [        UR                  5       5      S   u  pg[        U[        5      (       a  US   OUn[	        X$5      u  p[
        R                  " UR                  5         [        U[        5      (       a  [        UR                  SS5      [        5      u  p[        R                  R                  [        R                  R                  [        R                  R                  pn[        X[        5      u  pSU;   a  SOSnXR                   ;   a  UR                   U	 [#        XU	5        [#        UU S3U" X" U" 5       S9S95        UR%                  U 5        S	Ul        0 sS S S 5        $  S S S 5        g ! , (       d  f       g = f)
Nr   gate_up_proj	down_proj_precision_configrhs_dataweight_scaleflex_ctxT)tupleitemsr   listr
   r   r   Mxfp4GptOssExpertsquantize_to_mxfp4	transposetriton_kernels_hub
matmul_ogsPrecisionConfigFlexCtx
InFlexDataswizzle_mxfp4_parameterssetattrdiscard_is_hf_initialized)r#   r(   r)   r*   r+   kwargs_valuemoduletriton_weight_tensorr6   r@   rA   rB   projs                  r   convertMxfp4Quantize.convertK   s\    ))+,Q/&ud33a(@	\\%,,'&"4555FuWY[]G^`r5s2$&11AA&1199&11<< +5
 6C(8J62$ *8?)J~P[---**40&:;f-.#YcYeHfg $$'8:,0)9 ('5 (''s   (D E<<
F
r    NNN__name__
__module____qualname____firstlineno__r$   dictr   r   r   r   Moduler:   rN   __static_attributes__ r'   r   r   r   G   s    ) )-)-&*)ell*+) xx%) 3i$&	)
 t) 
c5<<	 ) )r'   r   c                       \ rS rSrS r   SS\\\R                  4   S\R                  R                  S-  S\S-  S\\   S-  S\\\R                  4   4
S	 jjr\SS
 j5       rSrg)Mxfp4Dequantizew   c                     Xl         g r   r    r"   s     r   r$   Mxfp4Dequantize.__init__x   r&   r'   Nr(   r)   r+   r*   r,   c                    0 nSU;   a  SOSnU S3UR                  5       ;   a6  [        X S3   [        5      (       a  X S3   S   Xg S3'   OX S3   Xg S3'   U S3UR                  5       ;   a6  [        X S3   [        5      (       a  X S3   S   Xg S3'   OX S3   Xg S3'   [        Xg S3   Xg S3   5      nX80$ )Nr0   r1   _blocksr   _scales)keysr   r:   dequantize_convertops)	r#   r(   r)   r+   r*   rH   
param_datarM   dequantizeds	            r   rN   Mxfp4Dequantize.convert{   s    
!/?!B~V7z00*vW%56==/9F':J/KA/N
V7+,/9F':J/K
V7+,V7z00*vW%56==/9F':J/KA/N
V7+,/9F':J/K
V7+, ,Jw7G,H*W]]dUeJfg--r'   c                     [        5       $ r   )r	   r#   s    r   
reverse_opMxfp4Dequantize.reverse_op   s
    }r'   r    rP   )r,   r   )rR   rS   rT   rU   r$   rV   r   r   r   r   rW   r:   rN   propertyri   rX   rY   r'   r   r[   r[   w   s    ) )-&*)-.ell*+. xx%. t	.
 3i$&. 
c5<<	 .2  r'   r[   c                       \ rS rSrS r   SS\\\R                  4   S\R                  R                  S-  S\S-  S\\   S-  S\\\R                  4   4
S	 jjr\S\4S
 j5       rSrg)Mxfp4Deserialize   c                     Xl         g r   r    r"   s     r   r$   Mxfp4Deserialize.__init__   r&   r'   Nr(   r)   r+   r*   r,   c           	         0 nSU;   a  SOSnU S3UR                  5       ;   a6  [        X S3   [        5      (       a  X S3   S   Xg S3'   OX S3   Xg S3'   U S3UR                  5       ;   a6  [        X S3   [        5      (       a  X S3   S   Xg S3'   OX S3   Xg S3'   [        X#5      u  p[	        Xg S3   Xg S3   UUXg S3   R
                  [        5        UR                  U 5        SUl        0 $ )Nr0   r1   r`   r   ra   T)	rb   r   r:   r
   swizzle_mxfp4_convertopsr   r>   rF   rG   )
r#   r(   r)   r+   r*   rH   rd   rM   rK   rI   s
             r   rN   Mxfp4Deserialize.convert   sM    
!/?!B~V7z00*vW%56==/9F':J/KA/N
V7+,/9F':J/K
V7+,V7z00*vW%56==/9F':J/KA/N
V7+,/9F':J/K
V7+, )@	 w'(w'(w'(//	
 	02$(! 	r'   c                 ,    [        U R                  5      $ r   )Mxfp4ReverseDeserializer!   rh   s    r   ri   Mxfp4Deserialize.reverse_op   s    &t'8'899r'   r    rP   )rR   rS   rT   rU   r$   rV   r   r   r   r   rW   r:   rN   rk   r   ri   rX   rY   r'   r   rm   rm      s    ) )-&*)-%ell*+% xx%% t	%
 3i$&% 
c5<<	 %N :M : :r'   rm   c                       \ rS rSrS r   SS\\\R                  4   S\R                  R                  S-  S\S-  S\\   S-  S\\\R                  4   4
S	 jjrS
rg)ru      c                     Xl         g r   r    r"   s     r   r$    Mxfp4ReverseDeserialize.__init__   r&   r'   Nr(   r)   r+   r*   r,   c                    [        UR                  SS5      n[        UR                  SS5      nSU;   a  SOSnUR                  SS5      S	   n	[        X#5      u  p0 n[	        U
[
        5      (       Ga  S
U;   a$  UR                  SS5      n	[        XS-   5      X'   U$ SU;   a  U
R                  R                  R                  R                  U
R                  R                  R                  5      R                  SS5      R                  USSS5      X S3'   U
R                  R                  R                  R                  R                  U
R                  R                  R                  R                  5      R                  SS5      X S3'   U$ U
R                   R                  R                  R                  U
R                   R                  R                  5      R                  SS5      R                  XgSS5      X S3'   U
R"                  R                  R                  R                  R                  U
R"                  R                  R                  R                  5      R                  SS5      X S3'   U$ )Nnum_local_experts    hidden_sizei@  r0   r1   rI      r   biasr`    _biasr.   r/   Z      ra   )r   configrsplitr
   r   r;   replacer0   storagelayoutunswizzle_datadatar=   reshapegate_up_proj_precision_configr6   r1   down_proj_precision_config)r#   r(   r)   r+   r*   rH   r|   r~   rM   namerK   rI   
state_dicts                r   rN   Mxfp4ReverseDeserialize.convert   s/    $ELL2ErJellM4@!/?!B~%%c1-a0(@	
f011(&..y"=#*6'>#B
 !!0''//66EEfFYFYFaFaFfFfgYr2&W.B; V7+, 88EEMMTTcc<<IIQQVViB' V7+,"  $$,,33BB6CSCSC[C[C`C`aYr2&W.RD V7+, 55BBJJQQ``99FFNNSSiB' V7+, r'   r    rP   rQ   rY   r'   r   ru   ru      s    ) )-&*)-,ell*+, xx%, t	,
 3i$&, 
c5<<	 , ,r'   ru   c                     UR                   R                  R                  nU" U R                  [        R
                  5      [        R                  SS9u  pX4$ )Nr   )axis)numerics_detailsmxfpdowncast_to_mxfp_torchtor   bfloat16uint8)wr>   r   w_scales       r   r<   r<      sD    /@@EE\\'U^^(<ekkPQRJA:r'   c                 R   UR                   R                  UR                   R                  UR                   R                  pTnUR                  R
                  nUR                  R
                  R                  nUR                  SS9u  pU" U" XS9U40 U	D6n U" U" U5      U5      nX4$ )z=
Changes the layout of the tensors depending on the hardware
r   )mx_axisdtype)tensorFP4convert_layoutwrap_torch_tensortensor_detailsr   StridedLayout"make_default_matmul_mxfp4_w_layout)
r   r   r>   r   r   r   r   r   value_layoutvalue_layout_optss
             r   rC   rC     s    
 	!!%%!!00!!33 +C
  ..55F&55<<JJM&,&O&OXY&O&Z#L(6ZHYZA.w7GG:r'   i   r   rows_per_chunkr   r   r,   c                   SSK nU R                  [        R                  5      n UR                  [        R                  5      S-
  nU R
                  SS UR
                  :X  d&   SU R
                  SS < SUR
                  < 35       e[        R                  " [        X R                  S9nU R
                  Gt pgnUR                  U5      U-  n	U R                  X5      n UR                  U	S5      n[        R                  " XS	-  X R                  S9n
[        SX5       H  n[        X-   U	5      nXU nXU nXU nUS
-  R                  [        R                  5      nUU   USS2SSS	24'   AUS-	  R                  [        R                  5      nUU   USS2SSS	24'   A[        R                  " XUS9  AAAM     U
R                  " / UQUPUS	-  P76 R                   " / UQXx-  S	-  P76 n
U
R#                  SS	5      R%                  5       $ )k
Convert the mxfp4 weights again, dequantizing and makes them compatible with the forward
pass of GPT_OSS.
r   N   r.   zblocks.shape[:-1]=z does not match scales.shape=)r   r   r   r         )out)mathr   r   r   int32shaper   
FP4_VALUESr   prodr   emptyrangeminintldexpviewr=   
contiguous)blocksscalesr   r   r   lutprefix_shapeGB
rows_totalr   r0r1blkexpsubidx_loidx_his                     r   _convert_moe_packed_tensorsr     s    YYu{{#FYYu{{#c)F<<,d1Ccr1B0DDbU[UaUaTc.dd,
,,z}}
EC ,,\a<(1,J^^J*F^^J*F
++ja%u]]
KCAz2$j1mmRj *+6{Aqt!tG (uyy)6{Aqt!tG 	C#&c' 3* ++
.|
.Q
.A
.
3
3
M\
M1519
MC==A))++r'   c                     [        XX#S9$ ! [        R                   a/    U R                  S5      n UR                  S5      n[        XX#S9s $ f = f)r   r   cpu)r   r   OutOfMemoryErrorr   )r   r   r   r   s       r   convert_moe_packed_tensorsr   M  sW    g*6ff !! g5!5!*6ffgs   	 A AAc                   b   ^  \ rS rSrU 4S jrS\R                  S\R                  4S jrSrU =r	$ )r;   if  c           
        > [         TU ]  5         UR                  U l        UR                  U l        UR
                  U l        [        R                  " [        R                  " U R                  SU R                  -  U R
                  S-  S[        R                  S9SS9U l        [        R                  " [        R                  " U R                  SU R                  -  [        R                  S9SS9U l        [        R                  " [        R                  " U R                  U R
                  U R                  S-  S4[        R                  S9SS9U l        [        R                  " [        R                  " U R                  U R
                  [        R                  S9SS9U l        SU l        [#        USS	5      U l        S U l        S U l        [#        USS	5      U l        g )
Nr   r}   r   r   Frequires_gradgZd;?swiglu_limitg      @)superr$   r|   num_expertsintermediate_sizer~   r   	Parameterr   zerosr   r0   float32gate_up_proj_biasr1   down_proj_biasalphar   limitr   r   )r#   r   	__class__s     r   r$   Mxfp4GptOssExperts.__init__g  s{   !33!'!9!9!--LLKK((!d.D.D*DdFVFVZ\F\^`hmhshst

 "$KK((!d.D.D*DEMMZjo"
 KK))4+;+;T=S=SWY=Y[]^fkfqfqr

 !llKK(($*:*:%--P`e
 
V^S9
-1**.'V^S9
r'   hidden_statesr,   c                    [         R                  R                  [         R                  R                  [         R                  R                  pvn[         R                  R
                  n[        UR                  5         U" U" SUS5      U R                  U R                  4S5      n	U" UU R                  U R                  R                  [        R                  5      UUU R                  S U	S9n
U" U
U R                   U R"                  R                  [        R                  5      UUU R$                  UR&                  S9nS S S 5        U$ ! , (       d  f       W$ = f)Nswiglu)r   r   r   )gather_indxprecision_configgammasfused_activation)scatter_indxr   r   )r>   r?   FnSpecsFusedActivationr   	swiglu_fnr   r   r   r   r0   r   r   r   r   r   r1   r   r   	gate_scal)r#   r   routing_data
gather_idxscatter_idxr   r   r?   r   actintermediate_cache1intermediate_cache3s               r   forwardMxfp4GptOssExperts.forward  s,   ))11))99))44 #-
 '--77	}++,!'(I?Q"RUYU_U_aeakakTlnopC",!!&&))%--8&!%!C!C!$	# #-###&&u}}5(!%!@!@#--# -. #"/ -,. #"s   =CE		
E)r   r1   r   r   r0   r   r   r~   r   r   r   )
rR   rS   rT   rU   r$   r   r   r   rX   __classcell__)r   s   @r   r;   r;   f  s+    :<#U\\ #]b]i]i # #r'   r;   c                 ,   SS K n[        R                  R                  [        R                  R                  [        R                  R
                  [        R                  R                  4u  p4pV[        U R                  5         [        R                  R                  5       n[        UR                  R                  SS5      5      nSn	U R                  S   n
U R                  S   nX-  nX-  nUS-   U-  nX-  nS nU" X5      u  nn[        R                   " USS9n[        R"                  " USS9u  nn[        R$                  " USU5      nUR'                  S5      n[        R(                  " UXS-
  S9X nUR+                  S5      R-                  [        R.                  5      nS	n[        R0                  " UU:  UU5      n[        R2                  " US
S9R-                  [        R.                  5      n[        R2                  " U5      R-                  [        R.                  5      n[        R0                  " UU:  UU	5      n[        R0                  " UU:*  UU	5      n[        R0                  " UU	:H  U	U5      nUU   n[        R0                  " UU   U	:H  U	U5      nU" UR                  5       UR                  5       S9nU" UR                  5       UR                  5       S9nU" UX5      nUnS S S 5        U" WWWWW5      WW4$ ! , (       d  f       N= f)Nr   
LOCAL_RANK0r.   r   c                     [         R                  " U * SSS9S S 2S U24   nUR                  5       n[         R                  " XSS9nX2R	                  5       4$ )Nr   T)dimstabler   )r   argsortlongtake_along_dimr   )valsktk_indxtk_vals       r   topk routing_torch_dist.<locals>.topk  sO    mmTEq>q"1"uEGllnG))$Q?F;;=((r'   r   )binsmaxi  T)r   )src_indxdst_indx)osr>   routing
GatherIndxRoutingDataScatterIndxcompute_expt_data_torchr   r   r   distributedget_world_sizer   environgetr   softmaxsortgatherr   histcr   r   r   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   r   r   	expt_datahit_expertss                                r   routing_torch_distr-    s     	""--""..""..""::	EAJ[ 
6==	!&&557
2::>>,45<<?ll1o%3!3 1H7,	)  $F8	9MM)4	"'**YA">	<LLA|<	 %%b)	{{9;!OLM_qNN2&))%++6	 KK	,> >YO	MM)D9<<U[[I	MM),//<	KK	,< <iW	KK 2i ?MZ	KK	] :M9U	i(	KK	) 4 E}V_`	 !)--/IMMOT"IMMOimmoV+D/O	!g 
"h y$iPR]_kkki 
"	!s   I+L
Lc                    SS K Jn  UR                  5       (       a-  UR                  5       (       a  [	        U S5      (       a  [
        nO[        R                  R                  nUR                  S   nUR                  SU R                  R                  5      n[        R                  R                  XR                  R                  U R                  R                   5      n[#        UR$                  5         U" XPR                  R&                  5      u  pgnS S S 5        U R)                  UWWWS9n	U	R                  USU R                  R                  5      n	X4$ ! , (       d  f       NJ= f)Nr   
_is_hookedr.   )r   )torch.distributedr  is_availableis_initializedr   r-  r>   r  r   r   router
hidden_dimr   
functionallinearweightr   r   r   top_kexperts)
r#   r   distr  
batch_sizerouter_logitsr   r   r   
routed_outs
             r   mlp_forwardr>    s   $t2244|9T9T$$,,44$$Q'J!))"dkk.D.DEMMM((8J8JDKKL\L\]M	=''	(07{{GXGX0Y-+ 
) m\:S^_J##JDKK4J4JKJ$$ 
)	(s   5 E
E'c                    SSK Jn  UR                  S5      nUR                  S5      nUR                  S5      n	UR                  S5      n
UR                  S5      nUR                  S5      nS	 H  nX;   d  M
  Ub  U" UUUUU	U
UU5      nU S
3nU S3n[        XR	                  SS5      S   U5        [        X5      (       d  MW  [        X5      (       d  Mi  [        [        X5      [        X5      5      n[        X[        R                  R                  UR                  U5      5      5        [        X5        [        X5        M     g )Nr   shard_and_distribute_moduler)   empty_paramcasting_dtypeto_contiguousr  device_mesh)r0   r1   r`   ra   .r   )integrations.tensor_parallelrA  r  rE   r   r   r   r   r   r   r   r   delattr)rK   
param_nameparam_valuetarget_devicedq_param_namerH   rA  r)   rB  rC  rD  r  rE  rM   blocks_attrscales_attrre   s                    r   
dequantizerO    s&   JJJwE**]+KJJ/MJJ/M::fD**]+K-&9!!!	 "F'*K!F'*KF--c15a8+Fv++0L0L89UW^_eWstehh&8&89V&WX,,) .r'   c                 V    [        X5      n[        R                  R                  U5      $ r   )r   r   r   r   )r   r   re   s      r   rc   rc   "  s!    ,V<K88k**r'   c                 j   UR                   R                  UR                   R                  UR                   R                  pnSSKJn	  UR                  S5      n
UR                  S5      nUR                  S5      nUR                  S5      nUR                  S5      nUR                  S5      nS	U;   a&  UR                  S
5      S   R                  S5      S   nSU;   a&  UR                  S
5      S   R                  S5      S   nUb  U	" XXXX5        O;[        XR                  S
S5      S   [        R                  R                  USS95        W S3nU S3n[        U U5      n[        U U5      nUR                  R                  S:w  Ga  UR                  R                  S:w  Ga  UR!                  S5      nUS:X  a!  UR#                  UU R$                  S-  S5      nO UR#                  USU R$                  S-  5      n[        USU5      S:X  a\  ['        [        S5      (       aG  [        R(                  R+                  5       b(  [        R(                  R+                  5       R                  nUR-                  U5      R/                  5       nUR-                  U5      R/                  5       n[1        U5         [3        UR5                  SS5      UR5                  SS5      U5      u  nnSSS5        US:X  a6  [        R6                  " UU R8                  U R$                  S-  /5      Wl        O2[        R6                  " UU R$                  U R8                  /5      Wl        [        U UU5        [        U U S3U" WU" U" 5       S9S95        [=        U U5        [=        U U5        Aggg! , (       d  f       N= f)i
This transforms the weights obtained using `convert_gpt_oss.py` to load them into `Mxfp4GptOssExperts`.
r   r@  r)   rB  rC  rD  r  rE  r   rF  r.   r`   r   r   ra   Nr   Fr   metar0   r   r   acceleratorr/   r2   r3   r5   )r?   r@   rA   rB   rG  rA  r  splitrE   r   r   r   r   r   r   r   sizer   r   r   rT  current_acceleratorr   r   r   rC   r=   Sizer~   r   rH  )rK   rI  rJ  rK  r>   rH   r@   rA   rB   rA  r)   rB  rC  rD  r  rE  rM   rM  rN  r   r   local_expertsrL   r6   s                           r   load_and_swizzle_mxfp4rZ  '  sU   
 	%%55%%--%%00 )O
 KJJwE**]+KJJ/MJJ/M::fD**]+K:$R(..y9!<:$R(..y9!<#W[	
 	))#q1!4ehh6H6Hdi6H6jkF'"KF'"KV[)FV[)F}}V#(:(:f(DA>!^^M63K3Ka3OQSTF^^M2v7O7OST7TUFM6=9UB}--!!557C!--AACHHM=)446=)446}%1>  R(&*:*:2r*BDV2. , & >!).]FDVDVX^XpXpstXt4u)v &).]FD\D\^d^p^p4q)r & 	23f%&Q[Q]@^_	
 	$$I )E# &%s   61N$$
N2c                    UR                   R                  UR                   R                  UR                   R                  pnU R	                  S5      n	[        USU5      S:X  a\  [        [        S5      (       aG  [        R                  R                  5       b(  [        R                  R                  5       R                  nU R                  U5      R                  5       n UR                  U5      R                  5       nUS:X  a   U R                  XR                  S-  S5      n O U R                  U	SUR                  S-  5      n [        U5         [!        U R#                  S	S5      UR#                  S	S5      U5      u  pSSS5        US:X  a5  [        R$                  " XR&                  UR                  S-  /5      W
l        O1[        R$                  " XR                  UR&                  /5      W
l        X2R*                  ;   a  UR*                  U	 [-        X#U
5        [-        UU S
3U" WU" U" 5       S9S95        g! , (       d  f       N= f)rR  r   r   r   rT  Nr0   r   r.   r/   r2   r3   r5   )r?   r@   rA   rB   rV  r   r   r   rT  rW  r   r   r   r   r   r   rC   r=   rX  r~   r   rD   rE   )r   r   rK   rM   rK  r>   r@   rA   rB   rY  rL   r6   s               r   rr   rr   n  s   
 	%%55%%--%%00 )O KKNMv}5>E=))113?))==?DDYY}%002FYY}%002F~/G/G!/KRPr63K3Kq3PQ	=	!-:R$f&6&6r2&>@R.
* 
"
 ~%*ZZ@R@RTZTlTlopTp0q%r"%*ZZ@X@XZ`ZlZl0m%n" !!!t$F./&!"\GZ\<Z[! 
"	!s   0H::
Imodules_to_not_convertc                 l   UR                   (       a  U $ SSKJn  U" S5      qSnU R	                  5        H  u  pV[        XR5      (       d  M  UR                  R                  S:X  aW  UR                   (       dF  [        R                  " S5         U R                  U[        U R                  5      5        SnSSS5        UR                  R                  S	:X  d  M  UR                   (       a  M  S
SKJn  U" [        U5      Ul        M     U(       d  ["        R%                  S5        U $ ! , (       d  f       Nw= f)a  
Public method that replaces the expert layers of the given model with mxfp4 quantized layers.

Args:
    model (`torch.nn.Module`):
        The model to convert, can be any `torch.nn.Module` instance.
    quantization_config (`Mxfp4Config`, defaults to `None`):
        The quantization config object that contains the quantization parameters.
    modules_to_not_convert (`list`, *optional*, defaults to `None`):
        A list of modules to not convert. If a module name is in the list (e.g. `lm_head`), it will not be
        converted.
r   )
get_kernelz(kernels-community/gpt-oss-triton-kernelsFGptOssExpertsrS  TN	GptOssMLPr   )
MethodTypezYou 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.)rO  hub_kernelsr^  r>   named_modulesr   r   rR   r   r   set_submoduler;   r   typesra  r>  r   loggerwarning)r)   quantization_configr\  r^  has_been_replacedmodule_namerK   ra  s           r   replace_with_mxfp4_linearrk    s     %%' $$NO$224$[II$$7@S@^@^f%##K1CELL1QR$(! & $$3<O<Z<Z<Z('V<FN  5 	
 L &%s   (D%%
D3	)NN))utilsr   r   r   r   
contextlibr   core_model_loadingr   r	   quantizers.quantizers_utilsr
   r   
get_loggerrR   rf  r   r   r   r[   rm   ru   r<   rC   r   r   r   r   r   r   rW   r;   r-  r>  rO  rc   rZ  rr   r:   r   rk  rY   r'   r   <module>rq     sQ   0  % ; U 
		H	%
( 
 
*-M -`m D-:} -:`0m 0h0 &3, ;;	3,
 3, \\3,t &g ;;	g
 g \\g2># >#FAlH%(-B+
DN.b)W[\_W`cgWg )r'   