Ë
    Gêñib  ã            
       ó  — d Z ddlZddlZddlmZ ddlmZ  ej                  e«      Z	ddd	d
œZ
ej                  d„ «       Zdej                  j                  dej                  dej                  dej                  dej                  f
d„Zy)zõSonicMoE integration: fused MoE using CuteDSL kernels from `kernels-community/sonic-moe`.

Provides `sonicmoe_experts_forward` registered as "sonicmoe" in the ExpertsInterface.
Requirements: CUDA, `kernels`, `nvidia-cutlass-dsl`, has_gate=True.
é    Né   )Úloggingé   )Úlazy_load_kernelÚswigluÚgegluÚreglu)ÚsiluÚgeluÚreluc                  ó  — t        d«      } | €t        d«      ‚t        t        | dd«      dd«      }t        | dd«      }d|fd|ffD ��cg c]	  \  }}|€|‘Œ }}}|rt        dd	j                  |«      › d
�«      ‚||fS c c}}w )a   
    Load sonic-moe once and return its required symbols.

    Raises:
        ImportError if the kernel or required symbols are not found.

    Returns:
        Tuple of (ActivationType, moe_general_routing_inputs function) from the sonic-moe kernel.
    z	sonic-moeNzisonic-moe kernel not found. Make sure you have the `kernels` and `nvidia-cutlass-dsl` packages installed.ÚenumsÚActivationTypeÚmoe_general_routing_inputszenums.ActivationTypez.sonic-moe kernel is missing required symbols: z, zN. Make sure you have the `kernels` package and `nvidia-cutlass-dsl` installed.)r   ÚImportErrorÚgetattrÚjoin)Úkernelr   r   ÚnameÚattrÚmissings         úd/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/transformers/integrations/sonicmoe.pyÚ_load_sonic_kernelr   #   sÍ   € ô ˜kÓ*€FØ€~ÜØwó
ð 	
ô œW V¨W°dÓ;Ð=MÈtÓT€NÜ!(¨Ð1MÈtÓ!TÐð
 $ ^Ð4Ø)Ð+EÐFð
÷áˆD�$ð ˆ<ò 	ð€Gñ ñ ÜØ<¸T¿Y¹YÀwÓ=OÐ<Pð Q[ð [ó
ð 	
ð
 Ð5Ð5Ð5ùós   Á	A>ÚselfÚhidden_statesÚtop_k_indexÚtop_k_weightsÚreturnc                 óž  — | j                   st        d«      ‚|j                  j                  dk7  rt        d«      ‚t	        «       \  }}|j                  }|j                  d«      }|j                  d«      }t        j                  ||¬«      j                  d«      j                  d|«      j                  d«      j                  «       }	|j                  d«      j                  |j                  «      }
|j                  d«      j                  «       }t        | j                  dd	«      j!                  «       }t        |t"        j%                  |d
«      j'                  «       |j(                  «      }| j*                  rdnd} | j,                  j.                  |Ž } | j0                  j.                  |Ž }| j2                  r| j4                  nd }| j2                  r| j6                  nd } |||
|	|||||| j8                  |t        j:                  j=                  |«      j>                  t        j@                  «        | jB                  ¬«      \  }}|S )Nz/sonicmoe requires gated experts (has_gate=True)Úcudazsonicmoe requires CUDA deviceéÿÿÿÿr   )Údevicer   Ú
hidden_actr
   r   )r   r   r   )r   r   r   )ÚEÚactivation_typeÚ	stream_idÚis_inference_mode_enabledÚconcat_layout)"Úhas_gateÚ
ValueErrorr"   Útyper   ÚsizeÚtorchÚarangeÚ	unsqueezeÚexpandÚreshapeÚintÚtoÚdtyper   ÚconfigÚlowerÚACT_MAPÚgetÚupperÚSWIGLUÚis_transposedÚgate_up_projÚpermuteÚ	down_projÚhas_biasÚgate_up_proj_biasÚdown_proj_biasÚnum_expertsr    Úcurrent_streamÚcuda_streamÚis_grad_enabledÚis_concatenated)r   r   r   r   r   r   r"   Ú	num_top_kÚ
num_tokensÚ	token_idxÚrouter_scoresÚ
expert_idsÚact_namer%   ÚpermÚw1Úw2Úb1Úb2ÚoutputÚ_s                        r   Úsonicmoe_experts_forwardrT   I   sþ  € ð �=Š=ÜÐJÓKÐKØ×Ñ× Ñ  FÒ*ÜÐ8Ó9Ð9ä1CÓ1EÑ.€NÐ.à×!Ñ!€FØ× Ñ  Ó$€IØ×#Ñ# AÓ&€Jô —‘˜Z°Ô7×AÑAÀ!ÓD×KÑKÈBÐPYÓZ×bÑbÐceÓf×jÑjÓl€IØ!×)Ñ)¨"Ó-×0Ñ0°×1DÑ1DÓE€MØ×$Ñ$ RÓ(×,Ñ,Ó.€Jô �t—{‘{ L°&Ó9×?Ñ?ÓA€HÜ˜n¬g¯k©k¸(ÀHÓ.M×.SÑ.SÓ.UÐWe×WlÑWlÓm€Oð
 ×*Ò*‰9°	€DØ	"ˆ×	Ñ	×	"Ñ	" DÐ	)€BØ	ˆ�‰×	Ñ	 Ð	&€BØ#'§=¢=ˆ×	Ò	°d€BØ $§¢ˆ×	Ò	°4€Bá*ØØØØØ
Ø
Ø
Ø
Ø
×
Ñ
Ø'Ü—*‘*×+Ñ+¨FÓ3×?Ñ?Ü&+×&;Ñ&;Ó&=Ð"=Ø×*Ñ*ô�I€FˆAð  €Mó    )Ú__doc__Ú	functoolsr-   Úutilsr   Úhub_kernelsr   Ú
get_loggerÚ__name__Úloggerr7   Úcacher   ÚnnÚModuleÚTensorrT   © rU   r   ú<module>rb      sž   ðñó ã å Ý )ð 
ˆ×	Ñ	˜HÓ	%€ð  W°gÑ
>€ð ‡�ñ"6ó ð"6ðJ3Ø
�(‰(�/‰/ð3à—<‘<ð3ð —‘ð3ð —<‘<ð	3ð
 ‡\�\ô3rU   