a
    ½Àhr  ã                   @   s*   d dl mZ ddlmZ edœdd„ZdS )é    )Ú
DataLoaderé   )Úis_torch_xla_available)Ú
dataloaderc                 C   sd   t ƒ r\dd lm  m} t| |jƒs,J dƒ‚dd lm  m} | | 	¡ d¡}|| j
d< | S | S d 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	   úY/var/www/html/assistant/venv/lib/python3.9/site-packages/transformers/integrations/tpu.pyÚtpu_spmd_dataloader   s    ÿ
r   N)Ztorch.utils.datar   Úutilsr   r   r	   r	   r	   r
   Ú<module>   s   