GPU超算使用记录
个人认为重要的一些点,因为是事后记录,过程并不详尽,仅做大纲参考。如今AI方便,因此有了思路大纲后找AI即可。
登录
VSCode登录
- VSCode能通过SSH连接超算服务器,提供类似本地敲代码的体验。
- SSH能够免密登录超算。
- 我的免密配置,作为正确性参考,其中,my_ssh是密钥文件,非文件夹
Host DongXiHu
HostName xxx.xxx.xxx.xxx
Port 22
User xxx
IdentityFile F:\0_DATA\1_DATA\CODE\SSH\my_ssh存储
登录节点与计算节点共用一套存储
- 如题,因此,即便在登录节点登录,所有路径与计算节点一致
- 同理,环境也仅需配置一次。
设置缓存、环境路径
- 用户目录
~所在空间可能较小,需要安装在其它盘。 - Conda可以在指定路径下建立环境,并用路径名启用环境。
- 同时,简单配置后,可以用环境名启用,免去路径名启用的繁琐
- 我设置了这些缓存路径
export HF_HOME="my/Cache/hf_cache"
export HF_HUB_CACHE="my/Cache/hf_cache/hub"
export HF_ENDPOINT=https://hf-mirror.com
export PIP_CACHE_DIR=my/Cache/pip
export CONDA_PKGS_DIRS=my/Cache/conda
export TORCH_HOME=my/Cache/torch
export NVCC_PREPEND_FLAGS='--tmpdir my/Cache'
export MPLCONFIGDIR=my/Cache/matplotlib
export XDG_CACHE_HOME=my/Cache运行
SBATCH提交任务
SBATCH xxx.sbatch命令用于提交任务,其任务内容为xxx.sbatch文件内容,下面是我的xxx.sbatch。- 一些解释
job-name让我区分squeue中哪个任务是我的partition好像是节点分区exclude让我排除一些没空间或者没名字的计算节点,有的节点上去不能用conda或是其它啥的output和error是输出路径- 理论上来说,
module load conda能够正常加载环境,然而,在我这的SBATCH里不行,会报错conda init,不过仅SBATCH这里不行。 - 这有三个解法,一个是在登录节点就指定好环境,这样上去就算报错也没事
- 另一个解法就是下面示例的最后一行,直接用环境来搞。
- 最后一个解法不好用,它能够正常导入环境,但是它不能实时输出.out和.err日志,所以我删了后忘了,都是AI给的解法
#!/bin/bash
#SBATCH --job-name=pwj_MMPretrain
#SBATCH --partition=gre
#SBATCH --nodes=1
#SBATCH --exclude=gpu37,gpu48,gpu04
#SBATCH --ntasks-per-node=1
#SBATCH --gres=gpu:1
#SBATCH --time=12:00:00
#SBATCH --mem=32G
#SBATCH --output=my/CODE/0_MMPretrain/log_PAC/000_sbatch/%j.out
#SBATCH --error=my/CODE/0_MMPretrain/log_PAC/000_sbatch/%j.err
module load conda/3
module load unzip
module load cuda/12.4
export HF_HOME="my/Cache/hf_cache"
export HF_HUB_CACHE="my/Cache/hf_cache/hub"
export HF_ENDPOINT=https://hf-mirror.com
export PIP_CACHE_DIR=my/Cache/pip
export CONDA_PKGS_DIRS=my/Cache/conda
export TORCH_HOME=my/Cache/torch
export NVCC_PREPEND_FLAGS='--tmpdir my/Cache'
export MPLCONFIGDIR=my/Cache/matplotlib
export XDG_CACHE_HOME=my/Cache
my/Conda/envs/pwj_mmlab/bin/python startup_PAC.py
srun在终端运行
- srun命令可以像正常命令行一样交互式运行,所以可以用它来配环境
- 当然也可以用它跑程序
工作区解决VSCode一直加载扩展
- 我习惯在远程服务器上于根目录写所有代码,但最近出现python拓展卡在加载的情况,可能是文件太多了,我尝试了排除日志路径,然而并没有用。
- 一个解法是各代码单独打开一个窗口,但坏处是VSCode的配置需要重复添加
- 另一个解法是工作区,把多个代码路径添加到一个工作区打开,试了一会,能很快启动扩展。
调试
VSCode能够正常调试
- 参考:https://zhuanlan.zhihu.com/p/27042155329
- 本地或者常规的ssh调试,直接f5就行。
- 在超算试用调试成功后,我这样开启调试,供参考:
- 在登录节点,打开任一.txt文件,按F5进入调试,以打开调试终端
- 首先,.py也可以,但是.txt的好处是调试后马上会报错退出,不需要手动退出,以避免在登录节点进行调试
- 其次,手动打开的终端不能正常连接到调试,因此需要用F5打开的调试终端
- 在打开的调试终端,使用srun命令以交互式连接计算节点。
- 选择计算节点对应的调试配置,进行调试
- 我的一些调试配置,作为正确性参考:
{
"name": "调试于25",
"type": "python",
"request": "attach",
"host": "gpu25",
"port": 5678,
},
{
"name": "调试于48",
"type": "python",
"request": "attach",
"host": "gpu48",
"port": 5678,
},

共有 0 条评论