3090 pytorch編譯記錄

2021-10-22 15:18:25 字數 2308 閱讀 2447

編譯的本地環境如下:

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值。只...