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或是其它啥的
    • outputerror是输出路径
    • 理论上来说,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, 
        },

版权声明:
作者:MWHLS
链接:https://mwhls.top/5122.html
来源:无镣之涯
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
< <上一篇
下一篇>>