别再为显卡发愁了!手把手教你用Google Colab免费跑通第一个PyTorch模型

张开发
2026/4/21 8:23:31 15 分钟阅读

分享文章

别再为显卡发愁了!手把手教你用Google Colab免费跑通第一个PyTorch模型
零硬件门槛入门深度学习Google ColabPyTorch实战指南当我在大学第一次接触深度学习时面对动辄上万的GPU配置要求几乎绝望——直到发现了Google Colab这个神器。它不仅能免费提供Tesla T4甚至A100这样的顶级计算卡还预装了主流深度学习框架。本文将用最直观的方式带你用Colab完成第一个PyTorch模型训练过程中会穿插我踩过的坑和私藏技巧。1. 环境准备五分钟快速上手Colab打开浏览器访问Google Colab用谷歌账号登录后点击新建笔记本。你会看到一个类似Jupyter Notebook的界面但隐藏着强大的计算能力。先执行这段代码检查当前分配的硬件!nvidia-smi import torch print(fPyTorch版本: {torch.__version__}) print(f可用GPU: {✅ if torch.cuda.is_available() else ❌} - {torch.cuda.get_device_name(0)})如果输出显示GPU不可用通过菜单栏依次选择Runtime → Change runtime type → Hardware accelerator → GPU注意免费版Colab的GPU使用有时间限制连续闲置90分钟会自动断开。建议在代码单元格添加定期输出保持活跃例如import time while True: print(f[{time.ctime()}] 保持连接中...) time.sleep(300) # 每5分钟输出一次2. 数据与代码管理云端协作最佳实践Colab的临时存储空间在运行时结束后会清空因此我们需要挂载Google Drive持久化数据。执行以下命令并按照提示完成授权from google.colab import drive drive.mount(/content/drive)推荐的项目文件结构MyDrive/ └── dl_projects/ ├── mnist_example/ │ ├── dataset/ # 存放MNIST数据 │ ├── models/ # 保存训练好的模型 │ └── train.py # 主训练脚本 └── requirements.txt # 依赖清单上传文件的三种高效方式直接拖放从本地文件夹拖拽到Colab文件浏览器命令行下载!wget -P /path/to/save URL代码同步!git clone https://github.com/your/repo.git3. MNIST分类实战从数据加载到模型保存下面是一个完整的PyTorch训练示例包含我优化过的几个关键点import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms # 超参数配置 config { batch_size: 64, epochs: 5, lr: 0.01, seed: 42 } # 数据预处理管道 transform transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) ]) # 加载数据集 train_set datasets.MNIST( /content/drive/MyDrive/dataset, trainTrue, downloadTrue, transformtransform ) train_loader torch.utils.data.DataLoader(train_set, batch_sizeconfig[batch_size], shuffleTrue) # 定义简易CNN模型 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.dropout nn.Dropout(0.5) self.fc nn.Linear(9216, 10) def forward(self, x): x torch.relu(self.conv1(x)) x torch.max_pool2d(x, 2) x torch.relu(self.conv2(x)) x torch.max_pool2d(x, 2) x torch.flatten(x, 1) x self.dropout(x) return self.fc(x) # 训练流程 def train(model, device, train_loader, optimizer, epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target data.to(device), target.to(device) optimizer.zero_grad() output model(data) loss nn.functional.cross_entropy(output, target) loss.backward() optimizer.step() if batch_idx % 100 0: print(fTrain Epoch: {epoch} [{batch_idx * len(data)}/{len(train_loader.dataset)}] Loss: {loss.item():.4f}) # 主执行逻辑 device torch.device(cuda if torch.cuda.is_available() else cpu) model Net().to(device) optimizer optim.Adam(model.parameters(), lrconfig[lr]) for epoch in range(1, config[epochs] 1): train(model, device, train_loader, optimizer, epoch) # 模型保存 torch.save(model.state_dict(), /content/drive/MyDrive/models/mnist_cnn.pt)关键改进点说明添加了随机种子固定确保可复现性使用Adam优化器替代原始SGD增加了Dropout层防止过拟合模型保存采用state_dict而非整个模型便于跨环境加载4. 高阶技巧与故障排除提升训练效率的配置方案配置项推荐值说明运行时类型GPU T4免费用户最佳选择批大小(batch)32-128根据显存调整越大越快混合精度训练amp.initialize可提速2-3倍显存占用减半数据预加载prefetch_factor2减少GPU等待数据时间常见错误解决方案CUDA内存不足torch.cuda.empty_cache() # 清理缓存 # 或减小batch_size下载数据集超时datasets.MNIST(./data, downloadTrue, transformtransform, download_kwargs{timeout: 60, max_retries: 3})运行时意外断开!pip install kora # 安装自动恢复工具 from kora import drive drive.link() # 持久化挂载性能监控技巧# 实时显存监控 !nvidia-smi -l 1 # 训练过程可视化 %load_ext tensorboard %tensorboard --logdir runs5. 扩展应用从实验到生产当基础模型跑通后可以尝试这些进阶操作模型量化将训练好的FP32模型转为INT8体积缩小4倍quantized_model torch.quantization.quantize_dynamic( model, {nn.Linear}, dtypetorch.qint8 )ONNX导出实现跨框架部署dummy_input torch.randn(1, 1, 28, 28) torch.onnx.export(model, dummy_input, mnist.onnx)Gradio快速部署创建交互式Demoimport gradio as gr def recognize_digit(img): img transform(img).unsqueeze(0) pred model(img).argmax().item() return str(pred) gr.Interface(fnrecognize_digit, inputssketchpad, outputslabel).launch()记得定期将重要文件备份到Google Drive。当需要更强大算力时Colab Pro提供更长时间的P100和A100使用权适合大规模实验。不过对于学习目的免费版本已经足够应对大多数经典模型训练。

更多文章