讲师中心 微信公众号
AI工具推荐 视频效率加速

Slurm 作业长时间挂起未完成的排查与环境一致性解决方案

陌丽君_1721

陌丽君_1721

发布时间:2026-01-15 12:32:03

|

274人浏览过

|

来源于php中文网

原创

Slurm 作业长时间挂起未完成的排查与环境一致性解决方案

本文详解 slurm 集群中 python 脚本“卡住不报错也不退出”的典型原因——本地与集群环境(尤其是 numpy/scipy/python 版本及 conda 环境)不一致,并提供可落地的版本对齐与隔离部署方案。

在 Slurm 集群上运行 Hugging Face Transformers 相关数据预处理脚本时,出现「本地 2 分钟完成,集群运行 4 小时无进展、最终被 time limit 强制终止」的现象,根本原因几乎总是环境不一致导致的隐式阻塞或兼容性降级,而非代码逻辑错误。

最典型的线索已在日志中明确暴露:

A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.24.4)

这说明:集群节点上的 numpy==1.24.4 与当前 scipy(很可能由旧版 transformers 或 datasets 间接依赖)存在ABI 不兼容。虽然 NumPy 通常向后兼容,但 1.24.x 移除了部分 C API 符号,某些科学计算库(尤其静态链接或混合编译的组件)可能陷入死锁、无限重试或静默挂起——表现为 dataset.map() 卡住、tokenizer 初始化延迟激增,且无异常抛出。

此外,警告信息:

The tokenizer class you load from this checkpoint is 'BertTokenizer'. 
The class this function is called from is 'RobertaTokenizerFast'.

虽不直接致死,但暗示模型/分词器路径混用(如用 BERT 的 tokenizer 加载 RoBERTa 模型),可能触发底层 tokenizers 库的非预期行为(如线程安全问题、共享内存初始化失败),在多核 Slurm 节点上更易暴露。

python-code-analyz
python-code-analyz

专业Python代码分析与优化,支持语法检查、安全扫描、性能评估、复杂度分析及重构后优化代码生成。

下载

✅ 可靠解决路径:严格环境隔离 + 版本锁定

  1. 本地验证最小可行环境
    在本地 Linux 创建纯净 Conda 环境,显式指定关键版本(与集群目标一致):

    conda create -n slurm-env python=3.8.18
    conda activate slurm-env
    pip install "numpy>=1.21.0,<1.23.0" "scipy>=1.7.0,<1.10.0" \
                "transformers==4.33.2" "datasets==2.14.6" "tokenizers==0.13.3"

    运行原脚本,确认耗时稳定在 2–3 分钟内。

  2. 集群端复现相同环境
    将环境导出为可复现的 YAML:

    conda env export --from-history > environment.yml

    上传至集群,在计算节点执行:

    conda env create -f environment.yml
    conda activate slurm-env
    # 验证关键包版本
    python -c "import numpy, scipy; print(numpy.__version__, scipy.__version__)"
  3. SLURM 脚本中显式激活环境
    避免依赖全局 PATH,确保每次作业使用纯净环境:

    #!/bin/bash
    #SBATCH --job-name=hf-preproc
    #SBATCH --time=00:10:00  # 合理预留时间(如 10 分钟)
    
    module load anaconda3  # 加载集群基础 Anaconda
    source $HOME/miniconda3/etc/profile.d/conda.sh
    conda activate slurm-env
    
    python your_script.py

⚠️ 关键注意事项

  • 勿跳过 --from-history:conda env export 默认包含构建信息(build hash),跨平台可能失效;--from-history 仅导出 conda install 和 pip install 显式命令,保证重建一致性。
  • 检查 datasets 的 num_proc 行为:dataset.map(..., batched=True) 默认启用多进程(num_proc=os.cpu_count())。若集群节点 CPU 核数远高于本地(如 64 核),而内存不足或共享文件系统(如 NFS)性能差,会导致进程创建卡顿。建议显式限制:
    mapped_dataset = dataset.map(
        lambda x: tokenizer(...), 
        batched=True, 
        num_proc=8  # 根据节点内存调整,避免 OOM
    )
  • 验证 tokenizer 路径一致性:确保 /data/home//raw_roberta/Roberta_Tokenizer 下存在 tokenizer_config.json 且 tokenizer_class 字段为 "RobertaTokenizerFast",而非 "BertTokenizer"。若混用,应统一使用 RoBERTa 对应的 tokenizer checkpoint。

通过以上步骤,90% 以上的 Slurm “假死”问题可被根治。核心原则是:HPC 环境必须视为不可信黑盒,一切依赖须显式声明、隔离部署、版本锁定——优雅的容错,始于严苛的确定性。

热门AI工具

更多
SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

1995

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

2782

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

956

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

3139

2025.09.10

pip安装使用方法
pip安装使用方法

安装步骤:1、确保Python已经正确安装在您的计算机上;2、下载“get-pip.py”脚本;3、按下Win + R键,然后输入cmd并按下Enter键来打开命令行窗口;4、在命令行窗口中,使用cd命令切换到“get-pip.py”所在的目录;5、执行安装命令;6、验证安装结果即可。大家可以访问本专题下的文章,了解pip安装使用方法的更多内容。

2550

2023.10.09

更新pip版本
更新pip版本

更新pip版本方法有使用pip自身更新、使用操作系统自带的包管理工具、使用python包管理工具、手动安装最新版本。想了解更多相关的内容,请阅读专题下面的文章。

5903

2024.12.20

pip设置清华源
pip设置清华源

设置方法:1、打开终端或命令提示符窗口;2、运行“touch ~/.pip/pip.conf”命令创建一个名为pip的配置文件;3、打开pip.conf文件,然后添加“[global];index-url = https://pypi.tuna.tsinghua.edu.cn/simple”内容,这将把pip的镜像源设置为清华大学的镜像源;4、保存并关闭文件即可。

7462

2024.12.23

python升级pip
python升级pip

本专题整合了python升级pip相关教程,阅读下面的文章了解更多详细内容。

3627

2025.07.23

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

0

2026.09.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn