+
     °³jq  ã                   óZ   € ^ RI Ht ^ RIHt ^RIHtHt ^RIHt R	R lt	R t
R
R ltR tR# )é    )Ú
MethodTypeN)Úis_hpu_availableÚis_transformer_engine_available)ÚGatheredParametersc           
     ó
  € \        4       '       g   \        R4      h\        4       '       d-   ^ RIp\	        VR4      '       g   \
        P                  Vn        M^ RIHp V P                  4        EFl  w  rV\        V\
        P                  4      '       Edz   V'       Edq   V'       Edh   VP                  RJpVP                  .pV'       d   VP                  VP                  4       \        V^ R7      ;_uu_ 4        \         ;QJ d0    R VP                  P"                   4       F  '       g   K   RM%	  RM!! R VP                  P"                   4       4      '       d    RRR4        R# VP                  VP$                  VP&                  WvP                  P(                  R7      p	V	P                  P+                  VP                  4       V'       d&   V	P                  P+                  VP                  4       \-        WV	4       RRR4       EK   \        V\
        P                  4      '       d÷   V'       dï   V'       dç   \        VP                  VP                  .^ R7      ;_uu_ 4        VP                  RJpVP                  VP.                  ^ ,          VP0                  VP                  P(                  R	7      p	V	P                  P+                  VP                  4       V'       d&   V	P                  P+                  VP                  4       RRR4       \-        WX	4       EK¶  \        WdP                  4      '       dÁ   V'       g¹   V'       d±   VP                  RJp\
        P                  ! VP$                  VP&                  WvP                  P(                  R7      p
V
P                  P+                  VP                  4       V'       d&   V
P                  P+                  VP                  4       \-        WV
4       EK‘  \        WdP                  4      '       d²   V'       gª   V'       d¢   \
        P                  ! VP.                  ^ ,          VP0                  VP                  P(                  R	7      p
V
P                  P+                  VP                  4       V
P                  P+                  VP                  4       \-        WV
4       EK]  \3        VVVVR
7       EKo  	  R#   + '       g   i     EK…  ; i  + '       g   i     ELò; i)zm
Recursively converts the linear and layernorm layers of a model to their `transformers_engine` counterpart.
zBUsing `convert_model` requires transformer_engine to be installed.NÚ	LayerNorm)Úmodifier_rankc              3   ó8   "  € T F  q^,          ^ 8g  x € K  	  R# 5i)é   N© )Ú.0Úps   & Úd/home/luca/screen-checking/.venv/lib/python3.14/site-packages/accelerate/utils/transformer_engine.pyÚ	<genexpr>Ú convert_model.<locals>.<genexpr>2   s   é € Ð@Ñ,? q˜2•v –{Ó,?ùs   ‚TF)ÚbiasÚparams_dtype)Úepsr   )Úto_transformer_engineÚ_convert_linearÚ_convert_ln)r   ÚImportErrorr   Úintel_transformer_engineÚhasattrÚnnr   Útransformer_engine.pytorchÚpytorchÚnamed_childrenÚ
isinstanceÚLinearr   ÚweightÚappendr   ÚanyÚshapeÚin_featuresÚout_featuresÚdtypeÚcopy_ÚsetattrÚnormalized_shaper   Úconvert_model)Úmodelr   r   r   ÚteÚnameÚmoduleÚhas_biasÚparams_to_gatherÚ	te_moduleÚ
new_modules   &&&&       r   r+   r+      sX  € ô +×,Ò,ÜÐ^Ó_Ð_ä×ÒÛ-ä�r˜;×'Ò'äŸ<™<ˆBŒLøå/à×,Ñ,×.‰ˆÜ�fœbŸi™i×(Ó(×-BÐ-BÇÀØ—{‘{¨$Ð.ˆHØ &§¡˜ÐßØ ×'Ñ'¨¯©Ô4ä#Ð$4ÀA×FÖFß“3Ñ@¨F¯M©M×,?Ò,?Ó@—3—3’3Ñ@¨F¯M©M×,?Ò,?Ó@×@Ò@Ø÷ GÒFð ŸI™IØ×&Ñ&¨×(;Ñ(;À(×YfÑYf×YlÑYlð &ó �	ð × Ñ ×&Ñ& v§}¡}Ô5ßØ—N‘N×(Ñ(¨¯©Ô5ä˜ YÔ/÷ GÒFô ˜¤§¡×-Ò-×2GÏKÜ# V§]¡]°F·K±KÐ$@ÐPQ×RÖRØ!Ÿ;™;¨dÐ2�ØŸL™L¨×)@Ñ)@ÀÕ)CÈÏÉÐbh×boÑbo×buÑbu˜LÓv�	Ø× Ñ ×&Ñ& v§}¡}Ô5ßØ—N‘N×(Ñ(¨¯©Ô5÷ Sô �E ×+Ü˜§	¡	×*Ò*×3HÏ_Ø—{‘{¨$Ð.ˆHÜŸšØ×"Ñ" F×$7Ñ$7¸h×UbÑUb×UhÑUhôˆJð ×Ñ×#Ñ# F§M¡MÔ2ßØ—‘×%Ñ% f§k¡kÔ2ä�E ×,Ü˜§¡×-Ò-×6K×P[ÜŸš f×&=Ñ&=¸aÕ&@ÀfÇjÁjÐ_e×_lÑ_l×_rÑ_rÔsˆJØ×Ñ×#Ñ# F§M¡MÔ2Ø�O‰O×!Ñ! &§+¡+Ô.ä�E ×,äØØ&;Ø /Ø'÷	ð ó[ /÷ G×FÑFú÷ S×RÐRús,   Ã:1S!Ä..S!ÅS!Å)BS!É)B$S6Ó!S3Ó6Tc                ó&  € \        4       '       g   \        R4      h\        4       '       d   ^ RIpVP                  pM)^ RIHp VP                  VP                  VP                  3pV P                  4        F  p\        W24      '       g   K   R# 	  R# )zK
Returns whether a given model has some `transformer_engine` layer or not.
zRUsing `has_transformer_engine_layers` requires transformer_engine to be installed.NTF)r   r   r   r   r    r   r   r   ÚTransformerLayerÚmodulesr   )r,   r-   Úmodule_cls_to_checkÚms   &   r   Úhas_transformer_engine_layersr9   _   sp   € ô +×,Ò,ÜÐnÓoÐoä×ÒÛ-à Ÿi™iÑå/à!Ÿ|™|¨R¯Y©Y¸×8KÑ8KÐLÐà�]‰]Ž_ˆÜ�a×-Ô-Úñ ñ ó    c                óž   a aaa€ \        4       '       g   \        R4      h\        4       '       d   ^ RIHo M^ RIHo VVV V3R lpS Vn        V# )zË
Wrapper for a model's forward method to apply FP8 autocast. Is context aware, meaning that by default it will
disable FP8 autocast during eval mode, which is generally better for more accurate metrics.
zLUsing `contextual_fp8_autocast` requires transformer_engine to be installed.)Úfp8_autocastc                 ó¢   <€ S;'       g    V P                   pS! VSR 7      ;_uu_ 4        S! V/ VB uuRRR4       #   + '       g   i     R# ; i))ÚenabledÚ
fp8_recipeN)Útraining)ÚselfÚargsÚkwargsr>   r<   r?   Úmodel_forwardÚuse_during_evals   &*, €€€€r   ÚforwardÚ(contextual_fp8_autocast.<locals>.forwardƒ   s>   ø€ Ø!×2Ð2 T§]¡]ˆÙ '°j×AÖAÙ  $Ð1¨&Ñ1÷ B×A×AÓAús	   ª=½A	)r   r   r   r   r<   r   Ú__wrapped__)rD   r?   rE   rF   r<   s   fff @r   Úcontextual_fp8_autocastrI   v   sB   û€ ô
 +×,Ò,ÜÐhÓiÐiä×ÒÞ9å;÷2ð 2ð (€GÔà€Nr:   c                óÖ  € \        4       '       g   \        R4      h\        4       '       d   ^ RIHp RpRpM^ RIHu Hp ^ RIHp V! 4       w  r4Ve   VP                  4       M/ pRV9   d!   \        VP                  VR,          4      VR&   VP                  RR4      pVP                  RR4      pV'       d   V'       g   \        R	V 24      hV'       d8   R
V9   d   \        R4      hRV9   d   \        R4      hVP                  ! R/ VB p	MVP                  ! R/ VB p	\!        V P"                  W—4      p
\%        V P"                  R4      '       d   \'        W 4      V n        V # W n        V # )z;
Applies FP8 context manager to the model's forward method
zGUsing `apply_fp8_autowrap` requires transformer_engine to be installed.NFz,MXFP8 block scaling is not available on HPU.)Úcheck_mxfp8_supportÚ
fp8_formatÚuse_autocast_during_evalÚuse_mxfp8_block_scalingz&MXFP8 block scaling is not available: Úamax_compute_algoz=`amax_compute_algo` is not supported for MXFP8 block scaling.Úamax_history_lenz<`amax_history_len` is not supported for MXFP8 block scaling.Ú__func__r   )r   r   r   Úintel_transformer_engine.recipeÚrecipeÚ transformer_engine.common.recipeÚcommonÚtransformer_engine.pytorch.fp8rK   Ú	to_kwargsÚgetattrÚFormatÚpopÚ
ValueErrorÚMXFP8BlockScalingÚDelayedScalingrI   rF   r   r   )r,   Úfp8_recipe_handlerÚ	te_recipeÚis_fp8_block_scaling_availableÚmessagerK   rC   rE   rN   r?   Únew_forwards   &&         r   Úapply_fp8_autowraprc   Ž   sO  € ô +×,Ò,ÜÐcÓdÐdä×ÒÝ;à).Ð&Ø@‰÷ 	=Ð<ÝFá2EÓ2GÑ/Ð&à/AÒ/MÐ×)Ñ)Ô+ÐSU€FØ�vÔÜ& y×'7Ñ'7¸ÀÕ9MÓNˆˆ|ÑØ—j‘jÐ!;¸UÓC€OØ$Ÿj™jÐ)BÀEÓJÐç×'EÜÐAÀ'ÀÐKÓLÐLçØ &Ô(ÜÐ\Ó]Ð]Ø Ô'ÜÐ[Ó\Ð\Ø×0Ò0Ñ:°6Ñ:‰
à×-Ò-Ñ7°Ñ7ˆ
ä)¨%¯-©-¸ÓU€Käˆu�}‰}˜j×)Ò)Ü" ;Ó6ˆŒð €Lð $Œà€Lr:   )TTT)F)Útypesr   Útorch.nnr   Úimportsr   r   Ú
operationsr   r+   r9   rI   rc   r   r:   r   Ú<module>rh      s)   ðõ å ç FÝ *ôBòJô.ô0,r:   