2021/6/25小学期作业
本次作业主题在于论文复现,论文主题为Per_FedAVG,第一天完成了环境的大致搭建,第二天找到了一个FedAVG的模型代码跑了一下,效率极其低下,查阅得知,可以设置GPU来跑模型,记录如何设置作为大作业参考。
建立一个test.py运行就行
import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader, TensorDataset
from torchvision import datasets, transforms
# 假设我们有一个简单的模型
class SimpleModel(nn.Module):
def __init__(self):
super(SimpleModel, self).__init__()
self.fc = nn.Linear(784, 10) # 假设输入是28x28的图像,输出是10个类别
def forward(self, x):
x = x.view(-1, 784) # 展平图像
x = self.fc(x)
return x
# 检查是否支持GPU
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
print('Using device:', device)
# 假设我们有一些模拟数据
# 在实际中,你会从数据集(如MNIST)中加载数据
inputs = torch.randn(64, 1, 28, 28) # 64个样本,1个通道,28x28的图像
labels = torch.randint(0, 10, (64,)) # 64个标签,范围从0到9
# 将数据移动到GPU
inputs, labels = inputs.to(device), labels.to(device)
# 创建数据集和数据加载器
dataset = TensorDataset(inputs, labels)
dataloader = DataLoader(dataset, batch_size=64, shuffle=True)
# 实例化模型,并将其移动到GPU
model = SimpleModel().to(device)
# 定义损失函数和优化器
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)
# 训练循环
num_epochs = 5
for epoch in range(num_epochs):
for inputs, labels in dataloader:
# 前向传播
outputs = model(inputs)
loss = criterion(outputs, labels)
# 反向传播和优化
optimizer.zero_grad()
loss.backward()
optimizer.step()
print(f'Epoch [{epoch + 1}/{num_epochs}], Loss: {loss.item()}')
# 假设我们有一个测试样本,并在GPU上运行模型
test_input = torch.randn(1, 1, 28, 28).to(device)
test_output = model(test_input)
# 将结果从GPU移回CPU(如果需要)
test_output_cpu = test_output.cpu()
# 注意:在实际应用中,我们通常不会在每次预测后都将结果移回CPU
# 这里只是为了演示如何将数据从GPU移回CPU
终端显示sing device: cpu
就是没有加载上
首先确定安装了NAVIDIA,在搜索框里可以搜索到,然后,点开该控制面板可以查看到相关信息。也可以简单点的,我们可以使用 ctrl+ shift+ esc
呼出任务管理器,然后点开 性能,查看“GPU0”的版本。
-
把
C:\Program Files\NVIDIA Corporation\NVSMI
添加到path,再打开cmd命令窗口,输入nvidia-smi
查看GPU驱动版本。 -
在anaconda prompt中输入
conda activate perfedavg
激活你对应的python环境,再输入命令conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
注意这是最新版本要跟得上。如果还是不行,可以打开anaconda的可视化界面,直接在环境里面搜索pytorch,会有一个-gpu版本,apply就可以。 -
依次输入命令:
python #进入环境 import torch print(torch.cuda.is_available())#输出true则证明安装正确。
4.要是不行,可以直接重装环境:重装教程