我已经在之前的文章介绍过Slurm基本指令,接下来将结合之前的内容记录如何在在超算平台搭建深度学习环境。

本文章会根据超算平台的更新、本人的实践经验进行更新,所以大家可以收藏这页,如果遇到新的BUG看看本文有没有提出

查看队列

第一步我们需要通过命令行查看自己能够在什么队列提交任务:whichpartition

输出结果:
PartitionName=染念最帅
这说明,我们将要在队列名是”染念最帅“上提交任务。

知道队列之后,我们就可以提交任务,经过前面的学习,我们知道有sallocsrunsbatch三种方式。

使用超算预置环境

我们可以通过module avail看到超算预置的软件环境,例如我看到apps/Pytorch/llama_py38,那就可以通过module load加载,愉快的使用了。

自定义conda环境

除了上面可能已经预置好的conda环境,我们也可以通过超算预置的apps/anaconda3/5.2.0或者自己在home目录安装minconda来自定义环境。最近,我发现如果你选择源码编译python包,最好自己安装一个minconda,使用集群的环境会有一些编译权限问题,导致安装失败!

预置下的自定义

  1. module load apps/anaconda3/5.2.0
  2. conda create -n torch python=3.10 创建环境,建议python3.10,许多包也只有3.10版本
  3. source activate torch 激活环境(注销是: source deactivate )
  4. /public/software/apps/DeepLearning查询自己要安装的whl包,在选择DTK版本的时候,越新越好,这与英伟达约旧约好不一样。
    每次进入命令行,都要这样执行,如果觉得麻烦,可以把上面的命令统一写到文件里面,例如一个文件名为env.sh的代码为:

    #!/bin/bash
    module purge
    # 根据最新情况进行更改,第一次进入命令行就module list看看基础是什么,在此基础上灵活更改
    module load compiler/devtoolset/7.3.1 mpi/hpcx/2.11.0/gcc-7.3.1 compiler/dtk/24.04 apps/anaconda3/5.2.0
    source activate torch

    执行方式:source env.sh

    miniconda

    选择这个的理由我在前面也说过,下载安装包到自己的home目录,然后直接安装到这,具体步骤不用多说。
    切记,不要自己在超算执行init操作,而是直接使用下面的env.sh的代码:

    #!/bin/bash
    module purge
    module load compiler/devtoolset/7.3.1 mpi/hpcx/2.11.0/gcc-7.3.1 compiler/dtk/24.04
    source ~/miniconda3/bin/activate
    conda activate llama

    注意这里激活是conda,而不是source,可以根据这个文件在命令行分步骤执行。

可能的问题

  1. 有时候输出 sbatch: error: Batch job submission failed: Requested node configuration is not available,说明申请的资源超过了限制。
  2. 在AC平台,并不是例如可用资源:CPU64核,加速卡8卡,在一个节点申请中就能全部用上,你还要看可访问的队列支持什么情况。例如你的AC首页写着队列情况是7285-32C-128G-4卡,说明单节点最高配置为32核4卡。在单节点的时候,你可以跑1卡,2卡,3卡,4卡,但在多节点,例如2节点的时候,最好跑8卡。如果是5卡,那么就要设置5个节点,每节点1卡,非常浪费资源,说了这么多,一般我们只要测试1卡,2卡,4卡,8卡...2的几次方。这样可以充分使用资源。
  3. 如果你跑奇数卡,很容易报错:RuntimeError: HIP/CUDA error: invalid device ordinal识别不了GPU设备个数的错误
  4. 如果报错:More processors requested than permitted或者你提交的任务一直在排队,是因为申请的CPU核对不上你的任务要求。
  5. 有时候你觉得按上面的日志产生太多了,你可以把#SBATCH -o %j.out改成#SBATCH -o ./logs/%j.out,把#SBATCH -e %j.err 改成#SBATCH -e ./logs/%j.err,这样会在指定目录生成,但是AC平台还很坑的是,有时候你的任务一直在排队,还可能是因为你这个指定目录他没法创建,所以自己创建更保险,有时候他又会自动创建,真的很玄学。
  6. pip安装的时候出现Local version label can only be used with == or != operators,通过pip install pip==24.0降级
  7. libglog.solibgalaxyhip.so丢失,看看自己的DTK版本环境变量和安装的包对不对应

小技巧

提交作业之后,因为我们的sh包含了输出日志,因此可以通过tail -f 日志名查看。

我们还可以ssh登录计算节点,使用watch rocm-smi,默认1秒看dcu显存情况,如果要更改时间,使用watch -n x rocm-smi,x秒刷新一次。
嗯?计算节点id忘了怎么办?squeue查看到的nodelist下面对应的内容😜

最后,提醒大家:

丹规千万条,核时第一条。关炉不规范,钞票两行泪!

linux 高性能

版权属于:染念
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
更新于: 2024年09月12日 21:33
3


183 文章数
695 评论量
4 分类数
186 页面数
已在风雨中度过 7年284天1小时9分
目录
来自 《超算平台的深度学习环境使用》
© 2024 染念的笔记
浙ICP备19020194号-1
暗黑模式
暗黑模式
评论
返回顶部
© 2024 染念的笔记
浙ICP备19020194号-1
暗黑模式
暗黑模式
评论
返回顶部