在做深度學習相關實驗時,我一般會直接在本機 linux 環境下進行,因為我需要基於 cuda 來啟用 gpu 運算。考慮到經常還要遷移到面向客戶pc機的智慧型服務,所以我偶爾也會選擇在 windows 上進行。在 windows 10 中自從有了 wsl,我的選擇是使用 wsl 遠端連線高效能伺服器,這樣才能保持研發體驗的一致性,我特別期望能擺脫這樣的麻煩,如果能在windows 10 本地切換乙個 linux系統又能使用 cuda 就好了,幸運的訊息是,最新的 windows 10 的更新推出 wsl2 對 cuda 的支援,我迫不及待地做了一下基準測試,想比較一下不同環境的效能表現。
我選擇的幾個系統環境是這樣:
主要硬體配置是這樣:
測試用的深度學習模型我使用的是最經典的mnist,我比較熟悉pytorch所以**我採用了這個示例倉庫,我修改了部分**如下,讓網路模型更大以獲得更準確的讀數。
class其中batch size我設為512,epochs設為14,以precision為fp32執行,結果對比如下:net(nn.module):
def__init__
(self):
super(net, self).
__init__
() self.conv1 = nn.conv2d(1, 128, 3, 1)
self.conv2 = nn.conv2d(128, 128, 3, 1)
self.conv3 = nn.conv2d(128, 128, 3, 1)
self.dropout1 = nn.dropout2d(0.25)
self.dropout2 = nn.dropout2d(0.5)
self.fc1 = nn.linear(15488, 15488//2)
self.fc2 = nn.linear(15488//2, 10)
defforward(self, x):
x =self.conv1(x)
x =f.relu(x)
x =self.conv2(x)
x =f.relu(x)
x =self.conv3(x)
x =f.relu(x)
x = f.max_pool2d(x, 2)
x =self.dropout1(x)
x = torch.flatten(x, 1)
x =self.fc1(x)
x =f.relu(x)
x =self.dropout2(x)
x =self.fc2(x)
output = f.log_softmax(x, dim=1)
return output
哈哈,老實說結果還湊合!wsl2 在啟用 cuda 支援後比本機 ubuntu 環境下多消耗了18%,要知道這是在 nvidia rtx 2080 ti 上訓練模型。目前 wsl2 對 cuda 的支援仍處於早期預覽模式,期待各路工程師、研究員大神們,以及微軟和 nvidia 再打磨下,盡快達到接近本機 ubuntu 效能的水平。如果對訓練時長消耗特別嚴格的研究(比如海量影象、語料)來說,多花18%是很難接受的,但對我來說,訓練樣本資料都還比較小,一般也就到2g差不多了,所以我可以稍稍犧牲下作業系統層面的效能,採用非同步訓練來彌補一下,畢竟我換來的是能用 windows 10 和 wsl2 作為我的主研發環境,不用多系統或者遠端linux系統來回切換了。
WSL 2 使用說明
cpu啟動虛擬機器平台 在bios中設定 管理員許可權下設定 enable windowsoptionalfeature online featurename virtualmachineplatform enable windowsoptionalfeature online featurenam...
在Windows 10上安裝WSL2
toc wsl2 在windows10上安裝 wsl2 是基於hyper v的,所以windows 機器必須支援虛擬化。如果是虛機的那就要支援巢狀的虛擬化。網上一堆看bios的太麻煩了。簡單的方法就是檢視一下windows 的task manager 裡的cpu選項有沒有virtualization...
如何使用WSL2在Windows上執行Podman
想在windows 10上執行podman嗎?您可以,感謝最新的windows子系統linux wsl 2.0實現。借助最新的 windows 子系統 for linux wsl 2.0 實現,podman 現在可以開箱即用。對配置檔案的微小更改使 podman 更易於使用。在接下來的部分中,我將記...