當前位置:編程學習大全網 - 源碼下載 - PyTorch-4 nn.DataParallel 數據並行詳解

PyTorch-4 nn.DataParallel 數據並行詳解

本文源自 /pytorch-1.4/beginner/blitz/data_parallel_tutorial.html

在本教程中,我們將學習如何使用多個GPU: DataParallel 的用法.

與PyTorch壹起使用GPU非常容易。您可以將模型放在GPU上:

請註意,只要調用 my_tensor.to(device) ,就會在GPU上返回 my_tensor 的新副本,而不是重寫 my_tensor 。 您需要將它分配給壹個新的tensor,並在GPU上使用該tensor。

在多個GPU上執行前向、後向傳播是很自然的。但是,PYTORCH默認只使用壹個GPU。 妳可以輕松地在多個GPU上運行您的操作,方法是讓妳的模型使用 DataParallel 並行運行:

這是本教程的核心。我們將在下面更詳細地探討它。 導入 與 參數 ———————-

導入 PyTorch 模塊和定義參數

設備

虛擬數據集

制造壹個 虛擬的(隨機產生) 數據集。妳只需要實現 Python 的 魔法函數 getitem :

簡單模型

對於演示,我們的模型只獲得壹個輸入,執行壹個線性操作,並給出壹個輸出。 但是,您可以在任何模型(CNN、RNN、Capsule Net等)上使用 DataParallel 。

我們在模型中放置了壹個print語句來監視輸入和輸出張量的大小。 請註意批次0的打印內容。

創建模型和數據並行

這是本教程的核心部分。首先,我們需要創建壹個模型實例,並檢查我們是否有多個GPU。 如果我們有多個GPU, 我們可以使用 nn.DataParallel 來包裝我們的模型。 然後我們可以通過模型 model.to(device) 將我們的模型放在GPU上

運行模型

現在我們可以看到輸入和輸出張量的大小。

結果

如果您沒有GPU或壹個GPU,當我們批處理30個輸入和30個輸出時,模型得到30,輸出與預期相同。 但是如果妳有多個GPU,那麽妳可以得到這樣的結果。

總結

DataParallel 會自動拆分數據,並將作業訂單發送到多個GPU上的多個模型。 在每個模型完成它們的工作之後,DataParallel 在將結果返回給妳之前收集和合並結果。

  • 上一篇:十三香源代碼
  • 下一篇:我做 *** 客服讓我在樂卡商城買充值卡是騙子嗎
  • copyright 2024編程學習大全網