云服务器中slurm脚本import tensorflow出现Illegal instruction

在实验室云服务器更新后,运行使用TensorFlow的手写数据CNN模型时遇到非法指令错误。通过逐步排查,发现降低TensorFlow版本至1.5可解决问题。本文记录了解决过程及原因分析。
部署运行你感兴趣的模型镜像

在实验室的云服务器更新后,在运行test_cnn.py(利用简单的CNN跑手写数据)时,提示出错:Illegal instruction  python test_cnn.py.

由于在slurm脚本中运行python脚本,所以刚开始并不知道哪里出错,就利用test1.py进行测试:

print("hello world!")

未报错。

逐步向test1.py中添加test_cnn.py的代码,发现当import tensorflow as tf时,就会报错:Illegal instruction。google搜索时找到了解决方法:https://github.com/tensorflow/tensorflow/issues/17411

原文的意思是他的tensorflow的版本太新,CPU可能无法运行新的API,所以要降低版本降到了tensorflow1.5版本,问题就解决了。

但是博主的tensorflow是1.14版本,并且是实验室的云服务器进行了更新,刚开始我尝试将版本升级到1.15,问题仍然存在。后来将tensorflow升级为1.5版本,问题便解决了。
 

pip uninstall tensorflow

pip install tensorflow==1.5

但是仍然没有搞明白为什么会突然出现这种错误,如果哪位前辈知道这个问题明确的原因,麻烦告知一下。

 

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.15

TensorFlow-v2.15

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

<think>首先,用户的问题是:“如何在slurm服务器用R脚本进行提交作业”。我需要用中文回答这个问题。 关键点: - 使用SLURM服务器提交作业。 - 具体是使用R脚本SLURM(Simple Linux Utility for Resource Management)是一个用于集群管理的作业调度系统。用户想了解如何提交一个使用R脚本的作业。 我的回答应该包括步骤: 1. 准备R脚本。 2. 创建一个SLURM提交脚本(通常是一个bash脚本),其中包含SLURM指令和运行R脚本的命令。 3. 使用sbatch命令提交作业。 标准步骤: - 编写一个SBATCH脚本(例如submit_job.sh),内容包括: - #!/bin/bash - SLURM指令,如#SBATCH --job-name=myjob, #SBATCH --output=output.txt, #SBATCH --nodes=1, #SBATCH --ntasks=1, #SBATCH --time=01:00:00等。 - 然后运行R脚本的命令,例如:Rscript my_script.R - 然后使用sbatch submit_job.sh提交。 我需要用中文清晰地解释这些步骤。 回答后,必须提出3-5个 §§相关问题§§。第一行必须完整输出 "§§相关问题§§",然后列出问题。 列出相关问题: 1. 基于用户的问题:如何在SLURM服务器提交R脚本作业。 2. 相关问题应该相关,比如: - 如何指定资源(CPU、内存)? - 如何处理输出文件? - 如何检查作业状态? - 如何传递参数给R脚本? - SLURM的其他常见指令是什么? 确保3-5个问题。 输出格式: - 先回答问题。 - 然后,在新的一行输出 "§§相关问题§§"。 - 之后,列出1. 2. 3. ... 的问题,每个问题用数字点开始。 - 禁止换行分散,意思是问题列表应该连续,不要有额外的空行或分割。 示例格式显示: - 回答后,直接是 "§§相关问题§§"。 - 然后1. ··· 2. ··· 3. ··· 所以,我的结构: 1. 回答问题(用中文)。 2. 输出 "§§相关问题§§"。 3. 列出3-5个相关问题。 现在,制定回答: - 介绍:在SLURM服务器上提交R脚本作业的基本步骤。 - 步骤: a. 创建R脚本文件(例如my_script.R)。 b. 创建SLURM提交脚本(例如submit.sh),包含SBATCH指令和运行R脚本的命令。 c. 使用sbatch命令提交。 给出一个例子: 例如,submit.sh内容: #!/bin/bash #SBATCH --job-name=r_job #SBATCH --output=output.txt #SBATCH --nodes=1 #SBATCH --ntasks=1 #SBATCH --time=00:10:00 Rscript my_script.R 然后,运行:sbatch submit.sh 用中文解释。 然后,相关问题: 1. 如何在SLURM作业中指定内存大小? 2. 如何传递命令行参数给R脚本? 3. 如何监控SLURM作业的运行状态? 4. SLURM中如何处理并行计算? 5. 如何在R脚本中使用SLURM环境变量? 确保有3-5个。 最终输出: [回答部分] §§相关问题§§ 1. 问题1 2. 问题2 3. 问题3 </think>要在SLURM服务器上提交R脚本作业,需要创建一个SLURM提交脚本(通常为.sh文件),其中包含作业调度指令和运行R脚本的命令。以下是基本步骤: 1. **准备R脚本**:确保你的R脚本(如`my_script.R`)已完成测试,并保存在服务器上。 2. **创建SLURM提交脚本**:新建一个文件(如`submit_job.sh`),添加以下内容: ```bash #!/bin/bash #SBATCH --job-name=r_job # 作业名称 #SBATCH --output=output.txt # 输出日志文件 #SBATCH --error=error.txt # 错误日志文件 #SBATCH --nodes=1 # 使用1个节点 #SBATCH --ntasks=1 # 运行1个任务 #SBATCH --time=00:10:00 # 作业时间限制(例如10分钟) #SBATCH --mem=1G # 内存限制(例如1GB) Rscript my_script.R # 运行R脚本的命令 ``` 你需要根据实际需求调整指令(如时间、内存)。 3. **提交作业**:在终端中运行命令: ```bash sbatch submit_job.sh ``` 提交后,SLURM会将作业加入队列,并在资源可用时执行。使用`squeue -u your_username`检查作业状态。 注意事项: - 确保R环境已安装(如通过`module load R`加载模块)。 - 如果R脚本需要额外包,在脚本中调用`install.packages()`或在提交前预装。 - 输出文件(如`output.txt`)会记录运行结果,错误信息在`error.txt`中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值