从零开始:手把手教你用Tabby和Anaconda在超算上跑通第一个AI模型
第一次接触超级计算机时,那种既兴奋又忐忑的心情我至今记忆犹新。看着屏幕上闪烁的命令行,仿佛面对一扇通往未知世界的大门。作为AI研究者或学生,掌握超算使用技能已成为必备能力——它能让你在几分钟内完成本地电脑需要数天才能跑完的实验。本文将带你从零开始,一步步完成从连接超算到成功运行第一个PyTorch模型的全过程。
1. 准备工作:连接超算与基础环境搭建
1.1 选择合适的终端工具
Tabby作为现代化终端工具,相比传统SSH客户端有显著优势:
- 多平台支持:Windows/macOS/Linux全兼容
- 会话管理:保存多个服务器配置,一键连接
- 文件传输:内置SFTP功能,拖拽即可上传下载
- 界面定制:支持主题、字体、快捷键个性化
安装完成后,首次配置需要填写:
主机:your_supercomputer.edu.cn 端口:22 (默认SSH端口) 用户名:your_username 认证方式:密码/SSH密钥注意:部分超算中心要求使用VPN连接校园网后才能访问,具体政策请咨询管理员
1.2 首次登录与基础命令
成功连接后,你会看到类似这样的提示符:
[your_username@login-node ~]$先运行几个基础命令熟悉环境:
| 命令 | 作用 | 示例输出 |
|---|---|---|
pwd | 显示当前路径 | /home/your_username |
ls | 列出文件 | data/ code/ downloads/ |
df -h | 查看磁盘空间 | Size Used Avail Use% Mounted on |
sinfo | 查看计算节点 | PARTITION AVAIL NODES STATE |
2. Python环境配置:Anaconda实战
2.1 安装Anaconda
推荐下载最新Miniconda(更轻量):
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh sh Miniconda3-latest-Linux-x86_64.sh安装过程关键选择:
- 按回车阅读协议
- 输入
yes同意条款 - 安装路径:默认为
/home/your_username/miniconda3 - 初始化选择
yes
安装完成后执行:
source ~/.bashrc看到命令提示符前出现(base)即表示成功。
2.2 创建虚拟环境
为PyTorch项目创建独立环境:
conda create -n pytorch_env python=3.9 conda activate pytorch_env环境管理常用命令:
conda list:查看已安装包conda deactivate:退出当前环境conda env remove -n env_name:删除环境
3. 深度学习环境配置
3.1 安装PyTorch与CUDA
首先确认超算GPU型号:
nvidia-smi根据输出选择匹配的PyTorch版本。例如对于A100显卡:
conda install pytorch torchvision torchaudio \ pytorch-cuda=11.7 -c pytorch -c nvidia验证安装:
python -c "import torch; print(torch.cuda.is_available())"应输出True。
3.2 典型问题排查
若CUDA不可用,检查以下环节:
- GPU驱动:
nvidia-smi应有正常输出 - CUDA版本:
nvcc --version与PyTorch要求匹配 - 环境激活:确保在正确的conda环境中
4. 运行第一个AI模型
4.1 MNIST示例代码
创建mnist_demo.py:
import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms # 数据预处理 transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) ]) # 加载数据 train_data = datasets.MNIST( './data', train=True, download=True, transform=transform) train_loader = torch.utils.data.DataLoader( train_data, batch_size=64, shuffle=True) # 定义模型 class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.fc = nn.Linear(784, 10) def forward(self, x): return self.fc(x.view(-1, 784)) model = Net().cuda() criterion = nn.CrossEntropyLoss() optimizer = optim.SGD(model.parameters(), lr=0.01) # 训练循环 for epoch in range(5): for data, target in train_loader: data, target = data.cuda(), target.cuda() optimizer.zero_grad() output = model(data) loss = criterion(output, target) loss.backward() optimizer.step() print(f'Epoch {epoch} Loss: {loss.item():.4f}')4.2 提交计算任务
创建作业脚本job.sh:
#!/bin/bash #SBATCH --job-name=mnist #SBATCH --partition=gpu #SBATCH --gres=gpu:1 #SBATCH --time=00:10:00 #SBATCH --output=mnist_%j.out module load cuda/11.7 conda activate pytorch_env python mnist_demo.py提交任务:
sbatch job.sh查看任务状态:
squeue -u your_username任务完成后查看输出:
cat mnist_*.out5. 效率优化技巧
5.1 数据传输加速
使用rsync替代scp:
rsync -avzP local_dir your_username@supercomputer:/remote/path参数说明:
-a:归档模式-v:显示进度-z:压缩传输-P:断点续传
5.2 环境持久化配置
将常用设置加入~/.bashrc:
# Conda初始化 . ~/miniconda3/etc/profile.d/conda.sh conda activate pytorch_env # 别名设置 alias myjobs='squeue -u $USER' alias cgpu='nvidia-smi'使配置生效:
source ~/.bashrc第一次成功在超算上跑通模型时的成就感,至今让我难忘。记得当时盯着loss曲线稳定下降的那种兴奋,仿佛打开了新世界的大门。超算的使用门槛其实没有想象中高,关键是要跨出第一步。当你熟悉这套流程后,可以尝试更复杂的模型和分布式训练——那将是另一个令人着迷的领域。