系统:Windows10
CUDA版本:11.0
安装工具:Anaconda、pip
预装:pytorch-gpu 1.10、pytorch-geometric(PyG)
在之前安装tensorflow时本机已安装CUDA与cuDNN,输入命令查看CUDA版本,我这版本是CUDA 11.0。
nvcc -V
先用conda创建一个虚拟环境
conda create -n pytorch-gpu python=3.7 -y
创建完成后进入虚拟环境
activate pytorch-gpu
若之前使用python没有更换过国内源,先更换国原,这边使用清华镜像
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
进入pytorch官网,选择合适版本,conda安装或者pip安装皆可。这边强调,pytorch-gpu的CUDA版本是可以向下兼容的,比如我这CUDA是11.0版本,无法安装11.3版本支持的pytorch,但我可以选择低版本CUDA10.2支持的的pytorch,而不需要重新安装CUDA。
复制命令,粘贴到cmd中执行,更换源后下载还是蛮快的
pip3 install torch==1.10.2+cu102 torchvision==0.11.3+cu102 torchaudio===0.10.2+cu102 -f https://download.pytorch.org/whl/cu102/torch_stable.html
输入以下代码
import torch
print(torch.__version__)
print(torch.cuda.is_available())
结果返回true,说明安装成功。如果有图神经网络GNN开发的需要,可以继续查看下面内容,只是用pytorch的话到此就结束了。
进入pytorch-geometric官网,选择自己合适的版本,要与刚才安装pytorch时选择的CUDA版本相一致
pip install torch-scatter torch-sparse torch-cluster torch-spline-conv torch-geometric -f https://data.pyg.org/whl/torch-1.10.0+cu102.html
一定要按照上述命令安装,否则运行PyG代码会报错 ModuleNotFoundError: No module named 'torch_sparse'
,且通过 ‘pip install torch sparse’ 命令安装大概率会报错。
单纯测试pytorch-geometric(PyG)的话,输入以下代码,没有报错即表示安装成功
import torch
from torch_geometric.data import Data
edge_index = torch.tensor([[0, 1, 1, 2], [1, 0, 2, 1]], dtype=torch.long)
x = torch.tensor([[-1], [0], [1]], dtype=torch.float)
data = Data(x=x, edge_index=edge_index)
print(data)
若想测试一下GCN网络,可用如下代码,数据集可通过该地址下载
import torch
print(torch.__version__)
print(torch.cuda.is_available())
import torch.nn.functional as F
from torch_geometric.nn import GCNConv
from torch_geometric.datasets import Planetoid
'''
下载报错,将所有data文件下载到本地
https://github.com/kimiyoung/planetoid
将cora相关文件放入到raw文件中
'''
dataset = Planetoid(root='./tmp/Cora', name='Cora')
class GCN(torch.nn.Module):
def __init__(self, feature, hidden, classes):
super(GCN, self).__init__()
self.conv1 = GCNConv(feature, hidden)
self.conv2 = GCNConv(hidden, classes)
def forward(self, data):
x, edge_index = data.x, data.edge_index
x = self.conv1(x, edge_index)
x = F.relu(x)
x = F.dropout(x, training=self.training)
x = self.conv2(x, edge_index)
return F.log_softmax(x, dim=1)
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
model = GCN(dataset.num_node_features, 16, dataset.num_classes).to(device)
data = dataset[0].to(device)
optimizer = torch.optim.Adam(model.parameters(), lr=0.01)
model.train()
for epoch in range(200):
optimizer.zero_grad()
out = model(data)
loss = F.nll_loss(out[data.train_mask], data.y[data.train_mask])
loss.backward()
optimizer.step()
print(epoch, loss.item())
model.eval()
_, pred = model(data).max(dim=1)
correct = pred[data.test_mask].eq(data.y[data.test_mask]).sum()
acc = int(correct) / int(data.test_mask.sum())
print('acc:', acc)
相比于CPU版本的pytorch,GPU版本的还是非常快的。
以上就是关于pytorch-gpu安装的所有分享啦,欢迎各位支持哈~