9

学校HPC使用指南

·10 分钟

1. 申请账号

实验室服务器是课题组自己的,单卡4070Ti和5070Ti通常用来跑测试或调代码;HPC 是学校的共享算力平台,显卡多但要排队,适合跑完整的模型训练。两边独立:账号不同,数据不互通,代码和数据集需要分别传。

目前学校的高性能算力平台(HPC)有 6 个节点,每个节点有 8 卡 A30,总共 48 张卡。A30 显卡有 24 GB显存,但单卡速度大概只有 4070Ti 的三分之二。

image-20260624202300764

申请账号:请导师帮忙在一网通办上申请学校服务器(HPC)账号。学生操作不了。

申请好账号后,学校服务器网址是:https://hpc.wtu.edu.cn/#/app/user

2. 在学校服务器上搭建 Conda 环境

首先确保自己的主界面上有 SHELL,如果没有就去左边应用中心安装一个。

image-20260624202711317

可以在 SHELL 进行 Linux 命令行操作,在 "数据管理" 中进行简单的文件操作,配合使用。

1. 确认Conda环境可用:

# 在命令行中加载 conda
source /share/apps/anaconda3/etc/profile.d/conda.sh

image-20260624210509965

然后就可以用 conda createconda activate 等命令正常操作了。

# 看看有哪些 Conda 环境
conda env list

# 激活一个 Conda 环境
conda activate [env_name]

# 取消激活
conda deactivate

2. 创建一个 Conda 环境

例如创建一个名为 test_env 的新环境,python 版本为3.10。

conda create -n test_env python=3.10

输入 y 确认,等待下载安装完成。

image-20260624211518726

我们在这里继续 pip 安装其它需要的包,首先激活环境,然后尝试安装一个 numpy。

# 激活刚才创建的 test_env
conda activate test_env

# 安装 numpy
pip install numpy

image-20260624211718644

发现网络错误,这是因为 HPC 节点不能直连外网。 pip install 需要走代理,否则会超时失败。我们需要先设置好代理环境变量:

export HTTP_PROXY=http://211.67.63.75:3128
export HTTPS_PROXY=http://211.67.63.75:3128

设好之后 pip install 就能正常用了。

# 安装自己的环境
pip install numpy
pip install pandas
pip install torch
pip install opencv-python
...

image-20260624212026414

3. 代码与数据集上传

目录建议: 代码和数据分开放,日志和提交脚本放在根目录,方便一眼看到。以下是一个实例,仅供参考:

/share/home/你的学号/
├── code_lzq/                       # 代码目录
│   ├── dtrack/                     #   项目1
│   ├── dtrack_cascade/             #   项目2
│   └── dtrack_backbone2/           #   项目3
├── training_dataset/               # 训练数据集(自己上传,或连接到其他同学已上传好的)
├── testing_dataset/                # 测试数据集(自己上传,或连接到其他同学已上传好的)
├── archive/                        # 归档(旧实验提交脚本/日志丢这里)
├── submit_dtrack_backbone4.sh      # 提交脚本(每个实验一个)
├── submit_dtrack_backbone5.sh
├── log_dtrack_backbone4.txt        # 训练日志(命名与提交脚本对应)
└── log_dtrack_backbone5.txt

日常工作流示例:例如我需要打包 dtrack 这个项目,挂到学校服务器上运行

1. 在实验室服务器上打包代码:

cd ~/code  # 先进到代码所在目录
tar -czvf dtrack.tar.gz dtrack

打包前想清楚要不要排除一些大文件(比如已有的 checkpoint、输出结果),否则压缩包会很大。可以用 --exclude 参数:

tar -czvf dtrack.tar.gz --exclude='output' --exclude='*.pth.tar' dtrack

2. 把压缩包从实验室服务器下载到你的 Windows 电脑上(用 MobaXterm 左侧文件栏直接拖出来即可)。

3. 登录学校 HPC 网页端: https://hpc.wtu.edu.cn/#/app/user

4. 用 WebDav + WinSCP 上传: 在网页端的文件管理器里,右键点击你要上传到的目录 → 启动 WebDav → 复制链接 → 粘贴到 WinSCP → 回车连接。然后把文件拖进传输队列。

image-20260624213457385

image-20260624213547701

直接在登录窗口中粘贴复制的连接就好。

image-20260624213648505

直接回车,可以互传文件了。

image-20260624213701774

5. 上传完成后,在 SHELL 里解压到代码目录:

cd ~/code_lzq
tar -xvzf ~/dtrack.tar.gz

6. 检查配置文件中的路径(重要!代码从实验室服务器搬到 HPC 后,所有绝对路径都会变):

cd dtrack
# 手动检查这两个文件里的路径是否指向 HPC 上的位置
# lib/train/admin/local.py
# lib/test/evaluation/local.py

# 手动检查实验配置
# experiments/*.yaml

# 建议每次实验准备好用于覆盖的两个local.py文件,换新项目直接替换项目名就好

数据集上传的方法类似,但数据集通常巨大,需要先切分成压缩分卷,然后逐个上传,在学校服务器上合并,再解压,比较麻烦。可以先问问其他同学有没有上传好的数据集,然后在自己的目录下建立软链接就行。

4. 提交作业

HPC 用 Slurm 调度系统管理任务。你不能直接在登录节点跑训练,需要写一个提交脚本,让 Slurm 帮你分配 GPU 节点来跑。

第一步:写提交脚本。vim 创建一个 .sh 文件。命名建议和项目对应,比如 submit_dtrack_backbone3.sh。以下是一个实际使用的提交脚本:

#!/bin/bash
#SBATCH -J pytorch                                              # 作业名(squeue 里显示用)
#SBATCH -p gpu                                                  # 分区(用 gpu 分区才有显卡)
#SBATCH -N 1                                                    # 申请 1 个节点
#SBATCH -n 32                                                   # 申请 32 个 CPU 核心
#SBATCH --gres=gpu:4                                            # 申请 4 张 GPU
#SBATCH -o /share/home/u2415063035/log_dtrack_backbone3.txt     # 日志输出路径

# -------- 环境 --------
export PYTHONPATH=/share/home/u2415063035/code_lzq/dtrack_backbone3:$PYTHONPATH
source /share/apps/anaconda3/etc/profile.d/conda.sh
conda activate py310_torch27

# -------- 启动训练(单节点 4 卡) --------
torchrun --standalone \
  --nproc_per_node=4 \
  --master_port=52915 \
  /share/home/u2415063035/code_lzq/dtrack_backbone3/lib/train/run_training.py \
  --script ostrack_backbone \
  --config dinov3l_384_got10k_lora_film_fuse \
  --save_dir /share/home/u2415063035/code_lzq/dtrack_backbone3/output

每一行 #SBATCH 的含义:

参数含义怎么改
-J pytorch作业名随便起,自己能区分就行
-p gpu分区要 GPU 就写 gpu,不用改
-N 1节点数一般就用 1 个节点
-n 32CPU 核数1个 GPU 拿 8 个核心
--gres=gpu:4GPU 数量每个人最高同时用 8 张卡,注意和 --nproc_per_node 一致
-o ...日志路径改成你自己的路径,命名对应实验

环境部分做三件事:把项目根目录加到 PYTHONPATH(否则 import 找不到模块)、加载 conda、激活环境。这三行每个提交脚本都要写,因为 Slurm 分配的计算节点是一个干净的 shell,不会继承你登录节点的环境。

训练命令说明:

参数含义
torchrun --standalonePyTorch 分布式启动器,单节点用 --standalone
--nproc_per_node=4每个节点启几个进程,必须和 --gres=gpu: 一致
--master_port=52915进程间通信端口,多人同时跑可能冲突,冲突就换一个
--script / --config指定训练脚本和配置文件(看你项目的 experiments 目录)
--save_dir输出目录(checkpoint、日志等)

几个容易踩的坑:

  • 脚本里所有路径都要改成你自己的学号和目录,直接抄会找不到文件。
  • --master_portAddress already in use 就换一个随机数(10000-65535 之间)。
  • 新建实验时,最省事的方法是复制一份已有的提交脚本,改项目名和路径就行,结构不用动。

第二步:提交。

sbatch submit_dtrack_backbone3.sh

提交成功会返回一个作业 ID,记住它。

第三步:查看状态和结果。

# 查看任务队列(你的和别人的都能看到)
squeue

# 只看自己的任务
squeue -u 你的用户名

# 终止任务
scancel 作业ID

squeue 的 ST 列是任务状态:PD = 排队中(等 GPU 空出来),R = 正在跑,CG = 正在结束。

训练日志在 log_dtrack_backbone3.txt,如果出错第一件事就是在这里找报错日志。

💬

留言区待配置

部署 Twikoo 后端后,设置环境变量 NEXT_PUBLIC_TWIKOO_ENV_ID