+
    QV-jÍ  ã                  ó„   € ^ RI Ht ^ RIt^ RIt^ RIHt ^RIHtHt ^RI	H
t
 ]'       d   ^ RIHt R R ltR	 tR
 tR tR# )é    )ÚannotationsN)ÚTYPE_CHECKING)Úis_torch_availableÚ	strtobool)ÚQuantizationMethod)Únnc               ó    € V ^8„  d   QhRRRR/# )é   Úmodulez	nn.ModuleÚreturnÚbool© )Úformats   "Úo/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/transformers/integrations/fsdp.pyÚ__annotate__r      s   € ÷ ñ  9ð °ñ ó    c                óö   € \        4       '       g   R # ^ RIpVP                  P                  4       '       g   R # ^ RIp\        WP                  P                  P                  4      ;'       g    \        V RR 4      # )FNÚ_is_fsdp_managed_module)	r   ÚtorchÚdistributedÚis_availableÚtorch.distributed.fsdpÚ
isinstanceÚfsdpÚFullyShardedDataParallelÚgetattr)r   r   s   & r   Úis_fsdp_managed_moduler      sf   € Ü×ÒÙãà×Ñ×)Ñ)×+Ò+Ùã!ä�f×/Ñ/×4Ñ4×MÑMÓN÷ ð ÔRYØÐ)¨5óSð r   c                 óv  € \        4       '       d©   ^ RIp V P                  P                  4       ;'       dƒ    V P                  P	                  4       ;'       da    \        \        P                  P                  RR4      4      ^8H  ;'       d-    \        \        P                  P                  RR4      4      ^8H  # R# )r   NÚACCELERATE_USE_FSDPÚFalseÚFSDP_CPU_RAM_EFFICIENT_LOADINGF)	r   r   r   r   Úis_initializedr   ÚosÚenvironÚget)r   s    r   Úis_fsdp_enabledr&   ,   sŸ   € Ü×ÒÛð ×Ñ×*Ñ*Ó,÷ Zð ZØ×!Ñ!×0Ñ0Ó2÷Zð Zäœ"Ÿ*™*Ÿ.™.Ð)>ÀÓHÓIÈQÑN÷Zð Zô œ"Ÿ*™*Ÿ.™.Ð)IÈ7ÓSÓTÐXYÑYð		
ñ r   c                 óv   € ^ RI Hp  R\        \        P                  ! V 4      P
                  4      9   d   RR/# / # )z°
Returns checkpoint kwargs for FSDP model saving.

Checks if the `adapter_only` parameter is supported by `save_fsdp_model` from accelerate
and returns the appropriate kwargs.
©Úsave_fsdp_modelÚadapter_onlyT)Úaccelerate.utilsr)   ÚlistÚinspectÚ	signatureÚ
parametersr(   s    r   Úget_fsdp_ckpt_kwargsr0   :   s5   € õ 1àœœg×/Ò/°Ó@×KÑKÓLÔLØ Ð%Ð%àˆ	r   c                óÊ  € ^ RI Hp ^ RIHp \	        V P
                  V4      '       d"   V! V 4      VP                  P                  n        \        V RR4      \        P                  8X  dz   V P                  P                  P                  P                  '       dH   VP                  P                  P!                  V P                  P                  P                  RR7       R# R# R# )a3  
Updates the FSDP plugin for PEFT LoRA/QLoRA compatibility.

When using FSDP with PEFT LoRA, the auto wrap policy needs to be updated to additionally wrap
LoRA trainable layers separately. When using FSDP with QLoRA, the mixed precision policy needs
to be updated to use the quantization storage data type.
)Ú
PeftConfig)Úfsdp_auto_wrap_policyÚquantization_methodNT)Úoverride)Úpeftr2   Úpeft.utils.otherr3   r   Úactive_peft_configÚstateÚfsdp_pluginÚauto_wrap_policyr   r   ÚBITS_AND_BYTESÚhf_quantizerÚquantization_configÚbnb_4bit_quant_storageÚis_floating_pointÚset_mixed_precision)ÚmodelÚacceleratorr2   r3   s   &&  r   Úupdate_fsdp_plugin_peftrD   I   s°   € õ  Ý6ä�%×*Ñ*¨J×7Ò7Ù9NÈuÓ9Uˆ×Ñ×%Ñ%Ô6ä�Ð,¨dÓ3Ô7I×7XÑ7XÔXØ×Ñ×2Ñ2×IÑI×[×[Ð[à×Ñ×%Ñ%×9Ñ9Ø×Ñ×2Ñ2×IÑIÐTXð 	:ö 	
ñ \ñ 	Yr   )Ú
__future__r   r-   r#   Útypingr   Úutilsr   r   Úutils.quantization_configr   r   r   r   r&   r0   rD   r   r   r   Ú<module>rI      s5   ðõ #ã Û 	Ý  ç 1Ý :÷ Ýõò òô
r   