
手把手教学用PyTorch 2.8镜像快速搭建你的第一个AI项目1. 为什么选择PyTorch 2.8镜像PyTorch作为当前最流行的深度学习框架之一其2.8版本带来了多项性能优化和新特性。但对于初学者来说从零开始配置PyTorch开发环境可能会遇到各种问题CUDA版本冲突、依赖库不兼容、环境配置复杂等。CSDN星图镜像广场提供的PyTorch 2.8预置镜像解决了这些痛点开箱即用预装PyTorch 2.8、CUDA工具包和常用AI库GPU加速支持已适配主流NVIDIA显卡支持多卡并行计算多种使用方式支持Jupyter Notebook和SSH两种开发模式无缝衔接从实验到部署的全流程支持这个镜像特别适合刚入门深度学习想快速上手PyTorch的开发者需要快速搭建AI实验环境的研究人员希望将模型从开发环境迁移到生产环境的工程师2. 环境准备与镜像部署2.1 获取PyTorch 2.8镜像访问CSDN星图镜像广场搜索PyTorch 2.8或PyTorch-CUDA-v2.8选择适合你硬件配置的镜像版本点击立即部署按钮2.2 选择部署配置根据你的需求选择合适的资源配置配置类型适用场景推荐硬件基础版学习/小规模实验4核CPU/8GB内存/1块GPU标准版中等规模模型训练8核CPU/16GB内存/1-2块GPU高级版大规模模型训练16核CPU/32GB内存/多块GPU对于第一个AI项目基础版配置通常就足够了。2.3 启动镜像部署完成后你可以选择两种方式使用这个镜像Jupyter Notebook适合交互式开发和调试SSH连接适合命令行操作和脚本运行3. 使用Jupyter Notebook开发3.1 访问Jupyter界面在镜像管理页面点击连接按钮选择Jupyter Lab方式系统会自动打开浏览器进入Jupyter界面3.2 创建第一个Notebook点击左上角的按钮选择Python 3内核新建一个Notebook文件3.3 验证环境在第一个单元格中输入以下代码验证PyTorch和GPU是否正常工作import torch print(fPyTorch版本: {torch.__version__}) print(fCUDA可用: {torch.cuda.is_available()}) print(fGPU型号: {torch.cuda.get_device_name(0)}) print(f显存总量: {torch.cuda.get_device_properties(0).total_memory / 1024**3:.2f} GB)正常输出应类似PyTorch版本: 2.8.0 CUDA可用: True GPU型号: NVIDIA GeForce RTX 3060 显存总量: 12.00 GB4. 你的第一个AI项目手写数字识别4.1 项目介绍我们将使用经典的MNIST数据集构建一个简单的手写数字识别模型。这个项目涵盖了AI开发的基本流程数据加载与预处理模型定义训练循环模型评估推理测试4.2 数据准备在Notebook中添加以下代码import torch from torchvision import datasets, transforms # 定义数据转换 transform transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) ]) # 下载并加载训练数据 train_dataset datasets.MNIST( ./data, trainTrue, downloadTrue, transformtransform ) # 下载并加载测试数据 test_dataset datasets.MNIST( ./data, trainFalse, transformtransform ) # 创建数据加载器 train_loader torch.utils.data.DataLoader( train_dataset, batch_size64, shuffleTrue ) test_loader torch.utils.data.DataLoader( test_dataset, batch_size1000, shuffleTrue )4.3 定义模型我们使用一个简单的卷积神经网络import torch.nn as nn import torch.nn.functional as F class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 nn.Conv2d(1, 32, 3, 1) self.conv2 nn.Conv2d(32, 64, 3, 1) self.dropout1 nn.Dropout(0.25) self.dropout2 nn.Dropout(0.5) self.fc1 nn.Linear(9216, 128) self.fc2 nn.Linear(128, 10) def forward(self, x): x self.conv1(x) x F.relu(x) x self.conv2(x) x F.relu(x) x F.max_pool2d(x, 2) x self.dropout1(x) x torch.flatten(x, 1) x self.fc1(x) x F.relu(x) x self.dropout2(x) x self.fc2(x) output F.log_softmax(x, dim1) return output model Net().to(cuda) print(model)4.4 训练模型定义训练函数from tqdm import tqdm def train(model, device, train_loader, optimizer, epoch): model.train() for batch_idx, (data, target) in enumerate(tqdm(train_loader)): data, target data.to(device), target.to(device) optimizer.zero_grad() output model(data) loss F.nll_loss(output, target) loss.backward() optimizer.step() # 定义优化器 optimizer torch.optim.Adam(model.parameters()) # 训练5个epoch for epoch in range(1, 6): train(model, cuda, train_loader, optimizer, epoch)4.5 评估模型def test(model, device, test_loader): model.eval() test_loss 0 correct 0 with torch.no_grad(): for data, target in test_loader: data, target data.to(device), target.to(device) output model(data) test_loss F.nll_loss(output, target, reductionsum).item() pred output.argmax(dim1, keepdimTrue) correct pred.eq(target.view_as(pred)).sum().item() test_loss / len(test_loader.dataset) print(f\n测试集: 平均损失: {test_loss:.4f}, 准确率: {correct}/{len(test_loader.dataset)} ({100. * correct / len(test_loader.dataset):.2f}%)\n) test(model, cuda, test_loader)4.6 保存和加载模型# 保存模型 torch.save(model.state_dict(), mnist_cnn.pt) # 加载模型 loaded_model Net().to(cuda) loaded_model.load_state_dict(torch.load(mnist_cnn.pt)) loaded_model.eval()5. 使用SSH连接开发5.1 获取SSH连接信息在镜像管理页面点击连接按钮选择SSH方式复制SSH连接命令和密码5.2 连接镜像在终端中执行复制的SSH命令输入密码后即可连接到镜像环境。5.3 运行Python脚本创建一个新文件mnist_train.py包含上面的训练代码运行脚本python mnist_train.py5.4 使用tmux管理长时间任务对于长时间运行的训练任务建议使用tmux# 启动新会话 tmux new -s training # 在会话中运行脚本 python mnist_train.py # 分离会话保持运行 Ctrlb d # 重新连接会话 tmux attach -t training6. 项目进阶与扩展6.1 尝试不同的模型架构你可以修改网络结构尝试不同的CNN架构或全连接网络class SimpleNN(nn.Module): def __init__(self): super(SimpleNN, self).__init__() self.fc1 nn.Linear(784, 512) self.fc2 nn.Linear(512, 256) self.fc3 nn.Linear(256, 10) def forward(self, x): x x.view(-1, 784) x F.relu(self.fc1(x)) x F.relu(self.fc2(x)) x self.fc3(x) return F.log_softmax(x, dim1)6.2 使用不同的优化器PyTorch提供了多种优化器可以尝试不同的优化算法# SGD优化器 optimizer torch.optim.SGD(model.parameters(), lr0.01, momentum0.9) # RMSprop优化器 optimizer torch.optim.RMSprop(model.parameters(), lr0.001)6.3 添加学习率调度使用学习率调度器可以提升训练效果from torch.optim.lr_scheduler import StepLR scheduler StepLR(optimizer, step_size5, gamma0.1) for epoch in range(1, 11): train(...) test(...) scheduler.step()6.4 可视化训练过程使用TensorBoard记录训练过程from torch.utils.tensorboard import SummaryWriter writer SummaryWriter() def train(...): ... writer.add_scalar(Loss/train, loss.item(), epoch) writer.add_scalar(Accuracy/train, correct / len(data), epoch)7. 总结通过本教程你已经学会了如何快速部署PyTorch 2.8镜像环境使用Jupyter Notebook和SSH两种方式开发AI项目构建、训练和评估一个完整的手写数字识别模型保存和加载训练好的模型使用tmux管理长时间训练任务PyTorch 2.8镜像为你提供了强大的深度学习开发环境让你可以专注于模型开发而不是环境配置。接下来你可以尝试在更复杂的数据集上训练模型尝试不同的神经网络架构学习模型部署和优化技术探索PyTorch 2.8的新特性如编译优化等获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。