概述
一、环境配置
编译的本地环境如下:
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 > torchtext
- torchvision 0.8 需要 cuda 11.2 ,最好预先确定驱动
- 编译的环境需要git checkout 相应的版本如
git checkout v1.7.1 #导出 1.7.1版本的pytorch
- git clone 某些中间资源站点不在国内,速度会很慢,甚至下载不下来,自备梯子。 clone 过程中会自动在系统的临时缓存区下载文件,所以在一台电脑clone之后到别的电脑可能无法使用。
二、编译
- 编译完成之后在
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('{:.3f}ms per iter'.format((t1 - t0)/nb_iters * 1000.))
官方测试的速度为(3090环境 ) : 160ms/iter 编译前速度和官方时间差不多,编译之后我们的速度为 110ms/iter
三、 编译资源
pytorch官网
tochviosn官网
torchtext官网
最后
以上就是懦弱黑猫为你收集整理的3090 pytorch编译记录的全部内容,希望文章能够帮你解决3090 pytorch编译记录所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复