
    sg                     B    d dl Z d dlmZ  G d de j                        Zy)    Nc                   f    e Zd ZdZej
                  dej                  dej                  fd       Zy)Sharderap  
    This is an interface which allows user to create more advanced
    sharding strategies that are not easily be composed by the
    `ShardingSpec`.

    :class:`torch.distributed._shard.sharding_plan.ShardingPlan` could
    take an object of the `Sharder` and call `shard` to shard the module,
    then replace the original module with sharded module returned.
    modulereturnc                      y)aq  
        Shard a module base on the implementation of this method, and
        return the sharded version of the module.

        Args:
            module (:class:`torch.nn.Module`):
                The module to apply sharding to.
        Returns:
            A :class:`torch.nn.Module` object that represents a module
            that's already been sharded.
        N )selfr   s     S/var/www/html/venv/lib/python3.12/site-packages/torch/distributed/_shard/sharder.pyshardzSharder.shard   s        N)	__name__
__module____qualname____doc__abcabstractmethodnnModuler   r   r   r
   r   r      s7     	BII "))  r   r   )r   torch.nnr   ABCr   r   r   r
   <module>r      s    
 cgg r   