深入浅出:如何在超算平台上高效使用深度学习环境

本文结合之前介绍的Slurm基本指令,记录了在超算平台搭建深度学习环境的方法。包括查看队列、使用超算预置环境、自定义conda环境,还指出了可能遇到的问题及解决办法,最后分享了一些小技巧,帮助用户充分利用超算资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我已经在之前的文章介绍过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版本环境变量和安装的包对不对应
  8. libssl.so.1.1丢失,在自己的平台我们可以直接安装openssl 1.1,而在超算,我们没有权限,所以就只能到虚拟环境的lib目录,例如~/miniconda3_bak/envs/llama/lib添加libssl.so.1.1文件。如果你没有找到,目前一个骚操作是在该目录执行cp libssl.so.3 libssl.so.1.1也能运行。libcrypto.so.1.1同理。
  9. 现在超算平台不能在激活虚拟环境(自带的apps/anaconda3/5.2.0,如果是自己安装的我没有试过)的情况下去提交任务,不然会出现找不到正确的python位置的问题。

小技巧

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

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

最后,提醒大家:

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

转载于染念的博客

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

染念

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值