本文簡要介紹python語言中 torch.distributed.nn.api.remote_module.RemoteModule
的用法。
用法:
class torch.distributed.nn.api.remote_module.RemoteModule(remote_device, module_cls, args=None, kwargs=None)
remote_device(str) -我們要放置此模塊的目標工作人員上的設備。格式應為“<workername>/<device>”,其中設備字段可以解析為torch.device類型。例如,“trainer0/cpu”、“trainer0”、“ps0/cuda:0”。另外,設備字段可以是可選的,默認值為“cpu”。
module_cls(torch.nn.Module) -
要遠程創建的模塊的類。例如,
>>> class MyModule(nn.Module): >>> def forward(input): >>> return input + 1 >>> >>> module_cls = MyModule
args(Sequence,可選的) -要傳遞給
module_cls
的參數。kwargs(字典,可選的) -kwargs 被傳遞給
module_cls
。
包裝由用戶提供的
module_cls
創建的Module
的遠程模塊實例,它具有阻塞forward
方法和異步forward_async
方法,該方法返回用戶提供的forward
調用的未來模塊在遠端。RemoteModule 實例隻能在 RPC 初始化後創建。它在指定的遠程節點上創建用戶指定的模塊。它的行為類似於常規的
nn.Module
,隻不過forward
方法是在遠程節點上執行的。它負責自動梯度記錄,以確保向後傳遞將梯度傳播回相應的遠程模塊。它基於
module_cls
的forward
方法的簽名生成兩個方法forward_async
和forward
。forward_async
異步運行並返回一個 Future。forward_async
和forward
的參數與module_cls
返回的模塊的forward
方法相同。例如,如果
module_cls
返回nn.Linear
的實例,該實例具有forward
方法簽名:def forward(input: Tensor) -> Tensor:
,則生成的RemoteModule
將具有 2 個帶有簽名的方法:def forward(input: Tensor) -> Tensor:
def forward_async(input: Tensor) -> Future[Tensor]:
在兩個不同的進程中運行以下代碼:
>>> # On worker 0: >>> import torch >>> import torch.distributed.rpc as rpc >>> from torch import nn, Tensor >>> from torch.distributed.nn.api.remote_module import RemoteModule >>> >>> rpc.init_rpc("worker0", rank=0, world_size=2) >>> remote_linear_module = RemoteModule( >>> "worker1/cpu", nn.Linear, args=(20, 30), >>> ) >>> input = torch.randn(128, 20) >>> ret_fut = remote_linear_module.forward_async(input) >>> ret = ret_fut.wait() >>> rpc.shutdown()
>>> # On worker 1: >>> import torch >>> import torch.distributed.rpc as rpc >>> >>> rpc.init_rpc("worker1", rank=1, world_size=2) >>> rpc.shutdown()
此外,與DistributedDataParallel(DDP)結合的更實際的例子可以在這個tutorial中找到。
例子:
參數:
返回:
相關用法
- Python PyTorch ReduceLROnPlateau用法及代碼示例
- Python PyTorch ReflectionPad1d用法及代碼示例
- Python PyTorch ReplicationPad1d用法及代碼示例
- Python PyTorch Resample用法及代碼示例
- Python PyTorch ReplicationPad3d用法及代碼示例
- Python PyTorch ReflectionPad2d用法及代碼示例
- Python PyTorch RelaxedOneHotCategorical用法及代碼示例
- Python PyTorch RendezvousHandler.shutdown用法及代碼示例
- Python PyTorch ReLU用法及代碼示例
- Python PyTorch ReLU6用法及代碼示例
- Python PyTorch ReplicationPad2d用法及代碼示例
- Python PyTorch ReflectionPad3d用法及代碼示例
- Python PyTorch RelaxedBernoulli用法及代碼示例
- Python PyTorch RNNTLoss用法及代碼示例
- Python PyTorch RRef.rpc_sync用法及代碼示例
- Python PyTorch RReLU用法及代碼示例
- Python PyTorch RRef.backward用法及代碼示例
- Python PyTorch Rows2Columnar用法及代碼示例
- Python PyTorch RandomRecDataset用法及代碼示例
- Python PyTorch RandomApply用法及代碼示例
- Python PyTorch RRef.remote用法及代碼示例
- Python PyTorch RarArchiveLoader用法及代碼示例
- Python PyTorch RandomErasing用法及代碼示例
- Python PyTorch RNN用法及代碼示例
- Python PyTorch RNNCell用法及代碼示例
注:本文由純淨天空篩選整理自pytorch.org大神的英文原創作品 torch.distributed.nn.api.remote_module.RemoteModule。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。