o
    Zhr  ć                   @   s*   d dl mZ ddlmZ defddZdS )é    )Ś
DataLoaderé   )Śis_torch_xla_availableŚ
dataloaderc                 C   s`   t  r.dd lm  m} t| |jsJ ddd lm  m} | | 	” d”}|| j
d< | S | S )Nr   zPThe dataloader must be a `torch_xla.distributed.parallel_loader.MpDeviceLoader`.)ZfsdpNZinput_sharding)r   Z%torch_xla.distributed.parallel_loaderŚdistributedZparallel_loaderŚ
isinstanceZMpDeviceLoaderZtorch_xla.distributed.spmdZspmdZShardingSpecZget_global_meshZ_parallel_loader_kwargs)r   ŚplZxsZsharding_spec© r	   śL/var/www/auris/lib/python3.10/site-packages/transformers/integrations/tpu.pyŚtpu_spmd_dataloader   s   ’
r   N)Ztorch.utils.datar   Śutilsr   r   r	   r	   r	   r
   Ś<module>   s   