編譯的本地環境如下:
gpu : rtx 3090
ubuntu 20.04
gcc 9.3.0
driver : 460.56
cuda : 11.2
cudnn : 8.1.0
python :3.6.12
pytorch : 1.7.1
torchvision : 0.8.2
torchtext : 0.8.1
pytorch、torchtext、torchvision 需要在同乙個環境編譯,編譯順序為:pytorch > torchvision > torchtexttorchvision 0.8 需要 cuda 11.2 ,最好預先確定驅動
編譯的環境需要git checkout 相應的版本如
git checkout v1.7.1 #匯出 1.7.1版本的pytorch
編譯完成之後在build
目錄會有編譯結果,如果需要重新編譯,刪除即可。
編譯完成時,conda環境使用pip安裝時無法辨識編譯的包,例如,編譯的pytorch版本 v1.7.1 最後在conda環境中被認為時1.70aa+。這就導致安裝時需要先安裝依賴pytorch的包,再解除安裝pytorch ,最後執行
python setup.py install
即可將編譯的結果拷貝到conda環境中
測試pytorch速度的**,從pytorch的官方人員copy的
import torch
import torch.nn as nn
from torch.cuda.amp import autocast, gradscaler
import time
from torchvision.models import resnet152
torch.backends.cudnn.benchmark = true
class model(nn.module):
def __init__(self):
super(model, self).__init__()
self.resnet = resnet152()
self.linear = nn.sequential(nn.linear(1000, 250),
nn.linear(250, 64),
nn.linear(64, 32),
nn.linear(32, 10),
nn.relu())
def forward(self, x):
out = self.resnet(x)
out = self.linear(out)
return out
dtype = torch.float16
x = torch.randn(32, 3, 224, 224).cuda(0).to(dtype)
y = torch.randint(0, 10, (32,)).cuda(0)
m = model().cuda(0).to(dtype)
criterion = nn.crossentropyloss()
optim = torch.optim.adam(m.parameters(), 1e-4)
# warmup
for _ in range(10):
m.zero_grad()
output = m(x)
loss = criterion(output, y)
loss.backward()
nb_iters = 100
torch.cuda.synchronize()
t0 = time.time()
for _ in range(nb_iters):
m.zero_grad()
output = m(x)
loss = criterion(output, y)
loss.backward()
torch.cuda.synchronize()
t1 = time.time()
print('ms per iter'.format((t1 - t0)/nb_iters * 1000.))
官方測試的速度為(3090環境 ) :160ms/iter編譯前速度和官方時間差不多,編譯之後我們的速度為110ms/iter
pytorch官網
tochviosn官網
torchtext官網
pytorch使用記錄
1.resnet需要載入預訓練模型,但是最後一層fc層的輸出數不是1000。解決方案 先載入預訓練模型,然後取除了最後一層的所有層,再加一層自己需要的在後面。2.model.children 和model.modules 的區別。model.modules 和model.children 均為迭代器...
pytorch除錯記錄
除錯報錯 runtimeerror input type torch.cuda.floattensor and weight type torch.floattensor should be the same 截圖 說明 在除錯執行導師給的程式residual net的gunpoint程式時,出現報...
Pytorch學習記錄筆記
輸出 函式會返回兩個tensor,第乙個tensor是每行的最大值,softmax的輸出中最大的是1,所以第乙個tensor是全1的tensor 第二個tensor是每行最大值的索引。predicted torch.max outputs.data,1 下劃線表示不在乎返回的第乙個tensor值。只...